как сопоставить различные прибыли внутри сервиса docker с помощью traefik?

#wordpress #docker #traefik #bitnami

Вопрос:

Я настраиваю сайт wordpress с использованием изображений bitnami, они предоставляют непривилегированные порты 8181 и 8443 , поэтому я хотел бы сопоставить порт 443 с портом контейнера службы 8443, я попытался с помощью expose: [8443] и безуспешно определил порт балансировки нагрузки. не очень ясно, должен ли я определять целевой порт в службе или в промежуточном программном обеспечении.

вот мое определение traefik

 version: "3.7"  networks:  traefik:  external: true  services:   traefik:  image: "traefik:v2.5"  container_name: traefik  restart: unless-stopped  command:  - "--providers.docker=true"  - "--providers.docker.exposedbydefault=false"  - "--entrypoints.web.address=:80"  - "--entrypoints.websecure.address=:443"  - "--certificatesresolvers.myresolver.acme.httpchallenge=true"  - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"  - "--certificatesresolvers.myresolver.acme.email=mail@me.com"  - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"  ports:  - "80:80"  - "443:443"  networks:  - traefik  volumes:  - "letsencrypt:/letsencrypt"  - "/var/run/docker.sock:/var/run/docker.sock:ro"    

И сервис (соответствующие части)

 wordpress:  image: docker.io/bitnami/wordpress-nginx:5  volumes:  - wordpress_data:/bitnami/wordpress  depends_on:  - mariadb  environment:  ....  ....  NGINX_HTTP_PORT_NUMBER: 8181  NGINX_HTTPS_PORT_NUMBER: 8443  networks:  - traefik  - backend  labels:  - "traefik.enable=true"  - "traefik.docker.network=traefik"  - "traefik.http.routers.wordpress.rule=Host(`domain.com`)"  - "traefik.http.routers.wordpress.entrypoints=web"  - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"  - "traefik.http.routers.wordpress.middlewares=redirect-to-https@docker"  - "traefik.http.routers.wordpress-secured.rule=Host(`domain.com`)"  - "traefik.http.routers.wordpress-secured.entrypoints=websecure"  - "traefik.http.routers.wordpress-secured.tls=true"  - "traefik.http.routers.wordpress-secured.tls.certresolver=myresolver"   

Ответ №1:

Хорошо, я нашел решение: мне нужно настроить порт сервера loadbalancer, чтобы сообщить traefik, где служба прослушивает

 services:  wordpress:  labels:  - 'traefik.http.services.wordpress-secured.LoadBalancer.server.port=8181'