docker-db-backuplisted
Install: claude install-skill Dannykkh/skill-olympus
# Docker DB Backup Skill
Docker Compose 프로젝트에 cron 기반 자동 DB 백업 컨테이너를 추가하는 스킬입니다.
## Skill Description
**Triggers:**
- `/docker-db-backup` — 대화형으로 DB 종류를 확인 후 백업 서비스 추가
- `/docker-db-backup pg` — PostgreSQL 백업 서비스 추가
- `/docker-db-backup mysql` — MySQL/MariaDB 백업 서비스 추가
**생성/수정되는 파일:**
- `{compose-dir}/backup-entrypoint.sh` — 백업 실행 엔트리포인트
- `{compose-dir}/docker-compose.yml` — db-backup 서비스 추가
- `{compose-dir}/.env` — 백업 설정 변수 추가
## Execution Steps
### Step 1: 프로젝트 분석
1. `docker-compose.yml` 위치를 찾는다 (프로젝트 루트 또는 `docker-images/` 등)
2. 기존 DB 서비스를 파악한다:
- `postgres` / `pg` 이미지 → PostgreSQL
- `mysql` / `mariadb` 이미지 → MySQL/MariaDB
3. DB 서비스명, 환경변수명, 포트, 헬스체크 조건을 추출한다
4. 인자가 없으면 사용자에게 DB 종류를 확인한다
### Step 2: backup-entrypoint.sh 생성
**반드시 LF 줄바꿈으로 생성해야 한다.** Windows에서 CRLF로 생성하면 컨테이너에서 깨진다.
생성 후 아래 명령을 실행:
```bash
sed -i 's/\r$//' {compose-dir}/backup-entrypoint.sh
```
#### PostgreSQL 템플릿
```sh
#!/bin/sh
set -e
BACKUP_DIR="${BACKUP_DIR:-/backups}"
RETENTION_DAYS="${RETENTION_DAYS:-7}"
CRON_SCHEDULE="${CRON_SCHEDULE:-0 2 * * *}"
mkdir -p "$BACKUP_DIR"
cat > /usr/local/bin/run-backup.sh << 'SCRIPT'
#!/bin/sh
set -e
BACKUP_DIR="${BACKUP_DIR:-/backups}"
RETENTION_DAYS="${RETENTION_DAYS:-7}"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="${BACKUP_DIR}/${POSTGRES_DB}_${TIMESTAMP}.sql.gz"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 백업 시작: ${POSTGRES_DB}"
PGPASSWORD="$POSTGRES_PASSWORD" pg_dump \
-h "$POSTGRES_HOST" \
-p "${POSTGRES_PORT:-5432}" \
-U "$POSTGRES_