diff --git a/inverseproxy.yaml b/inverseproxy.yaml new file mode 100644 index 0000000..34a34b9 --- /dev/null +++ b/inverseproxy.yaml @@ -0,0 +1,85 @@ +version: "2.4" +services: + proxy: + image: traefik:2.4 + networks: + shared: + aliases: [] + private: + public: + volumes: + - acme:/etc/traefik/acme:rw,Z + ports: + - 80:80 + - 443:443 + depends_on: + - dockersocket + restart: unless-stopped + tty: true + command: + - "--entrypoints.web-insecure.address=:80" + - "--entrypoints.web-main.transport.respondingTimeouts.idleTimeout=60s" + - "--entrypoints.web-main.http.middlewares=global-error-502@docker" + - "--log.level=info" + - "--providers.docker.endpoint=http://dockersocket:2375" + - "--providers.docker.exposedbydefault=false" + - "--providers.docker.network=inverseproxy_shared" + - "--providers.docker=true" + - "--entrypoints.web-main.address=:443" + - "--entrypoints.web-main.http.tls.certResolver=letsencrypt" + - "--certificatesresolvers.letsencrypt.acme.caserver=https://acme-v02.api.letsencrypt.org/directory" + - "--certificatesresolvers.letsencrypt.acme.email=admin@manmanufacturing.com" + - "--certificatesresolvers.letsencrypt.acme.storage=/etc/traefik/acme/acme-v2.json" + - "--entrypoints.web-insecure.http.redirections.entryPoint.to=web-main" + - "--entrypoints.web-insecure.http.redirections.entryPoint.scheme=https" + - "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web-insecure" + dockersocket: + image: tecnativa/docker-socket-proxy + privileged: true + networks: + private: + volumes: + - "/var/run/docker.sock:/var/run/docker.sock:ro" + environment: + CONTAINERS: 1 + NETWORKS: 1 + SERVICES: 1 + SWARM: 1 + TASKS: 1 + restart: unless-stopped + error-handling: + image: nginx:alpine + restart: unless-stopped + networks: + - shared + volumes: + - error-handling-config:/etc/nginx/conf.d/ + - error-handling-data:/usr/share/nginx/html/ + labels: + traefik.docker.network: inverseproxy_shared + traefik.enable: "true" + traefik.http.routers.error-handling.rule: HostRegexp(`{any:.+}`) + traefik.http.routers.error-handling.entrypoints: web-main + traefik.http.routers.error-handling.priority: 1 + traefik.http.routers.error-handling.service: global-error-handler + traefik.http.routers.error-handling.middlewares: global-error-502 + traefik.http.middlewares.global-error-502.errors.status: 502 + traefik.http.middlewares.global-error-502.errors.service: global-error-handler + traefik.http.middlewares.global-error-502.errors.query: "/{status}.html" + traefik.http.services.global-error-handler.loadbalancer.server.port: 80 +networks: + shared: + internal: true + driver_opts: + encrypted: 1 + private: + internal: true + driver_opts: + encrypted: 1 + public: + driver_opts: + encrypted: 1 +volumes: + acme: + error-handling-config: + error-handling-data: