ํ๋ก์ ํธ ๊ฐ์
Inception์ Docker์ Docker Compose๋ฅผ ํ์ฉํ์ฌ ์น ์๋น์ค๋ฅผ ์ํ ๊ฒฝ๋ ์ธํ๋ผ ํ๊ฒฝ์ ์ง์ ์ค๊ณํ๊ณ ๊ตฌ์ถํ ํ๋ก์ ํธ์ ๋๋ค. ์ค์ ์๋น์ค ํ๊ฒฝ๊ณผ ์ ์ฌํ ์กฐ๊ฑด์์ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ์์คํ ์ ์ด์ํ๋ ๋ฅ๋ ฅ์ ํค์ฐ๊ธฐ ์ํด ์งํ๋์์ต๋๋ค.
Inception/
โโโ Makefile
โโโ srcs/
โโโ .env
โโโ docker-compose.yml
โโโ requirements/
โโโ mariadb/
โ โโโ conf/
โ โโโ Dockerfile
โ โโโ .dockerignore
โ โโโ tools/
โโโ nginx/
โ โโโ conf/
โ โโโ Dockerfile
โ โโโ .dockerignore
โ โโโ tools/
โโโ wordpress/
โโโ Dockerfile
โโโ tools/- Dockerfile ์์ฑ ๋ฐ ์ด๋ฏธ์ง ๋น๋ ์๋ํ
- TLS ์ ์ฉ๋ ์น ์๋น์ค ๊ตฌ์ฑ (HTTPS 443 ํฌํธ)
- ๋ฉํฐ ์ปจํ ์ด๋ ํ๊ฒฝ์์์ ์๋น์ค ๋ถ๋ฆฌ ๋ฐ ์ฐ๋
- ๋ณด์ ์ ์ฑ ์ค์ (ํ๊ฒฝ๋ณ์ ๊ด๋ฆฌ, ๋น๋ฐ๋ฒํธ ๋ ธ์ถ ๊ธ์ง ๋ฑ)
| ๊ตฌ์ฑ ์์ | ์ค๋ช |
|---|---|
| Docker | ๊ฐ ์๋น์ค๋ฅผ ์ปจํ ์ด๋ํํ๊ณ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ ์ ๊ณต |
| Docker Compose | ์ ์ฒด ์ธํ๋ผ ํ๊ฒฝ์ ์ฝ๋๋ก ๊ตฌ์ฑ ๋ฐ ์๋ํ |
| NGINX | HTTPS(SSL/TLS 1.2 or 1.3) ๊ธฐ๋ฐ Reverse Proxy |
| WordPress + PHP-FPM | ๋ธ๋ก๊ทธ/์น์ฌ์ดํธ ์์ง |
| MariaDB | WordPress์ ์ฐ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค |
| Volumes | ์น ๋ฐ์ดํฐ ๋ฐ DB ๋ฐ์ดํฐ์ ์์์ฑ ๋ณด์ฅ |
| Custom Network | ์๋น์ค ๊ฐ์ ๋ด๋ถ ํต์ ์ ์ํ ๊ฐ์ ๋คํธ์ํฌ ๊ตฌ์ฑ |
| .env ํ์ผ | ๋ฏผ๊ฐ์ ๋ณด ์ธ๋ถ ์ ์ถ ๋ฐฉ์ง๋ฅผ ์ํ ํ๊ฒฝ๋ณ์ ๊ด๋ฆฌ |
- NGINX๋ HTTPS 443 ํฌํธ๋ง ํ์ฉํ๋ฉฐ, ์ ์ผํ ์ง์ ์ ์ ๋๋ค.
- WordPress๋ php-fpm ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, nginx ์์ด ๋ณ๋ ์ปจํ ์ด๋์์ ๊ตฌ๋๋ฉ๋๋ค.
- MariaDB๋ DB ์ ์ฉ ์ปจํ ์ด๋์์ ๊ตฌ๋๋๋ฉฐ, WordPress DB๋ฅผ ๊ด๋ฆฌํฉ๋๋ค.
- ์น์๋น์ค ๋น๋์ ์ฆ์ ์ฌ์ฉ์ ๋ฐ ๊ด๋ฆฌ์ ๊ณ์ ์ด ์์ฑ๋ฉ๋๋ค.
- ๋ชจ๋ ์๋น์ค๋ Debian ๊ธฐ๋ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋ฐํ์ผ๋ก ์ปค์คํ ๋์์ต๋๋ค.
- ์ปจํ ์ด๋๋ crash ์ ์๋ ์ฌ์์๋๋๋ก ์ค์ ๋์ด ์์ต๋๋ค.
.envํ์ผ์ ํตํด ๋น๋ฐ๋ฒํธ, ๋๋ฉ์ธ ๋ฑ ๋ฏผ๊ฐ ์ ๋ณด๋ Git์์ ์ ์ธ๋ฉ๋๋ค.
์ด ํ๋ก์ ํธ๋ ๋จ์ํ Docker ์ค์ต์ ๋์ด์, ์ค์ ์๋น์ค ํ๊ฒฝ๊ณผ ์ ์ฌํ ์ธํ๋ผ๋ฅผ ์ง์ ๊ตฌ์ฑํด๋ณด๋ฉฐ ์์คํ ๊ด๋ฆฌ์ ํต์ฌ ๊ฐ๋ ๊ณผ Docker์ ์ค์ ํ์ฉ๋ฒ์ ๊น์ด ์ดํดํ ์ ์์๋ ๊ฒฝํ์ด์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ ์๋กญ๊ฒ ๋ฐฐ์ฐ๊ณ ์ฒด๋ํ์ต๋๋ค:
๐ง 1. Docker ๋ฐ docker-compose ๊ธฐ๋ฐ ์ธํ๋ผ ๊ตฌ์ฑ docker-compose.yml์ ํตํด Nginx, WordPress, MariaDB๋ฅผ ๊ฐ๊ฐ์ ์ปจํ ์ด๋๋ก ๋ถ๋ฆฌํด ๊ตฌ์ฑํ๊ณ , ์๋น์ค ๊ฐ ์ฐ๊ฒฐ์ docker network๋ก ๊ตฌ์ฑํ์ฌ ์ค์ ํ๊ฒฝ๊ณผ ์ ์ฌํ ํํ์ ์ธํ๋ผ๋ฅผ ์ค๊ณํ์ต๋๋ค.
Dockerfile์ ์ง์ ์์ฑํ์ฌ ๊ฐ ์๋น์ค์ ์ด๋ฏธ์ง ์ปค์คํฐ๋ง์ด์ง์ ์ํํ๊ณ , Makefile๋ก ๋น๋ ๋ฐ ์คํ์ ์๋ํํ์ต๋๋ค.
๐ 2. HTTPS ๊ธฐ๋ฐ ๋ณด์ ์ค์ TLS 1.2/1.3์ ์ ์ฉํ Nginx ์๋ฒ ๊ตฌ์ฑ์ ํตํด HTTPS๋ก๋ง ์ ์ ๊ฐ๋ฅํ ๋ณด์ ํ๊ฒฝ์ ๊ตฌ์ถํ์ต๋๋ค.
OpenSSL์ ์ด์ฉํด ์์ฒด ์ธ์ฆ์ ์์ฑ ๋ฐ Nginx์ ์ ์ฉํ๋ ๊ณผ์ ์์ TLS์ ์ธ์ฆ์์ ์๋ฆฌ๋ฅผ ์ดํดํ์ต๋๋ค.
๐พ 3. ๋ฐ์ดํฐ ์์ํ ๋ฐ ์ฌ์ฉ์ ๋ฐ์ดํฐ ๋ณดํธ WordPress์ ์น ํ์ผ๊ณผ MariaDB์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ Docker volume์ผ๋ก ๋ถ๋ฆฌํ์ฌ ์์ํ ์ฒ๋ฆฌํจ์ผ๋ก์จ ์ปจํ ์ด๋ ์ฌ์์ ์์๋ ๋ฐ์ดํฐ๊ฐ ๋ณด์กด๋๋๋ก ๊ตฌ์ฑํ์ต๋๋ค.
.env ํ์ผ์ ํตํด ๋ฏผ๊ฐํ ์ ๋ณด(๋น๋ฐ๋ฒํธ, ๋๋ฉ์ธ ๋ฑ)๋ฅผ ์ธ๋ถ๋ก๋ถํฐ ๋ถ๋ฆฌํ๊ณ , git์์ ignore ์ฒ๋ฆฌํ์ฌ ๋ณด์ ๊ด์ ์ ํ๋ก์ ํธ ์ค๊ณ ๊ฒฝํ์ ์์์ต๋๋ค.
๐ 4. ์ปจํ ์ด๋ ์ด์ ์์ ์ฑ ํ๋ณด restart: always ์ต์ ์ ์ ์ฉํด ์ปจํ ์ด๋๊ฐ ์ถฉ๋์ด๋ ์๋ฒ ์ฌ๋ถํ ์ดํ์๋ ์๋์ผ๋ก ๋ณต๊ตฌ๋๋๋ก ์ค์ ํ์๊ณ ,
PID 1 ๋ฐ ๋ฐ๋ชฌ ์ฒ๋ฆฌ์ ๋ํ ๊ฐ๋ ์ ์ดํดํ๊ณ , tail -f, sleep infinity ๊ฐ์ ๋น๊ถ์ฅ ๋ฐฉ์ ์์ด ์๋น์ค๋ฅผ ์์ ์ ์ผ๋ก ์คํํ ์ ์๋ ๊ตฌ์กฐ๋ก ๊ฐ์ ํ์ต๋๋ค.
๐ง 5. ์ด์ ํ๊ฒฝ ์๋ฎฌ๋ ์ด์ ๊ฒฝํ mylogin.42.fr ํํ์ ๋๋ฉ์ธ ์ฐ๊ฒฐ๊ณผ hosts ํ์ผ ์ค์ ์ ํตํด ๊ฐ์ ์ด์ ํ๊ฒฝ์ ๊ตฌ์ถํ๋ฉฐ, ๋๋ฉ์ธ, IP ๋งคํ, ํฌํธํฌ์๋ฉ, ์๋ฒ ๋ณด์์ ๋ํ ์ค์ ํ๊ฒฝ๊ณผ ์ ์ฌํ ์ค์ต์ ์งํํ์ต๋๋ค.
๊ฒฝ๋ํ ์ด๋ฏธ์ง๋ก๋ Debian์ ์ ํํ์ฌ ์๋น์ค ์์ ์ฑ๊ณผ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํธํ์ฑ์ ํ๋ณดํ๋ ๋ฐฉ์์ ์ด์ ์ ํ ๊ธฐ์ค์ ๋ฐฐ์ ์ต๋๋ค.