Node.js Docker run仅在构建后工作
我可以用Node.js Docker run仅在构建后工作,node.js,bash,docker,Node.js,Bash,Docker,我可以用 docker build -t hopperweb:v5-full -f Dockerfile . && docker run -p 127.0.0.1:3000:8080 --rm -ti hopperweb:v5-full 但是,当我运行容器时,我得到了以下错误:standard\u init\u linux.go:211:exec用户进程导致了“exec格式错误” 当它在和&之后运行时,为什么会工作 我可以使用bash运行映像:docker run-p 127
docker build -t hopperweb:v5-full -f Dockerfile . &&
docker run -p 127.0.0.1:3000:8080 --rm -ti hopperweb:v5-full
但是,当我运行容器时,我得到了以下错误:standard\u init\u linux.go:211:exec用户进程导致了“exec格式错误”
当它在和&
之后运行时,为什么会工作
我可以使用bash运行映像:docker run-p 127.0.0.1:3000:8080--rm-ti-hopperweb:v5 full bash
,没有问题
这是我的文件
FROM ubuntu:18.04
RUN apt-get update
RUN apt-get install --yes curl
RUN apt-get install --yes sudo ## maybe not necessary, but helpful
RUN apt-get install --yes gnupg
RUN apt-get install --yes git ## not necessary, but helpful
RUN apt-get install --yes vim ## not necessary, but helpful
## INSTALL NPM
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
RUN echo 'deb https://dl.yarnpkg.com/debian/ stable main' | sudo tee /etc/apt/sources.list.d/yarn.list
RUN apt-get update
RUN apt-get install --yes yarn
RUN apt-get install --yes npm
## COPY IN APP FILES
RUN mkdir /app
COPY hopperweb/ /app/hopperweb/
RUN chmod +x /app/hopperweb/start.sh
RUN /app/hopperweb/start.sh
start.sh的内容:
#!/bin/bash
cd /app/hopperweb/
yarn start
在第一个命令中,docker run
永远不会执行,因为最后一个命令(start.sh
)在构建过程中运行,并且永远不会终止。所以您仍然在运行docker build
更改以下行
RUN /app/hopperweb/start.sh
到
不要将RUN与CMD混淆。RUN实际运行一个命令并提交结果;CMD在构建时不执行任何操作,但为映像指定预期的命令
请参阅:FYI每个“运行”块都会创建一个新的图像层。你想在可能的情况下对这些进行分组。谢谢@jordanm,果然,我记错了网站上的提示,我以为它说的是为了可读性而打破一切,但你完全正确。我确实是从CMD开始的,但我遇到了一些问题,于是改用RUN。非常感谢。
RUN /app/hopperweb/start.sh
CMD /app/hopperweb/start.sh