216.73.216.25 TODAY : 2,894
์ž๋ฃŒ์‹ค ์„œ๋ธŒ ํƒ€์ดํ‹€ ์•„์ด์ฝ˜

์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ตœ์ƒ๊ธ‰

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 3์ฃผ์ฐจ: ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ  (Docker) ํ™œ์šฉ- 02 Dockerfile ์ž‘์„ฑ ๋ฐ ์ด๋ฏธ์ง€ ๋นŒ๋“œ

๐Ÿ“š PHP ์ตœ์ƒ๊ธ‰ - 3์ฃผ์ฐจ: ์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ  (Docker) ํ™œ์šฉ- 02 Dockerfile ์ž‘์„ฑ ๋ฐ ์ด๋ฏธ์ง€ ๋นŒ๋“œ

์ฃผ์š” ํ”„๋กœ๊ทธ๋žจ ์ŠคํŽ™

  • ํ‰์ : 10.0
  • ๋ผ์ด์„ ์Šค: free
  • ์šด์˜์ฒด์ œ:
  • ํŒŒ์ผ ํฌ๊ธฐ: 0

ํ”ผ๋“œ๋ฐฑ ๋ฐ ๋‹ค์šด๋กœ๋“œ

  • ์‚ฌ์šฉ์ž ํ‰์ : 10.0
  • ๋‹ค์šด๋กœ๋“œ ์ˆ˜: 1
  • ์กฐํšŒ์ˆ˜: 29

์ œ์กฐ์‚ฌ ๋ฐ ๋“ฑ๋ก ์ •๋ณด

  • ์ œ์ž‘์‚ฌ: LUZENSOFT
  • ๋“ฑ๋ก์ผ: 2025-10-09 14:00:52
  •  

- ์„ค๋ช…

์ปจํ…Œ์ด๋„ˆ ๊ธฐ์ˆ ์˜ ํ•ต์‹ฌ, Dockerfile ์ดํ•ดํ•˜๊ธฐ

uploadImage


์ง€๋‚œ ์‹œ๊ฐ„์—๋Š” #Docker ์ปจํ…Œ์ด๋„ˆ์˜ ๊ธฐ๋ณธ ๊ฐœ๋…์„ ์ดํ•ดํ•˜๊ณ , ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ ์„œ๋น„์Šค ํ™˜๊ฒฝ์—์„œ๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ํ•„์š”ํ•œ ํ™˜๊ฒฝ์„ ์ •์˜ํ•˜๊ณ  ์ด๋ฏธ์ง€๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์˜ ํ•ต์‹ฌ ๋„๊ตฌ๊ฐ€ ๋ฐ”๋กœ Dockerfile์ž…๋‹ˆ๋‹ค.

#Dockerfile ์€ #Docker์ด๋ฏธ์ง€ ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๋ช…๋ น์–ด๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ธฐ๋กํ•ด ๋†“์€ ํ…์ŠคํŠธ ํŒŒ์ผ์ž…๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์„ ํ†ตํ•ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰์— ํ•„์š”ํ•œ ์šด์˜์ฒด์ œ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ํ™˜๊ฒฝ ์„ค์ •, ๊ทธ๋ฆฌ๊ณ  ์ตœ์ข…์ ์œผ๋กœ ์‹คํ–‰๋  ์ฝ”๋“œ๋ฅผ ์™„๋ฒฝํ•˜๊ฒŒ ํŒจํ‚ค์ง•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



Dockerfile ๊ธฐ๋ณธ ๊ตฌ์กฐ ๋ฐ ํ•„์ˆ˜ ๋ช…๋ น์–ด

uploadImage


ํšจ์œจ์ ์ด๊ณ  ์•ˆ์ „ํ•œ #Docker์ด๋ฏธ์ง€ ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ํ•ต์‹ฌ #Dockerfile๋ช…๋ น์–ด ๋ฅผ ์ˆ™์ง€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


1. FROM (๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€ ์ •์˜)


