Inception
๐Ÿ™Š

Inception

Created
Apr 4, 2024 10:11 AM
Last edited time
Last updated April 8, 2024
Tags
42
Language
URL

Intro::

42 ์„œ์šธ Inception ๊ณผ์ œ ์ •๋ฆฌ์ž…๋‹ˆ๋‹ค.

Subject

  • docker-compose ์‚ฌ์šฉ
  • ๊ฐ ๋„์ปค ์ด๋ฏธ์ง€๋Š” ๊ทธ์— ์ƒ์‘ํ•˜๋Š” ์„œ๋น„์Šค ์ด๋ฆ„๊ณผ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๋Š” Alpine or Debian ์˜ ๋‘๋ฒˆ์งธ ์•ˆ์ •ํ™” ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค.
  • ๊ฐ ์„œ๋น„์Šค ๋ณ„๋กœ ๋„์ปคํŒŒ์ผ์ด ์žˆ์–ด์•ผํ•จ
  • makefile์„ ํ†ตํ•ด docker-compse๋ฅผ ํ†ตํ•ด dockerfiles ๊ฐ€ ๋ถˆ๋ ค์•ผํ•œ๋‹ค.
  • NGINX with TLSv1.2 or TLSv1.3 ์ปจํ…Œ์ด๋„ˆ
  • WordPress + php-fpm ์ปจํ…Œ์ด๋„ˆ
  • MariaDB ์ปจํ…Œ์ด๋„ˆ
  • WordPress ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์šฉํ•˜๋Š” volume
  • WordPress website files ๋ฅผ ๊ฐ€์ง€๋Š” ๋‘๋ฒˆ์งธ ๋ณผ๋ฅจ
  • ๊ฐ ์ปจํ…Œ์ด๋„ˆ๋Š” ๋„์ปค ๋„คํŠธ์›Œํฌ๋กœ ์ด์–ด์ ธ ์žˆ๋‹ค.
  • ์ปจํ…Œ์ด๋„ˆ๊ฐ€ crash ๋‹ค๋ฉด ์žฌ์‹œ์ž‘ํ•ด์•ผํ•œ๋‹ค.
  • WordPress database ์— ๋‘ ์œ ์ €๊ฐ€ ์žˆ์–ด์•ผํ•œ๋‹ค.
    • administrator โ†’ X (e.g., admin, administrator, Administrator, admin-123, and so forth).
  • ๋ณผ๋ฅจ์€ /home/login/data ํด๋”์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • domain name โ†’ jahlee.42.fr ๋ฆฌ๋‹ค์ด๋ ‰ํŠธํ•ด์„œ ip์ฃผ์†Œ๋กœ
  • latest tag ์‚ฌ์šฉ๊ธˆ์ง€
  • ๋„์ปคํŒŒ์ผ์— ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ธˆ์ง€
  • ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
    • .env ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์„ ๊ถŒ์žฅํ•œ๋‹ค. /srcs/.env
  • 443 ํฌํŠธ๋งŒ ์‚ฌ์šฉ
ย 

docker-compose

Version

  • Docker Compose ํŒŒ์ผ์˜ ๋ฒ„์ „์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฒ„์ „์€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ์„ฑ ์˜ต์…˜๊ณผ ๋„์ปค ์—”์ง„์˜ ํ˜ธํ™˜์„ฑ์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.

Services

  • ์ด ํŒŒ์ผ์—์„œ ์ •์˜ํ•˜๊ณ ์ž ํ•˜๋Š” ์„œ๋น„์Šค๋“ค์˜ ์‹œ์ž‘์ ์ž…๋‹ˆ๋‹ค.

