我是Docker的新手。我正在尝试让一个简单的节点应用程序在docker上运行。但是我在docker port publish方面遇到问题。
Docker version-18.03.0-ce,内部版本0520e24302
我的简单应用程序代码:
'use strict';
const express = require('express');
// Constants
const PORT = 8081;
const HOST = '0.0.0.0';
// App
const app = express();
app.get('/', (req, res) => {
res.send('Hello world\n');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
FROM node:carbon
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .
EXPOSE 8081
CMD [ "npm", "start" ]
最佳答案
在Windows上,Linux容器是在Windows主机OS上运行的虚拟机内创建的。该虚拟机被分配了IP。进行 curl 时,应使用此IP而不是localhost
。在这里,localhost
表示Windows主机,而不是我们打算在端口8080上命中的虚拟机。
要知道分配给虚拟机的IP,请运行docker-machine ls
命令。您将获得类似于以下内容的输出:
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default * virtualbox Running tcp://192.168.99.100:2376 v18.05.0-ce
URL
下的IP-在计算机上运行命令时它将是一个不同的IP。然后使用它进行 curl :curl -i 192.168.99.100:8080
https://stackoverflow.com/questions/50890981/