首页 > 解决方案 > 如何让 docker 和 apache 只使用一个端口?

问题描述

我有 apache 使用端口 80,并且由于防火墙,服务器只能从端口 80 从外部访问。如果我运行如下命令,端口 80 将发生冲突。谁能告诉我如何在同一个端口支持两个应用程序(两个域映射到同一个 IP,因此它们可能被域分隔姓名)?谢谢。

docker run -d -p 80:8787 quay.io/hemberg-group/scrna-seq-course-rstudio

标签: apachedocker

解决方案


运行 docker -p 80:8787将尝试监听物理机。并且默认情况下也Apache80

您不能运行多个程序员来收听相同的PORT内容,但如果您只想将一张80向公众开放的地图映射到后端服务器,您可以使用 aNginx作为您的委托服务器。然后您可以运行多个服务器。

这是您的简单配置Nginx

server { # php/fastcgi
    listen       80;
    server_name  domain1.com www.domain1.com;
    access_log   logs/domain1.access.log  main;
    root         html;

    location ~ \ {
      server   127.0.0.1:8787;
      server   127.0.0.1:8788;
      server   127.0.0.1:8780;
    }
} 

您的容器可以按以下方式运行:

docker run -d -p 8787:8787 quay.io/hemberg-group/scrna-seq-course-rstudio
docker run -d -p 8788:8787 quay.io/hemberg-group/scrna-seq-course-rstudio

您的Apache服务器可以配置另一个PORT,例如8780


推荐阅读