Here’s how you can run Laravel in a subfolder with Traefik. Let’s consider this scenario:
- Traefik is already installed with entry points
http
andhttps
. - Laravel will be installed in the
/app
subfolder. - 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 (0)