【发布时间】:2019-06-06 19:53:20
【问题描述】:
我有一个简单的 Node.js/Express 应用程序:
const port = 3000
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
当我启动它时它工作正常:node src/app.js
现在我正在尝试在 Docker 容器中运行它。 Dockerfile 是:
FROM node:8
WORKDIR /app
ADD src/. /app/src
ADD package.json package-lock.json /app/
RUN npm install
COPY . /app
EXPOSE 3000
CMD [ "node", "src/app.js" ]
一切正常:docker run <my image>:
Listening on port 3000
但现在我无法在浏览器中访问它: http://localhost:3000
This site can’t be reached localhost refused to connect.
如果我尝试在 docker-compose 中运行它,也会发生同样的情况:
version: '3.4'
services:
service1:
image: xxxxxx
ports:
- 8080:8080
volumes:
- xxxxxxxx
myapp:
build:
context: .
dockerfile: Dockerfile
networks:
- private
ports:
- 3000
command:
node src/app.js
不确定我是否正确处理了两个 docker 文件中的端口
【问题讨论】:
-
如果发布端口没有像提到的其他答案那样有帮助,并且如果您使用的是 MacOS,请尝试:app.listen(port, '0.0.0.0', () => console.log(`Example app而是在端口 ${port}!`)) 上监听。
标签: node.js docker docker-compose