같은 Docker 이미지를 운영 환경과 테스트 환경에 배포했는데 설정값을 바꾸려면 이미지를 다시 만들어야 할까요? 답은 설정이 저장된 위치와 애플리케이션이 값을 읽는 시점에 따라 달라집니다. 이미지 안에 포함된 파일과 컨테이너 생성 시 외부에서 전달한 설정을 구분하면 변경 범위와 확인 순서를 정하기 쉽습니다.

이미지에 복사한 설정은 이미지 버전의 일부입니다
Dockerfile의 COPY로 설정 파일을 넣으면 빌드 당시 파일이 이미지에 포함됩니다. 이후 원본 파일을 수정해도 이미 만들어진 이미지나 실행 중인 컨테이너가 자동으로 바뀌지는 않습니다. 변경된 파일을 이미지에 반영하려면 이미지를 다시 빌드하고, 새 이미지로 컨테이너를 교체해야 합니다.
이 방식은 애플리케이션과 기본 설정을 함께 버전 관리하기 쉽습니다. 반면 환경마다 다른 값을 이미지에 고정하면 환경별 이미지가 늘어나거나 설정만 바꿔도 배포가 필요합니다. 컨테이너 내부에서 파일을 직접 수정한 내용도 해당 컨테이너의 쓰기 계층에 남으므로 새 컨테이너를 만들면 같은 변경이 보장되지 않습니다.

실행 시 전달한 설정은 이미지와 별도로 관리합니다
환경변수는 컨테이너를 만들 때 전달할 수 있으며, Dockerfile의 ENV 기본값을 실행 시 덮어쓸 수 있습니다. 다만 애플리케이션이 실제로 그 환경변수를 읽고 설정 파일보다 우선하는지는 Docker가 아니라 애플리케이션의 구현에 달려 있습니다. 같은 이미지를 사용하더라도 운영과 테스트에 서로 다른 값을 전달할 수 있습니다.
호스트의 설정 파일을 읽기 전용 바인드 마운트로 연결하는 방법도 있습니다. 파일 내용이 컨테이너에서 보이더라도 앱이 시작할 때 한 번만 읽는다면 재시작이나 앱이 지원하는 재로드가 필요합니다. 파일을 교체하는 편집 방식과 마운트 대상에 따라서도 관찰 결과가 다를 수 있으므로 실제 경로에서 확인합니다.
이미지에 파일이 있던 경로에 마운트를 연결하면 원래 파일은 삭제되는 것이 아니라 마운트에 가려집니다. 디렉터리를 통째로 마운트하면 해당 디렉터리의 다른 기본 파일도 가려질 수 있으므로 대상 경로와 필요한 파일을 함께 확인해야 합니다.
설정 변경 후 적용 범위를 확인하는 순서
가상 예시로, 앱이 시작할 때만 설정을 읽고 환경변수가 설정 파일보다 우선한다고 가정해 보겠습니다. 이미지에 포함한 기본 주소를 바꾸려면 새 이미지를 빌드하고 새 컨테이너로 교체합니다. 외부 환경변수를 바꾸는 경우에는 이미지를 다시 빌드할 필요는 없지만, 새 값으로 컨테이너를 재생성해야 합니다.
Compose 파일이나 env_file의 값을 바꾼 뒤 docker compose restart만 실행하면 변경된 컨테이너 설정은 반영되지 않습니다. docker compose up -d로 변경된 구성을 적용할 수 있으며, 재생성이 필요한 경우 Compose가 컨테이너를 교체합니다. 적용 전에는 서비스 중단과 데이터 보존, 의존 서비스 영향을 확인하고 변경 후 앱의 동작을 검증합니다.
바인드 마운트 파일의 내용만 변경했다면 새 이미지 빌드는 일반적으로 필요하지 않습니다. 다만 프로세스가 변경을 읽는 방식에 따라 앱 재로드 또는 재시작이 필요하고, 마운트 경로 자체를 바꿨다면 새 구성으로 컨테이너를 재생성합니다. 설정 파일의 유효성 확인과 이전 버전으로 되돌릴 방법도 함께 준비합니다.

실무에서 놓치기 쉬운 보안과 추적
비밀번호나 API 키를 이미지에 복사하거나 Dockerfile의 ARG·ENV에 넣는 방식은 피합니다. 환경변수 역시 조회나 로그를 통해 노출될 수 있습니다. Docker Compose의 secrets처럼 서비스에 명시적으로 부여하는 비밀정보 전달 방식을 검토하고, 실제 저장 위치와 접근 권한도 확인합니다.
설정을 외부로 분리하면 이미지 하나를 여러 환경에서 재사용할 수 있지만, 어떤 이미지와 어떤 설정 조합이 실행 중인지 별도로 추적해야 합니다. 이미지 식별자, 설정 버전, 적용 시각과 담당자를 함께 기록하고 민감한 값은 기록에서 제외하는 편이 운영과 복구에 유리합니다.
결론
설정이 이미지에 포함돼 있다면 변경된 설정을 담은 새 이미지와 컨테이너가 필요합니다. 실행 시 주입된 값은 이미지 재빌드 없이 바꿀 수 있지만, 환경변수는 새 컨테이너 생성이 필요하고 마운트 파일은 애플리케이션의 재읽기 방식에 따라 조치가 달라집니다. 배포 전에는 설정의 실제 출처와 우선순위, 변경 후 검증 및 복구 방법부터 확인하십시오.