์จ๋ผ์ธ ๊ฐ์
>PHP - ์ต์๊ธ
๐ PHP ์ต์๊ธ - 3์ฃผ์ฐจ: ์ปจํ ์ด๋ ๊ธฐ์ (Docker) ํ์ฉ- 01 Docker ๊ฐ๋ ๋ฐ ์ค์น
์ฃผ์ ํ๋ก๊ทธ๋จ ์คํ
- ํ์ : 10.0
- ๋ผ์ด์ ์ค: free
- ์ด์์ฒด์ :
- ํ์ผ ํฌ๊ธฐ: 0
ํผ๋๋ฐฑ ๋ฐ ๋ค์ด๋ก๋
- ์ฌ์ฉ์ ํ์ : 10.0
- ๋ค์ด๋ก๋ ์: 1
- ์กฐํ์: 42
์ ์กฐ์ฌ ๋ฐ ๋ฑ๋ก ์ ๋ณด
- ์ ์์ฌ: LUZENSOFT
- ๋ฑ๋ก์ผ: 2025-10-08 13:15:49
- ์ค๋ช
์๋ ํ์ธ์. #PHP ์ต์๊ธ ๊ณผ์ 3์ฃผ์ฐจ์์๋ ํ๋ ๊ฐ๋ฐ ํ๊ฒฝ์์ ํ์์ ์ธ ์ปจํ ์ด๋ ๊ธฐ์ , ํนํ #Docker๋ฅผ ๋ค๋ฃน๋๋ค. ์ด๋ฒ ์๊ฐ์๋ #Docker์ ๊ธฐ๋ณธ #๊ฐ๋ ์ ์ดํดํ๊ณ , ์ค์ต ํ๊ฒฝ์ ์ํ #์ค์น ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค.
์ปจํ ์ด๋ ๊ธฐ์ ์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ
๊ณผ๊ฑฐ์๋ ๊ฐ๋ฐ, ํ ์คํธ, ์ด์ ํ๊ฒฝ์ ์ผ์น์ํค๊ธฐ ์ด๋ ต๋ค๋ ๊ณ ์ง์ ์ธ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. "๋ด ์ปดํจํฐ์์๋ ์ ๋๋๋ฐ, ์๋ฒ์์๋ ์ ๋ผ์(It works on my machine)"๋ผ๋ ๋ง์ด ๊ฐ๋ฐ์๋ค ์ฌ์ด์์ ํํ์ต๋๋ค.
์ด๋ฌํ ํ๊ฒฝ ๋ถ์ผ์น ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ฐ์ ๋จธ์ (Virtual Machine, VM) ๊ธฐ์ ์ด ์ฌ์ฉ๋์์ง๋ง, #VM์ ๋ฌด๊ฑฐ์ด #์ด์์ฒด์ (OS) ์ ์ฒด๋ฅผ ๊ฐ์ํํด์ผ ํ๋ฏ๋ก ๋๋ฆฌ๊ณ ๋ฆฌ์์ค ์๋ชจ๊ฐ ์ปธ์ต๋๋ค.
#์ปจํ ์ด๋ ๊ธฐ์ ์ VM์ ๋จ์ ์ ๊ทน๋ณตํ๊ณ , ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๊ทธ ์ข ์์ฑ์ ํ๋์ ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ(#์ปจํ ์ด๋)์ ํจํค์งํ์ฌ, ์ด๋ค ํ๊ฒฝ์์๋ ์ผ๊ด๋๊ฒ ์คํ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
Docker์ ํต์ฌ ๊ฐ๋ ์ดํด
#Docker๋ ์ปจํ ์ด๋ ๊ธฐ์ ์ ํ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ํจํค์ง, ๋ฐฐํฌ, ์คํํ ์ ์๋๋ก ๋๋ ํ๋ซํผ์ ๋๋ค.
๐ก Docker์ VM์ ์ฐจ์ด์
๊ตฌ๋ถ | ๊ฐ์ ๋จธ์ (VM) | Docker ์ปจํ ์ด๋ |
|---|---|---|
์ด์์ฒด์ | ๊ฐ VM๋ง๋ค ๋ ๋ฆฝ์ ์ธ OS ํฌํจ | ํธ์คํธ OS์ ์ปค๋์ ๊ณต์ |
์์ ์๋ชจ | ๋์ (์ GB ๋จ์) | ๋ฎ์ (์ MB ๋จ์) |
์์ ์๋ | ๋๋ฆผ (๋ถ ๋จ์) | ๋น ๋ฆ (์ด ๋จ์) |
๊ฒฉ๋ฆฌ ์์ค | ํ๋์จ์ด ์์ค์ ์์ ๊ฒฉ๋ฆฌ | OS ์ปค๋ ์์ค์ ๊ฒฉ๋ฆฌ (Cgroups, Namespaces ํ์ฉ) |
๐ Docker ์ฃผ์ ์ฉ์ด
์ด๋ฏธ์ง (Image):
์ ํ๋ฆฌ์ผ์ด์ ์คํ์ ํ์ํ ๋ชจ๋ ๊ฒ(์ฝ๋, ๋ฐํ์, ์์คํ ๋๊ตฌ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ)์ ํฌํจํ๋ ์ฝ๊ธฐ ์ ์ฉ์ ํ ํ๋ฆฟ์ ๋๋ค.
ํ๋์ ํด๋์ค๋ ์ค๊ณ๋์ ๊ฐ์์, ์ด๊ฒ์ ๊ธฐ๋ฐ์ผ๋ก ์ปจํ ์ด๋๋ฅผ ์์ฑํฉ๋๋ค.
์:
php:8.3-fpm์ด๋ฏธ์ง,mysql:8.0์ด๋ฏธ์ง.
์ปจํ ์ด๋ (Container):
์ด๋ฏธ์ง๋ฅผ ์คํํ ์ํ๋ก, ๊ฒฉ๋ฆฌ๋ ํ๊ฒฝ์์ ๋์ํ๋ ์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ธ์คํด์ค์ ๋๋ค.
ํ๋์ ๊ฐ์ฒด๋ ์คํ ์ค์ธ ํ๋ก์ธ์ค์ ๊ฐ์์, ์์ฑ, ์์, ์ค์ง, ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
Docker Hub / Registry:
๊ณต๊ฐ์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ๋์ปค ์ด๋ฏธ์ง๋ฅผ ์ ์ฅํ๊ณ ๊ณต์ ํ๋ ์ค์ ์ ์ฅ์์ ๋๋ค. #GitHub์ ์ ์ฌํฉ๋๋ค.
Dockerfile:
์ฌ์ฉ์ ์ ์ ์ด๋ฏธ์ง๋ฅผ ๋น๋ํ๊ธฐ ์ํ ๋ช ๋ น์ด๊ฐ ๋ด๊ธด ํ ์คํธ ํ์ผ์ ๋๋ค. #PHP ํ๊ฒฝ ์ค์ , ํ์ํ ํ์ฅ ์ค์น ๋ฑ์ ๊ณผ์ ์ ์ด ํ์ผ์ ๊ธฐ์ ํฉ๋๋ค.
Docker ์ค์น ๋ฐ ๊ธฐ๋ณธ ํ๊ฒฝ ์ค์
#Docker๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ํธ์คํธ ์ด์์ฒด์ ์ #Docker Engine์ ์ค์นํด์ผ ํฉ๋๋ค.
๐ป ์ค์น (Docker Desktop ๊ถ์ฅ)
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ Docker Desktop์ ์ค์นํ๋ ๊ฒ์ ๋๋ค.
Windows / macOS:
Docker ๊ณต์ ์น์ฌ์ดํธ์์ Docker Desktop ์ค์น ํ์ผ์ ๋ค์ด๋ก๋ํ์ฌ ์คํํฉ๋๋ค. #Docker Desktop์ #Docker Engine, #Docker CLI, #Docker Compose, #Kubernetes ๋ฑ์ ๋๊ตฌ๋ฅผ ํฌํจํ๋ ํตํฉ ํ๊ฒฝ์ ๋๋ค.
์ค์น ํ, ์์คํ ํธ๋ ์ด์์ Docker ์์ด์ฝ์ ํ์ธํ๊ณ Running ์ํ์ธ์ง ํ์ธํฉ๋๋ค.
Linux (Ubuntu ์์):
๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ์ฌ
apt-get๋ฑ์ ํตํด #Docker Engine๊ณผ #Docker CLI๋ฅผ ์ค์นํฉ๋๋ค.(์ฃผ์: Linux ์๋ฒ ํ๊ฒฝ์์๋ Docker Desktop์ด ์๋ #Docker Engine๋ง ์ค์นํ๋ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ ์ ๋๋ค.)
๐งช ์ค์น ํ์ธ
์ค์น๊ฐ ์๋ฃ๋๋ฉด ํฐ๋ฏธ๋(๋ช ๋ น ํ๋กฌํํธ)์ ์ด๊ณ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์ ์์ ์ผ๋ก ์ค์น๋์๋์ง ํ์ธํฉ๋๋ค.
Bash
docker --version
docker run hello-world
๐ Docker Compose
#PHP ์ ํ๋ฆฌ์ผ์ด์
์ ๋ณดํต #์น ์๋ฒ(Nginx/Apache), #PHP FPM, #๋ฐ์ดํฐ๋ฒ ์ด์ค(MySQL/PostgreSQL) ๋ฑ ์ฌ๋ฌ ์ปดํฌ๋ํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. #Docker Compose๋ ์ด๋ฌํ ๋ค์ค ์ปจํ
์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ํ๋์ ํ์ผ(docker-compose.yml)๋ก ์ ์ํ๊ณ , ๋จ์ผ ๋ช
๋ น์ผ๋ก ์คํ ๋ฐ ๊ด๋ฆฌํ ์ ์๊ฒ ํด์ฃผ๋ ๋๊ตฌ์
๋๋ค. ๋ค์ ์ฃผ์ฐจ๋ถํฐ ์ด #Docker Compose๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ ์์ ์
๋๋ค.
๋ธ๋ก๊ทธKT๊ณ ์ , ์ผํ/์ง๋ ๋ง์ผํ KT์ ๋, ๊ฒ์/์ฑํ๋ ์ด์ด ๊ณ ์ IP, 24์๊ฐ์๋ด ๋๋๊ตฌ๋งค ์ ํ ์ธํํ ์ ๊ณต!