docker-compose로 워드프레스를 구축하는 방법을 정리한다. docker-compose는 시스템 구축에 필요한 명령을 하나의 정의 파일에 기재해, 명령 한 번으로 시스템 전체를 실행하고 종료·폐기까지 처리하도록 도와주는 도구다. 이 글에서는 MySQL과 워드프레스 두 컨테이너를 docker-compose.yml 한 파일에 정의해 한 번에 띄우는 과정을 단계별로 살펴본다.
docker-compose란
docker-compose는 여러 컨테이너의 구성을 하나의 텍스트 파일로 관리한다. 도커 컴포즈 파일은 한 폴더에 단 하나만 있어야 하는데, 파일 이름을 docker-compose.yml로만 생성할 수 있기 때문이다.
docker-compose.yml 기본 구조
도커 컴포즈 파일의 기본 골격은 다음과 같다. 크게 services(컨테이너 정의), networks(네트워크), volumes(볼륨) 세 영역으로 나뉜다.
version: "3"
services:
컨테이너_이름1:
image: 이미지_이름
networks:
- 네트워크_이름
ports:
- 포트_설정
컨테이너_이름2:
image: 이미지_이름
...
networks:
연동할_컨테이너들이_속할_네트워크의_이름
volumes:
볼륨_이름1:
볼륨_이름2:
컨테이너 정의 설계
MySQL 컨테이너(mysql000ex11) 정의
워드프레스의 데이터를 저장할 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으로 MySQL에 대한 의존 관계를 지정하고, 환경 변수로 DB 접속 정보를 전달한다.
| 항목 | 항목 이름 | 값 |
| 의존관계 | 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. docker-compose.yml 최종 내용
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:
파일이 있는 폴더에서 docker-compose up을 실행하면 두 컨테이너가 함께 생성되고, 브라우저에서 8085 포트로 접속하면 워드프레스 설치 화면이 나타난다.

정리
docker-compose를 이용하면 MySQL과 워드프레스처럼 여러 컨테이너로 이루어진 시스템도 정의 파일 하나로 일괄 실행·종료할 수 있다. 같은 방식으로 WEB-WAS를 묶는 예시는 docker-compose로 NginX – Tomcat 연동에서 이어서 살펴볼 수 있다.



💬 댓글 0