Docker Compose:将容器端口重新映射为网络内部和主机上的端口相同

时间:2020-07-07 08:02:52

标签: docker networking docker-compose docker-networking docker-network

我有两个docker化的应用程序,它们是docker网络的一部分,并且都在8080端口上启动。我需要将它们都暴露在主机上,这就是为什么我将它们分别暴露给8080和8081。

app-1:
  ports:
    - "8080:8080"

app-2:
  ports:
    - "8081:8080"

我无法控制这些应用程序(无法更改它们的端口),它们只是端对端测试套件的一部分,需要运行它们才能执行测试。

问题::根据我在docker容器(同一docker-compose文件中的3d应用程序)或本地执行测试的方式,我必须使用不同的端口(8080或8081),因为请求可以在docker网络内或在主机上传输。这很不方便。

问题:是否有一种方法可以像在docker网络内部和外部使端口相同那样在compose文件中重新映射端口?例如,如果我可以使用docker网络内部的8081端口 来引用app-2,那就太好了。

任何提示,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

我遇到了类似的问题,并使用以下方法解决了它。这是一个NodeJS-express应用程序。

  1. 我在定义的端口上运行了一个容器,并与 容器。找到端口所在的环境文件 定义。
  2. 使用docker cp将文件复制到我的本地计算机上。
  3. 修改文件并更新端口。
  4. 停止了容器。
  5. 用更新后的内容替换容器内的环境文件 再次提交

使用docker cp

使用docker commit

将该容器作为图像提交

在更新的端口上使用新提交的映像运行容器。