Tag: traefik

traefik主机名适用于web应用程序,但不适用于mongodb

我用docker-compose和traefik运行一个mongo实例。 myapp-mongo: build: ../images/myapp-mongo restart: always ports: – "27017:27017" labels: – "traefik.ports=27017,27018" – "traefik.backend=myapp-mongo" – "traefik.frontend.rule=Host:myapp-mongo.docker.localhost" networks: – development environment: – MONGO_USER=${MONGO_USER} – MONGO_PASSWD=${MONGO_PASSWD} – MONGO_AUTHDB=${MONGO_AUTHDB} Mongo运行良好,我可以从我的Mac连接使用127.0.0.1 。 问题是我无法连接使用主机名myapp-mongo.docker.localhost 。 它只能使用IP 127.0.0.1。 尝试ping IP 127.0.0.1响应正常,但尝试ping主机名不起作用。 我已经将127.0.0.1 proxy.docker.localhost添加到/etc/hosts以使traefik工作。 所有其他Web应用程序的主机名正常工作,如myapp.docker.localhost 。 这个问题只发生在这个mongodb容器中。

Traefik作为Docker容器与主机networking的代理

我想设置以下场景: 一台具有Docker容器的物理机器 与networkingbackend容器中的traefik 另一个使用主机networking的容器( network_mode: host ) Traefik成功find了容器,并添加了IP地址127.0.0.1 ,这显然不能从traefik容器(不同的networking/网桥)访问。 泊坞窗,compose.yml: version: '3' services: traefik: image: traefik ports: – "80:80" – "443:443" volumes: – /var/run/docker.sock:/var/run/docker.sock – ./traefik.toml:/etc/traefik/traefik.toml networks: – backend app: image: my_app labels: – "traefik.enable=true" – "traefik.frontend.rule=Host:myapp.example" – "traefik.port=8080" network_mode: host networks: backend: driver: bridge app容器被添加 Server URL Weight server-app http://127.0.0.1:8080 0 Load Balancer: wrr […]

如何查看Traefik中失败的代理?

我正在构build一个基于微服务的PHP Web应用程序,目前,进入我的应用程序的路线是在不同的端口上。 这对发展很好,但是一旦启动就不会那么可靠。 我有: SPA前端10001端口 端口10000上的HTTP API 在10002上的Web Socket 我希望这些都在同一个端口上。 我最近发现Traefik看起来非常灵活,能够适应我未来的需求。 我很欣赏我可以使用NginX进行简单的代理,但是我非常喜欢能够告诉代理通过APIredirectstream量的想法(将在未来有用)。 但是,我已经build立了一个Traefikconfiguration,而且它并不像我想要的那样代理。 我正在努力让它产生日志来说出什么是错误的,我正在寻找一个“快速取胜”来鼓励我继续坚持下去。 我已经configuration了一个主机到容器卷,所以它可以探索Docker,使用-v /var/run/docker.sock:/var/run/docker.sock )。 我不明白为什么需要知道我的容器,因为我打算在我的traefik.toml设置所有的configuration。 所以,当我(模糊地)理解它时,我需要设置入口点(stream量进入),前端(如何路由的决定)和后端(服务器做什么)。 我最初的尝试是这样的: # Entrypoints definition # # It looks like we have one entry point, and use # frontends to filter WS/HTTP [entryPoints] [entryPoints.everything] address = ":10005" # Frontends definition [frontends] [frontends.http] backend = "backend-spa" [frontends.http-api] backend […]

docker后面的traitik代理中的gitlab失败(通常)

我有几个网站在Docker中运行LetsEncrypt凭据,并通过traefik路由。 我想在Docker中运行一个本地的gitlab-ce,类似于LetsEncrypt和traefik。 所以我把这个添加到我的traefik.toml文件中: [[acme.domains]] main = "gitlab.mydomain.com" 而这个configuration/ gitlab.rb: external_url "http://gitlab.mydomain.com" 我开始使用gitlab: docker run -d –restart=always \ –hostname gitlab.mydomain.com \ –expose 80 \ –volume /srv/gitlab/config:/etc/gitlab \ –volume /srv/gitlab/data:/var/opt/gitlab \ –volume /var/log/gitlab:/var/log/gitlab \ –label traefik.frontend.rule=Host:gitlab.mydomain.com \ –name gitlab gitlab/gitlab-ce:latest 去https://gitlab.mydomain.com/我得到一个安全的网站与LetsEncrypt生成的证书,但该网站不加载: 内部服务器错误 当我重新加载页面,我在docker logs gitlab -f看到这个docker logs gitlab -f : ==> /var/log/gitlab/sshd/current <== 2017-02-12_16:51:31.00446 Bad protocol version […]

Docker-compose有问题的标签

我正在尝试使用文档中显示的示例来设置Traefik反向代理。 当我尝试提出“whoami”服务时,我得到以下错误: Creating test_whoami_1 … ERROR: for test_whoami_1 dictionary update sequence element #0 has length 22; 2 is required ERROR: for whoami dictionary update sequence element #0 has length 22; 2 is required Traceback (most recent call last): File "bin/docker-compose", line 6, in <module> File "compose/cli/main.py", line 68, in main File "compose/cli/main.py", line 121, in […]

dockerized jira后面traefik-Proxy抛出混合内容错误

