Docker Compose
docker-compose.yml ๊ธฐ๋ณธ ๊ตฌ์กฐ
์ค๋ฌดํ ์๋น์ค ๊ตฌ์ฑ ์์ (Spring Boot, MySQL, Redis)
services:
# MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค
database:
image: mysql:8.0
environment:
MYSQL_DATABASE: myapp
MYSQL_USER: myuser
MYSQL_PASSWORD: mypassword
MYSQL_ROOT_PASSWORD: rootpassword
volumes:
- db_data:/var/lib/mysql
networks:
# ๋ด๋ถ ์๋น์ค์ฉ ๋คํธ์ํฌ๋ง ํ ๋นํ์ฌ ์ธ๋ถ ์ ๊ทผ ์ฐจ๋จ
- backend_net
healthcheck:
# mysqladmin ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ DB ์๋ฒ๊ฐ ์๋ต ๊ฐ๋ฅํ ์ํ์ธ์ง ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๊ฒ
test: [ "CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "myuser", "-pmypassword" ]
interval: 10s
timeout: 5s
retries: 5
# Redis ์บ์ ์๋น์ค
redis:
image: redis:7-alpine
networks:
- backend_net
# ์คํ๋ง ๋ถํธ ์ ํ๋ฆฌ์ผ์ด์
์๋น์ค
app:
build:
context: .
dockerfile: Dockerfile
ports:
# ์ธ๋ถ ๋ธ๋ผ์ฐ์ ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ทผํ ํฌํธ ๋งคํ
- "8080:8080"
environment:
# ์ปจํ
์ด๋ ์๋น์ค ์ด๋ฆ์ ํธ์คํธ ์ฃผ์๋ก ์ฌ์ฉ
SPRING_DATASOURCE_URL: jdbc:mysql://database:3306/myapp?allowPublicKeyRetrieval=true&useSSL=false
SPRING_DATASOURCE_USERNAME: myuser
SPRING_DATASOURCE_PASSWORD: mypassword
SPRING_REDIS_HOST: redis
depends_on:
# ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋จ์ ์์์ด ์๋ ํฌ์ค์ฒดํฌ ๊ฒฐ๊ณผ 'healthy' ์ํ์ผ ๋ ์ ํ๋ฆฌ์ผ์ด์
์์
database:
condition: service_healthy
networks:
# ์ธ๋ถ ํต์ (frontend)๊ณผ ๋ด๋ถ ํต์ (backend)์ ๋ชจ๋ ์ํํ๋๋ก ๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ
- frontend_net
- backend_net
# ๋คํธ์ํฌ ์ ์ ์น์
networks:
# ์ธ๋ถ์ ์ฐ๊ฒฐ๋๋ ๋คํธ์ํฌ
frontend_net:
driver: bridge
# ๋ด๋ถ ์๋น์ค ์ ์ฉ ๋คํธ์ํฌ
backend_net:
driver: bridge
# internal ์ต์
์ ํตํด ์ด ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ์ปจํ
์ด๋๋ค์ ์ธ๋ถ ์ธํฐ๋ท ํต์ ์ ํ
internal: true
# ๋ณผ๋ฅจ ์ ์ ์น์
volumes:
db_data:์๋น์ค ์์ธ ์ค์
๋คํธ์ํฌ ๊ฒฉ๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ๊ด๋ฆฌ
๋คํธ์ํฌ ์ค๊ณ์ ํต์ฌ ์๋ฆฌ
๋ฐ์ดํฐ ์์ํ ์ ๋ต
Last updated