
오늘은 여러 개의 컨테이너를 연동하여 워드프레스를 구축하는 방법에 대해 알아보겠습니다. 워드프레스는 웹사이트를 만들기 위한 인기 있는 소프트웨어로, 이를 컨테이너 환경에서 실행하기 위해서는 웹 서버, 데이터베이스, PHP 런타임 등 다양한 컨테이너를 구성해야 합니다. 이 과정에서 도커를 활용하여 효율적으로 운영할 수 있습니다.
도커 네트워크 생성 및 삭제
워드프레스를 실행하기 위해서는 워드프레스 컨테이너와 MySQL 컨테이너가 필요합니다. 이 두 컨테이너는 서로 연결되어 있어야 하며, 이를 위해 가상 네트워크를 생성해야 합니다. 네트워크를 생성하고 두 개의 컨테이너를 해당 네트워크에 소속시키면, 컨테이너 간의 통신이 가능해집니다.
도커 네트워크 생성
도커 네트워크를 생성하는 명령어는 다음과 같습니다:
docker network create netex001실행 결과:
a791f89c8c43ccf250a0dae428bda6655c8654fbfc1404cfb1e5cd8671884c3e이 명령어를 실행하면 새로운 네트워크가 생성됩니다. 생성된 네트워크를 확인할 수 있는 명령어는 다음과 같습니다:
docker network ls출력 예시:
NETWORK ID NAME DRIVER SCOPE
cb4df52b6c36 bridge bridge local
c30ea96f3f05 host host local
a791f89c8c43 netex001 bridge local
f425b0135de3 none null local네트워크 삭제
필요 시 네트워크를 삭제할 수 있습니다:
docker network rm netex001네트워크 관련 주요 하위 커맨드
네트워크 관련 커맨드는 다음과 같습니다:
- connect: 네트워크에 컨테이너를 새롭게 접속
- disconnect: 네트워크에서 컨테이너의 접속을 해제
- create: 네트워크를 생성
- inspect: 네트워크 상세 정보를 확인
- ls: 네트워크의 목록 확인
- prune: 아무 컨테이너도 접속하지 않은 네트워크 모두 삭제
- rm: 대상 네트워크 삭제
고급 네트워크 설정
# 커스텀 서브넷으로 네트워크 생성
docker network create --driver bridge \
--subnet=172.20.0.0/16 \
--ip-range=172.20.240.0/20 \
custom-network
# 네트워크 상세 정보 확인
docker network inspect netex001MySQL 컨테이너 실행
MySQL 컨테이너를 실행하기 위해서는 여러 가지 옵션을 설정해야 합니다. 다음은 MySQL 컨테이너를 실행하는 예시입니다:
docker run --name mysql_container -dit --net=netex001 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root_password \
-e MYSQL_DATABASE=database_name \
-e MYSQL_USER=user_name \
-e MYSQL_PASSWORD=user_password mysql \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--default-authentication-plugin=mysql_native_passwordMySQL 컨테이너 옵션 설명
| --name | 컨테이너 이름 |
| --net | 네트워크 이름 |
| -p | 포트번호 설정 (호스트:컨테이너) |
| -e MYSQL_ROOT_PASSWORD | MySQL 루트 패스워드 |
| -e MYSQL_DATABASE | 데이터베이스 이름 |
| -e MYSQL_USER | 사용자 이름 |
| -e MYSQL_PASSWORD | 사용자 패스워드 |
MySQL 추가 설정 옵션
# 볼륨 마운트를 통한 데이터 영속성
docker run --name mysql_persistent -dit --net=netex001 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root_password \
-e MYSQL_DATABASE=wordpress_db \
-e MYSQL_USER=wp_user \
-e MYSQL_PASSWORD=wp_password \
-v mysql_data:/var/lib/mysql \
mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--default-authentication-plugin=mysql_native_password
# 커스텀 설정 파일 사용
docker run --name mysql_custom -dit --net=netex001 -p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root_password \
-v /path/to/custom.cnf:/etc/mysql/conf.d/custom.cnf \
mysql:8.0워드프레스 컨테이너 실행
이제 워드프레스 컨테이너를 실행해보겠습니다. 다음은 워드프레스 컨테이너를 실행하는 예시입니다:
docker run --name wordpress_container -dit --net=netex001 -p 8080:80 \
-e WORDPRESS_DB_HOST=mysql_container \
-e WORDPRESS_DB_NAME=database_name \
-e WORDPRESS_DB_USER=user_name \
-e WORDPRESS_DB_PASSWORD=user_password wordpress워드프레스 컨테이너 옵션 설명
| --name | 컨테이너 이름 |
| --net | 네트워크 이름 |
| -p | 포트번호 설정 (호스트:컨테이너) |
| -e WORDPRESS_DB_HOST | 데이터베이스 컨테이너명 |
| -e WORDPRESS_DB_NAME | 데이터베이스 이름 |
| -e WORDPRESS_DB_USER | 데이터베이스 사용자 이름 |
| -e WORDPRESS_DB_PASSWORD | 데이터베이스 패스워드 |
워드프레스 고급 설정
# 볼륨 마운트를 통한 테마/플러그인 영속성
docker run --name wordpress_advanced -dit --net=netex001 -p 8080:80 \
-e WORDPRESS_DB_HOST=mysql_container \
-e WORDPRESS_DB_NAME=wordpress_db \
-e WORDPRESS_DB_USER=wp_user \
-e WORDPRESS_DB_PASSWORD=wp_password \
-e WORDPRESS_TABLE_PREFIX=wp_ \
-e WORDPRESS_DEBUG=1 \
-v wordpress_data:/var/www/html \
wordpress:latest
# SSL 인증서와 함께 HTTPS 설정
docker run --name wordpress_ssl -dit --net=netex001 -p 443:443 -p 80:80 \
-e WORDPRESS_DB_HOST=mysql_container \
-e WORDPRESS_DB_NAME=wordpress_db \
-e WORDPRESS_DB_USER=wp_user \
-e WORDPRESS_DB_PASSWORD=wp_password \
-v /path/to/ssl:/etc/ssl/certs \
wordpress:latestDocker Compose를 활용한 통합 관리
docker-compose.yml 파일 작성
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql_container
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: wordpress_db
MYSQL_USER: wp_user
MYSQL_PASSWORD: wp_password
volumes:
- mysql_data:/var/lib/mysql
networks:
- wordpress_network
command: >
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--default-authentication-plugin=mysql_native_password
wordpress:
image: wordpress:latest
container_name: wordpress_container
restart: always
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mysql_container
WORDPRESS_DB_NAME: wordpress_db
WORDPRESS_DB_USER: wp_user
WORDPRESS_DB_PASSWORD: wp_password
WORDPRESS_TABLE_PREFIX: wp_
volumes:
- wordpress_data:/var/www/html
networks:
- wordpress_network
depends_on:
- mysql
phpmyadmin:
image: phpmyadmin/phpmyadmin
container_name: phpmyadmin_container
restart: always
ports:
- "8081:80"
environment:
PMA_HOST: mysql_container
PMA_PORT: 3306
MYSQL_ROOT_PASSWORD: root_password
networks:
- wordpress_network
depends_on:
- mysql
volumes:
mysql_data:
wordpress_data:
networks:
wordpress_network:
driver: bridgeDocker Compose 실행
# 서비스 시작
docker-compose up -d
# 로그 확인
docker-compose logs -f
# 서비스 중지
docker-compose down
# 볼륨까지 삭제
docker-compose down -v컨테이너 상태 확인 및 관리
컨테이너 상태 모니터링
# 실행 중인 컨테이너 확인
docker ps
# 모든 컨테이너 확인
docker ps -a
# 컨테이너 로그 확인
docker logs wordpress_container
docker logs mysql_container
# 실시간 로그 모니터링
docker logs -f wordpress_container컨테이너 내부 접근
# WordPress 컨테이너 내부 접근
docker exec -it wordpress_container /bin/bash
# MySQL 컨테이너 내부 접근
docker exec -it mysql_container mysql -u root -p
# MySQL 데이터베이스 확인
docker exec -it mysql_container mysql -u wp_user -p wordpress_db네트워크 연결 확인
# 네트워크 상세 정보 확인
docker network inspect netex001
# 컨테이너 간 연결 테스트
docker exec -it wordpress_container ping mysql_container결론
이제 워드프레스와 MySQL 컨테이너가 성공적으로 연동되어 실행되고 있습니다. 도커를 이용한 컨테이너 환경은 개발과 배포를 효율적으로 할 수 있는 방법입니다.
핵심 포인트:
- 커스텀 네트워크 생성을 통한 컨테이너 간 안전한 통신
- 환경 변수 설정으로 데이터베이스 연결 정보 관리
- 볼륨 마운트 활용으로 데이터 영속성 보장
- Docker Compose 활용으로 다중 컨테이너 관리 자동화
- 모니터링과 로그 관리를 통한 안정적인 운영
다양한 컨테이너를 활용하여 더 복잡한 환경을 구축할 수 있으니, 앞으로도 도커를 활용한 다양한 프로젝트에 도전해보시기 바랍니다. 마이크로서비스 아키텍처와 DevOps 환경에서 이러한 컨테이너 연동 기술은 필수적인 역량이 되고 있습니다.
'IT기술 > 도커 (docker)' 카테고리의 다른 글
| Docker Redmine과 MariaDB 연동 완벽 가이드: 프로젝트 관리 시스템 구축하기 (5) | 2025.07.09 |
|---|---|
| Docker 컨테이너 오케스트레이션 완벽 가이드: 대규모 컨테이너 관리의 핵심 기술 (0) | 2025.07.08 |
| Docker WordPress와 MySQL 연동 완벽 가이드: 컨테이너 기반 웹사이트 구축 (2) | 2025.07.06 |
| Docker 컨테이너 유형별 완벽 가이드: 운영체제부터 데이터베이스까지 (4) | 2025.07.05 |
| Docker 이미지 삭제 완벽 가이드: 효율적인 스토리지 관리 방법 (2) | 2025.07.04 |