我有一个 docker-compose,它创建一个带有 http 服务器的容器,该容器不会被 jwilder 的 nginx 反向代理接收,但它在手动实例化时可以工作。
version: '2'
services:
mongo:
image: tutum/mongodb
expose:
- "27017"
environment:
- AUTH=no
backend:
build:
context: "./instance"
hostname: instance
ports:
- "1080:8080"
expose:
- "8080"
links:
- mongo
frontend:
build:
context: "./instancegui"
ports:
- "80"
environment:
- VIRTUAL_HOST=some.host.com
- LETSENCRYPT_HOST=some.host.com
- [email protected]
反向代理生成的配置文件显示上游{...DOWN},
但容器在像这样实例化时运行良好
docker run --name group_frontend_1 -p 80 -e "VIRTUAL_HOST=some.host.com" -e "LETSENCRYPT_HOST=some.host.com" -e "[email protected]" -d db70e6003db9
答案1
好的,找到解决方案了
问题是容器不在代理容器监视的网络中,最直接的方法是将容器设置为桥接模式
network_mode: "bridge"
并且 80 端口是多余的,它只需要公开
expose:
- "80"
来源:
https://github.com/jwilder/nginx-proxy/issues/552
https://github.com/docker/compose/issues/3012
答案2
为什么不使用一个简单的 nginx 镜像这。Docker 已经为您做好了 DNS。