services: app: image: merchbay:dev container_name: merchbay_app restart: unless-stopped environment: - APP_ENV=${APP_ENV:-production} - APP_DEBUG=${APP_DEBUG:-false} - APP_URL=${APP_URL:-http://localhost} - DB_CONNECTION=mysql - DB_HOST=${DB_HOST} - DB_PORT=${DB_PORT:-3306} - DB_DATABASE=${DB_DATABASE} - DB_USERNAME=${DB_USERNAME} - DB_PASSWORD=${DB_PASSWORD} - PROD_PRIVATE=${PROD_PRIVATE} - IMAGES_URL=${IMAGES_URL} - UPLOAD_URL=${UPLOAD_URL} - FORCE_HTTPS=true - MAIL_DRIVER=${MAIL_DRIVER} - MAIL_HOST=${MAIL_HOST} - MAIL_PORT=${MAIL_PORT} - MAIL_USERNAME=${MAIL_USERNAME} - MAIL_PASSWORD=${MAIL_PASSWORD} - MAIL_ENCRYPTION=${MAIL_ENCRYPTION} - CAPTCHA_SITE_KEY=${CAPTCHA_SITE_KEY} - CAPTCHA_SECRET_KEY=${CAPTCHA_SECRET_KEY} - ANALYTICS_SITE_ID=${ANALYTICS_SITE_ID} - ANALYTICS_CLIENT_ID=${ANALYTICS_CLIENT_ID} - ANALYTICS_SERVICE_EMAIL=${ANALYTICS_SERVICE_EMAIL} volumes: - ./storage:/var/www/html/storage - ./public/uploads:/var/www/html/public/uploads labels: - "traefik.enable=true" - "traefik.http.routers.merchbay-dev.rule=Host(`dev.merchbay.app`)" - "traefik.http.routers.merchbay-dev.entrypoints=websecure" - "traefik.http.routers.merchbay-dev.tls=true" - "traefik.http.routers.merchbay-dev.tls.certresolver=le" - "traefik.http.services.merchbay-dev.loadbalancer.server.port=80" # HTTP to HTTPS redirect - "traefik.http.routers.merchbay-dev-http.rule=Host(`dev.merchbay.app`)" - "traefik.http.routers.merchbay-dev-http.entrypoints=web" - "traefik.http.routers.merchbay-dev-http.middlewares=https-redirect" - "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https" networks: - traefik-public - crew-app-net - default networks: traefik-public: external: true crew-app-net: external: true default: driver: bridge