我正在尝试运行一个应该部署Angular 6项目的Docker映像。 Dockerfile具有以下代码:
FROM node:9.6.1
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app/
RUN npm install
RUN npm install -g @angular/cli@1.7.3 --unsafe
ENV PATH /usr/src/app/node_modules/.bin:$PATH
COPY . /usr/src/app
EXPOSE 4200 49153
CMD ["npm" , "run" , "start"]
我已经使用此Dockerfile创建了映像,并且按照Docker的文档阅读,要运行该映像,我只需使用命令sudo docker run -p 4000:80 nameOfMyImage
。由于Angular CLI在localhost:4200
中运行Angular项目,并且Dockerfile本身也公开了该端口,因此我决定运行sudo docker run -p 4200:4200 nameOfMyImage
,但是,即使在我的终端中,一切都成功部署了,每次我尝试访问Angular时我的浏览器中的项目时,出现无法访问此网站错误。
我尝试过的其他选项正在运行sudo docker run nameOfMyImage
以及sudo docker run -p 4200:80 nameOfMyImage
。我尝试在浏览器中访问的网址是localhost:4200
答案 0 :(得分:0)
几件事...
您只能运行npm start而不是npm run start,因为start是npm脚本的保留关键字。
您公开了并正在与浏览器中的正确端口联系。但是,如何确定您正确提供了静态文件?我看到您正在使用节点,您在使用Express吗?您在使用express.static()吗?
再次检查您的节点实例是否在4200上运行,而不是其他通用端口(例如3000或8080)上运行。
尝试运行:docker记录nameOfMyImage --follow并查看是否输出任何错误