Say*_*yay 1 node.js docker dockerfile
我正在使用 Docker for Windows(Windows 10 是 2004 年的,所以我有 WSL2),并且我正在尝试容器化 Nuxt 应用程序。该应用程序在我的本地系统上运行良好,在创建 Dockerfile 并构建它之后,我无法将其转发到我的主机系统上。然而,当尝试使用来自https://github.com/BretFisher/docker-mastery-for-nodejs/tree/master/ultimate-node-dockerfile的示例应用程序时(test应该使用该文件夹中的 Dockerfile ),我可以访问相同的。
如果我exec进入正在运行的容器,我能够获得运行时的输出curl http://localhost:3000,所以一切都应该很好。
我的 Dockerfile 看起来像
\nFROM node:12.18.3-buster-slim\nLABEL org.opencontainers.image.authors=sayak@redacted.com\nEXPOSE 3000\nWORKDIR /app\nRUN chown -R node:node /app\nCOPY --chown=node:node package*.json ./\nENV NODE_ENV=development\nRUN apt-get update -qq && apt-get install -qy \\\n ca-certificates \\\n bzip2 \\\n curl \\\n libfontconfig \\\n --no-install-recommends\nUSER node\nRUN npm config list\nRUN npm ci \\\n && npm cache clean --force\nENV PATH=/app/node_modules/.bin:$PATH\nCOPY --chown=node:node . .\nRUN nuxt build\nENV NODE_ENV=production\nCMD ["node", "server/index.js"]\nRun Code Online (Sandbox Code Playgroud)\n我什至尝试删除所有chowns 并删除USER node以运行它,root但无济于事。
这是输出到docker ps -a
d727c8dd4d5c my-container:1.2.3 "docker-entrypoint.s\xe2\x80\xa6" 23 minutes ago Up 23 minutes 0.0.0.0:3000->3000/tcp inspiring_dhawan\nc3a5aac8b79f sample-node-app "/tini -- node serve\xe2\x80\xa6" 23 minutes ago Up 23 minutes (unhealthy) 0.0.0.0:8080->8080/tcp tender_ardinghelli\nRun Code Online (Sandbox Code Playgroud)\nsample-node-app上面的 GitHub 链接有效,而我的无效my-container。我究竟做错了什么?
编辑:我尝试在 Ubuntu VM 中构建和运行容器,但得到了相同的结果,因此这不是 WSL 或 Windows 的问题,而是我的 Dockerfile 出了问题。
\n小智 9
默认情况下,Nuxt 开发服务器主机是'localhost',但只能从主机内部访问。因此,要告诉 Nuxt 解析可通过主机外部的连接访问的主机地址,例如Ubuntu Windows Subsystem for Linux 2 (WSL2),您必须使用主机'0.0.0.0'
您可以通过将以下代码添加到nuxt.config.js文件中来解决此问题:
export default {
server: {
port: 3000, // default : 3000
host: '0.0.0.0' // do not put localhost (only accessible from the host machine)
},
...
}
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅有关主机端口的 Nuxt 常见问题解答。
| 归档时间: |
|
| 查看次数: |
1949 次 |
| 最近记录: |