x-common:
  panel:
    &panel-environment
    APP_URL: "https://localhost" # can be set to 'http://localhost' on port 80 only
    LE_EMAIL: "USEYOUROWNEMAILHERE@example.com" # email to be used for let's encrypt certificates
    APP_DEBUG: "false"
    APP_ENV: "production"

    # BEHIND_PROXY: true # uncomment to run behind a proxy
    # TRUSTED_PROXIES: 127.0.0.1,172.17.0.1,172.20.0.1 # defaults are for local proxies

  mail:
    &mail-environment
    MAIL_DRIVER: "log"
    # MAIL_HOST: ""
    # MAIL_PORT: ""
    # MAIL_FROM: ""
    # MAIL_USERNAME: ""
    # MAIL_PASSWORD: ""
    # MAIL_SCHEME: ""

  database:
    &db-environment
    # Do not remove the "&db-password" from the end of the line below, it is important
    # for Panel functionality.
    MYSQL_ROOT_PASSWORD: "SUPERNEEDSTOCHANGE"
    MYSQL_PASSWORD: &db-password "NEEDSTOCHANGE"
    MYSQL_DATABASE: &db-database "panel"
    MYSQL_USER: &db-username "pelican"

#
# ------------------------------------------------------------------------------------------
# DANGER ZONE BELOW
#
# The remainder of this file likely does not need to be changed. Please only make modifications
# below if you understand what you are doing.
#

services:
  database:
    image: mariadb:10.11
    restart: always
    command: --default-authentication-plugin=mysql_native_password
    volumes:
      - pelican-db:/var/lib/mysql
    environment:
      <<: *db-environment

  cache:
    image: redis:alpine
    restart: always

  panel:
    image: ghcr.io/pelican-dev/panel:latest
    build: .
    restart: unless-stopped
    networks:
      - default
    ports:
      - "80:80"
      - "443:443"
      # - "81:80" # if you are behind a proxy uncomment this line and comment out 80 and 443
      # - "9000:9000" # enable when not using caddy to be able to reach php-fpm
    links:
      - database
      - cache
    extra_hosts:
      - "host.docker.internal:host-gateway" # shows the panel on the internal docker network as well. usually '172.17.0.1'
    volumes:
      - pelican-data:/pelican-data
      - pelican-logs:/var/www/html/storage/logs
      - type: volume
        source: pelican-data
        target: /var/www/html/plugins
        volume:
          subpath: plugins
    environment:
      <<: [*panel-environment, *mail-environment]
      XDG_DATA_HOME: /pelican-data
      # SKIP_CADDY: true # enable when not using caddy.
      CACHE_STORE: "redis"
      SESSION_DRIVER: "redis"
      QUEUE_CONNECTION: "redis"
      REDIS_HOST: "cache"
      DB_CONNECTION: "mariadb"
      DB_HOST: "database"
      DB_PORT: "3306"
      DB_DATABASE: *db-database
      DB_USERNAME: *db-username
      DB_PASSWORD: *db-password

volumes:
  pelican-data:
  pelican-logs:
  pelican-db:

networks:
  default:
    ipam:
      config:
        - subnet: 172.20.0.0/16
