Docker와 Docker Compose를 활용하여 docker network로 묶은 WordPress와 MySQL 서비스를 구축하는 방법을 단계별로 설명합니다. Docker를 이용한 수동 설정 방법과 Docker Compose를 이용한 자동화된 설정 방법 두 가지를 다룹니다.
1. docker network
Bash
# docker network list 확인
$docker network ls
# 생성
$docker network create 네트워크명
# 삭제
$docker network rm 네트워크명
# 네트워크 상세 정보 확인
$docker inspect 네트워크명
- MySQL 컨테이너 생성 및 실행:
docker run
명령으로 MySQL 컨테이너(mysql000ex11
)를 네트워크에 연결하고 초기 설정(루트 패스워드, 데이터베이스, 사용자 등)을 지정합니다.docker network create wordpress000net1
- MySQL 컨테이너 생성 및 실행:
docker run
명령으로 MySQL 컨테이너(mysql000ex11
)를 네트워크에 연결하고 초기 설정(루트 패스워드, 데이터베이스, 사용자 등)을 지정합니다.docker run --name mysql000ex11 -dit --net=wordpress000net1 -e MYSQL_ROOT_PASSWORD=myrootpass -e MYSQL_DATABASE=wordpress000db -e MYSQL_USER=wordpress000kun -e MYSQL_PASSWORD=wkunpass mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
- WordPress 컨테이너 생성 및 실행:
docker run
명령으로 WordPress 컨테이너(wordpress000ex12
)를 동일 네트워크에 연결하고 MySQL 컨테이너와의 연동 설정을 지정합니다.docker run --name wordpress000ex12 -dit --net=wordpress000net1 -p 85:80 -e WORDPRESS_DB_HOST=mysql000ex11 -e WORDPRESS_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000kun -e WORDPRESS_DB_PASSWORD=wkunpass wordpress
2. 도커 컴포즈
YAML
version: "1"
services:
mysql000ex11:
image: mysql:8
networks:
- wordpress000net1
volumes:
- mysql000vol11:/var/lib/mysql
restart: always
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
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:
- 85: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
명령을 사용하면 YAML 파일에 작성한 명령어에 따라 서비스가 동시에 실행됩니다.docker-compose build
: Docker 이미지를 빌드합니다.docker-compose start
: 중지된 서비스를 시작합니다.docker-compose stop
: 실행 중인 서비스를 중지합니다.docker-compose down
: 서비스를 중지하고 관련된 Docker 컨테이너와 네트워크, 볼륨 등을 제거합니다.docker-compose logs
: 로그를 출력합니다
3. yaml 파일 분석
버전 (Version)
version: “1”
- Docker Compose 파일의 버전을 지정한다.
서비스 (Services)
services: mysql000ex11: image: mysql:8
- Docker Compose 파일에서 services 섹션은 실행하려는 컨테이너를 정의한다.
- mysql000ex11: MySQL 서비스의 이름이다.
- image: 사용할 Docker 이미지를 지정한다. 여기서는 MySQL의 8번 버전을 사용한다.
네트워크 (Networks)
networks: – wordpress000net1
- networks: 이 서비스가 연결될 네트워크를 지정한다.
wordpress000net1
네트워크를 사용하여 WordPress 서비스와 통신한다.
볼륨 (Volumes)
volumes: – mysql000vol11:/var/lib/mysql
- volumes: 데이터 지속성을 위해 사용됩니다.
mysql000vol11
볼륨을 MySQL 데이터 디렉토리(/var/lib/mysql)
에 마운트합니다.
환경 변수 (Environment)
environment: MYSQL_ROOT_PASSWORD: myrootpass
- environment: 서비스에 필요한 환경 변수를 정의한다.
- 여기서는 MySQL의 루트 패스워드, 데이터베이스 이름, 사용자 이름 및 패스워드를 설정
WordPress 서비스
wordpress000ex12: image: wordpress
- wordpress000ex12: WordPress 서비스의 이름이다.
- image: 여기서는 최신 WordPress 이미지를 사용한다.
포트 (Ports)
ports: – 85:80
- ports: 호스트와 컨테이너 간의 포트 매핑을 정의한다.
- 호스트의 85번 포트를 컨테이너의 80번 포트에 연결한다.