我有一个简单的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
它工作(映射到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<->;在与CCD_ 1定义的映射中。
卷曲试验
从主机上,我可以成功地curl http://127.0.0.1:9999
。我也可以使用主机的IP(192.168.1.100:9999(浏览网站。
traefik端口标签
我确实尝试添加traefik.port=9999
标签,但没有运气
卸下标签平衡器
如果我删除"traefik.http.services.resumecv-backend.loadbalancer.server.port=9999"
标签,我会得到一个未找到的简洁404。
端口发布。。。
ports:
- "9999:80"
不会更改容器正在侦听的端口。它只是建立一个从主机到容器的映射。您的服务仍在监听端口80,这是其他集装箱(包括河豚(联系您的服务时需要使用的端口。
如果您使用的是像traefik这样的前端,则不需要ports
条目(因为您将通过traefik而不是直接通过主机端口访问服务(。