version: "3"

services:
  php:
    container_name: "amtechdiy--prod--php"
    image: "${CI_REGISTRY_IMAGE}:${CI_COMMIT_TAG:-latest}"
    volumes:
      - amtechdiy-uploads:/var/www/html/wp-content/uploads
      - amtechdiy-languages:/var/www/html/wp-content/languages

    networks:
      - internal
      - traefik
    depends_on:
      - mariadb
    environment:
      APACHE_RUN_USER: www-data
      APACHE_RUN_GROUP: www-data
      TEMPLATE_PHP_INI: production
      PHP_INI_UPLOAD_MAX_FILESIZE: "${PROD_UPLOAD_LIMIT:-50M}"
      PHP_INI_POST_MAX_SIZE: "${PROD_UPLOAD_LIMIT:-10M}"
      ENVIRONMENT: "${PROD_ENVIRONMENT:-production}"
      MYSQL_HOST: "${PROD_MYSQL_HOST}"
      MYSQL_DATABASE: "${PROD_MYSQL_DATABASE}"
      MYSQL_USER: "${PROD_MYSQL_USER}"
      MYSQL_PASSWORD: "${PROD_MYSQL_PASSWORD}"
      MYSQL_PORT: "${PROD_PORT_MYSQL:-3306}"
      AUTH_KEY: "${PROD_AUTH_KEY}"
      SECURE_AUTH_KEY: "${PROD_SECURE_AUTH_KEY}"
      LOGGED_IN_KEY: "${PROD_LOGGED_IN_KEY}"
      NONCE_KEY: "${PROD_NONCE_KEY}"
      AUTH_SALT: "${PROD_AUTH_SALT}"
      SECURE_AUTH_SALT: "${PROD_SECURE_AUTH_SALT}"
      LOGGED_IN_SALT: "${PROD_LOGGED_IN_SALT}"
      NONCE_SALT: "${PROD_NONCE_SALT}"
      WPMDB_LICENCE: "${WPMDB_LICENCE}"
      WP_HOME: "https://${PROD_DOMAIN}"
      WP_SITEURL: "https://${PROD_DOMAIN}"

    labels:
      - "traefik.http.routers.${CI_ENVIRONMENT_SLUG}.rule=Host(`${PROD_DOMAIN}`)"
      - "traefik.http.routers.${CI_ENVIRONMENT_SLUG}.tls=true"
      - "traefik.http.routers.${CI_ENVIRONMENT_SLUG}.tls.certresolver=lets-encrypt"
      - traefik.port=80

  mariadb:
    volumes:
      - amtechdiy-mariadb:/config
    networks:
      - internal
    environment:
      MYSQL_ROOT_PASSWORD: "${PROD_MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: "${PROD_MYSQL_DATABASE}"
      MYSQL_USER: "${PROD_MYSQL_USER}"
      MYSQL_PASSWORD: "${PROD_MYSQL_PASSWORD}"

volumes:
  amtechdiy-uploads: {}
  amtechdiy-languages: {}
  amtechdiy-mariadb: {}

networks:
  traefik:
    external: true
  internal:
    external: false
