JJServiceManagerRelay/docker-compose.yml

78 lines
2.0 KiB
YAML

# JJServiceManagerRelay — Synology NAS (DSM 7.1 Docker 패키지, docker-compose v1)
#
# 처음 실행 / 업데이트:
# cd /volume1/docker/jjsm/src
# sudo docker-compose build
# sudo docker-compose up -d
#
# 비밀번호는 같은 폴더의 .env 파일에 넣습니다 (.env.example 참고).
# 데이터는 한 단계 위 폴더(/volume1/docker/jjsm/db, server, backup)에 저장됩니다.
version: "3.8"
services:
db:
image: postgres:16-alpine
container_name: jjsm-db
restart: unless-stopped
environment:
POSTGRES_DB: jjsm
POSTGRES_USER: jjsm
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?POSTGRES_PASSWORD를 .env에 넣으세요}
TZ: Asia/Seoul
volumes:
- ../db:/var/lib/postgresql/data
networks: [jjsm]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U jjsm -d jjsm"]
interval: 10s
timeout: 5s
retries: 10
server:
build: .
image: jjsm-server:latest
container_name: jjsm-server
restart: unless-stopped
depends_on:
- db
environment:
POSTGRES_HOST: db
POSTGRES_DB: jjsm
POSTGRES_USER: jjsm
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
JJSM_ADMIN_USER: ${JJSM_ADMIN_USER:-admin}
JJSM_ADMIN_PASSWORD: ${JJSM_ADMIN_PASSWORD:-}
JJSM_CODE_HOURS: ${JJSM_CODE_HOURS:-168}
TZ: Asia/Seoul
volumes:
- ../server/logs:/app/logs
ports:
# 리버스 프록시(DSM)만 접근하도록 NAS 자신에게만 엶
- "127.0.0.1:${JJSM_PORT:-21900}:21900"
networks: [jjsm]
backup:
image: postgres:16-alpine
container_name: jjsm-backup
restart: unless-stopped
depends_on:
- db
environment:
PGHOST: db
PGDATABASE: jjsm
PGUSER: jjsm
PGPASSWORD: ${POSTGRES_PASSWORD}
BACKUP_KEEP: ${BACKUP_KEEP:-30}
BACKUP_HOUR: ${BACKUP_HOUR:-3}
TZ: Asia/Seoul
volumes:
- ../backup:/backup
- ./backup/backup.sh:/backup.sh:ro
entrypoint: ["/bin/sh", "/backup.sh"]
networks: [jjsm]
networks:
jjsm:
name: jjsm