ํน์ SW๊ฐ Docker Container๋ฅผ ํตํด ์ผํ์ฑ์ผ๋ก ๋์ํ๋ ๊ฒ์ด ์๋๋ผ ๊ณ์ํด์ ๋์ํด์ผ ํ๋ค๋ฉด ๋ฐ์ดํฐ๊ฐ ์๊ตญ์ ์ผ๋ก ๋ณด๊ด๋์ด์ผ ํ๋ค.
์ด๋ฅผ ๋ณด์ฅํ๋ ๊ธฐ๋ฅ์ด Docker Volume => Data Persistence์ด๋ค.
Docker Container๋ด์ ๊ฐ์ ํ์ผ ์์คํ ๊ณผ ํธ์คํธ ์์คํ ์ ํ์ผ ์์คํ ์ ๋งคํํ๋ค.
์ฆ Container์ Host System์ด ํน์ ํด๋๋ฅผ ๊ณต์ ํ๋ค.
Host Volumes : docker run -v๋ฅผ ์คํํ ๋ ํ์ด๋ก ์ง์
Anonymous Volumes : docker run -v๋ฅด ์คํํ ๋ ์ปจํ ์ด๋ ํจ์ค๋ง ์ง์
Named Volumes : docker run-v๋ฅผ ์คํํ ๋ ์ด๋ฆ๊ณผ ์ปจํ ์ด๋ ํจ์ค๋ฅผ ์ง์
Volume์ ReadOnly๋ก ์ง์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ
git clone https://github.com/dockersamples/example-voting-app
docker build -t vote ./vote
docker build -t result ./result
docker build -t worker ./worker
docker images
redis์ postgres๋ ๊ณต์ ์ด๋ฏธ์ง์ด๊ธฐ ๋๋ฌธ์ ๋น๋ํ ํ์๊ฐ ์๋ค.
docker run -d --name=redis redis
docker run -d -e POSTGRES_PASSWORD=password --name=db postgres
docker run -d --name=vote -p 5001:80 result
docker run -d --name=result -p 5002:80 result
docker run -d --name=worker worker
์ด๋ ๊ฒ ์คํํ๋ฉด ๋์ ํ ๊น?
-> ๊ฐ ์ปดํฌ๋ํธ๋ค๊ฐ์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ด ์๋๋ค.
๋ค์์ Container๋ก SW๊ฐ ๊ตฌ์ฑ๋๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์๋ ํด + ํ๊ฒฝ์ค์ ํ์ผ
๊ฐ๋ณ Container๋ฅผ ๋ฐ๋ก ๊ด๋ฆฌํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ์์ฐ์ฑ์ด ๋๋ค.
ํ๊ฒฝ์ค์ ํ์ผ์ ์ด๋ฆ์ docker-compose.yml์ด๋ docker-compose.yaml์ด๋ค.
ํ์ง๋ง ๊ทธ๋งํผ ๋ฐฐ์์ผํ ๊ฒ๋ ๋ง๊ณ ๋ณต์กํด์ง๋ค.
์ฌ์ฉ๋ฒ ์์ฒด๋ ๊ฐ๋จํ๋ค -> SW๋ฅผ ๊ตฌ์ฑํ๋ ๋ชจ๋ ์ปจํ ์ด๋์๊ฒ ์ ์ฉ๋๋ค.
๋ฆฌ๋ ์ค์ ๊ฒฝ์ฐ docker-compose๋ฅผ ๋ฐ๋ก ์ค์นํด์ผํ๋ค.
$docker-compose --version
services:
frontend:
build: ./forntend
ports:
- 3000:3000
backend:
build: ./backend
ports:
- 3001:3001
environment:
DB_URL: mongodb://database/vidly
database:
image: mongo:4.0-xenial
ports:
- 27017:27017
volumes:
- vidly: /data/db
volumes:
vidly:
...
networks:
...
docker-compose up : build -> create -> start
docker-compose down
docker-compose stop
docker-compose rm
docker-compose ls
-> docker-compose๋ฅผ ๊ทธ๋ฃน๋ณ๋ก ๋ณด์ฌ์ค๋ค.
docker-compose ps
-> docker-compose๋ก ์คํ๋ ์ปจํ
์ด๋์ ๊ฐ๋ณ์ ์ํ๋ฅผ ๋ณด์ฌ์ค๋ค.
Postgres๋ฅผ ์คํํ๋ ๋ถ๋ถ์ด ์ ๋๋ก ๋์ํ์ง ์์๋ค.
worker/Progream.cs
var pgsql = OpenDbConnection("Service=db;Username=postgres;Password=postgres;");
var redisConn = OpenRedisConnection("redis");