Hi, I have a local Traefik setup using docker-compose and a traefik.yaml
configuration file, I can access the Traefik dashboard, but I'm unable to reach my web application at web.local
, to be honest, I have very limited knowledge of network configuration, could someone please explain what I might be doing wrong?
my docker-compose :
services:
web:
build:
context: .
dockerfile: Dockerfile
image: my_web_image
depends_on:
db:
condition: service_healthy
networks:
- webnet
environment:
MYSQL_HOST: db
MYSQL_DATABASE: exampledb
MYSQL_USER_FILE: /run/secrets/db_user
MYSQL_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_user
- db_password
volumes:
- ./public-html/:/var/www/html/
labels:
- "traefik.enable=true"
- "traefik.http.routers.web.rule=Host(`web.local`)"
#- "traefik.http.routers.web.entrypoints=websecure"
- "traefik.http.routers.web.entrypoints=web"
- "traefik.http.services.web.loadbalancer.server.port=80"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost/"]
interval: 30s
timeout: 10s
retries: 3
db:
image: mysql:8.0
restart: always
networks:
- webnet
volumes:
- db_data:/var/lib/mysql
- ./db-init:/docker-entrypoint-initdb.d
environment:
MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db_root_password
MYSQL_DATABASE: exampledb
MYSQL_USER_FILE: /run/secrets/db_user
MYSQL_PASSWORD_FILE: /run/secrets/db_password
secrets:
- db_root_password
- db_user
- db_password
labels:
- "traefik.enable=false"
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "--silent"]
interval: 30s
timeout: 10s
retries: 5
traefik:
image: traefik:v3.0
command:
- "--configFile=/traefik/traefik.yaml"
labels:
- "traefik.http.routers.api.rule=Host(`localhost`)"
- "traefik.http.routers.api.service=api@internal"
- "traefik.http.routers.api.entrypoints=web"
ports:
- "80:80"
- "443:443"
- "8080:8080" # Traefik dashboard
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./traefik/traefik.yml:/traefik.yml
- ./traefik/acme.json:/acme.json
networks:
- webnet
networks:
webnet:
driver: bridge
external: true
volumes:
db_data:
secrets:
db_root_password:
file: ./secrets/db_root_password.txt
db_user:
file: ./secrets/db_user.txt
db_password:
file: ./secrets/db_password.txt
and my traefik.yaml
api:
dashboard: true
insecure: true
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
traefik:
address: ":8080"
providers:
docker:
exposedByDefault: false
endpoint: "unix:///var/run/docker.sock"
watch: true
network: webnet
log:
level: DEBUG
accessLog: {}