Dockerfile에 이어 Compose(docker-compose)에 대해 이야기를 해보려고 한다.
출처
나는 라즈베리파이에서 계속 진행을 했기에 아래의 코드를 작성하여 설치를 했다.
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.3.3/docker-compose-linux-aarch64 -o $DOCKER_CONFIG/cli-plugins/docker-compose
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
docker compose --version
이제 docker-compose.yml 파일이 있는 곳에서 docker compose up
,docker compose down
으로 컨테이너를 쉽게 끄고 켤 수 있다.
-f <파일이름>
: 파일 이름이나 경로가 다르면 해당 옵션을 통해 설정할 수 있으며 여러개의 yaml파일을 사용할 때에도 쓰인다.
up
: 모든 컨테이너를 생성하고 실행한다.
-d
:백그라운드에서 실행한다.-d
플래그를 사용하지 않으면 컨테이너의 로그가 나오고 Ctrl
+C
를 누르면 실행되던 컨테이너들이 정지된다.start <컨테이너 이름>
: 특정 컨테이너를 작동하기 위해 사용한다.
down
: 모든 컨테이너를 멈추고 정지한다.
stop <컨테이너 이름>
: 특정 컨테이너를 정지하기 위해 사용한다.
ps
: Compose에서 정의된 모든 컨테이너 목록을 확인한다.
run
: 특정 컨테이너에 특정 명령어를 실행할때 사용한다.
config
: Compose의 설정을 확인할 때 사용한다.
version: "3.3"
services:
server:
build: .
container_name: sdc
restart: always
ports:
- '8080:8080'
working_dir: /app
volumes:
- ./app/log:/app/log
- ./app/model:/app/model
environment:
- TZ=Asia/Seoul
landing:
build: home
container_name: landing
ports:
- "80:80"
depends_on:
- server
위의 코드는 자율프로젝트에 사용된 코드이다.
version: "3.3"
docker-compose.yml
의 명세 버전을 의미한다.
build: .
빌드를 할 경우 작동하며 Dockerfile 경로이다.
up
을 하기 전에 docker-compose build
를 통해 빌드를 진행한다.
container_name: landing
컨테이너 이름이다.
restart: always
재시작 정책을 의미한다. no
, on-failure
등 필요한대로 설정할 수 있다.
ports:
- "80:80"
호스트 포트
:컨테이너 포트
를 의미한다.
working_dir: /app
컨테이너가 돌아가는 경로를 변경한다.
volumes:
- ./app/log:/app/log
- ./app/model:/app/model
액세스해야 하는 경로나 볼륨을 정의한다.
environment:
- TZ=Asia/Seoul
사용하고자 하는 이미지의 환경변수이며, dockerfile보다 docker-compose의 우선순위가 높다.
depends_on:
- server
서비스간의 시작, 종료에 관한 종속성을 정의한다. 위의 코드에서는 server
와 landing
이 연결되어 있고 landing
동작 전에 server
가 동작한다.