MariaDB (Service ์˜ˆ์‹œ)

  • mariadb:: MariaDB ์„œ๋น„์Šค์˜ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
    • container_name: mariadb: ์ด ์„œ๋น„์Šค์˜ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฆ„์„ mariadb๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    • build: requirements/mariadb: requirements/mariadb ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
    • restart: always: ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ๋„์ปค๊ฐ€ ์žฌ์‹œ์ž‘๋  ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ์žฌ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    • env_file: .env: ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ .env ํŒŒ์ผ์—์„œ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
    • volumes: - db-volume:/var/lib/mysql: db-volume ๋ณผ๋ฅจ์„ ์ปจํ…Œ์ด๋„ˆ์˜ /var/lib/mysql ๋””๋ ‰ํ† ๋ฆฌ์— ๋งˆ์šดํŠธํ•ฉ๋‹ˆ๋‹ค.
    • networks: - inception: ์ด ์„œ๋น„์Šค๋ฅผ inception ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
    • ports: - {host ๋ฒˆํ˜ธ}:{container ๋ฒˆํ˜ธ}: ํ˜ธ์ŠคํŠธ ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์ปจํ…Œ์ด๋„ˆ ํฌํŠธ ๋ฒˆํ˜ธ์— ๋ฐ”์ธ๋“œํ•ฉ๋‹ˆ๋‹ค.
    • depends_on: - other ์ด ์„œ๋น„์Šค๊ฐ€ ์‹œ์ž‘๋˜๊ธฐ ์ „์— other ์„œ๋น„์Šค๊ฐ€ ๋จผ์ € ์‹œ์ž‘๋˜์–ด์•ผ ํ•จ์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.
    • ย 

Volumes

  • volumes:: ์‚ฌ์šฉํ•  ๋ณผ๋ฅจ๋“ค์„ ์ •์˜ํ•˜๋Š” ์„น์…˜์ž…๋‹ˆ๋‹ค.
    • db-volume:, wp-volume:: ๊ฐ ์„œ๋น„์Šค์— ์‚ฌ์šฉ๋  ๋ณผ๋ฅจ์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.(์˜ˆ์‹œ mariadb, wordpress ๋ณผ๋ฅจ)
      • driver: local: ๋ณผ๋ฅจ์˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋กœ์ปฌ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
      • driver_opts:: ๋ณผ๋ฅจ ๋“œ๋ผ์ด๋ฒ„์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์˜ต์…˜์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
        • type: none, device: /home/jahlee/data/db-data ๋˜๋Š” /home/jahlee/data/wp-files: ๋กœ์ปฌ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํŠน์ • ๊ฒฝ๋กœ๋ฅผ ๋ณผ๋ฅจ์˜ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
        • o: bind: ์ง€์ •๋œ ๋””๋ฐ”์ด์Šค๋ฅผ ๋งˆ์šดํŠธ ์˜ต์…˜์œผ๋กœ ๋ฐ”์ธ๋“œํ•ฉ๋‹ˆ๋‹ค.

Networks

  • networks:: ์‚ฌ์šฉํ•  ๋„คํŠธ์›Œํฌ๋“ค์„ ์ •์˜ํ•˜๋Š” ์„น์…˜์ž…๋‹ˆ๋‹ค.
    • inception:: inception ๋„คํŠธ์›Œํฌ๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.
      • driver: bridge: ๋„คํŠธ์›Œํฌ ๋“œ๋ผ์ด๋ฒ„๋ฅผ bridge๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ปจํ…Œ์ด๋„ˆ๋“ค์ด ๋…๋ฆฝ๋œ ๊ณต๊ฐ„์—์„œ ์‹คํ–‰๋˜๋ฉด์„œ๋„ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
ย 

PID 1

PID๋Š” 'Process ID'์˜ ์•ฝ์ž๋กœ, ์šด์˜์ฒด์ œ์—์„œ ๊ฐ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์šด์˜์ฒด์ œ์—์„œ PID 1์€ ์‹œ์Šคํ…œ์ด ๋ถ€ํŒ…๋  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ์‹œ์ž‘๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฉฐ, ์ด๋Š” ์‹œ์Šคํ…œ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค์˜ ๋ถ€๋ชจ ํ”„๋กœ์„ธ์Šค ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
์ „ํ†ต์ ์ธ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์—์„œ PID 1์€ ์ฃผ๋กœ init ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์„ธ์Šค๋Š” ์‹œ์Šคํ…œ์ด ๋ถ€ํŒ…๋˜๋Š” ๋™์•ˆ ํ•„์š”ํ•œ ์„œ๋น„์Šค์™€ ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ•˜๊ณ , ์ข…๋ฃŒ ์‹œ์—๋Š” ์‹œ์Šคํ…œ์„ ์•ˆ์ „ํ•˜๊ฒŒ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์‹œ์Šคํ…œ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ์—๋Š” ์ข€๋น„ ํ”„๋กœ์„ธ์Šค(์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋œ ํ›„์—๋„ ์—ฌ์ „ํžˆ ์‹œ์Šคํ…œ ์ž์›์„ ์ฐจ์ง€ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค)๋ฅผ ์ •๋ฆฌํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

