이미 컨테이너로 서비스가 떠있는 상황에서 변경된 Dockerfile
, docker-compose.yml
을 적용해서 컨테이너를 재시작해보자.
예전에 띄워둔 airflow는 계속 실행되고 있는 상태이며 현상태 그대로 변경된 docker 관련 파일들만 적용하려고 한다.
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위와 같이 적절한 파라미터를 써서 변경된 이미지와 컨테이너 설정을 적용해주면 된다.
위의 커맨드를 실행하니 Sending build context to Docker daemon
이 나오면서 진행이 되질 않았다. 문제의 원인은 build context에 몇십기가에 달하는 logs
가 포함되어 있어 context를 daemon에 전송하는 시간이 오래걸리고 있던 것이었다.
여기서 context란, docker image를 생성할때 필요한 디렉토리나 파일들이 존재하는 곳이다. image를 생성할때 ADD
, COPY
에 해당하는 것들은 필수로 context 내에 존재해야 한다.
그 외의 불필요한 것들은 context의 경로에 .dockerignore
파일을 생성하여 제외시켜 준다. 이러한 이유 때문에 context의 경로는 root를 피하고 되도록이면 이미지 빌드에 필요한 것들만 들어가 있는 것이 좋다고 한다.