angular - 可以从docker容器exec命令中访问URL,但是Angular应用获取ERR_CONNECTION_TIMED_OUT

标签 angular docker flask

在Docker容器中都无法通过Angular应用程序访问Python / Flask后端。这是在Ubuntu EC2实例上完成的。当我使用exec命令进入Angular容器时,我可以使用docker内部主机URL成功访问该URL:

curl http://172.17.0.1:5000/employees/getAll 
URL调用Flask服务以获取数据。但是,当通过同一容器上的Angular应用程序执行相同的调用时,我收到未知错误:
core.js:5828 ERROR 
HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: "http://172.17.0.1:5000/employees/getAll", ok: false, …}
error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message: "Http failure response for http://172.17.0.1:5000/employees/getAll: 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: "http://172.17.0.1:5000/employees/getAll"
__proto__: HttpResponseBase
Docker-撰写:
version: '3'
services:      
    angular:
        build: 
            context: ./angular-cluster/
        # volumes:
        #         - ./angular-cluster/:/app
        ports:
            - 80:4200

    cluster-db:
        build:
            context: ./cluster-db/
        network_mode: "host"
        ports:
            - 5000:5000
        volumes:
            - ./cluster-db/:/app
        environment:
            FLASK_APP: app.py
            FLASK_ENV: development
Angular Dockerfile
# base image
FROM node:latest

ADD . /app
WORKDIR /app

# add app
COPY . /app

ENV PATH ./node_modules/.bin:$PATH

RUN npm install
RUN npm install -g @angular/cli@7.3.9


EXPOSE 4200

# start app
CMD ng serve --host 0.0.0.0 --disable-host-check
Python / Flask Dockerfile
FROM python:3.7

ADD . /app
WORKDIR /app

ENV PATH=$PATH:/app
ENV PYTHONPATH /app

#COPY . .

RUN pip install -r requirements.txt

EXPOSE 5000

CMD ["flask", "run", "--host=0.0.0.0"]

最佳答案

Angular应用程序会运行到浏览器中。因此,您在容器外面。您必须从Angular应用向容器运行所在的IP发出请求。例如,如果您在PC上运行docker,则请求必须是http:// localhost:5000 / employees / getAll。
希望这可以帮到你。

关于angular - 可以从docker容器exec命令中访问URL,但是Angular应用获取ERR_CONNECTION_TIMED_OUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63663063/

相关文章:

angular - 使用 NgFor 的 react 形式

css - Angular CDK Connected Overlay,如何不覆盖覆盖背景的原点?

java - 是否可以将 docker 与 jrebel 或 dcevm 一起使用

python - Flask session UnpickleError

angular - (change) $event 不起作用,可能是语法问题

angular - Angular 5 中的并行请求

java - Spring Cloud Dataflow Kubernetes 从 dockerfile 获取 jar 的属性

docker - 无法在Windows 10上减小Docker最大磁盘镜像大小

python - 如何从 Flask python 中的 URL 中删除参数

python - 从 Flask 服务器生成 HTML 代码