Last active
October 3, 2023 18:32
-
-
Save codeagencybe/1ae1a8b009c4371f3dc889cbf943b5a9 to your computer and use it in GitHub Desktop.
traefik example
This file contains hidden or 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