我想将我的Angular应用程序停靠,但是,我在容器中运行它时遇到问题。
这是我的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
然后容器正常工作且控制台中没有记录错误,但我无法从浏览器运行该应用程序(页面不可用)< / p>
答案 0 :(得分:1)
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能够找到文件。