在docker-compose中到达flask应用程序的问题

mRc*_*ing 3 flask docker docker-compose

另一个码头工人/烧瓶问题。我在从另一个容器连接到我的 Flask 应用程序时遇到问题docker-compose

我的dockerfile设置了一个烧瓶应用程序,如:

COPY ./ /app/

WORKDIR /app

RUN find -name "*.pyc" -delete && \
    pip3 install -r requirements.txt

EXPOSE 5000

CMD ["python3", "app.py"]
Run Code Online (Sandbox Code Playgroud)

该应用程序在 上运行0.0.0.0:5000docker-compose.yml如下所示:

version: '3'

services:

  app:
    build: .
    ports:
      - "5000:5000"

  test:
    image: alpine:3.8
Run Code Online (Sandbox Code Playgroud)

现在docker-compose up我可以curl从主机上像:

curl -i http://0.0.0.0:5000
...
200 - ok
Run Code Online (Sandbox Code Playgroud)

但是如果我跳进测试容器,我会得到一个 404:

docker-compose run test sh
# apk --update add curl
# curl -i http://app:5000
...
404 - not found
Run Code Online (Sandbox Code Playgroud)

实际上这两个容器应该可以看到对方,事实上,当我查看日志时,app我可以看到test进来的请求。但是他们得到了 404 的答复。

我在这里做错了什么?

顺便说一句,我这里有一个最小的例子:https : //github.com/mRcSchwering/flask_docker-compose

Siy*_*iyu 5

这是因为你的配置

app.config['SERVER_NAME'] = '0.0.0.0:5000'
Run Code Online (Sandbox Code Playgroud)

您的 Flask 认为它的名字是0.0.0.0:5000,因此不会响应其他人。

要验证,请curl -H Host:0.0.0.0:5000 -i http://app:5000从测试中调用。

您可以删除此配置并运行服务器

app.run(host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)