Skip to content

DockerMiniProject/Docker_Backup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 

Repository files navigation

🐳Docker_Backup

Dockerλ₯Ό ν™œμš©ν•˜μ—¬ Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜κ³Ό MySQL λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ»¨ν…Œμ΄λ„ˆν™”ν•˜κ³ , MySQL μžλ™ λ°±μ—… 및 볡원 κΈ°λŠ₯을 κ΅¬ν˜„ν•¨


πŸ‘¨β€πŸ‘¨β€πŸ‘¦β€πŸ‘¦ νŒ€μ› μ†Œκ°œ

μœ ν˜Έμ€€ μž₯μˆ˜ν˜„ μ΄μ„±λΉˆ

βœ… μ‹€μŠ΅ λͺ©ν‘œ

  1. docker-composeλ₯Ό μ΄μš©ν•œ Spring Boot & MySQL μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰
  2. MySQL 데이터 μžλ™ λ°±μ—… 및 볡원 슀크립트 κ΅¬ν˜„
  3. μ»¨ν…Œμ΄λ„ˆ 기반으둜 운영 및 배포 μžλ™ν™” ν•™μŠ΅

🧢 ν”„λ‘œμ νŠΈ 디렉토리 μ•„ν‚€ν…μ²˜

999.test/
β”œβ”€β”€ Dockerfile
β”œβ”€β”€ docker-compose.yml
β”œβ”€β”€ restore.sh
β”œβ”€β”€ run-all.sh
β”œβ”€β”€ mysql-backup/
β”œβ”€β”€
β”‚   β”œβ”€β”€ backup.sh
β”‚   β”œβ”€β”€ Dockerfile.mysql-backup
β”‚   └── crontab
└── backups/  (β†’ μžλ™μœΌλ‘œ 생성될 λ³Όλ₯¨ 마운트 μœ„μΉ˜)

πŸ—‚οΈ999.test


1. Dockerfile

βœ… Java 기반의 Spring Boot μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ Docker μ»¨ν…Œμ΄λ„ˆμ—μ„œ μ‹€ν–‰ν•˜κΈ° μœ„ν•œ ν™˜κ²½μ„ ꡬ성

βœ… μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ ν—¬μŠ€ 체크λ₯Ό 톡해 정상 μž‘λ™ μ—¬λΆ€λ₯Ό λͺ¨λ‹ˆν„°λ§

image

2. docker-compose.yml

βœ… 두 개의 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:

4. run-all.sh

βœ… μƒˆλ‘œμš΄ μ»¨ν…Œμ΄λ„ˆλ₯Ό λΉŒλ“œν•˜κ³  λ°±κ·ΈλΌμš΄λ“œμ—μ„œ μ‹€ν–‰

image

πŸ“mysql-backup/

1. backup.sh

βœ… MySQL λ°μ΄ν„°λ² μ΄μŠ€μ˜ 백업을 μˆ˜ν–‰ μ—­ν• 

βœ… ν˜„μž¬ λ‚ μ§œμ™€ μ‹œκ°„μ„ 기반으둜 λ°±μ—… 파일의 이름을 생성 ν›„ MySQL μ„œλ²„μ— μ—°κ²°ν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό 덀프

image

2. Dockerfile.mysql-backup

βœ… MySQL λ°±μ—… μ»¨ν…Œμ΄λ„ˆλ₯Ό 생성 μ—­ν• 

βœ… MySQL ν΄λΌμ΄μ–ΈνŠΈμ™€ cron을 μ„€μΉ˜ ν›„ λ°±μ—… 슀크립트λ₯Ό λ³΅μ‚¬ν•˜μ—¬ μ‹€ν–‰ κΆŒν•œ λΆ€μ—¬

βœ… 크둠 μ„€μ • νŒŒμΌμ„ μ μš©ν•˜μ—¬ 정기적인 λ°±μ—… μž‘μ—… μ„€μ •

image

3. crontab

βœ… 1λΆ„λ§ˆλ‹€ backup.sh νŒŒμΌμ„ μ‹€ν–‰

image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •