๐ ๋์ : ์ Docker Compose๋ก WordPress๋ฅผ ๊ตฌ์ถํ ๊น?
Docker Compose๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ค์ ๋ช
๋ น์ด๋ก WordPress ์ ์ฒด ์ธํ๋ผ๋ฅผ ์๋ํํ ์ ์์ต๋๋ค!
โ
์ ํต์ ์ธ ์ค์น๋ณด๋ค 10๋ฐฐ ๋น ๋ฅธ ๊ตฌ์ฑ
โ
MySQL, PHP, ์น ์๋ฒ ์ข
์์ฑ ๋ฌธ์ ํด๊ฒฐ
โ
๊ฐ๋ฐ/ํ
์คํธ/์ด์ ํ๊ฒฝ ์ผ๊ด์ฑ ๋ณด์ฅ
โจ “์ปจํ
์ด๋ ์ค์ผ์คํธ๋ ์ด์
”์ ์ง์๋ฅผ ๊ฒฝํํด๋ณด์ธ์!
โ๏ธ 1. ์ฌ์ ์ค๋น ์ฌํญ
ํ์ ๋๊ตฌ ์ค์น
# Docker & Docker Compose ์ค์น (Linux ๊ธฐ์ค)
sudo apt update && sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker
๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ์ค๋น
my-wordpress/
โโโ docker-compose.yml # ์ค์ ์ ํต์ฌ ํ์ผ
โโโ wp-data/ # WordPress ํ์ผ ์ ์ฅ (์๋ ์์ฑ)
๐งฉ 2. docker-compose.yml
ํ์ผ ๊ตฌ์กฐ ๋ถ์
ํต์ฌ ์ปดํฌ๋ํธ
- MySQL ์ปจํ ์ด๋ : ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง
- WordPress ์ปจํ ์ด๋ : ์น ์ ํ๋ฆฌ์ผ์ด์
- ๋ณผ๋ฅจ(Volume) : ๋ฐ์ดํฐ ์๊ตฌ ์ ์ฅ
- ๋คํธ์ํฌ(Network) : ์ปจํ ์ด๋ ๊ฐ ํต์
๐ 3. ์ค์ docker-compose.yml
์์
version: '3.8'
services:
# MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค
db:
image: mysql:8.0
volumes:
- db_data:/var/lib/mysql # DB ๋ฐ์ดํฐ ์๊ตฌ ์ ์ฅ
environment:
MYSQL_ROOT_PASSWORD: my-secret-pw # ๐ ๋ฃจํธ ๋น๋ฐ๋ฒํธ
MYSQL_DATABASE: wordpress
MYSQL_USER: wpuser
MYSQL_PASSWORD: wppass
networks:
- wordpress_net
# WordPress ์๋น์ค
wordpress:
image: wordpress:latest
depends_on:
- db # DB ์๋น์ค ์์ ํ ์คํ
ports:
- "8000:80" # ๐ ํธ์คํธ 8000ํฌํธ → ์ปจํ
์ด๋ 80ํฌํธ
volumes:
- wp_data:/var/www/html # ์น์ฌ์ดํธ ํ์ผ ์ ์ฅ
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wpuser
WORDPRESS_DB_PASSWORD: wppass
WORDPRESS_DB_NAME: wordpress
networks:
- wordpress_net
# ๋ณผ๋ฅจ ์ ์ (๋ฐ์ดํฐ ์๊ตฌํ)
volumes:
db_data: # MySQL ๋ฐ์ดํฐ
wp_data: # WordPress ์ค์น ํ์ผ
# ์ปค์คํ
๋คํธ์ํฌ
networks:
wordpress_net:
driver: bridge
๐ ํต์ฌ ์ค์ ํด์ค
depends_on
: DB ์ปจํ ์ด๋๊ฐ ๋จผ์ ์คํ๋๋๋ก ๋ณด์ฅenvironment
: ์ปจํ ์ด๋ ํ๊ฒฝ๋ณ์ (๋ณด์ ์ฃผ์!)volumes
: ํธ์คํธ ์๋ฒ์ ๋ฐ์ดํฐ ์ ์ฅ โ ์ปจํ ์ด๋ ์ฌ์์ฑ ์ ์ ์งports
:ํธ์คํธํฌํธ:์ปจํ ์ด๋ํฌํธ
๋งคํ
๐ 4. ์คํ & ์ด์ ๋ช ๋ น์ด
์์ํ๊ธฐ
docker-compose up -d # ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํ
- ์ ์ ์ฃผ์:
http://์๋ฒIP:8000
์ํ ํ์ธ
docker-compose ps # ์๋น์ค ์ํ ํ์ธ
Name Command State Ports
--------------------------------------------------------------------
mywordpress_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
mywordpress_wordpress docker-entrypoint.sh apach ... Up 0.0.0.0:8000->80/tcp
์ ์ง ๋ฐ ์ญ์
docker-compose down # ์ปจํ
์ด๋ ์ค์ง
docker-compose down -v # ๐ฅ ๋ณผ๋ฅจ๊น์ง ์์ ์ญ์ (์ฃผ์!)
๐งช 5. ๊ณ ๊ธ ์ค์ ํ
1. ๋น๋ฐ๋ฒํธ ๋ณด์ ๊ฐํ
.env
ํ์ผ ์์ฑ ํ:
MYSQL_ROOT_PASSWORD=SuperSecret123!
WORDPRESS_DB_PASSWORD=StrongPass456@
docker-compose.yml
์์ ์ฐธ์กฐ:
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
2. WordPress ์ค์ ์ปค์คํฐ๋ง์ด์ง
wordpress:
environment:
WORDPRESS_CONFIG_EXTRA: |
define('WP_DEBUG', true);
define('WP_MEMORY_LIMIT', '256M');
3. Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ถ๊ฐ
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- wordpress
๐ก๏ธ 6. ๋ฌธ์ ํด๊ฒฐ ๊ฐ์ด๋
๐ก ๋น๋ฒํ ์ด์ ๋์๋ฒ
-
ํฌํธ ์ถฉ๋
ERROR: Port 8000 is already in use
โports:
๊ฐ์"8080:80"
์ผ๋ก ๋ณ๊ฒฝ -
๊ถํ ๋ฌธ์
Unable to create directory 'wp-content/uploads'
โ ํธ์คํธ์์chmod -R 777 wp-data/
์คํ -
DB ์ฐ๊ฒฐ ์คํจ
Error establishing a database connection
โdocker-compose restart db
๋ก DB ์ฌ์์
๐ฏ ๋ง๋ฌด๋ฆฌ: Docker Compose์ ์ฅ์ ์์ฝ
- ๐ 5๋ถ ๋ด ํ๋ก๋์ ๊ธ WordPress ๊ตฌ์ถ
- ๐ ๋ฒ์ ๊ด๋ฆฌ ์ฉ์ด –
docker-compose.yml
ํ์ผ๋ก ์ธํ๋ผ ์ฝ๋ํ - ๐ฆ ์์กด์ฑ ๋ฌธ์ ํด๊ฒฐ – ๋ชจ๋ ํ๊ฒฝ์์ ๋์ผํ ๋์ ๋ณด์ฅ
- ๐ ๋ฌด๋ฃ ์คํ์์ค – ์ถ๊ฐ ๋น์ฉ ์์ด ์ํฐํ๋ผ์ด์ฆ๊ธ ๊ธฐ์ ํ์ฉ
> ๐ฌ ๋ง์ง๋ง ์กฐ์ธ:
> docker-compose.yml
ํ์ผ์ ๋ฐ๋์ ๋ฒ์ ๊ด๋ฆฌ(Git)์ ์ ์ฅํ์ธ์!
> docker-compose up -d
ํ ๋ฒ์ผ๋ก ์ธ์ ๋ ์ฌ๊ตฌ์ถ์ด ๊ฐ๋ฅํฉ๋๋ค.
# ์ต์ข
์คํ ์ํ์ค
mkdir my-wp && cd my-wp
nano docker-compose.yml # ์ ์์ ๋ด์ฉ ๋ณต์ฌ
docker-compose up -d # ์ธ๊ณ์์ ๊ฐ์ฅ ๋น ๋ฅธ WordPress ์ค์น!
์ด์ ๋ธ๋ผ์ฐ์ ์์ http://localhost:8000
์ ์ด๊ณ ์ค์น๋ฅผ ์๋ฃํ์ธ์! ๐ D