networks:
  woodpecker:
    external: false

volumes:
  server:
    driver: local
  db:
    driver: local

services:
  server:
    image: woodpeckerci/woodpecker-server:v3.0.1
    container_name: woodpecker_server
    environment:
      - WOODPECKER_OPEN=false
      - WOODPECKER_ORGS=enpls
      - WOODPECKER_ADMIN=mael
      - WOODPECKER_HOST=https://build.net.enpls.org
      - WOODPECKER_SERVER_ADDR=:8083
      - WOODPECKER_GRPC_ADDR=:8084
      - WOODPECKER_GRPC_SECURE=true
      - WOODPECKER_GRPC_VERIFY=true
      - WOODPECKER_GITEA=true
      - WOODPECKER_GITEA_URL=https://git.gnous.eu
      - WOODPECKER_DATABASE_DRIVER=postgres
    env_file:
      - .env
    restart: always
    networks:
      - woodpecker
    volumes:
      - server:/var/lib/woodpecker/
    ports:
      - "8083:8083"
      - "8084:8084"
    labels:
      - "traefik.enable=true"
      # web server
      - "traefik.http.services.woodpecker-service.loadbalancer.server.port=8083"
      - "traefik.http.routers.woodpecker.rule=Host(`build.net.enpls.org`)"
      - "traefik.http.routers.woodpecker.tls=true"
      - "traefik.http.routers.woodpecker.tls.certresolver=defaultacme"
      - "traefik.http.routers.woodpecker.entrypoints=websecure"
      - "traefik.http.routers.woodpecker.service=woodpecker-service"
      - "traefik.http.routers.woodpecker.middlewares=proxyHeader@file,proxyError@file"
      #  gRPC service
      - "traefik.http.services.woodpecker-grpc.loadbalancer.server.port=8084"
      - "traefik.http.services.woodpecker-grpc.loadbalancer.server.scheme=h2c"
      - "traefik.http.routers.woodpecker-grpc-secure.rule=Host(`grpc.build.net.enpls.org`)"
      - "traefik.http.routers.woodpecker-grpc-secure.tls=true"
      - "traefik.http.routers.woodpecker-grpc-secure.tls.certresolver=defaultacme"
      - "traefik.http.routers.woodpecker-grpc-secure.entrypoints=websecure"
      - "traefik.http.routers.woodpecker-grpc-secure.service=woodpecker-grpc"
      - "traefik.http.routers.woodpecker-grpc.middlewares=woodpecker-grpc-redirect@docker"
      - "traefik.http.routers.woodpecker-grpc.middlewares=proxyHeader@file,proxyError@file"
    depends_on:
      - db

  db:
    image: postgres:14-alpine
    restart: always
    env_file:
      - .env
    networks:
      - woodpecker
    volumes:
      - db:/var/lib/postgresql/data