# Convention de nommage : user-project-branch (ex: syoul-prestashop-main) # Permet plusieurs instances en parallele (prod/test/multi-user) sans collision name: ${COMPOSE_PROJECT_NAME:-syoul-prestashop-main} services: prestashop: image: prestashop/prestashop:9.0.3-3.0-classic-8.3-apache container_name: ${COMPOSE_PROJECT_NAME:-syoul-prestashop-main}-app restart: always depends_on: db: condition: service_healthy environment: DB_SERVER: db DB_NAME: prestashop DB_USER: prestashop DB_PASSWD: ${DB_PASSWORD} PS_DOMAIN: ${PS_DOMAIN} PS_FOLDER_ADMIN: ${PS_ADMIN_FOLDER:-admin-secure} ADMIN_MAIL: ${PRESTASHOP_ADMIN_EMAIL} ADMIN_PASSWD: ${PRESTASHOP_ADMIN_PASSWORD} PS_INSTALL_AUTO: "1" PS_ERASE_DB: "0" # SSL active : Fabio termine TLS et passe X-Forwarded-Proto:https # PrestaShop honore ce header -> genere des URLs https:// sans boucle de redirection PS_ENABLE_SSL: "1" volumes: - ps_data:/var/www/html labels: # Registrator lit l'IP du conteneur depuis le reseau "sonic" (-useIpFromNetwork sonic) # et enregistre le service dans Consul avec le tag urlprefix- -> Fabio route vers ce service # Valeurs surchargeable via env var (ex: SERVICE_80_TAGS pour changer le domaine par branche) - SERVICE_80_NAME=${SERVICE_80_NAME:-${COMPOSE_PROJECT_NAME}-app-80} - SERVICE_80_TAGS=${SERVICE_80_TAGS:-urlprefix-${PS_DOMAIN}/*} # TCP check : PS_SSL_ENABLED_EVERYWHERE redirige GET / en 302 -> HTTP check failing - SERVICE_80_CHECK_TCP=true # sonic-acme-1 (acme-companion) emet le cert TLS et le copie dans /host/certs/ # Fabio le detecte automatiquement par SNI pour HTTPS - LETSENCRYPT_HOST=${PS_DOMAIN} networks: - prestashop-net # Reseau "sonic" requis pour que Registrator trouve l'IP du conteneur - sonic db: image: mariadb:10.11 container_name: ${COMPOSE_PROJECT_NAME:-syoul-prestashop-main}-db restart: always environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} MYSQL_DATABASE: prestashop MYSQL_USER: prestashop MYSQL_PASSWORD: ${DB_PASSWORD} volumes: - db_data:/var/lib/mysql healthcheck: test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] interval: 10s timeout: 5s retries: 10 networks: - prestashop-net volumes: ps_data: db_data: networks: prestashop-net: driver: bridge sonic: # Reseau externe existant sur le serveur (partage avec Registrator/Consul/Fabio) external: true