Docker compose
만약 wordpress_net 이라는 도커 네트워크를 만들고, 이 안에 mysql 컨테이너와 wordpress 컨테이너를 생성하고 싶다면 다음과 같이 명령어를 실행해야 한다.
docker network create wordpress_net
docker \
run \
--name "db" \
-v "$(pwd)/db_data:/var/lib/mysql" \
-e "MYSQL_ROOT_PASSWORD=123456" \
-e "MYSQL_DATABASE=wordpress" \
-e "MYSQL_USER=wordpress_user" \
-e "MYSQL_PASSWORD=123456" \
--network wordpress_net \
mysql:5.7
docker \
run \
--name app \
-v "$(pwd)/app_data:/var/www/html" \
-e "WORDPRESS_DB_HOST=db" \
-e "WORDPRESS_DB_USER=wordpress_user" \
-e "WORDPRESS_DB_NAME=wordpress" \
-e "WORDPRESS_DB_PASSWORD=123456" \
-e "WORDPRESS_DEBUG=1" \
-p 8080:80 \
--network wordpress_net \
wordpress:latest
이러한 복잡한 명령어를 컨테이너를 만들 때마다 실행해야 하는 것은 굉장히 부담스럽고 실수할 가능성도 있다.
따라서, 컨테이너 실행을 위한 형식을 파일 형태로 저장하고 컨테이너 실행 때마다 해당 파일을 사용하기만 하면 되는 유용한 방법이 바로 docker compose
이다.
위 명령어는 아래 docker-compose.yml
파일로 형식화할 수 있다.
version: "3.7"
services:
db:
image: mysql:5.7
volumes:
- ./db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: 123456
app:
depends_on:
- db
image: wordpress:latest
volumes:
- ./app_data:/var/www/html
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: 123456
docker run의 여러 옵션들에 대한 이해가 있다면 위 파일을 이해하는데 크게 어렵지 않을 것이다.
docker-compose.yml 파일을 통한 컨테이너 실행을 아래 명령어를 통해 수행할 수 있다.
docker-compose up
이처럼 하나의 파일로서 컨테이너 실행 형식을 보관할 수 있기 때문에 편리하게 컨테이너를 실행할 수 있다.
또한, docker compose 를 통한 여러 컨테이너를 한 번에 실행할 때, 해당 컨테이너들은 하나의 도커 네트워크에 자동으로 포함되기 때문에, 따로 도커 네트워크를 생성할 필요도 없다.
docker compose를 통한 보다 편리한 컨테이너 실행 방법을 알아보았다. 실행하기 복잡하거나 자주 실행할 일이 있는 컨테이너의 경우 가능한 docker compose를 사용하도록 하자.
'devops > docker' 카테고리의 다른 글
[Docker] Dockerfile로 Docker에서 Spring boot 서버 실행 (0) | 2022.07.22 |
---|---|
[Docker] 도커 컨테이너에 깃랩(Gitlab) 설치 (0) | 2022.07.01 |
[Docker] Dockerfile & build (0) | 2022.06.28 |
[Docker] Docker commit & push (0) | 2022.06.28 |
[Docker] 도커 입문 (0) | 2022.06.28 |