我有一个带有setup脚本的nginx代理设置,如下所示
docker run --detach --name nginx-proxy --publish 80:80 --publish 443:443 --volume /etc/nginx/certs \
--volume /etc/nginx/vhost.d --volume /usr/share/nginx/html --volume /var/run/docker.sock:/tmp/docker.sock:ro --restart unless-stopped jwilder/nginx-proxy:alpine
echo proxy up
docker run --detach --name nginx-proxy-letsencrypt --volumes-from nginx-proxy --volume /var/run/docker.sock:/var/run/docker.sock:ro \
--restart unless-stopped jrcs/letsencrypt-nginx-proxy-companion
echo ssl companion up
docker run -d \
-e VIRTUAL_HOST=[domain] \
\-e "LETSENCRYPT_HOST=[domain]" \
-e "LETSENCRYPT_EMAIL=[emailaddress]" \
--name [domain] \
--expose 80 \
--restart always \
-v /code/[domain]:/var/www/html \
fauria/lamp
echo test site up at [domain]而且这个网站运行正常,功能也达到了预期。然后,我停止web服务器容器并使用以下docker-compose.yaml,它失败并显示502..
version: '3.3'
services:
lamp:
restart: always
image: fauria/lamp
container_name: [domain]
expose:
- "80"
volumes:
- /code/[domain]:/var/www/html
environment:
- VIRTUAL_HOST=[domain]
- LETSENCRYPT_HOST=[domain]
- LETSENCRYPT_EMAIL=[emailaddress]为什么?它们不是一样的吗?我遗漏了什么?
发布于 2019-03-08 00:15:33
问题是我没有将我的docker-compose连接到代理镜像中默认使用的网桥网络。
version: '3.3'
services:
lamp:
restart: always
image: fauria/lamp
network-mode: bridge
container_name: [domain]
expose:
- "80"
volumes:
- /code/[domain]:/var/www/html
environment:
- VIRTUAL_HOST=[domain]
- LETSENCRYPT_HOST=[domain]
- LETSENCRYPT_EMAIL=[emailaddress]发布于 2019-03-08 00:05:58
当您使用docker-compose时,docker-compose会为您创建一个docker网络,其中所有的服务都可以相互通信。由于您只是简单地停止容器并使用docker-compose启动它,所以现在它不能访问本地主机上的容器。这就是您得到502错误的原因。您需要做的是将其他容器添加到docker组合文件中,并确保使用正确的服务名称(而不是本地主机使用http://service_name:443)连接到主机。或者,您可以通过某种方式将docker网络中的容器访问您的localhost,但我不确定如何做到这一点。也许你需要使用0.0.0.0而不是127.0.0.1?
https://stackoverflow.com/questions/55047593
复制相似问题