Docker PID 1

Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ์˜ PID 1์€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์‹œ์ž‘๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Docker ์ปจํ…Œ์ด๋„ˆ๋Š” ๊ฒฉ๋ฆฌ๋œ ํ™˜๊ฒฝ์—์„œ ๋‹จ์ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค๊ฐ€ PID 1์„ ๊ฐ€์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๊ทธ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ์˜ init ํ”„๋กœ์„ธ์Šค์™€ ์œ ์‚ฌํ•œ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋˜๋Š” PID 1 ํ”„๋กœ์„ธ์Šค๋Š” ์ „ํ†ต์ ์ธ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์˜ init ํ”„๋กœ์„ธ์Šค์™€๋Š” ๋‹ค๋ฅด๊ฒŒ, ์ž๋™์œผ๋กœ ์ข€๋น„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ •๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ๊ณ ๋ คํ•ด์•ผ ํ•  ์ค‘์š”ํ•œ ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ์ข€๋น„ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณ„์† ์Œ“์ด๊ฒŒ ๋˜๋ฉด, ์‹œ์Šคํ…œ ์ž์›์„ ๋ถˆํ•„์š”ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ๋Š” tini์™€ ๊ฐ™์€ ์ž‘์€ init ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ PID 1์˜ ์—ญํ• ์„ ๋ณด์™„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Tini๋Š” ์ข€๋น„ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ ์ ˆํžˆ ์ฒ˜๋ฆฌํ•˜๊ณ , ์‹œ๊ทธ๋„ ์ „๋‹ฌ๊ณผ ๊ฐ™์€ init ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์„ ์ˆ˜ํ–‰ํ•จ์œผ๋กœ์จ, ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€์—์„œ ๋ณด๋‹ค ์•ˆ์ •์ ์ธ ํ™˜๊ฒฝ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค.
Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ์˜ PID 1 ๊ด€๋ฆฌ๋Š” ์ปจํ…Œ์ด๋„ˆ์˜ ์•ˆ์ •์„ฑ๊ณผ ์„ฑ๋Šฅ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ์ž๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌ์„ฑํ•  ๋•Œ ์ด๋Ÿฌํ•œ ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
ย 

Tini

Tini๋Š” Docker ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ PID 1์˜ ์—ญํ• ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ดˆ๊ฒฝ๋Ÿ‰ ์œ ํ‹ธ๋ฆฌํ‹ฐ์ž…๋‹ˆ๋‹ค. Tini๋Š” ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ”„๋กœ์„ธ์Šค๋กœ ๋™์ž‘ํ•˜์—ฌ, ์ „ํ†ต์ ์ธ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์˜ init ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ•˜๋Š” ์ผ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ์€ ์ข€๋น„ ํ”„๋กœ์„ธ์Šค์˜ ์ฒ˜๋ฆฌ์™€ ์‹œ๊ทธ๋„์˜ ์ ์ ˆํ•œ ์ „๋‹ฌ์ž…๋‹ˆ๋‹ค.

