Post

๐Ÿ‹ Docker ์ž…๋ฌธ โ…ค - Docker-compose

๐Ÿ‹ Docker ์ž…๋ฌธ โ…ค - Docker-compose

๐Ÿ“˜ ใ€Ž๊ทธ๋ฆผ๊ณผ ์‹ค์Šต์œผ๋กœ ๋ฐฐ์šฐ๋Š” Docker & ์ฟ ๋ฒ„๋„คํ‹ฐ์Šคใ€๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

Docker-compose

  • ์‹œ์Šคํ…œ ๊ตฌ์ถ•๊ณผ ๊ด€๋ จ๋œ ๋ช…๋ น์–ด๋ฅผ ํ•˜๋‚˜์˜ ํ…์ŠคํŠธ ํŒŒ์ผ์— ๊ธฐ์žฌํ•˜์—ฌ ๋ช…๋ น์–ด ํ•œ๋ฒˆ์— ์‹œ์Šคํ…œ ์ „์ฒด๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
  • yamlย ํฌ๋งท์œผ๋กœ ๊ธฐ์žฌํ•œ ์ •์˜ ํŒŒ์ผ์„ ์ด์šฉํ•ด ์ „์ฒด ์‹œ์Šคํ…œ์„ ์ผ๊ด„์ ์œผ๋กœ ์‹คํ–‰, ์ข…๋ฃŒ, ์‚ญ์ œํ•œ๋‹ค.
  • upย ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ •์˜ ํŒŒ์ผ์— ๊ธฐ์žฌ๋œ ๋‚ด์šฉ๋Œ€๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‚ด๋ ค๋ฐ›๊ณ  Container๋ฅผ ์ƒ์„ฑ ๋ฐ ์‹คํ–‰ํ•œ๋‹ค.
  • downย ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Container์™€ ๋„คํŠธ์›Œํฌ๋ฅผ ์ •์ง€ ๋ฐ ์‚ญ์ œํ•œ๋‹ค.
  • ์ด๋•Œ ๋ณผ๋ฅจ๊ณผ ์ด๋ฏธ์ง€๋Š” ์‚ญ์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • stopย ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด Container์™€ ๋„คํŠธ์›Œํฌ ์‚ญ์ œ ์—†์ด ์ข…๋ฃŒ๋งŒ ํ•œ๋‹ค.
  • Docker-compose๋Š”ย docker runย ๋ช…๋ น์–ด๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ๋ชจ์•„ ๋†“์€ ๊ฒƒ๊ณผ ๊ฐ™๋‹ค.
  • Dockerfile์€ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ ๋„คํŠธ์›Œํฌ๋‚˜ Volume์€ ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.
  • docker-compose.yml ํŒŒ์ผ์€ ํ•œ ํด๋”์— ํ•˜๋‚˜๋งŒ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

Docker-compose ํŒŒ์ผ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฒ•

1
docker run --name ์ปจํ…Œ์ด๋„ˆ๋ช… -dit --net=๋„คํŠธ์›Œํฌ๋ช… -p 8085:80 -e WORDPRESS_DB_HOST=๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค_ํ˜ธ์ŠคํŠธ -e WORDPRESS_DB_NAME=๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช… -e WORDPRESS_DB_USER=์œ ์ €๋ช… -e WORDPRESS_DB_PASSWORD=ํŒจ์Šค์›Œ๋“œ wordpress
  • ์ƒ๊ธฐย runย ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” docker-compose.yml ํŒŒ์ผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
version: "3"

service:
  ์ปจํ…Œ์ด๋„ˆ๋ช…:
    depends_on:
      - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค_์ปจํ…Œ์ด๋„ˆ
    image: wordpress
    networks:
      - ๋„คํŠธ์›Œํฌ๋ช…
    ports:
      - 8085:80
    restart: always
    environment:
      WORDPRESS_DB_HOST: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค_์ปจํ…Œ์ด๋„ˆ
      WORDPRESS_DB_NAME: ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ช…
      WORDPRESS_DB_USER: ์œ ์ €๋ช…
      WORDPRESS_DB_PASSWORD: ํŒจ์Šค์›Œ๋“œ
  • yamlย ํ˜•์‹์—์„œ๋Š” ๊ณต๋ฐฑ์— ๋”ฐ๋ผ ์˜๋ฏธ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.
  • depends_on์€ ๋‹ค๋ฅธ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์˜์กด ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด ์œ„ ์„ค์ •์—์„œ๋Š”ย mysql01ย Container๋ฅผ ๋จผ์ € ์ƒ์„ฑํ•œ ๋‹ค์Œย wordpressย ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ mysql01๊ฐ€ ์˜จ์ „ํžˆ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ์ž„์„ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค.
  • restart๋Š” ์žฌ์‹œ์ž‘ ์—ฌ๋ถ€๋ฅผ ์„ค์ •ํ•œ๋‹ค.
  • Docker-compose๋กœ ๋งŒ๋“  Container๋ผ๋„ ๋„์ปค ์—”์ง„์„ ํ†ตํ•ด ๋ช…๋ น์„ ๋‚ด๋ฆด ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋‚˜์ค‘์— Docker Engine์„ ํ†ตํ•ด ๋ช…๋ น์„ ๋‚ด๋ฆฌ๋ฉด Docker-compose ํŒŒ์ผ๊นŒ์ง€ ๋ฐ˜์˜์ด ๋ ๊นŒ?
  • ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ Docker Engine์„ ํ†ตํ•ด Container ์ด๋ฆ„์„ ๋ฐ”๊พธ์—ˆ๋‹ค๋ฉด, ๋‚˜์ค‘์— Docker-compose๋ฅผ ํ†ตํ•ด ์ •์ง€, ์‚ญ์ œํ•˜๋ ค๊ณ  ํ•ด๋„ Docker-compose ํŒŒ์ผ์— ๊ธฐ์žฌ๋œ ์ด๋ฆ„๊ณผ ์‹ค์ œ Container ์ด๋ฆ„์ด ์ผ์น˜ํ•˜์ง€ ์•Š์•„ Container๋ฅผ ์ •์ง€, ์‚ญ์ œํ•˜์ง€ ๋ชปํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค.
  • ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค.
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ Container์ด๋ฆ„์€ ๊ฐ€๊ธ‰์  ์†๋Œ€์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

