version: "3"

services:
  php:
    container_name: "amtechdiy--${CI_ENVIRONMENT_SLUG}--php"
    image: "${CI_REGISTRY_IMAGE}:${IMAGE_TAG}"
    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: "${STAGE_UPLOAD_LIMIT:-50M}"
      PHP_INI_POST_MAX_SIZE: "${STAGE_UPLOAD_LIMIT:-10M}"
      ENVIRONMENT: "${STAGE_ENVIRONMENT:-staging}"
      MYSQL_HOST: "${STAGE_MYSQL_HOST}"
      MYSQL_DATABASE: "${STAGE_MYSQL_DATABASE}"
      MYSQL_USER: "${STAGE_MYSQL_USER}"
      MYSQL_PASSWORD: "${STAGE_MYSQL_PASSWORD}"
      MYSQL_PORT: "${STAGE_PORT_MYSQL:-3306}"
      AUTH_KEY: "${STAGE_AUTH_KEY}"
      SECURE_AUTH_KEY: "${STAGE_SECURE_AUTH_KEY}"
      LOGGED_IN_KEY: "${STAGE_LOGGED_IN_KEY}"
      NONCE_KEY: "${STAGE_NONCE_KEY}"
      AUTH_SALT: "${STAGE_AUTH_SALT}"
      SECURE_AUTH_SALT: "${STAGE_SECURE_AUTH_SALT}"
      LOGGED_IN_SALT: "${STAGE_LOGGED_IN_SALT}"
      NONCE_SALT: "${STAGE_NONCE_SALT}"
      WPMDB_LICENCE: "${WPMDB_LICENCE}"
      ENV_DOMAIN: "${ENV_DOMAIN}"
      WP_HOME: "https://${ENV_DOMAIN}"
      WP_SITEURL: "https://${ENV_DOMAIN}"

    labels:
      - "traefik.http.routers.${CI_ENVIRONMENT_SLUG}.rule=Host(`${ENV_DOMAIN}`)"
      - "traefik.http.routers.${CI_ENVIRONMENT_SLUG}.tls=true"
      - "traefik.http.routers.${CI_ENVIRONMENT_SLUG}.tls.certresolver=lets-encrypt"
      - "traefik.http.routers.${CI_ENVIRONMENT_SLUG}.middlewares=${CI_ENVIRONMENT_SLUG}-httpbasic"
      - "traefik.http.middlewares.${CI_ENVIRONMENT_SLUG}-httpbasic.basicauth.users=${STAGE_HTPASSWD_USERS}"
      - traefik.port=80


  mariadb:
    container_name: "amtechdiy--${CI_ENVIRONMENT_SLUG}--mariadb"
    volumes:
      - amtechdiy-mariadb:/config
    networks:
      - internal
    environment:
      MYSQL_ROOT_PASSWORD: "${STAGE_MYSQL_ROOT_PASSWORD}"
      MYSQL_DATABASE: "${STAGE_MYSQL_DATABASE}"
      MYSQL_USER: "${STAGE_MYSQL_USER}"
      MYSQL_PASSWORD: "${STAGE_MYSQL_PASSWORD}"

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

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