首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker run vs docker--编写这些东西中的一个与另一个不同

docker run vs docker--编写这些东西中的一个与另一个不同
EN

Stack Overflow用户
提问于 2019-03-07 23:39:20
回答 2查看 107关注 0票数 0

我有一个带有setup脚本的nginx代理设置,如下所示

代码语言:javascript
复制
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..

代码语言:javascript
复制
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]

为什么?它们不是一样的吗?我遗漏了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-03-08 00:15:33

问题是我没有将我的docker-compose连接到代理镜像中默认使用的网桥网络。

代码语言:javascript
复制
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]
票数 0
EN

Stack Overflow用户

发布于 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?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55047593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档