도커 가이드 · 6 min read · Oct 14, 2025
우분투 16.04에서 Nginx 및 PHP-FPM으로 Wordpress 도커화하기
Docker-Compose는 다중 컨테이너 도커 컨테이너를 단일 서비스처럼 정의하고 관리하기 위한 명령줄 도구입니다. Compose는 파이썬으로 작성되었으며 Python pip 명령으로 설치할 수 있습니다. Compose를 사용하면 단일 명령으로 여러 도커 컨테이너를 실행할 수 있습니다. 이는 개발, 테스트 및 스테이징 환경에 적합한 서비스로 컨테이너를 생성할 수 있게 해줍니다.
이 튜토리얼에서는 docker-compose를 사용하는 방법을 단계별로 안내합니다. 우리는 Nginx, MySQL 및 PHP-FPM과 함께 ‘Wordpress‘를 배포할 것입니다. 각 서비스는 자체 컨테이너를 가지며, 도커 허브 레지스트리에서 이미지를 사용할 것입니다. 도커 이미지를 사용하여 컨테이너를 생성하고 docker-compose로 모든 컨테이너를 관리하는 방법을 보여드리겠습니다.
전제 조건
- 우분투 16.04
- 루트 권한
1단계 - 도커 설치
우리는 apt 명령으로 도커와 도커 컴포즈를 수동으로 설치하여 처음부터 시작할 것입니다.
시작하기 전에 우분투 저장소를 업데이트하고 최신 업데이트를 설치합니다:
sudo apt-get update
sudo apt-get upgrade기본적으로 도커는 우분투 저장소에서 사용할 수 있으므로 즉시 설치를 계속할 수 있습니다:
sudo apt-get install -y docker.io설치가 완료되면 도커를 시작하고 부팅 시 자동으로 시작되도록 추가합니다:
systemctl start docker
systemctl enable docker이제 아래 명령으로 도커 설치를 테스트합니다:
docker run hello-world도커에서 hello-world를 볼 수 있습니다.
2단계 - 도커-컴포즈 설치
Docker-compose는 파이썬으로 작성된 스크립트로, PyPI 파이썬 저장소에서 사용할 수 있으며 python pip로 설치할 수 있습니다. 따라서 먼저 시스템에 파이썬과 python pip를 설치해야 합니다.
파이썬과 python-pip를 설치합니다:
sudo apt-get install -y python python-pip다음으로 pip 명령으로 docker-compose를 설치합니다:
pip install docker-compose설치 프로세스가 완료될 때까지 기다립니다. 그런 다음 docker-compose 명령으로 설치를 확인합니다:
docker-compose -vdocker-compose 버전을 확인할 수 있습니다.
3단계 - Wordpress 설정
이제 시스템에 도커와 도커-컴포즈가 설치되었습니다. 이 단계에서는 Wordpress 프로젝트를 위한 docker-compose 환경을 생성하고 설정하는 방법을 보여줍니다.
우리는 Nginx를 웹 서버로 사용하고 MariaDB를 MySQL 데이터베이스로 사용하는 ‘Wordpress’ PHP 애플리케이션을 도커 컨테이너로 배포할 것입니다. 각 애플리케이션(Wordpress, Nginx 및 MySQL)은 자체 컨테이너에서 실행되며, 아래 목록을 확인할 수 있습니다:
Nginx: 공식 도커 이미지를 사용하며, 최신 버전 ‘nginx: latest’입니다.
Wordpress: Wordpress는 도커 허브에서 일부 도커 이미지를 제공하며, 우리는 PHP-FPM 7.0이 포함된 WordPress 4.7을 사용할 것입니다.
MySQL: 우리는 MariaDB 공식 컨테이너, 최신 버전을 사용할 것입니다.
따라서 도커 허브 레지스트리에서 3개의 도커 이미지를 필요로 합니다.
우리는 도커를 루트로 실행하지 않을 것이며, 일반 리눅스 사용자를 사용할 것입니다. 따라서 아래 명령으로 새 사용자를 생성합니다(여기서 다른 사용자 이름을 사용해도 되며, 단지 사용자가 아직 존재하지 않는지 확인하십시오. 다른 이름을 선택하면 이 튜토리얼의 모든 명령에서 변경해야 합니다):
useradd -m -s /bin/bash hakase
passwd hakase이제 사용자를 ‘docker‘ 그룹에 추가하여 사용자가 도커 명령을 사용할 수 있도록 하고 도커 서비스를 재시작합니다:
usermod -a -G docker hakase
systemctl restart docker사용자 ‘hakase’로 로그인하고 WordPress 프로젝트를 위한 새 디렉토리를 생성합니다:
su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/다음으로 ‘docker-compose.yml‘이라는 새 파일을 만들고 프로젝트를 위한 새 디렉토리를 생성합니다. 아래 명령을 입력합니다:
touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/프로젝트의 파일 및 디렉토리 목록:
docker-compose.yml: 이것은 docker-compose 구성 파일로, 새로운 docker-compose 프로젝트를 시작할 때 반드시 생성해야 합니다.
nginx/: 이 디렉토리는 가상 호스트 등과 같은 추가 nginx 구성을 위해 사용됩니다.
db-data/: mysql 데이터에 대한 볼륨/디렉토리입니다. ‘/var/lib/mysql’의 sql 데이터가 db-data 디렉토리에 마운트됩니다.
logs/: 애플리케이션 로그, nginx, mariadb 및 php-fpm을 위한 디렉토리입니다.
wordpress/: 모든 wordpress 파일이 이 디렉토리에 저장됩니다.
‘nginx’ 디렉토리에서 우리의 wordpress 가상 호스트를 위한 새 구성 파일을 생성합니다.
새 파일 wordpress.conf를 생성합니다:
vim nginx/wordpress.conf아래 구성을 붙여넣습니다:
server {
listen 80;
server_name wp-hakase.co;
root /var/www/html;
index index.php;
access_log /var/log/nginx/hakase-access.log;
error_log /var/log/nginx/hakase-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}파일을 저장하고 vim을 종료합니다.
4단계 - Docker-Compose 구성
이 단계에서는 docker-compose.yml 파일을 편집하기 시작합니다. docker-compose 프로젝트를 시작하려면 먼저 docker-compose.yml 파일을 생성해야 합니다.
vim으로 docker-compose.yml을 편집합니다:
vim docker-compose.yml서비스를 정의합니다. 첫 번째 줄에서 Nginx를 정의합니다. 우리는 Nginx 공식 도커 이미지를 사용하고 있으며, 최신 버전으로 컨테이너의 포트 80을 호스트의 포트 80에 매핑합니다. 다음으로 도커 볼륨을 구성합니다. Nginx 가상 호스트 구성, Nginx 로그 파일 및 웹 루트 디렉토리 볼륨 ‘/var/www/html’을 위한 볼륨을 구성합니다. Nginx 컨테이너는 WordPress 컨테이너에 연결됩니다.
아래 구성을 붙여넣습니다:
ginx:
image: nginx:latest
ports:
- '80:80'
volumes:
- ./nginx:/etc/nginx/conf.d
- ./logs/nginx:/var/log/nginx
- ./wordpress:/var/www/html
links:
- wordpress
restart: always다음으로 MySQL 서버를 정의합니다. 우리는 MariaDB 이미지를 사용하고 있으며, 최신 버전입니다. 컨테이너의 포트 3306에 대한 포트 매핑을 구성하고, 환경 변수 ‘MYSQL_ROOT_PASSWORD’로 MySQL 루트 비밀번호를 구성합니다. 마지막으로 MySQL 데이터 디렉토리를 위한 컨테이너 볼륨을 구성합니다.
아래 구성을 붙여넣습니다:
mysql:
image: mariadb
ports:
- '3306:3306'
volumes:
- ./db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=aqwe123
restart: always그런 다음 WordPress 서비스를 구성합니다. WordPress 4.7 도커 이미지를 사용하고 PHP-FPM 7.0이 설치되어 있습니다. PHP-fpm의 포트를 9000으로 구성하고, 웹 디렉토리 ‘/var/www/html’을 호스트 디렉토리 ‘wordpress’에 대한 도커 볼륨을 활성화하고, WordPress 환경 변수를 정의하여 데이터베이스를 설정하고, WordPress 서비스를 mysql에 연결합니다.
아래 구성을 붙여넣습니다:
wordpress:
image: wordpress:4.7.1-php7.0-fpm
ports:
- '9000:9000'
volumes:
- ./wordpress:/var/www/html
environment:
- WORDPRESS_DB_NAME=wpdb
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PASSWORD=aqwe123
links:
- mysql
restart: alwaysdocker-compose.yml 파일에 세 부분을 추가한 후 파일을 저장하고 vim 편집기를 종료합니다.
우리의 docker-compose 구성은 준비되었습니다.
5단계 - Docker-compose 실행
docker compose로 새 컨테이너를 생성하기 시작합니다. wordpress-compose 디렉토리로 이동하여 compose 파일을 기반으로 새 컨테이너를 시작합니다.
cd ~/wordpress-compose/
docker-compose up -d명령의 결과를 볼 수 있습니다. 세 개의 컨테이너가 생성되었습니다. ps 옵션으로 컨테이너 상태를 확인해 봅시다:
docker-compose ps아래는 결과입니다:

