我想对我的Angular应用程序进行Docker化,但是,在容器中运行它遇到了问题。
这是我的Dockerfile:
FROM node:8.6-alpine
RUN mkdir /app
WORKDIR /app
COPY package.json ./
COPY .angular-cli.json ./
COPY tsconfig.json ./
COPY tslint.json ./
COPY src/ ./src/
RUN yarn install && yarn global add @angular/cli
EXPOSE 4200
ENTRYPOINT ["./node_modules/angular-cli/bin/ng serve --host 0.0.0.0 --port 4200"]
这是我如何运行它的命令:
$ docker run -p 4200:4200 my-notes
启动我的容器时控制台中的错误:
container_linux.go:262: starting container process caused "exec: \"./node_modules/angular-cli/bin/ng serve --host 0.0.0.0 --port 4200\": stat ./node_modules/angular-cli/bin/ng serve --host 0.0.0.0 --port 4200: no such file or directory"
docker: Error response from daemon: oci runtime error: container_linux.go:262: starting container process caused "exec: \"./node_modules/angular-cli/bin/ng serve --host 0.0.0.0 --port 4200\": stat ./node_modules/angular-cli/bin/ng serve --host 0.0.0.0 --port 4200: no such file or directory".
ERRO[0000] error waiting for container: context canceled
我试图将
ENTRYPOINT
简单地设置为ng serve
,然后容器工作,并且控制台中未记录任何错误,但是我无法通过浏览器运行该应用程序(页面不可用)
最佳答案
ENTRYPOINT
command接受参数列表。您仅放置了一个包含命令和参数的参数。
我建议您替换ENTRYPOINT
以显示如下内容-分开参数
ENTRYPOINT ["./node_modules/angular-cli/bin/ng", "serve", "--host", "0.0.0.0", "--port", "4200"]
从您发布的“没有这样的文件”错误中,我猜测docker正在尝试定位名为
"./node_modules/angular-cli/bin/ng serve --host 0.0.0.0 --port 4200"
的文件,该文件显然不存在:)当您删除其他参数时,docker能够找到该文件。
关于angular - 启动容器导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46641953/