docker-compose中的端口冲突

时间:2020-03-30 23:11:28

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

我正在尝试使用反向代理(仅适用于网络)创建以下内容,但是对于邮件服务器,它在docker-compose中给出了端口冲突错误。

我想要的是Web与邮件服务共存。例如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.

1 个答案:

答案 0 :(得分:0)

如果使用poste运行network_mode: "host",它将在本地网络上的那些端口上侦听。因此,poste服务中的端口443侦听器与nginx-proxy

冲突

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