Here’s how you can run Laravel in a subfolder with Traefik. Let’s consider this scenario:
- Traefik is already installed with entry points
httpandhttps. - Laravel will be installed in the
/appsubfolder. - Traefik and Laravel will use an external network called
traefik.
Edit docker-compose.yml as following:
services:
app:
image: your-app-image
# ...the rest of the configuration
networks:
- traefik
labels:
- traefik.enable=true
- traefik.docker.network=traefik
- traefik.constraint-label=traefik
- traefik.http.middlewares.app-strip.stripprefix.prefixes=/app
# HTTP entrypoint
- traefik.http.routers.app-http.entrypoints=http
- traefik.http.routers.app-http.rule=Host(`your-app-domain.com`) && PathPrefix(`/app`)
- traefik.http.routers.app-http.middlewares=https-redirect,app-strip
# HTTPS entrypoint
- traefik.http.routers.app-https.entrypoints=https
- traefik.http.routers.app-https.rule=Host(`your-app-domain.com`) && PathPrefix(`/app`)
- traefik.http.routers.app-https.tls=true
- traefik.http.routers.app-https.middlewares=app-strip
networks:
traefik:
external: true
Edit .env and set the subfolder in APP_URL.
APP_URL=https://your-app-domain.com/app
# ...the rest of the configuration
Edit app/Http/Middleware/TrustProxies.php and ensure that all proxies are allowed to let Laravel generate HTTPS URLs.
Always use URL helpers like url(), route(), etc., to generate full URLs, including the subfolder path.
That’s it! Now you can run your compose file with docker compose up -d and access your Laravel application via the subfolder.
Top comments (1)
Thanks for the insights, I have problems deploying my TALL app in subdirectory
Is there any way to contact you?