为什么docker运行没有启动?



我安装了nodejs并构建了一个简单的docker文件并构建它。当我想启动服务器时,它不会在docker ps中被监听,30秒后它会关闭。为什么?我看了一个视频,那里正在工作。

dockerfile:

FROM node:16.13.0-alpine
ADD . .
CMD ["node" "app.js"];

nodejs

'use strict';
const http = require('http');
const { processenv } = require('processenv');
const message = processenv('MESSAGE', 'Hello World');
const server = http.createServer((req, res) => {
res.writeHead(200, {
'content-type': 'text/html'
});
res.write(message);
res.end();
});
server.listen(3000);

命令

docker run -d -p 3000:3000 -e MESSAGE='Hallo 44' a32efcf059a9

docker ps -a

CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                            PORTS     NAMES
ac4374aea2aa   a32efcf059a9   "docker-entrypoint.s…"   12 seconds ago       Exited (127) 9 seconds ago                  elastic_lichterman
65860beb10b5   a32efcf059a9   "docker-entrypoint.s…"   About a minute ago   Exited (127) About a minute ago             gracious_fermi

当docker启动时:

CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                            PORTS     NAMES

€:如果我从docker桌面启动我的容器,我得到这个:

invalid reference format

你的Dockerfile有几个问题。您使用的CMD语法不正确。此外,对于NodeJS,您应该定义WORKDIR。您还需要安装processenv包。

它应该工作,如果你替换你的Dockerfile:

FROM node:16.13.0-alpine
WORKDIR /opt/app
RUN npm install processenv
ADD app.js /opt/app
CMD ["node", "app.js"]

你可以用下面的命令来运行它:

docker build -t nodejsapp . &&  docker run -d -p 3000:3000 -e MESSAGE='Hallo 44' nodejsapp

相关内容

  • 没有找到相关文章

最新更新