From 3a6f9fd9fbef9b4e9d9d24fd7aa5ed61fbe809c7 Mon Sep 17 00:00:00 2001 From: pashko Date: Fri, 14 Mar 2025 18:43:12 +0800 Subject: [PATCH] Add docekr-compose --- docekr-compose | 143 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 docekr-compose diff --git a/docekr-compose b/docekr-compose new file mode 100644 index 0000000..95f1d3d --- /dev/null +++ b/docekr-compose @@ -0,0 +1,143 @@ +services: + app01-replica: + image: ${APP01_IMAGE} + hostname: ${APP01_HOSTNAME} + environment: + APP01_IMAGE: "${APP01_IMAGE}" + APP01_HOSTNAME: "${APP01_HOSTNAME}" + APP01_EXPOSED_PORT: "${APP01_EXPOSED_PORT}" + URL: "${URL}" + APP01_PATH_PREFIX: "${APP01_PATH_PREFIX}" + PROXY_NETWORK: "${PROXY_NETWORK}" + expose: + - "${APP01_EXPOSED_PORT}" + deploy: + mode: replicated + replicas: 3 + restart: always + logging: + driver: "json-file" + options: + max-size: "50m" + max-file: "10" + compress: "true" + rotate-max-age: "7d" + labels: "app=app01,env=production,version=1.0.0" + labels: + app: "app01" + version: "1.0.0" + env: "test" + app_url: "${URL}/${APP01_PATH_PREFIX}" + traefik.enable: "true" + traefik.http.routers.app01.entrypoints: "https" + traefik.http.routers.app01.rule: "Host(`${URL}`) && PathPrefix(`/${APP01_PATH_PREFIX}`)" + traefik.http.routers.app01.tls: "true" + traefik.http.routers.app01.tls.certresolver: "letsEncrypt" + traefik.http.routers.app01.service: "app01" + traefik.http.services.app01.loadbalancer.server.port: "${APP01_EXPOSED_PORT}" + traefik.http.services.app01.loadbalancer.passhostheader: "true" + traefik.http.routers.app01.middlewares: "app01-header" + traefik.http.middlewares.app01-header.headers.referrerPolicy: "no-referrer" + traefik.http.middlewares.app01-header.headers.stsSeconds: "15552000" + traefik.http.middlewares.app01-header.headers.forceSTSHeader: "true" + traefik.http.middlewares.app01-header.headers.stsPreload: "true" + traefik.http.middlewares.app01-header.headers.customrequestheaders.X-Forwarded-Proto: "https,wss" + traefik.docker.network: "${PROXY_NETWORK}" + networks: + - proxy + + app02: + image: ${APP02_IMAGE} + hostname: ${APP02_HOSTNAME} + environment: + APP02_IMAGE: "${APP02_IMAGE}" + APP02_HOSTNAME: "${APP02_HOSTNAME}" + APP02_EXPOSED_PORT: "${APP02_EXPOSED_PORT}" + APP03_HOSTNAME: "${APP03_HOSTNAME}" + APP03_EXPOSED_PORT: "${APP03_EXPOSED_PORT}" + URL: "${URL}" + APP01_PATH_PREFIX: "${APP02_PATH_PREFIX}" + PROXY_NETWORK: "${PROXY_NETWORK}" + SERVICE_NETWORK: ${SERVICE_NETWORK} + expose: + - "${APP02_EXPOSED_PORT}" + restart: always + deploy: + resources: + limits: + cpus: '0.50' + memory: 50M + reservations: + cpus: '0.25' + memory: 20M + logging: + driver: "fluentd" + options: + fluentd-address: "tcp://:24224" + tag: "docker.{{.Name}}" + labels: + app: "app02" + version: "1.0.0" + env: "test" + app_url: "${URL}/${APP02_PATH_PREFIX}" + traefik.enable: "true" + traefik.http.routers.app01.entrypoints: "https" + traefik.http.routers.app01.rule: "Host(`${URL}`) && PathPrefix(`/${APP02_PATH_PREFIX}`)" + traefik.http.routers.app01.tls: "true" + traefik.http.routers.app01.tls.certresolver: "letsEncrypt" + traefik.http.routers.app01.service: "app01" + traefik.http.services.app01.loadbalancer.server.port: "5000" + traefik.http.services.app01.loadbalancer.passhostheader: "true" + traefik.http.routers.app01.middlewares: "app01-header" + traefik.http.middlewares.app01-header.headers.referrerPolicy: "no-referrer" + traefik.http.middlewares.app01-header.headers.stsSeconds: "15552000" + traefik.http.middlewares.app01-header.headers.forceSTSHeader: "true" + traefik.http.middlewares.app01-header.headers.stsPreload: "true" + traefik.http.middlewares.app01-header.headers.customrequestheaders.X-Forwarded-Proto: "https,wss" + traefik.docker.network: "${PROXY_NETWORK}" + networks: + - proxy + - service + + + app03: + image: ${APP03_IMAGE} + hostname: ${APP03_HOSTNAME} + depends_on: + app02: + condition: service_started + environment: + APP03_IMAGE: "${APP03_IMAGE}" + APP03_HOSTNAME: "${APP03_HOSTNAME}" + APP03_EXPOSED_PORT: "${APP03_EXPOSED_PORT}" + SERVICE_NETWORK: ${SERVICE_NETWORK} + expose: + - "${APP03_EXPOSED_PORT}" + restart: always + deploy: + resources: + limits: + cpus: '0.50' + memory: 50M + reservations: + cpus: '0.25' + memory: 20M + logging: + driver: "fluentd" + options: + fluentd-address: "tcp://:24224" + tag: "docker.{{.Name}}" + labels: + app: "app03" + version: "1.0.0" + env: "test" + networks: + - service + +networks: + proxy: + name: ${PROXY_NETWORK} + external: true + service: + name: ${SERVICE_NETWORK} + external: true \ No newline at end of file