컨테이너의 로그 출력을 보려면 아래 명령을 사용할 수 있습니다:
docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpress컨테이너 로그:

참고:
WordPress 컨테이너 로그에서 MySQL 연결 거부 오류가 표시되면 무시하십시오.
6단계 - Wordpress 설치
이 단계를 수행하기 전에 시스템에서 사용 가능한 포트/열려 있는 포트를 확인합니다. 포트 80, 3306 및 포트 9000이 열려 있는지 확인하십시오.
netstat -plntu결과는 다음과 같습니다:

이제 웹 브라우저를 열고 서버 URL 또는 IP 주소를 입력합니다.
WordPress 설치 페이지를 볼 수 있습니다. 언어를 선택하고 ‘계속‘을 클릭합니다.

사이트 제목, 관리자 사용자 및 비밀번호, 이메일 주소와 같은 웹사이트 세부정보를 입력한 후 ‘Wordpress 설치‘를 클릭합니다.

‘Wordpress 관리자 대시보드‘로 리디렉션됩니다.

그리고 이것은 나의 WordPress 샘플 게시물 hello world입니다.

Wordpress가 docker-compose로 설치되었습니다.
7단계 - 도커 컨테이너 접근
이것은 docker-compose로 컨테이너에 접근하는 방법에 대한 추가 단계입니다. 모든 컨테이너가 사용 가능하고 상태를 표시하는지 확인합니다:
docker-compose ps우리는 이미 3개의 컨테이너가 있으며, 이제 각 컨테이너에 로그인해 볼 수 있습니다. docker-compose 명령으로 첫 번째 Nginx 컨테이너에 로그인합니다.
docker-compose exec nginx bashnginx: docker-compose.yml 파일의 서비스 이름
bash: bash 셸 명령을 실행합니다.
이제 우리의 WordPress 가상 호스트 구성을 확인합니다.
cat /etc/nginx/conf.d/wordpress.conf
파일이 컨테이너에 있습니다.
다음으로 mysql 컨테이너에 로그인하고, compose 파일의 비밀번호로 mysql 셸에 로그인합니다.
docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL ROOT PASSWORD데이터베이스 목록을 확인합니다:
show databases;우리의 WordPress 데이터베이스를 볼 수 있습니다.

‘wordpress’ 컨테이너에서 모든 WordPress 파일을 볼 수 있습니다.
docker-compose exec wordpress bash
ls -lah모든 컨테이너에 접근할 수 있습니다.
참고
새 게시물을 받은 편지함에서 받기
스팸은 없습니다. 언제든지 구독 해지 가능합니다.