【问题标题】:Port conflict in docker-composedocker-compose 中的端口冲突
【发布时间】:2020-07-11 10:32:54
【问题描述】:

我正在尝试使用反向代理(仅网络工作)创建以下内容,但使用邮件服务器时,它会在 docker-compose 中出现端口冲突错误。

我想要的是网络与邮件服务共存。例如 mail.sitea.com

有什么建议吗?

version: '3.4'
services:

  nginx-proxy:
    image: jwilder/nginx-proxy
    restart: always
    ports:
      - 443:443
      - 80:80
    volumes:
      - /var/run/docker.sock:/tmp/docker.sock:ro

  site-a:
    image: nginx
    restart: always
    expose:
      - '80'
    volumes:
      - /var/www/site-a/public_html/:/usr/share/nginx/html:ro
    environment:
      - VIRTUAL_HOST=sitea.com

  site-b:
    image: nginx
    restart: always
    expose:
      - '80'
    volumes:
      - /var/www/site-b/public_html/:/usr/share/nginx/html:ro
    environment:
      - VIRTUAL_HOST=siteb.com

  poste:
    image: analogic/poste.io
    restart: always
    network_mode: "host"
    expose:
      - 25
      - 80
      - 443
      - 110
      - 143
      - 465
      - 587
      - 993
      - 995
    volumes:
      - /docker/mail:/data
    environment:
      - HTTPS=ON
      - DISABLE_CLAMAV=TRUE

输出

/docker# vim /docker/docker-compose.yml
root@adroconstruccion:/docker# docker-compose up -d
Removing docker_nginx-proxy_1
docker_site-b_1 is up-to-date
docker_site-a_1 is up-to-date
Starting 08fba2b58471_docker_nginx-proxy_1 ... error
Recreating docker_poste_1                  ...

ERROR: for 08fba2b58471_docker_nginx-proxy_1  Cannot start service nginx-proxy: driver failed programming external connectivity on endpoint 08fba2b58471_docker_nginx-proxy_1 (095659f459c1af8c729129074520b40800e528719727061bdbc4bfa25f6c37d5)Recreating docker_poste_1                  ... done

ERROR: for nginx-proxy  Cannot start service nginx-proxy: driver failed programming external connectivity on endpoint 08fba2b58471_docker_nginx-proxy_1 (095659f459c1af8c729129074520b40800e528719727061bdbc4bfa25f6c37d5): Error starting userland proxy: listen tcp 0.0.0.0:443: bind: address already in use
ERROR: Encountered errors while bringing up the project.

【问题讨论】:

  • 看起来已经有人在监听您的 localhost 端口 443,并且 nginx 容器也在尝试绑定到该端口。如果你的 localhost 上运行了一个 Web 服务器,要么关闭它,要么在 docker compose 中移动 nginx 容器以绑定到 localhost 上的 443 以外的端口。

标签: docker nginx docker-compose port reverse-proxy


【解决方案1】:

如果您使用network_mode: "host" 运行poste,它将侦听本地网络上的这些端口。所以poste服务中的443端口监听与nginx-proxy冲突

根据您使用poste continer 的内容,您可能只需注释掉这些端口(80 和 443)并使用邮件端口即可。或者您可以删除 network_mode: "host" 并通过 nginx 代理它们?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-04
    • 2016-07-25
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多