๋ชจ๋“  #Dockerfile ์€ FROM ๋ช…๋ น์–ด๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋นŒ๋“œํ•  ์ด๋ฏธ์ง€์˜ ๊ธฐ๋ฐ˜(Base) ์ด๋ฏธ์ง€๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. PHP ํ™˜๊ฒฝ์—์„œ๋Š” ๋ณดํ†ต ๊ณต์‹ #PHP์ด๋ฏธ์ง€ ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค

Dockerfile

FROM php:8.3-fpm-alpine

  • php:8.3-fpm-alpine: PHP 8.3 ๋ฒ„์ „์˜ FastCGI Process Manager(FPM)์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ฒฝ๋Ÿ‰ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์ธ Alpine ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ๋งค์šฐ ์ž‘๊ณ  ๊ฐ€๋ณ์Šต๋‹ˆ๋‹ค.


2. WORKDIR (์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •)


WORKDIR ๋ช…๋ น์–ด๋Š” ์ดํ›„์˜ RUN, CMD, COPY ๋“ฑ์˜ ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋  ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์˜ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค

Dockerfile

WORKDIR /var/www/html


3. COPY ๋˜๋Š” ADD (ํŒŒ์ผ ๋ณต์‚ฌ)


๋กœ์ปฌ ์‹œ์Šคํ…œ์˜ ํŒŒ์ผ์„ #Docker์ด๋ฏธ์ง€ ๋‚ด๋ถ€๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Dockerfile

# ํ˜„์žฌ ๋กœ์ปฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ/ํด๋”๋ฅผ ์ด๋ฏธ์ง€์˜ WORKDIR๋กœ ๋ณต์‚ฌ
COPY . .


4. RUN (๋ช…๋ น์–ด ์‹คํ–‰)


์ด๋ฏธ์ง€ ๋นŒ๋“œ ๊ณผ์ •์—์„œ ์‹คํ–‰๋  ๋ช…๋ น์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ๋กœ ํŒจํ‚ค์ง€ ์„ค์น˜, ์„ค์ • ํŒŒ์ผ ์ˆ˜์ •, ์˜์กด์„ฑ ์„ค์น˜(Composer) ๋“ฑ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Dockerfile

# Alpine ๋ฆฌ๋ˆ…์Šค ํŒจํ‚ค์ง€ ์—…๋ฐ์ดํŠธ ๋ฐ ์„ค์น˜
RUN apk update && apk add --no-cache git

# PHP ํ™•์žฅ ์„ค์น˜ (์˜ˆ: mysqli)
RUN docker-php-ext-install mysqli


5. EXPOSE (ํฌํŠธ ๋…ธ์ถœ)


์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฆฌ์Šค๋‹ํ•  ํฌํŠธ๋ฅผ ๋ฌธ์„œํ™”ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ํ˜ธ์ŠคํŠธ ๋จธ์‹ ์— ํฌํŠธ๋ฅผ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด docker run ๋ช…๋ น์—์„œ -p ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Dockerfile

EXPOSE 9000

  • PHP-FPM์€ ๊ธฐ๋ณธ์ ์œผ๋กœ 9000๋ฒˆ ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


6. CMD ๋˜๋Š” ENTRYPOINT (์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰)


์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹œ์ž‘๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ๋ฉ”์ธ ๋ช…๋ น์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

Dockerfile

# ๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€์—์„œ ์ด๋ฏธ PHP-FPM์„ ์‹คํ–‰ํ•˜๋„๋ก ์„ค์ •๋˜์–ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
CMD ["php-fpm"]



์‹ค์Šต: PHP ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ Dockerfile ์ž‘์„ฑ ๋ฐ ๋นŒ๋“œ

uploadImage


๋‹ค์Œ์€ ๊ฐ„๋‹จํ•œ PHP ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ปจํ…Œ์ด๋„ˆํ™”ํ•˜๊ธฐ ์œ„ํ•œ ์˜ˆ์ œ #Dockerfile ์ž…๋‹ˆ๋‹ค.

Dockerfile

Dockerfile

# 1. ๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€ ์„ค์ • (Alpine ๋ฆฌ๋ˆ…์Šค ๊ธฐ๋ฐ˜ PHP 8.3 FPM)
FROM php:8.3-fpm-alpine

