Docker compose 带traefik v2的portainer docker compose给出;失败:无法检索服务器设置和状态“;
我目前很难将traefik v1容器更新为v2。我设置了一个带有自动http->https转发的traefik容器。现在,我想让portainer运行以下docker compose文件:Docker compose 带traefik v2的portainer docker compose给出;失败:无法检索服务器设置和状态“;,docker-compose,traefik,portainer,Docker Compose,Traefik,Portainer,我目前很难将traefik v1容器更新为v2。我设置了一个带有自动http->https转发的traefik容器。现在,我想让portainer运行以下docker compose文件: version: '3.3' volumes: portainer: {} networks: web: external: true services: portainer: image: portainer/portainer:latest restart: alway
version: '3.3'
volumes:
portainer: {}
networks:
web:
external: true
services:
portainer:
image: portainer/portainer:latest
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
command: |
--no-analytics
--data /data
--admin-password "the_hashed_password"
-H unix:///var/run/docker.sock
networks:
web:
labels:
- "traefik.enable=true"
- "traefik.http.routers.portainer.entrypoints=websecure"
- "traefik.http.routers.portainer.rule=Host(`portainer.myserver.domain`)"
- "traefik.http.services.portainer.loadbalancer.server.port=9000"
- "traefik.http.routers.portainer.tls=true"
- "traefik.http.routers.portainer.tls.certresolver=leresolver"
- "traefik.http.routers.portainer.middlewares=authportainer"
# generate with: sudo docker run --rm -ti xmartlabs/htpasswd user password
- "traefik.http.middlewares.authportainer.basicauth.users=myuser:my_hashed_password"
现在,当我用docker compose up
启动容器时,我得到:
portainer_1 | 2020/04/19 16:10:04 Starting Portainer 1.23.2 on :9000
...
portainer_1 | 2020/04/19 16:10:04 server: Listening on 0.0.0.0:8000...
访问http://portainer.myserver.domain
正确地转发到https://portainer.myserver.domain
。
使用myuser
进行身份验证后,将显示一个空页面,并显示一条淡入淡出的消息“Failure.cannot retrieve server settings and status”。使用traefik v1时,该设置可以正常工作。我不明白的是我是否需要对端口8000做任何事情(在旧的工作环境中我没有这样做)
如何调试这样的场景?我的docker compose文件有什么问题?
另外,为了简洁起见,我省略了traefik配置文件。如果需要,我会添加它(它适用于简单的容器)。我遇到了类似的问题,可以通过扩展路由器规则来解决它(另请参见): 这样,Traefik现在应该正确路由Portainer前端的api请求 希望这对你也有帮助
另外,关于您的调试问题,我通过检查浏览器的网络交互发现了这个问题,这表明对
portainer.myserver.domain/api/xyz
的所有调用都返回了404错误。我遇到了类似的问题,可以通过扩展路由器规则来解决它(另请参见)
这样,Traefik现在应该正确路由Portainer前端的api请求
希望这对你也有帮助
另外,关于您的调试问题,我通过浏览器检查网络交互来解决这个问题,这表明对
portainer.myserver.domain/api/xyz
的所有调用都返回了404错误。经过太多的时间,我解决了两个问题:
F5
或Shift+F5
在此处不起作用,重新启动浏览器也不起作用
如果遇到类似问题,也可以在专用窗口中加载页面。根据浏览器的配置,这将阻止它使用以前缓存的数据。经过太多的时间后,我发现了两件事:
F5
或Shift+F5
在此处不起作用,重新启动浏览器也不起作用
如果遇到类似问题,也可以在专用窗口中加载页面。根据浏览器的配置,这将阻止浏览器使用以前缓存的数据。浏览器中的“网络”选项卡确实是一个不错的选择。我稍后会试试你的建议,如果它能解决问题,我会投赞成票。谢谢你的提示。浏览器中的“网络”选项卡确实是一个很好的观点。我稍后会试试你的建议,如果它能解决问题,我会投赞成票。谢谢你的提示。
- "traefik.http.routers.portainer.rule=Host(`portainer.myserver.domain`) || (Host(`portainer.myserver.domain`) && PathPrefix(`/api`))"