MySQL,ย WORDPRESS ๊ตฌ์ถ• ์‹ค์Šต

version: "3"

services:
  mysql01:
    image: mysql:5.7
    networks:
      - net01
    volumes:
      - vol01:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 1234
      MYSQL_DATABASE: db01
      MYSQL_USER: ์•„์ด๋””
      MYSQL_PASSOWRD: ํŒจ์Šค์›Œ๋“œ
    wordpress01:
    depends_on:
      - mysql01
    image: wordpress
    networks:
      - net01
    volumes:
      - vol02:/var/www/html
    ports:
      - 8085:50
    restart: always
    environment:
      WORDPRESS_DB_HOST: mysql01
      WORDPRESS_DB_NAME: db01
      WORDPRESS_DB_USER: ์•„์ด๋””
      WORDPRESS_DB_PASSWORD: ํŒจ์Šค์›Œ๋“œ

networks:
  net01:
volumes:
  vol01:
  vol02:

Docker-compose ๋ช…๋ น์–ด

โœ… ์‹คํ–‰

  • Docker-compose ํŒŒ์ผ์„ ์‹คํ–‰ํ•˜๋ ค๋ฉดย docker-composeย ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

โœ… Container ์ฃผ๋ณ€ ํ™˜๊ฒฝ์„ ์ƒ์„ฑ

1
2
docker-compose -f ์ปดํฌ์ฆˆ_ํŒŒ์ผ_๊ฒฝ๋กœ up ์˜ต์…˜
docker-compose up -d  # ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ปดํฌ์ฆˆ์šฉ ํด๋”๋กœ ์‚ฌ์šฉ

โœ… Container์™€ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ญ์ œ

1
docker-compose -f ์ปดํฌ์ฆˆ_ํŒŒ์ผ_๊ฒฝ๋กœ down ์˜ต์…˜

โœ… Container๋ฅผ ์ข…๋ฃŒ

1
docker-compose -f ์ปดํฌ์ฆˆ_ํŒŒ์ผ_๊ฒฝ๋กœ stop ์˜ต์…˜

Docker-compose๋Š” Container์˜ ์ด๋ฆ„์„ ๋ฐ”๊พผ๋‹ค.

  • Docker-compose๋กœ ์‹คํ–‰ํ•œ Container์˜ ์ด๋ฆ„์€ ์ž„์˜๋กœ ๊ฒฐ์ •๋œ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ดย penguin์ด๋ผ๋Š” ์ด๋ฆ„์˜ Container๋ฅผ ์ƒ์„ฑํ•˜๋ฉด Docker-compose๊ฐ€ ์‹ค์ œ๋กœ ์ƒ์„ฑํ•œ Container์˜ ์ด๋ฆ„์€ย com_folder_penguin_1๊ณผ ๊ฐ™์ด ํด๋” ์ด๋ฆ„๊ณผ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™๋Š”๋‹ค.
  • ๋‹จย -fย ์˜ต์…˜์„ ์ƒ๋žตํ–ˆ๋‹ค๋ฉด ํด๋” ์ด๋ฆ„์€ ๋ถ™์ง€ ์•Š๋Š”๋‹ค.

์Šค์ผ€์ผ๋ง

  • --scaleย ์˜ต์…˜์„ ๋ถ™์ด๋ฉด ๊ฐ™์€ ๊ตฌ์„ฑ์˜ Container๋ฅผ ์—ฌ๋Ÿฌ ์„ธํŠธ ๋งŒ๋“ ๋‹ค.
1
docker-compose -f C:\Users\์œ ์ €๋ช…\com_folder\docker-compose.yml up --scale penguin=3
  • ๋‹จ ํฌํŠธ ๋ฒˆํ˜ธ๊ฐ€ ์ค‘๋ณต๋˜๋ฉด Container๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

ํšŒ๊ณ 

  • ์ฑ…์˜ ์ €์ž๋Š” Container์ด๋ฆ„์€ ๊ฐ€๊ธ‰์  ์†๋Œ€์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ, ํ•„์ž๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๊ณ  Docker-compose ํŒŒ์ผ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•œ ๊ฒฝํ—˜์„ ๋˜๋Œ์•„๋ณด๋ฉด, Container ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ํŽธํ–ˆ์—ˆ๋‹ค.
  • Docker-compose๋Š” Container ์ด๋ฆ„์„ ์ž„์˜๋กœ ๋ฐ”๊พธ์–ด ๋ฒ„๋ฆฌ๋Š”๋ฐ, ๋‹จ์ˆœํžˆ Docker-compose์˜ ๊ทœ์น™์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ Container ์ด๋ฆ„์„ ์„ค์ •ํ•˜์—ฌ ์ง์ ‘ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅด๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
This post is licensed under CC BY 4.0 by the author.