我已经在我的Traefik-Installation下build立了一个Dockerized Jira-Instance 。 这是我的docker-compose.yml: version: "2" services: software: image: cptactionhank/atlassian-jira-software:latest labels: – "traefik.frontend.rule=Host:jira.domain.com" – "traefik.port=8080" – "traefik.enable=true" – "traefik.frontend.entryPoints=http,https" 我的Jira-Baseurl设置为https://jira.domain.com ,我也可以通过https访问我的Jira-Installation。 在我的traefik设置中,我已经设置了从http到https的每个请求的redirect。 我的traefik.toml看起来像这样: [entryPoints] [entryPoints.http] address = ":80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] defaultEntryPoints = ["http", "https"] 这是工作,但在一些请求我得到以下错误: 混合内容:“ https://jira.domain.com/secure/Dashboard.jspa ”页面通过HTTPS加载,但请求一个不安全的资源' http://jira.domain.com/plugins/servlet/gadgets/ ifr?container = atlassian&mi … ivitystream-gadget%2Fgadgets%2Factivitystream-gadget.xml&libs = auth-refresh'。 此请求已被阻止; 内容必须通过HTTPS提供。 […]

与Traefik路由path

目前我正在尝试用Traefik为一些docker集装箱设置一个loadbalancer / reverse proxy。 我无法configurationTreafik使我的应用程序可用一些前缀path。 基于这个例子 ,我能够得到一个使用Docker和Docker组合运行的基本Traefikconfiguration。 问题是,我可以让'whoamI'容器在path上可到达,而不是我的应用程序和其他容器。 例如,我创build了一个docker-compose文件(见下文)来启动whoamI容器和五个Portainer容器(以便人们可以重新创build场景)。 我希望woamI可以在/wai和Portainer /portainer1 portainer1。 相反,我可以到达whoamI webserver(通过/wai )而不是Portainer(通过/portainer1 portainer1)。 不过,我可以到Portainer /portainer2 portainer2。 这两者之间的Traefikconfiguration的唯一区别是使用“PathStrip”而不是“Path”。 但恼人的是,我只能在导航到/portainer2时才能获得一个白页; 只有页面标题和一些HTML被加载。 我也启动了一个暴露在主机上的Portainer容器来validation预期的行为(一个普通的Portainer页面)。 请参阅下面的附加图像。 编辑: 有趣的是,我也可以通过/portainer4/ portainer4 /portainer4/ (但不是/portainer4 portainer4)到达Portainer,导致相同的白页。 导航到/portainer2/和/portainer4/之间的区别是,我注意到一些额外的日志Traefik(见下文)。 当通过/portainer4/ portainer4 /portainer4/导航到Portainer时,日志中出现三条额外的线,表示400状态。 经过一番调查,我发现这是来自我的浏览器试图加载额外的文件(即JavaScript文件,图标和样式表)。 所以,当访问portainer /portainer4/ portainer4 /portainer4/我的浏览器知道它需要获取这些额外的文件,并试图这样做(这不会发生时,导航到/portainer2 )。 当尝试自己访问文件时,例如,导航到/portainer4/ico/favicon.ico ,我得到一个400 Bad Request 。 最后,当导航到/portainer2/ico/favicon.ico是看到404 page not found 。 基于这些结果,我想知道: 为什么我无法在/ portainer1到达Portainer,而是在/ portainer2? 为什么在导航到/ […]

traefik反向代理与docker后端 – 在traefik的configuration文件configuration前端规则,而不是通过容器标签

为了使用traefik作为Docker容器前的反向代理,其dynamicIP地址可能会随时间而改变,traefik附带一个docker 后端 。 我可以find的所有设置都遵循相同的模式: 首先,在没有额外的configuration文件的情况下启动docker模式下的traefik,激活主机networking模式(可选,这样traefik可以看到主机上的所有Dockernetworking,如果需要的话),并安装Docker unix套接字,以便traefik可以听到容器启动和停止。 docker run –rm -p 80:80 –net=host –name traefik-reverse-proxy -v /dev/null/traefik.toml:/etc/traefik/traefik.toml -v /var/run/docker.sock:/var/run/docker.sock traefik –docker –loglevel debug 然后,启动另一个容器并至less设置以下标签 : traefik.backend:“一些后端名称” traefik.frontend.rule:“主机:本地主机;方法:GET”(或任何你的规则是) traefik.port:80(或者你的容器在内部暴露的任何端口) 例: docker run –rm –name nginx -l traefik.backend="some-backend-name" -l traefik.frontend.rule="Host: localhost; Method: GET" -l traefik.port="80 nginx 然后,做一个curl localhost ,可以在traefik容器的日志中看到它接受了请求,并将其发送到NGINX容器。 到目前为止,这么好…但是,我不喜欢这个事实,我必须在应用程序本身(我的docker-组成文件设置容器,标签等通常位于)。 相反,我想将其与应用程序分开,并将其configuration为traefikconfiguration的一部分。 这是可能的吗? 我试过的是从示例nginx容器中traefik.frontend.rule标签,而是为traefik装入以下configuration文件: [frontends] [frontends.frontend1] backend = "some-backend-name" […]

Docker-compose traefik PathPrefixStrip不能正常工作

我有个问题让我生气,请帮助我。 我想从一个免费的无ip子域访问我的所有应用程序,所以我认为traefik可以为我做这个,我想访问所有我的应用程序,如: mysubdomain.no-ip.com/emby mysubdomain.no-ip.com/pydio mysubdomain.no-ip.com/adminer… 这是我的docker组成: version: "2" services: db: image: linuxserver/mariadb restart: always environment: MYSQL_ROOT_PASSWORD: "test" labels: – "traefik.enable=false" volumes: – ./config/mariadb:/etc/mysql/ ports: – '3306:3306' adminer: image: adminer restart: always labels: – "traefik.enable=true" – "traefik.backend=adminer" – "traefik.frontend.rule=PathPrefixStrip:/dbadmin" – "traefik.backend.port=8080" volumes: – ./config/adminer:/config emby: image: emby/embyserver:latest restart: always labels: – "traefik.enable=true" – "traefik.backend=emby" – "traefik.frontend.rule=PathPrefixStrip:/media" […]