【问题标题】:Identical Docker images with different containers and ports not accessible无法访问具有不同容器和端口的相同 Docker 映像
【发布时间】:2018-04-15 06:04:51
【问题描述】:

我在我的 Windows 开发机器上运行 Docker 主机,并且有 2 个相同的映像暴露了不同的端口(3000、3001)。使用以下 docker-compose 我构建并运行容器,但端口 3001 上的容器无法通过 localhost 或我的 IP 地址使用。

Docker 文件

FROM mhart/alpine-node:8

# Create an app directory (in the Docker container)
RUN mkdir -p /testdirectory
WORKDIR /testdirectory

COPY package.json /testdirectory
RUN npm install --loglevel=warn
COPY . /testdirectory

EXPOSE 3000
CMD ["node", "index.js"]

Docker 文件

FROM mhart/alpine-node:8

# Create an app directory (in the Docker container)
RUN mkdir -p /test2directory
WORKDIR /test2directory

COPY package.json /test2directory
RUN npm install --loglevel=warn
COPY . /test2directory

EXPOSE 3001
CMD ["node", "index.js"]

Docker 编写文件

version: '3'

services:
    testdirectory:
      container_name: testdirectory
      environment:
      - DEBUG=1
      - NODE_ENV=production
      - NODE_NAME=testdirectory
      - NODE_HOST=localhost
      - NODE_PORT=3000
      - DB_HOST=mongodb://mongo:27017/testdirectory
      - DB_PORT=27017
      build:
        context: ./test-directory
      volumes:
        - .:/usr/app/
        - /usr/app/node_modules
      ports:
        - "3000:3000"
      depends_on:
        - mongodb
      command: npm start
    test2directory:
      container_name: test2directory
      environment:
      - DEBUG=1
      - NODE_ENV=production
      - NODE_NAME=test2directory
      - NODE_HOST=localhost
      - NODE_PORT=3001
      - DB_HOST=mongodb://mongo:27017/test2directory
      - DB_PORT=27017
      build:
        context: ./test2-directory
      volumes:
        - .:/usr/app/
        - /usr/app/node_modules
      ports:
        - "3001:3001"
      depends_on:
        - mongodb
      command: npm start      
    mongodb:
      image: mongo:3.4.4
      container_name: mongo
      ports:
        - 27017:27017
      volumes: 
        - /data/db:/data/db

我跑步时有什么明显的遗漏吗

docker container port test2directory

它返回

3001/tcp -> 0.0.0.0:3001

【问题讨论】:

  • 您的应用程序 (index.js) 是否侦听端口 3001?
  • 是的,第二个容器在 3001 上运行,当我在容器外本地运行它时,它在 localhost:3001 上可用。我很高兴在内部将它们都放在 3000 上,并将外部端口映射到 3001 和 3000,但我认为让它们都不同(用于本地化测试)应该很容易

标签: node.js docker docker-compose


【解决方案1】:

发现问题了!在容器中将 HOST 设置为 localhost 会导致问题并将其更改为 0.0.0.0 使其正常工作。

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2016-07-23
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    相关资源
    最近更新 更多