Dockerλ₯Ό νμ©νμ¬ Spring Boot μ ν리μΌμ΄μ κ³Ό MySQL λ°μ΄ν°λ² μ΄μ€λ₯Ό 컨ν μ΄λννκ³ , MySQL μλ λ°±μ λ° λ³΅μ κΈ°λ₯μ ꡬνν¨
![]() |
![]() |
![]() |
|---|---|---|
| μ νΈμ€ | μ₯μν | μ΄μ±λΉ |
docker-composeλ₯Ό μ΄μ©ν Spring Boot & MySQL 컨ν μ΄λ μ€ν- MySQL λ°μ΄ν° μλ λ°±μ λ° λ³΅μ μ€ν¬λ¦½νΈ ꡬν
- 컨ν μ΄λ κΈ°λ°μΌλ‘ μ΄μ λ° λ°°ν¬ μλν νμ΅
999.test/
βββ Dockerfile
βββ docker-compose.yml
βββ restore.sh
βββ run-all.sh
βββ mysql-backup/
βββ
β βββ backup.sh
β βββ Dockerfile.mysql-backup
β βββ crontab
βββ backups/ (β μλμΌλ‘ μμ±λ λ³Όλ₯¨ λ§μ΄νΈ μμΉ)
β Java κΈ°λ°μ Spring Boot μ ν리μΌμ΄μ μ Docker 컨ν μ΄λμμ μ€ννκΈ° μν νκ²½μ ꡬμ±
β μ ν리μΌμ΄μ μ ν¬μ€ 체ν¬λ₯Ό ν΅ν΄ μ μ μλ μ¬λΆλ₯Ό λͺ¨λν°λ§
β λ κ°μ Spring Boot μ ν리μΌμ΄μ κ³Ό MySQL λ°μ΄ν°λ² μ΄μ€λ₯Ό ν¬ν¨νλ 컨ν μ΄λ νκ²½μ ꡬμ±
β MySQL 컨ν μ΄λλ ν¬μ€ 체ν¬λ₯Ό ν΅ν΄ μνλ₯Ό λͺ¨λν°λ§
β κ° μ ν리μΌμ΄μ μ λ°μ΄ν°λ² μ΄μ€μ μ°κ²°
β λ°μ΄ν°λ² μ΄μ€ λ°±μ μ μν λ³λμ 컨ν μ΄λ μ€μ
services:
db:
container_name: mysqldb
image: mysql:8.0
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: fisa
MYSQL_USER: user01
MYSQL_PASSWORD: user01
networks:
- spring-mysql-net
healthcheck:
test: ['CMD-SHELL', 'mysqladmin ping -h 127.0.0.1 -u root --password=$${MYSQL_ROOT_PASSWORD} || exit 1']
interval: 10s
timeout: 2s
retries: 100
app:
container_name: springbootapp
image: my-springboot-app
build:
context: .
dockerfile: Dockerfile
ports:
- "8080:8080"
environment:
MYSQL_HOST: db
MYSQL_PORT: 3306
MYSQL_DATABASE: fisa
MYSQL_USER: user01
MYSQL_PASSWORD: user01
depends_on:
db:
condition: service_healthy
networks:
- spring-mysql-net
app2:
container_name: springbootapp2
image: my-springboot-app
build:
context: .
dockerfile: Dockerfile
ports:
- "8088:8080"
environment:
MYSQL_HOST: db
MYSQL_PORT: 3306
MYSQL_DATABASE: fisa
MYSQL_USER: user01
MYSQL_PASSWORD: user01
depends_on:
db:
condition: service_healthy
networks:
- spring-mysql-net
mysql-backup:
build:
context: ./mysql-backup
dockerfile: Dockerfile.mysql-backup
container_name: mysql-backup
depends_on:
db:
condition: service_healthy
volumes:
- ./backups:/backups # νΈμ€νΈμ 컨ν
μ΄λ κ° λ°±μ
곡μ
environment:
MYSQL_ROOT_PASSWORD: root
networks:
- spring-mysql-net
networks:
spring-mysql-net:
driver: bridge
volumes:
db_backups:β μλ‘μ΄ μ»¨ν μ΄λλ₯Ό λΉλνκ³ λ°±κ·ΈλΌμ΄λμμ μ€ν
β MySQL λ°μ΄ν°λ² μ΄μ€μ λ°±μ μ μν μν
β νμ¬ λ μ§μ μκ°μ κΈ°λ°μΌλ‘ λ°±μ νμΌμ μ΄λ¦μ μμ± ν MySQL μλ²μ μ°κ²°νμ¬ λ°μ΄ν°λ² μ΄μ€λ₯Ό λ€ν
β MySQL λ°±μ 컨ν μ΄λλ₯Ό μμ± μν
β MySQL ν΄λΌμ΄μΈνΈμ cronμ μ€μΉ ν λ°±μ μ€ν¬λ¦½νΈλ₯Ό 볡μ¬νμ¬ μ€ν κΆν λΆμ¬
β ν¬λ‘ μ€μ νμΌμ μ μ©νμ¬ μ κΈ°μ μΈ λ°±μ μμ μ€μ
β 1λΆλ§λ€ backup.sh νμΌμ μ€ν







