#traefik #portainer
#traefik #portainer
Вопрос:
После обновления до версии Portainer v2 значки внезапно перестали загружаться. Я все еще могу получить доступ к Portainer (который проксируется Traefik), но после небольшого тестирования я заметил, /
что он будет перенаправлен только. Если был указан путь, Traefik выдал бы ошибку 404. Это проблема, потому что Portainer загружает шрифты, например. /b15db15f746f29ffa02638cb455b8ec0.woff2
.
На Github есть одна проблема по этому поводу, но я действительно не знаю, что делать с этой информацией: https://github.com/portainer/portainer/issues/3706
Моя конфигурация Traefik
version: "2"
# Manage domain access to services
services:
traefik:
container_name: traefik
image: traefik
command:
- --api.dashboard=true
- --certificatesresolvers.le.acme.email=${ACME_EMAIL}
- --certificatesresolvers.le.acme.storage=acme.json
# Enable/Disable staging by commenting/uncommenting the next line
# - --certificatesresolvers.le.acme.caserver=https://acme-staging-v02.api.letsencrypt.org/directory
- --certificatesresolvers.le.acme.dnschallenge=true
- --certificatesresolvers.le.acme.dnschallenge.provider=cloudflare
- --entrypoints.http.address=:80
- --entrypoints.https.address=:443
- --global.sendAnonymousUsage
- --log.level=INFO
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=traefik_proxy
restart: always
networks:
- traefik_proxy
ports:
- "80:80"
- "443:443"
dns:
- 1.1.1.1
- 1.0.0.1
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./acme.json:/acme.json
# - ./acme-staging.json:/acme.json
environment:
CF_API_EMAIL: ${CLOUDFLARE_EMAIL}
CF_API_KEY: ${CLOUDFLARE_API_KEY}
labels:
- traefik.enable=true
- traefik.http.routers.traefik0.entrypoints=http
- traefik.http.routers.traefik0.rule=Host(`${TRAEFIK_URL}`)
- traefik.http.routers.traefik0.middlewares=to_https
- traefik.http.routers.traefik.entrypoints=https
- traefik.http.routers.traefik.rule=Host(`${TRAEFIK_URL}`)
- traefik.http.routers.traefik.middlewares=traefik_auth
- traefik.http.routers.traefik.tls=true
- traefik.http.routers.traefik.tls.certresolver=le
- traefik.http.routers.traefik.service=api@internal
# Declaring the user list
#
# Note: all dollar signs in the hash need to be doubled for escaping.
# To create user:password pair, it's possible to use this command:
# echo $(htpasswd -nb user password) | sed -e s/\$/\$\$/g
- traefik.http.middlewares.traefik_auth.basicauth.users=${TRAEFIK_USERS}
# Standard middleware for other containers to use
- traefik.http.middlewares.to_https.redirectscheme.scheme=https
- traefik.http.middlewares.to_https_perm.redirectscheme.scheme=https
- traefik.http.middlewares.to_https_perm.redirectscheme.permanent=true
networks:
traefik_proxy:
external: true
И моя конфигурация Portainer
version: "2"
# Manage docker containers
services:
portainer:
container_name: portainer
image: portainer/portainer-ce
restart: always
networks:
- traefik_proxy
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data/:/data/
labels:
- traefik.enable=true
- traefik.http.services.portainer.loadbalancer.server.port=9000
- traefik.http.routers.portainer0.entrypoints=http
- traefik.http.routers.portainer0.rule=Host(`${PORTAINER_URL}`)
- traefik.http.routers.portainer0.middlewares=to_https
- traefik.http.routers.portainer.entrypoints=https
- traefik.http.routers.portainer.rule=Host(`${PORTAINER_URL}`)
- traefik.http.routers.portainer.tls=true
- traefik.http.routers.portainer.tls.certresolver=le
networks:
traefik_proxy:
external: true
Что мне нужно изменить, чтобы Traefik мог пересылать пути, чтобы Portainer мог загружать значки?
Ответ №1:
Не могли бы вы попробовать очистить свой DNS-кэш? В Chrome ‘chrome: // net-internals /#dns’ в строке URL и нажал enter. Затем нажмите «Очистить кэш хоста», затем обновите страницу portainer
Ответ №2:
Я заметил, что существует также версия Portainer для Alpine.
После переключения на это ( image: portainer/portainer-ce:alpine
) значки, похоже, снова работают. Я не знаю, в чем проблема с обычным изображением, но на данный момент это решает ее.
PS: Я пытался использовать заголовок управления доступом на Traefik, но это не помогло. Я думаю, это проблема с самим кодом Portainer.
Ответ №3:
Если кто-то еще сталкивается с этой проблемой, я решил это, удалив кэш своего браузера или просто выполнив полное обновление с помощью CTRL Shift R