我有一个简单的PHP Laravel docker图像,最终使用PHP Apache创建,侦听端口80(默认情况下)。
我有一个Docker Traefik安装,通过HTTPS(443端口)工作得非常好。
现在,如果我使用以下docker-compose.yml来安装laravel:
version: "3.8"
services:
resumecv:
image: sineverba/resumecv-backend:0.1.0-dev
container_name: resumecv
networks:
- proxy
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.resumecv-backend.entrypoints=websecure"
- "traefik.http.routers.resumecv-backend.service=resumecv-backend"
- "traefik.http.routers.resumecv-backend.rule=Host(`resumecvbackend.example.com`)"
- "traefik.http.services.resumecv-backend.loadbalancer.server.port=80"
networks:
proxy:
external: true
它可以工作(Map到80个端口)。
如果我要更改监听端口:
version: "3.8"
services:
resumecv:
image: sineverba/resumecv-backend:0.1.0-dev
container_name: resumecv
networks:
- proxy
ports:
- "9999:80"
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.resumecv-backend.entrypoints=websecure"
- "traefik.http.routers.resumecv-backend.service=resumecv-backend"
- "traefik.http.routers.resumecv-backend.rule=Host(`resumecvbackend.example.com`)"
- "traefik.http.services.resumecv-backend.loadbalancer.server.port=9999"
networks:
proxy:
external: true
我从Cloudflare收到错误的网关(服务不可访问)。
我知道我可以更改容器本身内部的apache端口,但我会使用out<->来Mapports
定义。
curl 测试
从主持人的Angular 来说,我可以成功地取得成功。我也可以使用主机的IP(192.168.1.100:9999)浏览网站。
标签traefik端口
我确实尝试添加了traefik.port=9999
标签,但没有成功
移除标签均衡器
如果我去掉"traefik.http.services.resumecv-backend.loadbalancer.server.port=9999"
标签,我得到一个简短的404 Not Found。
1条答案
按热度按时间bq3bfh9z1#
港口出版...
...不会更改容器正在侦听的端口。它只是建立了从host到容器的Map。您的服务仍在侦听端口80,其他容器--包括traefik--将需要使用该端口来联系您的服务。
如果您使用的是像traefik这样的前端,则不需要
ports
条目(因为您将通过traefik而不是直接通过主机端口访问服务)。