Multi Container사용시 좀 더 편한 방법은 없을까?
- Docker Compose를 사용하는것도 하나의 방법이 된다.
- Multi Container Application을 정의하고 공유하는데 도움이 되도록 개발된 도구
- Compose의 정의는 YAML을 생성할 수 있으며 단일 명령으로 사용가능
- Multi container를 위한 network는 자동으로 생성됨
- Docker Compose 설치
$ docker-compose version
- 예제
- Services안에 app, mysql두개의 container가 있음
- container에는 image, ports, volumes, environment값을 정의
- volumes에는 docker volume값 정의
version: "3.7"
services:
app:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: secret
MYSQL_DB: todos
mysql:
image: mysql:5.7
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
- docker compose 실행
$ docker-compose up -d
Creating network "app_default" with the default driver
Creating volume "app_todo-mysql-data" with default driver
Creating app_app_1 ... done
Creating app_mysql_1 ... done
- docker compose 중지
$ docker-compose down
###볼륨을 제거하려면 --volumes플래그 를 추가###
$ docker-compose down --volumes