Last active
October 3, 2023 18:32
-
-
Save codeagencybe/1ae1a8b009c4371f3dc889cbf943b5a9 to your computer and use it in GitHub Desktop.
traefik example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: "3.3" | |
services: | |
odoo: | |
image: registry.gitlab.com/codeagency-intern/odooimage | |
networks: | |
- gateway | |
- odoo | |
container_name: ${ENV}-odoo-app | |
environment: | |
- ODOO_ENDPOINT | |
- ODOO_ALT_ENDPOINT | |
- ODOO_ALT_ENDPOINT_WWW | |
restart: always | |
depends_on: | |
- db | |
ports: | |
- "8069" | |
- "8070" | |
- "8072" | |
volumes: | |
- odoo-data:/var/lib/odoo | |
- ./backups:/backups | |
- ./import:/import | |
- ./logs:/logs | |
labels: | |
- traefik.enable=true | |
- traefik.docker.network=gateway | |
#----------------------------------------------- routers for: odoo -------------------------------------------------- | |
- "traefik.http.routers.${ENV}-odoo.rule=Host(`${ODOO_ENDPOINT}`)" | |
- "traefik.http.routers.${ENV}-odoo.entrypoints=websecure" | |
- "traefik.http.routers.${ENV}-odoo.service=${ENV}-odoo" | |
- "traefik.http.routers.${ENV}-odoo.tls.certresolver=leresolver" | |
- "traefik.http.routers.${ENV}-odoo.middlewares=gzip,sslheader,limit" | |
- "traefik.http.services.${ENV}-odoo.loadbalancer.server.port=8069" | |
#----------------------------- routes for: odoo/web/database || odoo/website/info ----------------------------- | |
- "traefik.http.routers.${ENV}-odoo-db.rule=Host(`${ODOO_ENDPOINT}`) && (PathPrefix(`/web/database`) || PathPrefix(`/website/info`))" | |
- "traefik.http.routers.${ENV}-odoo-db.entrypoints=websecure" | |
- "traefik.http.routers.${ENV}-odoo-db.service=${ENV}-odoo" | |
- "traefik.http.routers.${ENV}-odoo-db.tls.certresolver=leresolver" | |
- "traefik.http.routers.${ENV}-odoo-db.middlewares=gzip,sslheader,limit" | |
- "traefik.http.services.${ENV}-odoo-db.loadbalancer.server.port=8069" | |
#---------------------------------------- routes for: odoo/websockets ------------------------------------------------ | |
- "traefik.http.routers.${ENV}-odoo-im.rule=Host(`${ODOO_ENDPOINT}`) && (PathPrefix(`/websocket`))" | |
- "traefik.http.routers.${ENV}-odoo-im.entrypoints=websecure" | |
- "traefik.http.routers.${ENV}-odoo-im.service=${ENV}-odoo-im" | |
- "traefik.http.routers.${ENV}-odoo-im.tls.certresolver=leresolver" | |
- "traefik.http.routers.${ENV}-odoo-im.middlewares=gzip,sslheader,limit" | |
- "traefik.http.services.${ENV}-odoo-im.loadbalancer.server.port=8072" | |
#===================================================== middlewares ========================================================= | |
- "traefik.http.middlewares.gzip.compress=true" | |
- "traefik.http.middlewares.sslheader.headers.customrequestheaders.X-Forwarded-Proto=https" | |
- "traefik.http.middlewares.limit.buffering.memRequestBodyBytes=2000000000" | |
- "traefik.http.middlewares.limit.buffering.maxRequestBodyBytes=2000000000" | |
- "traefik.http.middlewares.limit.buffering.maxResponseBodyBytes=2000000000" | |
- "traefik.http.middlewares.limit.buffering.memResponseBodyBytes=2000000000" | |
db: | |
image: postgres:14 | |
container_name: ${ENV}-odoo-db | |
networks: | |
- odoo | |
restart: always | |
shm_size: 1gb | |
environment: | |
- POSTGRES_DB | |
- POSTGRES_PASSWORD | |
- POSTGRES_USER | |
- PGDATA | |
volumes: | |
- db-data:/var/lib/postgresql/data/pgdata | |
labels: | |
- traefik.enable=false | |
keydb: | |
image: eqalpha/keydb:latest | |
platform: linux/amd64 | |
shm_size: 1GB | |
restart: always | |
container_name: ${ENV}-odoo-cache-db | |
networks: | |
- odoo | |
# command: keydb-server /etc/keydb/keydb.conf | |
volumes: | |
#- ./keydb.conf:/etc/keydb/keydb.conf:ro | |
- cache-db-data:/var/lib/keydb | |
volumes: | |
odoo-data: | |
name: odoo-${ENV}-data | |
db-data: | |
name: db-${ENV}-data | |
cache-db-data: | |
name: cache-db-${ENV}-data | |
networks: | |
gateway: | |
external: true | |
attachable: true | |
odoo: | |
name: "${ENV}-odoo" | |
attachable: true | |
version: "3.3" | |
services: | |
traefik: | |
container_name: traefik | |
image: "traefik:latest" | |
networks: | |
- gateway | |
command: | |
- --api.dashboard=false | |
- --api.insecure=false | |
- --api.debug=true | |
- --entrypoints.web.address=:80 | |
- --entrypoints.websecure.address=:443 | |
- --providers.docker | |
- --log.level=INFO | |
- --tracing=false | |
- --tracing.jaeger=false | |
- --accesslog.filepath=/var/log/traefik/access.log | |
- --certificatesresolvers.leresolver.acme.httpchallenge=true | |
- [email protected] #Set your email address here, is for the generation of SSL certificates with Let's Encrypt. | |
- --certificatesresolvers.leresolver.acme.storage=./acme.json | |
- --certificatesresolvers.leresolver.acme.httpchallenge.entrypoint=web | |
ports: | |
- "80:80" | |
- "443:443" | |
volumes: | |
- "/var/run/docker.sock:/var/run/docker.sock:ro" | |
- "./acme.json:/acme.json" | |
- "traefik_logs:/var/log/traefik" | |
labels: | |
- "traefik.enable=true" | |
- "traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)" | |
- "traefik.http.routers.http-catchall.entrypoints=web" | |
- "traefik.http.routers.http-catchall.middlewares=redirect-to-https" | |
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https" | |
# Traefik Dashboard route | |
- "traefik.http.routers.traefik-dashboard.rule=Host(`traefik.domain.com`)" | |
- "traefik.http.routers.traefik-dashboard.entrypoints=websecure" | |
- "traefik.http.routers.traefik-dashboard.tls.certresolver=leresolver" | |
- "traefik.http.routers.traefik-dashboard.service=api@internal" | |
portainer: | |
image: portainer/portainer-ce:latest | |
command: -H unix:///var/run/docker.sock | |
networks: | |
- gateway | |
restart: always | |
volumes: | |
- /var/run/docker.sock:/var/run/docker.sock | |
- portainer_data:/data | |
labels: | |
# Frontend | |
- "traefik.enable=true" | |
- "traefik.http.routers.frontend.rule=Host(`portainer.domain.com`)" | |
- "traefik.http.routers.frontend.entrypoints=websecure" | |
- "traefik.http.services.frontend.loadbalancer.server.port=9000" | |
- "traefik.http.routers.frontend.service=frontend" | |
- "traefik.http.routers.frontend.tls.certresolver=leresolver" | |
# Edge | |
- "traefik.http.routers.edge.rule=Host(`edge.domain.com`)" | |
- "traefik.http.routers.edge.entrypoints=websecure" | |
- "traefik.http.services.edge.loadbalancer.server.port=8000" | |
- "traefik.http.routers.edge.service=edge" | |
- "traefik.http.routers.edge.tls.certresolver=leresolver" | |
volumes: | |
portainer_data: | |
traefik_logs: | |
networks: | |
gateway: | |
external: true | |
name: "gateway" | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment