version: "3.9"

services:
  db:
    image: postgres:13-alpine
    deploy:
      placement:
        constraints:
          - node.role==manager
        max_replicas_per_node: 1
    environment:
      TZ: Asia/Seoul
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD_FILE: /run/secrets/db_password
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "postgres"]
    networks:
      - backend
    ports:
      - "5432:5432"
    restart: unless-stopped
    secrets:
      - db_password
    volumes:
      - ./db/initdb.d:/docker-entrypoint-initdb.d:ro
      - db_data:/var/lib/postgresql/data

networks:
  backend:

secrets:
  db_password:
    file: ./db/password.txt

volumes:
  db_data: