docker-compose 파일은 시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구
도커 컴포즈 파일은 컴포즈 파일이 사용할 한 폴더에 단 ‘하나’만 있어야 한다. 도커 컴포즈 파일은 docker-compose.yml이라는 이름으로만 파일을 생성할 수 있기 때문이다.
docker-compose 파일을 작성하는 방법
docker-compose.yml
version: "3" services:
services:
컨테이너_이름1:
image: 이미지_이름
networks:
- 네트워크_이름
ports:
-포트_설정
...
컨테이너_이름2:
image: 이미지_이름
...
networks:
연동할_컨테이너들이_속할_네트워크의_이름
volumes:
볼륨_이름1:
볼륨_이름2:
MySQL 컨테이너(mysql000vol11) 정의
도커 컴포즈에 포함될 MySQL의
항목 | 항목 이름 | 값 |
MySQL 이미지 이름 | image: | mysql:5.7 |
사용할 네트워크 | networks: | wordpress000net1 |
사용할 볼륨 | volumes | mysql000vol11 |
마운트 위치 | /var/lib/mysql | |
재시작 설정 | restart: | always |
MySQL 설정 | environment | |
Mysql 루트 비밀번호 | MYSQL_ROOT_PASSWORD | myrootpass |
MYSQL 데이터베이스 | MYSQL_DATABASE | wordpress000db |
MYSQL 사용자 | MYSQL_USER | wordpress000kun |
Mysql 비밀번호 | MYSQL_PASSWORD | wkunpass |
워드프레스 컨테이너(wordpress000ex12) 정의
항목 | 항목 이름 | 값 |
의존관계 | depends_on: | mysql000ex11 |
워드프레스 이미지 이름 | images: | wordpress |
사용할 네트워크 | networks: | wordpress000net1 |
사용할 볼륨 | volumes: | wordpress000vol12 |
마운트 위치 | /var/www/html | |
포트 번호 설정 | port: | 8085:80 |
재시작 설정 | restart: | always |
DB 관련 정보 | environment: | |
Mysql 컨테이너 이름 | WORDPRESS_DB_HOST | mysql000ex11 |
MYSQL 데이터베이스 | WORDPRESS_DB_NAME | wordpress000db |
MYSQL 사용자 | WORDPRESS_DB_USER | wordpress000kun |
Mysql 비밀번호 | WORDPRESS_DB_PASSWORD | wkunpass |
docker-compose.yml 파일 작성하기
1. 버전에 이어 필수 주 항목(services, networks, volumes)을 작성
version: "3"
services:
networks:
volumes:
2. MySQL 컨테이너 작성
(파일을 작성할 때 들여쓰기에 유의할 것)
version: "3"
services:
mysql000ex11:
wordpress000ex12:
networks:
wordpress000net1
volumes:
mysql000vol11:
wordpress000vol12:
3. 워드프레스 컨테이너 정의 작성
...(중략)...
wordpress000ex12:
depends_on:
- mysql000ex11
image: wordpress
networks:
- wordpress000net1
volumes:
- wordpress000vol12:/var/www/html
ports:
- 8085:80
restart: always
environment:
WORDPRESS_DB_HOST: mysql000ex11
WORDPRESS_DB_NAME: wordpress000db
WORDPRESS_DB_USER: wordpress000kun
WORDPRESS_DB_PASSWORD: wkunpass
4. 도커 컴포즈 파일 최종 내용
version: "3"
services:
mysql000ex11:
image: mysql:5.7
networks:
- wordpress000net1
volumes:
- mysql000vol11:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: myrootpass
MYSQL_DATABASE: wordpress000db
MYSQL_USER: wordpress000kun
MYSQL_PASSWORD: wkunpass
wordpress000ex12:
depends_on:
- mysql000ex11
image: wordpress
networks:
- wordpress000net1
volumes:
- wordpress000vol12:/var/www/html
ports:
- 8085:80
restart: always
environment:
WORDPRESS_DB_HOST: mysql000ex11
WORDPRESS_DB_NAME: wordpress000db
WORDPRESS_DB_USER: wordpress000kun
WORDPRESS_DB_PASSWORD: wkunpass
networks:
wordpress000net1:
volumes:
mysql000vol11:
wordpress000vol12:

Reference