Tini์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  1. ์ข€๋น„ ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ: ์ปจํ…Œ์ด๋„ˆ ๋‚ด์—์„œ ์ž์‹ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ, ์ด๋“ค์ด ์ข€๋น„ ํ”„๋กœ์„ธ์Šค๋กœ ๋‚จ์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ข€๋น„ ํ”„๋กœ์„ธ์Šค๋Š” ์ž์›์„ ํ•ด์ œํ•˜์ง€ ์•Š๊ณ  ์‹œ์Šคํ…œ์— ๋‚จ์•„์žˆ๋Š” ์ข…๋ฃŒ๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. Tini๋Š” ์ด๋Ÿฌํ•œ ํ”„๋กœ์„ธ์Šค๋“ค์ด ์‹œ์Šคํ…œ ์ž์›์„ ๊ณ„์† ์ ์œ ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  1. ์‹œ๊ทธ๋„ ํ•ธ๋“ค๋ง: ์‹œ๊ทธ๋„์€ ์šด์˜์ฒด์ œ์—์„œ ํ”„๋กœ์„ธ์Šค์— ๋ณด๋‚ด๋Š” ํ†ต์ง€ ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ณด๋‚ด๋Š” SIGTERM ์‹œ๊ทธ๋„์ด ์žˆ์Šต๋‹ˆ๋‹ค. Tini๋Š” ์ด๋Ÿฌํ•œ ์‹œ๊ทธ๋„์„ ์ ์ ˆํžˆ ์ž์‹ ํ”„๋กœ์„ธ์Šค์— ์ „๋‹ฌํ•˜์—ฌ, ์˜ˆ๋ฅผ ๋“ค์–ด ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

Tini ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

Docker ์ด๋ฏธ์ง€์— Tini๋ฅผ ํฌํ•จ์‹œํ‚ค๊ฑฐ๋‚˜, Docker์˜ --init ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ Tini๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Dockerfile์— Tini ์ถ”๊ฐ€ํ•˜๊ธฐ:
    • dockerfileCopy code FROM ubuntu:latest # Tini ์„ค์น˜ ADD https://github.com/krallin/tini/releases/download/v0.19.0/tini /tini RUN chmod +x /tini ENTRYPOINT ["/tini", "--"] # ์‹ค์ œ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด CMD ["your_application", "argument1", "argument2"]
  • Docker ์‹คํ–‰ ์‹œ -init ํ”Œ๋ž˜๊ทธ ์‚ฌ์šฉ: Docker 1.13.0 ์ด์ƒ์—์„œ๋Š” docker run ๋ช…๋ น์–ด์— -init ํ”Œ๋ž˜๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ Tini๋ฅผ ํ™œ์„ฑํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ„๋„๋กœ Tini๋ฅผ ์„ค์น˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
    • bashCopy code docker run --init -d your_image
Tini์˜ ์‚ฌ์šฉ์€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ณด๋‹ค ์•ˆ์ •์ ์œผ๋กœ ๋™์ž‘ํ•˜๋„๋ก ํ•˜๋ฉฐ, ํŠนํžˆ ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๊ทธ ์ค‘์š”์„ฑ์ด ์ปค์ง‘๋‹ˆ๋‹ค. Tini๋Š” ์‹ ํ˜ธ ์ „๋‹ฌ๊ณผ ์ข€๋น„ ํ”„๋กœ์„ธ์Šค ์ฒ˜๋ฆฌ๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ, ์ปจํ…Œ์ด๋„ˆ์˜ ์ƒ๋ช…์ฃผ๊ธฐ ๊ด€๋ฆฌ๋ฅผ ๋‹จ์ˆœํ™”ํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ์ง์— ๋” ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.
ย 

WordPress์™€ PHP-FPM

WordPress๋Š” ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” ์ฝ˜ํ…์ธ  ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(CMS) ์ค‘ ํ•˜๋‚˜๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ธ”๋กœ๊ทธ, ๊ฐœ์ธ ์›น์‚ฌ์ดํŠธ, ํฌํŠธํด๋ฆฌ์˜ค, ์‹ฌ์ง€์–ด๋Š” ์ „์ž ์ƒ๊ฑฐ๋ž˜ ์‚ฌ์ดํŠธ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์›น์‚ฌ์ดํŠธ๋ฅผ ์‰ฝ๊ฒŒ ๋งŒ๋“ค๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. WordPress๋Š” PHP๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ MySQL ๋˜๋Š” MariaDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
php-fpm (PHP FastCGI Process Manager)์€ PHP ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๊ณ ์„ฑ๋Šฅ ๋ฐฑ์—”๋“œ ํ”„๋กœ์„ธ์Šค ๋งค๋‹ˆ์ €์ž…๋‹ˆ๋‹ค. FastCGI์˜ ๊ตฌํ˜„์ฒด ์ค‘ ํ•˜๋‚˜๋กœ, ๋™์  ์ฝ˜ํ…์ธ ๋ฅผ ์ œ๊ณตํ•˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PHP-FPM์€ ์›น์„œ๋ฒ„์™€ PHP ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์ด์˜ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•˜๋ฉฐ, ์›น์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ PHP ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์š”์ฒญ์„ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

