Dockerfile, docker-compose.yml 변경 사항을 컨테이너에 적용하기

rang-dev·2022년 2월 10일
1

이미 컨테이너로 서비스가 떠있는 상황에서 변경된 Dockerfile, docker-compose.yml을 적용해서 컨테이너를 재시작해보자.

예전에 띄워둔 airflow는 계속 실행되고 있는 상태이며 현상태 그대로 변경된 docker 관련 파일들만 적용하려고 한다.

Docker command

  • docker-compose up --build --force-recreate -d
    • --build: Build images before starting containers -> 변경된 이미지를 다시 build
    • --force-recreate: Recreate containers. docker-compose up을 하면 변경된 사항을 적용하여 컨테이너를 재생성하지만 up을 했을때에도 변경이 적용이 안되는 경우에 해당 옵션을 주어보자.
    • -d: Run containers in the background

위와 같이 적절한 파라미터를 써서 변경된 이미지와 컨테이너 설정을 적용해주면 된다.

Issue

위의 커맨드를 실행하니 Sending build context to Docker daemon이 나오면서 진행이 되질 않았다. 문제의 원인은 build context에 몇십기가에 달하는 logs가 포함되어 있어 context를 daemon에 전송하는 시간이 오래걸리고 있던 것이었다.

여기서 context란, docker image를 생성할때 필요한 디렉토리나 파일들이 존재하는 곳이다. image를 생성할때 ADD, COPY에 해당하는 것들은 필수로 context 내에 존재해야 한다.

그 외의 불필요한 것들은 context의 경로에 .dockerignore 파일을 생성하여 제외시켜 준다. 이러한 이유 때문에 context의 경로는 root를 피하고 되도록이면 이미지 빌드에 필요한 것들만 들어가 있는 것이 좋다고 한다.


참고

profile
지금 있는 곳에서, 내가 가진 것으로, 할 수 있는 일을 하기 🐢

0개의 댓글