4.1 명령어 docker compose up
docker compose up
명령어는 Docker Compose에서 핵심적인 명령어로, compose.yaml
파일에 정의된 멀티 컨테이너 애플리케이션을 실행할 수 있게 해줘. 이 명령어는 설정에 명시된 모든 서비스를 자동으로 생성 및 실행하고, 네트워크를 설정하며 볼륨을 마운트해. 이번 강의에서는 docker compose up
명령어 사용법, 주요 옵션, 그리고 베스트 프랙티스를 자세히 알아볼 거야.
docker compose up
명령어의 주요 기능
- 컨테이너 생성 및 실행:
docker compose up
명령어는compose.yaml
파일의services
섹션에 명시된 모든 컨테이너를 생성하고 실행해. - 네트워크 및 볼륨 설정: Docker Compose가 설정에 정의된 필요한 네트워크를 자동으로 생성하고 볼륨을 마운트해.
- 서비스 병렬 실행: 모든 서비스가 병렬로 실행돼서 멀티 컨테이너 애플리케이션의 실행 속도를 높여줘.
- 로그 모니터링: 명령어는 실행된 모든 컨테이너의 로그를 실시간으로 출력해줘서 상태를 확인하고 문제를 빠르게 찾아낼 수 있어.
docker compose up
명령어의 문법
docker compose up [options] [SERVICE...]
여기서:
-
[options]
: 명령어의 동작 방식을 설정하는 추가 옵션 (예:--detach
,--build
,--scale
). -
[SERVICE...]
: (선택 사항) 실행할 서비스 목록. 명시되지 않은 경우, 모든 서비스가 실행돼.
4.2 예제 docker compose up
docker compose up
명령어 사용 예제:
1. 모든 서비스 실행
compose.yaml
파일에 정의된 모든 서비스를 실행:
docker compose up
2. 특정 서비스 실행
특정 서비스를 실행, 예를 들어 web
:
docker compose up web
3. 백그라운드 모드로 실행
모든 서비스를 백그라운드 모드로 실행하려면 -d
(detached mode) 옵션을 사용:
docker compose up -d
이 옵션을 사용하면 명령어는 컨테이너를 실행한 후 바로 종료되며, 컨테이너들은 백그라운드에서 실행됩니다.
4.3 docker compose up
명령의 매개변수
docker compose up
명령에 유용한 매개변수:
1. --build
매개변수
이 매개변수는 Docker Compose가 컨테이너를 실행하기 전에 이미지를 다시 빌드하도록 강제합니다. 소스 코드나 Dockerfile에 변경 사항을 추가한 경우 유용합니다.
docker compose up --build
2. --force-recreate
매개변수
--force-recreate
매개변수는 컨테이너 구성이 변경되지 않았더라도 Docker Compose가 컨테이너를 다시 생성하도록 강제합니다.
docker compose up --force-recreate
3. --no-recreate
매개변수
--no-recreate
매개변수는 이미 존재하는 컨테이너를 재생성하지 않도록 하며, 그것들이 변경되었다 하더라도 적용됩니다.
docker compose up --no-recreate
4. --remove-orphans
매개변수
이 매개변수는 현재 compose.yaml
파일에 정의되지 않았지만 이전의 Docker Compose 실행으로 생성된 컨테이너를 삭제합니다.
docker compose up --remove-orphans
5. -V
, --renew-anon-volumes
매개변수
이 매개변수는 Docker Compose가 익명 볼륨을 다시 사용하지 않고 다시 생성하도록 강제합니다.
docker compose up -V
4.4 예제와 추천
docker compose up
명령어를 다양한 옵션으로 사용하는 예제:
예제 1: 이미지 재빌드와 함께 애플리케이션 실행
이 예제는 컨테이너 실행 전에 이미지를 재빌드하며, 소스 코드나 Dockerfile에 변경사항이 있을 때 유용해.
docker compose up --build
예제 2: 백그라운드 모드로 컨테이너를 다시 생성하며 실행
이 예제는 컨테이너를 백그라운드 모드로 실행하고, 구성에 변경사항이 없어도 다시 생성해.
docker compose up -d --force-recreate
예제 3: 특정 서비스 실행 및 불필요한 컨테이너 제거
이 예제는 web
서비스만 실행하며, 현재 compose.yaml
파일에 정의되지 않은 컨테이너를 제거해.
docker compose up web --remove-orphans
실용적인 추천
1. .env
파일 사용
.env
파일을 사용해서 환경 변수를 정의할 수 있어. 이 환경 변수들은 compose.yaml
에서 사용할 수 있고, 구성 관리를 돕고 다양한 환경에서 배포를 간소화해줘.
2. 로그와 모니터링
docker compose up
명령어로 컨테이너를 실행할 때, 모든 로그가 콘솔에 출력돼. 이 로그를 통해 서비스 상태를 확인하고, 문제 발생 시 빠르게 대처할 수 있어. 자세한 모니터링을 위해 docker compose logs
와 docker compose ps
명령어를 사용해봐.
3. 빌드 및 배포 자동화
docker compose up
명령어를 자동화 스크립트나 CI/CD 파이프라인에 통합하면 멀티 컨테이너 애플리케이션의 빌드와 배포 과정을 자동화할 수 있어. 예를 들어, Jenkins나 GitHub Actions를 설정해서 코드가 업데이트될 때마다 docker compose up
을 자동으로 빌드, 배포 및 실행하도록 만들 수 있어.
GO TO FULL VERSION