具有不同容器和端口的相同Docker镜像无法访问

时间:2017-11-02 16:17:25

标签: node.js docker docker-compose

我在我的Windows开发机器上运行Docker主机,并有2个识别图像,暴露不同的端口(3000,3001)。使用以下docker-compose我构建并运行容器,但端口3001上的容器不能通过localhost或我的IP地址获得。

DockerFile

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"]

DockerFile

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-Compose文件

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

1 个答案:

答案 0 :(得分:0)

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