docker compose up

docker compose up

docker compose up은 서비스의 컨테이너를 만들고 시작하는 명령이에요. Compose로 애플리케이션을 띄울 때 가장 기본적으로 쓰는 명령이에요.

출처: 문서

본문

Pre-start hook failures

pre_start 라이프사이클 훅이 0이 아닌 코드로 종료되면, Compose는 서비스 시작을 멈추고 훅의 컨테이너를 유지해서 문제를 살펴볼 수 있게 해요.

$ docker ps -a --filter label=com.docker.compose.hook=pre_start
$ docker logs <container-id>

다음 compose up에서 같은 서비스의 유지된 훅 컨테이너는 훅이 다시 실행되기 전에 자동으로 정리돼요. compose down도 이를 제거해요.

docker compose up은 서비스에 대한 컨테이너를 빌드·(재)생성·시작하고 연결(attach)해요. 이미 실행 중이 아니라면 연결된 서비스도 함께 시작해요. 각 컨테이너의 출력을 집계해서 보여주는데, --attach로 특정 서비스를 고르고 --no-attach로 일부를 제외할 수 있어요.

명령이 종료되면 모든 컨테이너가 멈춰요. docker compose up --detach는 컨테이너를 백그라운드에서 시작하고 실행 상태로 둬요.

서비스에 기존 컨테이너가 있고 그 구성이나 이미지가 변경됐다면, docker compose up은 컨테이너를 중지하고 재생성해 변경을 반영해요(마운트된 볼륨은 보존). 변경을 반영하지 않으려면 --no-recreate를, 모든 컨테이너를 강제로 중지·재생성하려면 --force-recreate를 사용해요.

오류가 발생하면 이 명령의 종료 코드는 1이고, SIGINT(ctrl + C)나 SIGTERM으로 중단하면 컨테이너가 멈추면서 종료 코드는 0이에요.

지원하는 옵션은 다음과 같아요.

옵션 기본값 설명
--abort-on-container-exit 컨테이너 하나라도 멈추면 모든 컨테이너를 중지해요. -d와 함께 쓸 수 없어요
--abort-on-container-failure 컨테이너 하나라도 실패로 종료하면 모든 컨테이너를 중지해요. -d와 함께 쓸 수 없어요
--always-recreate-deps 의존 컨테이너를 다시 생성해요. --no-recreate와 함께 쓸 수 없어요
--attach STDIN·STDOUT·STDERR에 연결해요
--attach-dependencies 의존 서비스의 로그 출력에 자동으로 연결해요
--build 컨테이너를 시작하기 전에 이미지를 빌드해요
-d, --detach 백그라운드(detached) 모드로 실행해요
--exit-code-from 선택한 서비스 컨테이너의 종료 코드를 반환해요. --abort-on-container-exit을 의미해요
--force-recreate 구성이 바뀌지 않아도 컨테이너를 다시 생성해요
--menu 연결 시 대화형 단축키를 활성화해요. --detach와 함께 쓸 수 없어요
--no-attach 지정한 서비스에 연결(로그 스트리밍)하지 않아요
--no-build 정책과 달라도 이미지를 빌드하지 않아요
--no-color 단색(monochrome) 출력을 만들어요
--no-deps 연결된 서비스를 시작하지 않아요
--no-log-prefix 로그에 접두사를 붙이지 않아요
--no-recreate 컨테이너가 이미 있으면 다시 생성하지 않아요. --force-recreate와 함께 쓸 수 없어요
--no-start 서비스를 생성한 뒤 시작하지 않아요
--pull policy 생성 전에 이미지를 가져올지 정해요 (always, missing, never)
--quiet-build 빌드 출력을 숨겨요
--quiet-pull 진행 정보를 출력하지 않고 그냥 가져와요
--remove-orphans Compose 파일에 정의되지 않은 서비스의 컨테이너를 제거해요
-V, --renew-anon-volumes 이전 컨테이너의 익명 볼륨 대신 새로 만들어요
--scale SERVICE를 NUM 인스턴스로 확장해요. Compose 파일의 scale 설정을 덮어써요
-t, --timeout 연결 시 또는 이미 실행 중일 때 컨테이너 종료에 쓰는 타임아웃(초)을 정해요
--timestamps 타임스탬프를 보여줘요
--wait 서비스가 실행될 때까지 기다려요
--wait-timeout 프로젝트가 실행될 때까지 기다릴 최대 시간(초)을 정해요
-w, --watch 소스 코드를 감시하고 파일이 바뀌면 컨테이너를 다시 빌드·새로고침해요
-y, --yes 모든 프롬프트에 "yes"로 답하고 비대화형으로 실행해요

더 알아보기