我试图在docker容器中运行nuxt应用程序。为此,我创建了以下Dockerfile:
FROM node:6.10.2
RUN mkdir -p /app
EXPOSE 3000
COPY . /app
WORKDIR /app
RUN npm install
RUN npm run build
CMD [ "npm", "start" ]
然而,当我构建图像并运行容器(docker run -p 3000:3000 <image-id>
)时,我在浏览器中点击localhost:3000
时什么也得不到。可能是什么原因?
答案 0 :(得分:6)
默认情况下,Docker容器中的应用程序正在接受http://127.0.0.1:3000
上的网络流量。此接口不接受外部流量,因此难怪它不起作用。为了使其工作,我们需要将nuxt app的HOST环境变量设置为0.0.0.0
(所有IP地址)。我们可以在Dockerfile中执行此操作,如下所示:
FROM node:6.10.2
ENV HOST 0.0.0.0
# rest of the file
或在脚本的“start”命令中的package.json中:
"scripts": { "start": "HOST=0.0.0.0 nuxt start" ...}
或者使nuxt应用程序只在容器内的localhost上侦听的任何其他方式。