x-op-restart-policy: &restart_policy
  restart: unless-stopped

services:
  shimatta-kenkyusho-web:
    <<: *restart_policy
    build: .
    user: "${DJANGO_USER_ID}:${DJANGO_USER_GID}"
    volumes:
      - "${DJANGO_STATIC_VOL:-./run/static}:/var/static"
      - "${DJANGO_MEDIA_VOL:-./run/media}:/var/media"
    environment:
      DJANGO_POSTGRESQL_PW: "${DJANGO_POSTGRESQL_PW:-p4ssw0rd}"
      DJANGO_POSTGRESQL_USER: "postgres"
      DJANGO_SECRET_KEY: "${DJANGO_SECRET_KEY}"
      DJANGO_ALLOWED_HOST: "${DJANGO_ALLOWED_HOST}"
      DJANGO_STATIC_ROOT: "/var/static"
      DJANGO_MEDIA_URL: "${DJANGO_MEDIA_URL}"
      DJANGO_MEDIA_ROOT: "/var/media"
      DJANGO_POSTGRESQL_SOCKET: "shimatta-kenkyusho-db"
      DJANGO_POSTGRESQL_PORT: "5432"
      DJANGO_FORCE_DEV_MODE: ${DJANGO_FORCE_DEV_MODE:-False}
    ports:
      - "${PORT}:8000"
    networks:
      - backendnet
    depends_on:
      shimatta-kenkyusho-db:
        condition: service_healthy
    healthcheck:
      test: ["CMD-SHELL", "curl -f localhost:8000/healthcheck"]
      interval: 5s
      timeout: 5s
      retries: 5
      start_period: 30s

  shimatta-kenkyusho-db:
    <<: *restart_policy
    image: postgres:16.5-alpine
    environment:
      POSTGRES_PASSWORD: "${DJANGO_POSTGRESQL_PW:-p4ssw0rd}"
      POSTGRES_DB: "shimatta_kenkyusho"
    volumes:
      - "${PGDATA_VOL:-./run/pgdata}:/var/lib/postgresql/data"
    networks:
      - backendnet
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

networks:
  backendnet:
