
이번 포스팅에서는 도커를 사용하여 워드프레스와 MySQL 컨테이너를 연동하는 방법을 상세히 알아보겠습니다. 이 과정은 웹사이트를 구축하는 데 필수적인 단계이며, 도커의 장점을 최대한 활용할 수 있습니다.
네트워크 생성
워드프레스와 MySQL 컨테이너가 서로 통신할 수 있도록 가상 네트워크를 생성해야 합니다. 다음은 네트워크를 생성하는 과정입니다:
# 현재 네트워크 목록 확인
docker network ls출력 예시:
NETWORK ID NAME DRIVER SCOPE
484e0612cb97 bridge bridge local
c30ea96f3f05 host host local
f425b0135de3 none null local# 새로운 네트워크 생성
docker network create wordpress_net1네트워크 생성 후 목록 재확인:
docker network ls출력 결과:
NETWORK ID NAME DRIVER SCOPE
484e0612cb97 bridge bridge local
c30ea96f3f05 host host local
f425b0135de3 none null local
e1c93726601d wordpress_net1 bridge local여기서 wordpress_net1이라는 새로운 네트워크가 생성된 것을 확인할 수 있습니다.
MySQL 컨테이너 생성 및 실행
워드프레스에서 사용할 MySQL 컨테이너를 생성하고 실행합니다. MySQL의 버전은 8.4로 지정하여 mysql_native_password를 설정합니다:
docker run --name mysql001 -dit --net=wordpress_net1 -p 33060:3306 \
-e MYSQL_ROOT_PASSWORD=admin123 \
-e MYSQL_DATABASE=wordpressdb \
-e MYSQL_USER=wordpress \
-e MYSQL_PASSWORD=wordpresspw mysql:8.4 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci \
--mysql_native_password=ON실행 결과:
Unable to find image 'mysql:8.4' locally
8.4: Pulling from library/mysql
f7fa64c7935f: Already exists
81ebfd74dcb5: Already exists
d08c5512fe2f: Already exists
0fe89fd72816: Already exists
fc3cf76a534a: Already exists
fa2668a8281b: Pull complete
5bd440e2669c: Pull complete
81b6a9cf642c: Pull complete
e521efae22b3: Pull complete
babc7aaaa095: Pull complete
Digest: sha256:1d967fb75a64dc3c2894c69285becfc2304ae0c3c4f4c715c297f3c12d60b01c
Status: Downloaded newer image for mysql:8.4이 명령어를 실행하면 MySQL 이미지가 로컬에 없을 경우 자동으로 다운로드가 시작됩니다. 다운로드가 완료되면 MySQL 컨테이너가 실행됩니다.
MySQL 컨테이너 옵션 상세 설명
| --name mysql001 | 컨테이너 이름 지정 |
| --net=wordpress_net1 | 생성한 네트워크에 연결 |
| -p 33060:3306 | 호스트 포트 33060을 컨테이너 포트 3306에 매핑 |
| -e MYSQL_ROOT_PASSWORD | MySQL 루트 사용자 비밀번호 설정 |
| -e MYSQL_DATABASE | 초기 데이터베이스 생성 |
| -e MYSQL_USER | 일반 사용자 계정 생성 |
| -e MYSQL_PASSWORD | 일반 사용자 비밀번호 설정 |
워드프레스 컨테이너 생성 및 실행
이제 워드프레스 컨테이너를 생성하고 실행해보겠습니다. MySQL 컨테이너와 연동하기 위해 필요한 환경 변수를 설정합니다:
docker run --name wordpress001 -dit --net=wordpress_net1 -p 8088:80 \
-e WORDPRESS_DB_HOST=mysql001 \
-e WORDPRESS_DB_NAME=wordpressdb \
-e WORDPRESS_DB_USER=wordpress \
-e WORDPRESS_DB_PASSWORD=wordpresspw wordpress실행 결과:
Unable to find image 'wordpress:latest' locally
latest: Pulling from library/wordpress
7ce705000c39: Already exists
48015c6e07fa: Pull complete
69f6eaa105a9: Pull complete
4e3f24c5a85b: Pull complete
37b226d860af: Pull complete
4cc75481d6ff: Pull complete
596177a782ea: Pull complete
7f5ab0905a27: Pull complete
de4185ddd634: Pull complete
6ce3fb9c7e91: Pull complete
2d5674fe59ce: Pull complete
0a581af15f84: Pull complete
c2df47e565b9: Pull complete
4f4fb700ef54: Pull complete
8035c449c85f: Pull complete
9f5deabc6298: Pull complete
ac68beb5607b: Pull complete
f8c951fb3bc4: Pull complete
caf4c9991abf: Pull complete
c1416a809e9f: Pull complete
5628e8dca1ea: Pull complete
cc1b04a38780: Pull complete
Digest: sha256:b60e01ce06202c836b46d54cb3eceba3a6f30950491e6805ce17d840ff6943c0
Status: Downloaded newer image for wordpress:latest워드프레스 이미지도 마찬가지로 로컬에 없을 경우 다운로드가 진행됩니다. 다운로드가 완료되면 워드프레스 컨테이너가 실행됩니다.
워드프레스 컨테이너 환경 변수 설명
| WORDPRESS_DB_HOST | MySQL 컨테이너 이름 (mysql001) |
| WORDPRESS_DB_NAME | 연결할 데이터베이스 이름 |
| WORDPRESS_DB_USER | 데이터베이스 사용자 이름 |
| WORDPRESS_DB_PASSWORD | 데이터베이스 사용자 비밀번호 |
컨테이너 상태 확인
현재 실행 중인 컨테이너의 상태를 확인해보겠습니다:
docker ps -a출력 예시:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8f37d6109be9 wordpress "docker-entrypoint.s…" 57 seconds ago Up 55 seconds 0.0.0.0:8088->80/tcp wordpress001
b0de500f2fe1 mysql:8.4 "docker-entrypoint.s…" 6 minutes ago Up 6 minutes 33060/tcp, 0.0.0.0:33060->3306/tcp mysql001여기서 두 개의 컨테이너가 정상적으로 실행 중임을 확인할 수 있습니다. 각각의 컨테이너 이름과 상태, 포트 정보도 함께 확인할 수 있습니다.
컨테이너 로그 확인
# 워드프레스 컨테이너 로그 확인
docker logs wordpress001
# MySQL 컨테이너 로그 확인
docker logs mysql001
# 실시간 로그 모니터링
docker logs -f wordpress001웹페이지 확인
컨테이너가 정상적으로 실행되고 있다면, 웹 브라우저에서 http://localhost:8088로 접속하여 워드프레스 설치 페이지를 확인할 수 있습니다. 설치 과정을 따라 진행하면 워드프레스를 사용할 준비가 완료됩니다.
워드프레스 초기 설정 과정
- 언어 선택: 한국어 또는 원하는 언어 선택
- 데이터베이스 연결 정보 확인: 자동으로 설정됨
- 사이트 정보 입력:
- 사이트 제목
- 관리자 사용자명
- 관리자 비밀번호
- 관리자 이메일
- 설치 완료 및 로그인
사용하지 않는 자원 정리
마지막으로 사용하지 않는 컨테이너, 이미지, 네트워크를 정리하는 방법을 알아보겠습니다. 컨테이너와 이미지를 삭제할 때는 stop과 rm 명령어를 사용합니다.
네트워크 정리
네트워크를 정리할 때는 다음 명령어를 사용할 수 있습니다:
docker network prune실행 결과:
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Networks:
wordpress_net1이 명령어는 사용하지 않는 네트워크를 삭제합니다. 삭제하기 전에 확인 메시지가 나오므로, y를 입력하여 삭제를 진행합니다.
컨테이너 및 이미지 정리
# 컨테이너 중지 및 삭제
docker stop wordpress001 mysql001
docker rm wordpress001 mysql001
# 사용하지 않는 이미지 삭제
docker image prune
# 전체 시스템 정리
docker system prune -aDocker Compose를 활용한 개선된 방법
docker-compose.yml 파일 작성
version: '3.8'
services:
mysql:
image: mysql:8.4
container_name: mysql001
restart: always
environment:
MYSQL_ROOT_PASSWORD: admin123
MYSQL_DATABASE: wordpressdb
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpresspw
command: >
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
--mysql_native_password=ON
volumes:
- mysql_data:/var/lib/mysql
networks:
- wordpress_net1
wordpress:
image: wordpress:latest
container_name: wordpress001
restart: always
ports:
- "8088:80"
environment:
WORDPRESS_DB_HOST: mysql001
WORDPRESS_DB_NAME: wordpressdb
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpresspw
volumes:
- wordpress_data:/var/www/html
networks:
- wordpress_net1
depends_on:
- mysql
volumes:
mysql_data:
wordpress_data:
networks:
wordpress_net1:
driver: bridgeDocker Compose 실행
# 서비스 시작
docker-compose up -d
# 서비스 중지
docker-compose down
# 볼륨까지 삭제
docker-compose down -v결론
이제 워드프레스와 MySQL 컨테이너가 성공적으로 연동되어 실행되고 있습니다. 도커를 통해 손쉽게 웹사이트를 구축하고 관리할 수 있는 방법을 배웠습니다.
핵심 포인트:
- 커스텀 네트워크 생성을 통한 컨테이너 간 안전한 통신
- MySQL 8.4 버전 사용으로 최신 보안 기능 활용
- 환경 변수 설정을 통한 데이터베이스 연결 자동화
- 포트 매핑을 통한 외부 접근 허용
- Docker Compose 활용으로 관리 효율성 극대화
도커 컨테이너 기술을 활용하면 개발 환경과 운영 환경의 일관성을 보장하고, 확장성과 유지보수성을 크게 향상시킬 수 있습니다.
'IT기술 > 도커 (docker)' 카테고리의 다른 글
| Docker 컨테이너 오케스트레이션 완벽 가이드: 대규모 컨테이너 관리의 핵심 기술 (0) | 2025.07.08 |
|---|---|
| Docker 다중 컨테이너 연동 완벽 가이드: WordPress와 MySQL 구축하기 (2) | 2025.07.07 |
| Docker 컨테이너 유형별 완벽 가이드: 운영체제부터 데이터베이스까지 (4) | 2025.07.05 |
| Docker 이미지 삭제 완벽 가이드: 효율적인 스토리지 관리 방법 (2) | 2025.07.04 |
| Docker Apache 컨테이너 완벽 가이드: 웹 서버 설정부터 외부 통신까지 (2) | 2025.07.04 |