services:
  assig6web:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: assig6web
    networks:
      - caddy_shared
      - assig6_net
    environment:
      ASPNETCORE_ENVIRONMENT: Production
      POSTGRES_HOST: assig6db
      POSTGRES_PORT: 5432
      POSTGRES_DB: assig6db
      POSTGRES_USER: assig6user
      POSTGRES_PASSWORD_FILE: /run/secrets/postgres_password
    restart: always
    depends_on:
      - assig6db
    expose:
      - "8080"
    secrets:
      - postgres_password

  assig6db:
    image: postgres:16
    container_name: assig6db
    networks:
      - assig6_net
    environment:
      POSTGRES_DB: assig6db
      POSTGRES_USER: assig6user
      POSTGRES_PASSWORD_FILE: /run/secrets/postgres_password
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: always
    expose:
      - "5432"
    secrets:
      - postgres_password

  buildRunner:                                   # Service for Gitea Actions runner
    image: docker.io/gitea/act_runner:latest # Docker-imaget som brukes for act_runner
    restart: always                         # Runneren restartes automatisk hvis den stopper eller maskinen restartes
    environment:                            # Miljøvariabler som konfigurerer runneren
      CONFIG_FILE: /config.yaml             # Forteller runneren hvor konfigurasjonsfila ligger inne i containeren
      GITEA_INSTANCE_URL: "https://git.softsand.it/" # URL-en til Gitea-instansen runneren skal koble seg til
      GITEA_RUNNER_REGISTRATION_TOKEN: ${GITEA_RUNNER_REGISTRATION_TOKEN} # Token brukt for å registrere runneren mot Gitea
      GITEA_RUNNER_NAME: "docker-host-1" # Navnet runneren får i Gitea-grensesnittet
      GITEA_RUNNER_LABEL: "docker:host"   # Label workflowen kan bruke i runs-on for å velge denne runneren
    volumes:                                # Mapper nødvendige filer og socketer inn i runner-containeren
      - ./config.yaml:/config.yaml          # Mapper lokal config-fil til /config.yaml inne i containeren
      - ./data:/data                        # Lagrer runnerdata persistent i lokal mappe ./data
      - /var/run/docker.sock:/var/run/docker.sock # Gir runneren tilgang til Docker-daemonen på hosten
    networks:                               # Angir hvilke nettverk runneren kobles til
      - assig6_net                               # Kobler runneren til samme nettverk som Gitea og databasen


volumes:
  postgres_data:
  caddy_data:
  caddy_config:

secrets:
  postgres_password:
    file: ./secrets/postgres_password.txt

networks:
  caddy_shared:
    external: true
  assig6_net:
    external: false
