【发布时间】: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