Docker compose 사용하기
Docker Compose 없이 이미지 컨테이너화
아래의 명령어들을 사용하게 되면 wordpress_net이라는 이름의 network를 구성하고 mysql과 wordpress 이미지를 컨테이너화 시킵니다.
docker network create wordpress_net
docker run --name "db" -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 -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
localhost:8080으로 접속하면 다음과 같은 화면을 볼 수 있습니다.

하지만 이런 복잡한 명령어들을 기억하고 일일이 작성하는 것은 힘듭니다.
docker-compose를 이용하면 이런 단점들을 해결할 수 있습니다.
Docker Compose 사용하기
docker-compose.yml이라는 파일을 생성합니다.
version: "3.7"
services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress_user
MYSQL_PASSWORD: 123456
app:
depends_on:
- db
image: wordpress:latest
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpress_user
WORDPRESS_DB_PASSWORD: 123456
version을 명시해주어야 합니다.
sevices 안에는 컨테이너들이 들어옵니다.
db는 mysql 5.7 이미지의 이름을 뜻합니다.
컨테이터의 데이터 유실을 방지하기 위해 데이터를 host에 저장하고 이를 volumes를 활용하여 컨테이너와 연결시킬 수 있습니다.
환경변수들은 environment를 활용하여 설정해줄 수 있습니다.
depends_on은 어떤 컨테이너가 먼저 만들어질지 설정할 수 있습니다.
docker compose를 사용하면 네트워크를 연결하는 작업을 수행할 필요가 없습니다.
아래의 명령어를 통해 docker-compsose.yml 파일을 생성할 수 있습니다.
notepad docker-compose.yml
아래의 명령어를 통해 docker-compose.yml 파일을 찾고 그 파일의 명령어들을 실행합니다.
docker-compose up
localhost:8080에 접속하면 wordpress 화면이 나오게 됩니다.
아래의 명령어를 통해 docker-compose로 실행된 컨테이너들을 내릴 수 있습니다.
docker-compose down
출처
https://www.youtube.com/watch?v=EK6iYRCIjYs&t=61s