docker-compose๋ ์ฌ๋ฌ ๊ฐ์ Docker ์ปจํ ์ด๋๋ฅผ ํ๋์ YAML ํ์ผ๋ก ์ ์ํ๊ณ , ํ ๋ฒ์ ๋ช ๋ น์ผ๋ก ์ผ๊ด ์คํํ ์ ์๋๋ก ํด์ฃผ๋ Docker ๊ณต์ ๋๊ตฌ์ ๋๋ค.
build
, depends_on
, volumes
, environment
๋ฑ ๋ค์ํ ์ค์ ๊ฐ๋ฅdocker-compose.yml
ํ์ผ์ ์ฌ๋ฌ ์๋น์ค(FE, BE, DB, Redis, Jenkins)๋ฅผ ํ๋์ ํตํฉ๋ ๊ตฌ์กฐ๋ก ๋ฐฐํฌํ๊ธฐ ์ํ ์ค์ ์
๋๋ค. ๊ฐ ์๋น์ค๋ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค:
fn
: ํ๋ก ํธ์๋ (React ๊ธฐ๋ฐ)bn
: ๋ฐฑ์๋ (Spring Boot)db
: MySQL ๋ฐ์ดํฐ๋ฒ ์ด์คredis
: ์บ์ ์๋ฒjenkins
: CI/CD ์๋ํ๋ฅผ ์ํ Jenkins ์๋ฒversion: '3.8'
networks:
custom-network:
driver: bridge
services:
fn:
image: boogiewoong2/docker_hub_test:fn
container_name: fn-container
ports:
- "3000:80"
depends_on:
- bn
networks:
- custom-network
bn:
image: boogiewoong2/docker_hub_test:bn
container_name: bn-container
ports:
- "8090:8090"
environment:
SPRING_DATASOURCE_URL: jdbc:mysql://db-container:3306/bookdb
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: 1234
SPRING_REDIS_HOST: redis
SERVER_PORT: 8090
depends_on:
db:
condition: service_healthy
networks:
- custom-network
db:
image: boogiewoong2/docker_hub_test:db
container_name: db-container
ports:
- "3330:3306"
networks:
custom-network:
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
interval: 30s
timeout: 10s
retries: 5
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: 1234
MYSQL_DATABASE: bookdb
MYSQL_USER: dbconn
MYSQL_PASSWORD: 1234
MYSQL_ROOT_HOST: '%'
deploy:
resources:
limits:
memory: 1024M
redis:
image: boogiewoong2/docker_hub_test:redis
container_name: redis-container
ports:
- "6379:6379"
networks:
- custom-network
jenkins:
image: jenkins
build:
context: ./JENKINS
container_name: jenkins-container
ports:
- "9090:8080"
- "50000:50000"
volumes:
- jenkins-data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
networks:
- custom-network
volumes:
db-data:
jenkins-data:
.ppk
ํค์ ํผ๋ธ๋ฆญ DNS ์
๋ ฅ โ Open
ec2-user
โ sudo su
sudo yum update -y
sudo yum install docker -y
systemctl restart docker
systemctl enable docker
docker -v
usermod -aG docker ec2-user
DOCKER_COMPOSE_VERSION="v2.27.1"
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose version
.yml
ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ๋ก ์ด๋cd ~/DOCKER/05_DOCKER_COMPOSE_DEPLOY
docker compose up -d
docker ps -a
docker compose down
docker system prune -a
docker compose build --no-cache
docker compose up -d
docker-compose
๋ฅผ ์ด์ฉํ๋ฉด ๋ณต์กํ ์๋น์ค๋ฅผ ์ ์ธํ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ผ๊ด ์คํ ๊ฐ๋ฅdepends_on
, healthcheck
, volumes
, build
, environment
๋ฑ ์ค์ ์ ์ ๊ทน ํ์ฉํ ๊ฒ