我正在在Windows 10上托管的ubuntu容器内部署一个角度应用程序。这是我的dockerfile:
FROM ubuntu:latest
COPY app /app
RUN apt-get update
RUN apt-get install -y curl software-properties-common python-pip
RUN curl -sL https://deb.nodesource.com/setup_8.x | bash -
RUN apt-get install -y nodejs
RUN npm install -g @angular/cli
RUN pip install -r /app/requirements.txt
WORKDIR /app/ng
RUN npm install
RUN npm rebuild node-sass
EXPOSE 4200
WORKDIR /
RUN touch start.sh
RUN echo "python /app/server.py &" >> start.sh
RUN echo "cd /app/ng" >> start.sh
RUN echo "ng serve" >> start.sh
RUN chmod +x start.sh
ENTRYPOINT ["/bin/bash"]
CMD ["start.sh"]
我使用
运行图像docker run -p 4200:4200 --name=test app
现在,问题是,我正在Windows 10上运行此容器,从Docker的网络角度来看,我对它并不十分熟悉。如果我要运行Linux,则可以通过访问http://localhost:4200
通过任何浏览器轻松访问该应用程序,但是Windows 10似乎不是这样。当我尝试通过Chrome访问我的应用程序时,我得到
This site can’t be reached
localhost refused to connect.
ERR_CONNECTION_REFUSED
我尝试搜索并在docker论坛上找到similar issue。采纳建议后,我尝试通过我的IPv4地址访问容器,但失败了。我也尝试使用docker NAT IP 10.0.75.1
,但没有结果。我通过docker inspect test
掌握了容器IP,并使用了容器IP 172.17.0.2
,但是那也不起作用。
主机卷曲的输出:
E:\app>curl localhost:4200
curl: (7) Failed to connect to localhost port 4200: Connection refused
E:\app>curl 0.0.0.0:4200
curl: (7) Failed to connect to 0.0.0.0 port 4200: Address not available
如果我在容器内卷曲,它会按预期工作
root@97cd2c1e6784:/# curl localhost:4200
<!doctype html>
<html lang="en">
<body>
<p>Test app</p>
</body>
</html>
如何从Windows主机浏览器访问我的角度应用程序?如果您想了解更多信息,请在评论中提出要求。
答案 0 :(得分:1)
搜索更多后,我得到了答案here。我只需要使用ng serve --host 0.0.0.0
而不是ng serve
来启动角度服务器,这样应用程序就可以在所有网络接口上运行,而不仅仅是在循环接口上运行。
答案 1 :(得分:0)