name: itcca-allievi

services:
  db:
    image: mariadb:11
    container_name: itcca-db
    restart: unless-stopped
    environment:
      MARIADB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
      MARIADB_DATABASE: ${DB_NAME}
      MARIADB_USER: ${DB_USER}
      MARIADB_PASSWORD: ${DB_PASSWORD}
    volumes:
      - db_data:/var/lib/mysql
    healthcheck:
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 10s
      timeout: 5s
      retries: 10
      start_period: 30s
    networks:
      - itcca

  wordpress:
    image: wordpress:6.7-php8.3-apache
    container_name: itcca-wp
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "${WP_PORT:-8080}:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: ${DB_NAME}
      WORDPRESS_DB_USER: ${DB_USER}
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
      WORDPRESS_DEBUG: ${WP_DEBUG:-1}
      WORDPRESS_CONFIG_EXTRA: |
        define('WP_HOME', '${WP_HOME:-http://localhost:8080}');
        define('WP_SITEURL', '${WP_SITEURL:-http://localhost:8080}');
        define('FS_METHOD', 'direct');
        define('WP_DEBUG_LOG', true);
        define('WP_DEBUG_DISPLAY', false);
        @ini_set('upload_max_filesize', '64M');
        @ini_set('post_max_size', '64M');
        @ini_set('memory_limit', '256M');
    entrypoint: ["/bin/sh", "-c", "/wp-cert-init.sh && exec docker-entrypoint.sh apache2-foreground"]
    volumes:
      - wp_data:/var/www/html
      - ./plugin/itcca-allievi:/var/www/html/wp-content/plugins/itcca-allievi
      - ./.docker/certs:/custom-certs:ro
      - ./.docker/wp-cert-init.sh:/wp-cert-init.sh:ro
    networks:
      - itcca

  phpmyadmin:
    image: phpmyadmin:5
    container_name: itcca-pma
    restart: unless-stopped
    depends_on:
      db:
        condition: service_healthy
    ports:
      - "${PMA_PORT:-8081}:80"
    environment:
      PMA_HOST: db
      PMA_USER: root
      PMA_PASSWORD: ${DB_ROOT_PASSWORD}
      UPLOAD_LIMIT: 64M
    networks:
      - itcca

  composer:
    image: composer:2
    container_name: itcca-composer
    profiles: ["tools"]
    working_dir: /app
    entrypoint: ["/composer-entrypoint.sh"]
    environment:
      COMPOSER_ALLOW_SUPERUSER: "1"
    volumes:
      - ./plugin/itcca-allievi:/app
      - ./.docker/certs:/custom-certs:ro
      - ./.docker/composer-entrypoint.sh:/composer-entrypoint.sh:ro
    networks:
      - itcca

  wpcli:
    image: wordpress:cli-php8.3
    container_name: itcca-wpcli
    profiles: ["tools"]
    user: "33:33"
    depends_on:
      db:
        condition: service_healthy
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: ${DB_NAME}
      WORDPRESS_DB_USER: ${DB_USER}
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
    volumes:
      - wp_data:/var/www/html
      - ./plugin/itcca-allievi:/var/www/html/wp-content/plugins/itcca-allievi
    networks:
      - itcca

volumes:
  db_data:
  wp_data:

networks:
  itcca:
    driver: bridge