# 2. ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์„ค์ •
WORKDIR /var/www/html

# 3. ํ•„์š”ํ•œ PHP ํ™•์žฅ ์„ค์น˜ (์˜ˆ: PDO, PDO MySQL)
RUN docker-php-ext-install pdo pdo_mysql

# 4. Git ์„ค์น˜ (Composer๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ํ•„์ˆ˜)
RUN apk update && apk add --no-cache git

# 5. Composer ์„ค์น˜ (PHP ์˜์กด์„ฑ ๊ด€๋ฆฌ ๋„๊ตฌ)
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer

# 6. ๋กœ์ปฌ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ์ด๋ฏธ์ง€๋กœ ๋ณต์‚ฌ
COPY . .

# 7. Composer ์˜์กด์„ฑ ์„ค์น˜ (์ด๋ฏธ์ง€ ๋นŒ๋“œ ์‹œ ์‹คํ–‰)
RUN composer install --no-dev --optimize-autoloader

# 8. PHP-FPM์˜ ๊ธฐ๋ณธ ํฌํŠธ ๋…ธ์ถœ
EXPOSE 9000

# ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ ๋ช…๋ น (๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€์—์„œ ์ด๋ฏธ ์ •์˜๋˜์–ด ์žˆ์„ ํ™•๋ฅ ์ด ๋†’์Œ)
# CMD ["php-fpm"]


์ด๋ฏธ์ง€ ๋นŒ๋“œ ๋ช…๋ น


#Dockerfile ์ž‘์„ฑ์„ ์™„๋ฃŒํ–ˆ๋‹ค๋ฉด, ์ด์ œ #Docker์ด๋ฏธ์ง€ ๋ฅผ ๋นŒ๋“œํ•  ์ฐจ๋ก€์ž…๋‹ˆ๋‹ค.

Bash

docker build -t my-php-app:latest .

  • docker build: ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค

  • -t my-php-app:latest: ๋นŒ๋“œ๋œ #Docker์ด๋ฏธ์ง€ ์— my-php-app์ด๋ผ๋Š” ์ด๋ฆ„๊ณผ latest๋ผ๋Š” ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค

  • .: #Dockerfile ์ด ์œ„์น˜ํ•œ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ(context)๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค

๋นŒ๋“œ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด docker images ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.



๊ฒฐ๋ก 



#Dockerfile ์€ #PHP์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์˜ ์‹คํ–‰ ํ™˜๊ฒฝ์„ ์™„๋ฒฝํ•˜๊ฒŒ ์บก์Аํ™”ํ•˜๋Š” ์ฒญ์‚ฌ์ง„์ž…๋‹ˆ๋‹ค. FROM, RUN, COPY, WORKDIR ๋“ฑ์˜ ํ•ต์‹ฌ ๋ช…๋ น์–ด๋ฅผ ์ดํ•ดํ•˜๊ณ  ์‹ค์Šตํ•˜๋ฉด, ์–ด๋–ค ํ™˜๊ฒฝ์—์„œ๋„ ์ผ๊ด€๋˜๊ฒŒ ์‹คํ–‰๋˜๋Š” ๊ฐ•๋ ฅํ•˜๊ณ  ์ด์‹์„ฑ ๋†’์€ #Docker์ด๋ฏธ์ง€ ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์‹œ๊ฐ„์—๋Š” ๋นŒ๋“œํ•œ ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ #DockerCompose ๋กœ ์ปจํ…Œ์ด๋„ˆ ๋„คํŠธ์›Œํฌ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.



๋ธ”๋กœ๊ทธKT๊ณ ์ •, ์‡ผํ•‘/์ง€๋„ ๋งˆ์ผ€ํŒ…KT์œ ๋™, ๊ฒŒ์ž„/์•ฑํ”Œ๋ ˆ์ด์–ด ๊ณ ์ •IP, 24์‹œ๊ฐ„์ƒ๋‹ด ๋Œ€๋Ÿ‰๊ตฌ๋งค ์‹œ ํ• ์ธํ˜œํƒ ์ œ๊ณต!

https://vpn.luzensoft.com