WordPress์™€ PHP-FPM์˜ ์—ฐ๋™

WordPress ์›น์‚ฌ์ดํŠธ์—์„œ PHP-FPM์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์›น ์‚ฌ์ดํŠธ์˜ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. PHP-FPM์€ ๊ฐ๊ฐ์˜ ์š”์ฒญ์„ ๋…๋ฆฝ๋œ ์ž์‹ ํ”„๋กœ์„ธ์Šค๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์š”์ฒญ ์ฒ˜๋ฆฌ ์‹œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๊ฐ€ ๋‹ค๋ฅธ ์š”์ฒญ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, PHP-FPM์€ ์š”์ฒญ ์ฒ˜๋ฆฌ๋Ÿ‰์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜๋ฅผ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด๋Š” ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์€ ์‹œ๊ฐ„์—๋„ ์›น์‚ฌ์ดํŠธ๊ฐ€ ์•ˆ์ •์ ์œผ๋กœ ์šด์˜๋  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

PHP-FPM ์„ค์ •ํ•˜๊ธฐ

PHP-FPM์„ WordPress์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค:
  1. PHP-FPM ์„ค์น˜: ์„œ๋ฒ„์— PHP-FPM์„ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ Linux ๋ฐฐํฌํŒ์—์„œ๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. ์›น ์„œ๋ฒ„ ๊ตฌ์„ฑ: Apache ๋˜๋Š” Nginx ๊ฐ™์€ ์›น ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PHP-FPM๊ณผ ์—ฐ๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์›น ์„œ๋ฒ„๋งˆ๋‹ค ์„ค์ • ๋ฐฉ๋ฒ•์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋‹ˆ, ์„œ๋ฒ„ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
      • Nginx์˜ ๊ฒฝ์šฐ, location ๋ธ”๋ก ๋‚ด์—์„œ fastcgi_pass ์ง€์‹œ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ PHP-FPM๊ณผ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.
      • Apache์˜ ๊ฒฝ์šฐ, mod_proxy_fcgi ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ PHP-FPM๊ณผ ์—ฐ๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  1. PHP-FPM ํ’€(pool) ๊ตฌ์„ฑ: PHP-FPM ์„ค์ • ํŒŒ์ผ(์ผ๋ฐ˜์ ์œผ๋กœ www.conf)์—์„œ ํ”„๋กœ์„ธ์Šค ํ’€์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์„ค์ •์„ ํ†ตํ•ด ์ž์‹ ํ”„๋กœ์„ธ์Šค์˜ ์ˆ˜, ์‹œ์ž‘ ํ”„๋กœ์„ธ์Šค ์ˆ˜, ์š”์ฒญ ๋Œ€๊ธฐ์—ด์˜ ํฌ๊ธฐ ๋“ฑ์„ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด์ 

  • ์„ฑ๋Šฅ ํ–ฅ์ƒ: PHP-FPM์€ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ฒ˜๋ฆฌ ์†๋„์™€ ์‘๋‹ต ์‹œ๊ฐ„์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž์› ํšจ์œจ์„ฑ: ์ž์› ์‚ฌ์šฉ์„ ๋” ์ž˜ ๊ด€๋ฆฌํ•˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์•ˆ์ •์„ฑ: ๊ฐ ์š”์ฒญ์„ ๋…๋ฆฝ๋œ ํ”„๋กœ์„ธ์Šค์—์„œ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•˜๋‚˜์˜ ์š”์ฒญ์ด ์‹คํŒจํ•ด๋„ ์ „์ฒด ์‹œ์Šคํ…œ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
WordPress์™€ PHP-FPM์˜ ์กฐํ•ฉ์€ ํŠนํžˆ ๋™์  ์ฝ˜ํ…์ธ ๊ฐ€ ๋งŽ๊ณ , ๋†’์€ ํŠธ๋ž˜ํ”ฝ์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ์›น์‚ฌ์ดํŠธ์— ์ ํ•ฉํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

VM ์„ค์ •

ย 

References::

Loading Comments...