Skip to content

Instantly share code, notes, and snippets.

@codeagencybe
Last active October 3, 2023 18:32
Show Gist options
  • Save codeagencybe/1ae1a8b009c4371f3dc889cbf943b5a9 to your computer and use it in GitHub Desktop.
Save codeagencybe/1ae1a8b009c4371f3dc889cbf943b5a9 to your computer and use it in GitHub Desktop.
traefik example
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
- --certificatesresolvers.leresolver.acme.email=xxx@domain.com #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