使用docker run无法访问网站

时间:2018-09-21 01:07:32

标签: angular docker localhost dockerfile

我正在尝试运行一个应该部署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

1 个答案:

答案 0 :(得分:0)

几件事...

  1. 您只能运行npm start而不是npm run start,因为start是npm脚本的保留关键字。

  2. 您公开了并正在与浏览器中的正确端口联系。但是,如何确定您正确提供了静态文件?我看到您正在使用节点,您在使用Express吗?您在使用express.static()吗?

  3. 再次检查您的节点实例是否在4200上运行,而不是其他通用端口(例如3000或8080)上运行。

  4. 尝试运行:docker记录nameOfMyImage --follow并查看是否输出任何错误