networks: frontend: external: true name: frontend backend: services: # Configuration de Traefik traefik: image: ${TRAEFIK_IMAGE} container_name: traefik command: - "--api.dashboard=true" - "--api.insecure=false" # - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--providers.docker.network=frontend" - "--providers.file.filename=./tls.yaml" # - "--entrypoints.web.address=:80" - "--entrypoints.web.http.redirections.entrypoint.to=websecure" - "--entrypoints.web.http.redirections.entrypoint.scheme=https" - "--entrypoints.web.http.redirections.entrypoint.permanent=true" - "--entrypoints.websecure.address=:443" - "--entrypoints.websecure.http.tls=true" # labels: - "traefik.enable=true" # - "traefik.http.routers.${CONTAINER_PREFIX}_dashboard.rule=Host(`${TRAEFIK_URL}`)" - "traefik.http.routers.${CONTAINER_PREFIX}_dashboard.entrypoints=websecure" - "traefik.http.routers.${CONTAINER_PREFIX}_dashboard.service=api@internal" - "traefik.http.routers.${CONTAINER_PREFIX}_dashboard.tls=true" - "traefik.http.middlewares.${CONTAINER_PREFIX}_dashboard-auth.basicauth.users=${TRAEFIK_HTPASSWD}" - "traefik.http.routers.${CONTAINER_PREFIX}_dashboard.middlewares=${CONTAINER_PREFIX}_dashboard-auth@docker" ports: - "80:80" - "443:443" - "8080:8080" volumes: - /var/run/docker.sock:/var/run/docker.sock - ./certs:/certs:ro networks: - frontend - backend # Configuration de la base de données avec MariaDB database: restart: unless-stopped container_name: ${CONTAINER_PREFIX}_database image: ${DATABASE_IMAGE} volumes: # Données - ./host/database/data:/var/lib/mysql - ./host/database/sql:/sql - ./host/database/backups:/backups # Configuration - ./host/database/conf/my.cnf:/etc/mysql/mariadb.conf.d/my.cnf environment: MARIADB_ROOT_PASSWORD: ${DATABASE_ROOT_PASSWORD} networks: - backend # Configuration d'Apache et de PHP apache-php: restart: unless-stopped container_name: ${CONTAINER_PREFIX}_apache_php image: ${APACHE_PHP_VERSION} environment: - APACHE_ADMIN_EMAIL=${APACHE_ADMIN_EMAIL} volumes: - ./www:/var/www/html - ./host/apache/logs:/var/log/apache2 - ./host/apache/conf/vhost.conf:/etc/apache2/sites-available/000-default.conf - ./host/apache/conf/apache2.conf:/etc/apache2/conf-enabled/docker.conf depends_on: - database labels: - traefik.enable=true - traefik.docker.network=frontend - traefik.http.routers.${CONTAINER_PREFIX}_apache.rule=Host(`${PROJECT_URL}`) - traefik.http.routers.${CONTAINER_PREFIX}_apache.entrypoints=web - traefik.http.routers.${CONTAINER_PREFIX}_apache.entrypoints=websecure - traefik.http.routers.${CONTAINER_PREFIX}_apache.tls=true networks: - frontend - backend # Configuration de PHPMyAdmin phpmyadmin: restart: unless-stopped container_name: ${CONTAINER_PREFIX} image: ${PHPMYADMIN_IMAGE} depends_on: - database labels: - traefik.enable=true - traefik.docker.network=frontend - traefik.http.routers.${CONTAINER_PREFIX}_pma.rule=Host(`${PHPMYADMIN_URL}`) - traefik.http.routers.${CONTAINER_PREFIX}_pma.entrypoints=web - traefik.http.routers.${CONTAINER_PREFIX}_pma.entrypoints=websecure - traefik.http.routers.${CONTAINER_PREFIX}_pma.tls=true environment: - PMA_HOST=database networks: - frontend - backend