# 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