【问题标题】:How do I start the same docker container on two different ports using docker container?如何使用 docker 容器在两个不同的端口上启动同一个 docker 容器?
【发布时间】:2020-10-25 18:24:05
【问题描述】:

既然产品和用户使用所有相同的文件,只是在不同的端口上运行,我怎么能在两个不同的端口上运行同一个容器两次?

   version: "3.8"
    services:
     users:
        build: 
            context: './backend'
        ports: 
            - "8081:8081"
        command: node services/auth.js
    
     products:
        build:
            context: './backend'
        ports: 
            - "8080:8080"
        command: node services/products.js

     reactapp: 
        stdin_open: true   
        tty: true
        build: 
            context: './frontend/expense-calculator'
        ports: 
            - "3000:3000"
        command: npm start

      

【问题讨论】:

  • ports: 中的第二个数字需要与容器内的进程正在侦听的端口号相匹配。如果这些都是在端口 3000 上侦听的 Express 应用程序,那么您可以声明 例如 8080:3000 将主机端口 8080 映射到该容器端口。您是否遇到了特定问题或错误消息?
  • 这是你想要的吗? docker container port map with host machine's 2 different ports
  • 我有 2 个 express 服务器,一个是 products.js,另一个是 auth.js,一个是 react app。该文件运行良好,但由于产品和用户最初是同一个容器,我不想构建它两次。所以我问我是否可以用不同的命令启动它两次

标签: node.js reactjs docker docker-compose


【解决方案1】:

你可以关注这篇文章。 https://medium.com/@karthi.net/how-to-scale-services-using-docker-compose-31d7b83a6648

思路很简单,使用一个容器,将 docker 容器映射到宿主机的多个端口号。为此,您需要缩放容器并在 docker-compose.yml 中告诉我容器的端口与主机的这些端口映射,如下所示。

 users:
    build: 
        context: './backend'
    ports: 
        - "8081-8082:8081"
    command: node services/auth.js

docker-compose up 命令将是:

docker-compose -f "docker-composetest.yml" up --scale users=2 -d --build

【讨论】:

  • 不抱歉,这对我没有帮助,因为我需要能够运行 node services/auth.js 和 node services/products.js,它们是 2 个不同的文件,需要在 2 个不同的文件上运行港口
  • 所以你要运行容器或者不同的端口!唔。那你为什么不把服务名称重命名为 S1 S2 S3 并将端口号也更改为 8081, 8082 8083 呢?
  • 只需将服务复制并粘贴到您想要的多个位置!这对你有帮助吗?
猜你喜欢
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-28
  • 2018-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多