version: '3.8' services: traefik: image: traefik:v2.11 container_name: netgescon_traefik restart: unless-stopped ports: - "80:80" - "443:443" command: - --providers.docker=true - --providers.docker.exposedbydefault=false - --entrypoints.web.address=:80 - --entrypoints.websecure.address=:443 - --certificatesresolvers.letsencrypt.acme.email=${LETSENCRYPT_EMAIL} - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json - --certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web volumes: - /var/run/docker.sock:/var/run/docker.sock:ro - netgescon_letsencrypt:/letsencrypt networks: - netgescon_online app: image: netgescon/app:${NETGESCON_VERSION:-latest} build: context: .. dockerfile: docker/Dockerfile.prod container_name: netgescon_online_app restart: unless-stopped environment: APP_ENV: production APP_DEBUG: "false" APP_URL: ${APP_URL} DB_CONNECTION: mysql DB_HOST: db DB_PORT: 3306 DB_DATABASE: ${DB_DATABASE} DB_USERNAME: ${DB_USERNAME} DB_PASSWORD: ${DB_PASSWORD} MYSQL_SSL_VERIFY_SERVER_CERT: ${MYSQL_SSL_VERIFY_SERVER_CERT:-FALSE} DISABLE_SCHEMA_LOAD: "true" RUN_MIGRATIONS: "true" RUN_FILAMENT_ASSETS: "false" FIX_PERMISSIONS: "true" RUN_SEEDERS: "demo" volumes: - netgescon_online_storage:/var/www/storage - netgescon_online_cache:/var/www/bootstrap/cache - netgescon_online_public:/var/www/public - ${LEGACY_ARCHIVES_PATH:-/mnt/gescon-archives/gescon}:/mnt/gescon-archives/gescon:ro depends_on: - db - redis networks: - netgescon_online nginx: image: nginx:alpine container_name: netgescon_online_nginx restart: unless-stopped volumes: - netgescon_online_public:/var/www/public - ../docker/nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - app labels: - "traefik.enable=true" - "traefik.http.routers.netgescon.rule=Host(`${DOMAIN}`)" - "traefik.http.routers.netgescon.entrypoints=websecure" - "traefik.http.routers.netgescon.tls=true" - "traefik.http.routers.netgescon.tls.certresolver=letsencrypt" - "traefik.http.services.netgescon.loadbalancer.server.port=80" networks: - netgescon_online db: image: mysql:8.0 container_name: netgescon_online_db restart: unless-stopped command: --log-bin-trust-function-creators=1 environment: MYSQL_DATABASE: ${DB_DATABASE} MYSQL_USER: ${DB_USERNAME} MYSQL_PASSWORD: ${DB_PASSWORD} MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD} volumes: - netgescon_online_db:/var/lib/mysql - ../docker/mysql/init.sql:/docker-entrypoint-initdb.d/01-init.sql networks: - netgescon_online redis: image: redis:alpine container_name: netgescon_online_redis restart: unless-stopped networks: - netgescon_online volumes: netgescon_online_db: netgescon_online_storage: netgescon_online_cache: netgescon_online_public: netgescon_letsencrypt: networks: netgescon_online: driver: bridge