首页 > 解决方案 > 在 docker-compose 中到达烧瓶应用程序的问题

问题描述

另一个码头工人/烧瓶问题。我在从docker-compose.

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

COPY ./ /app/

WORKDIR /app

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

EXPOSE 5000

CMD ["python3", "app.py"]

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

version: '3'

services:

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

  test:
    image: alpine:3.8

现在docker-compose up我可以curl从主持人那里得到:

curl -i http://0.0.0.0:5000
...
200 - ok

但如果我跳入测试容器,我会得到 404:

docker-compose run test sh
# apk --update add curl
# curl -i http://app:5000
...
404 - not found

实际上,这两个容器应该可以互相看到app,而且当我查看日志时,我确实可以看到进来的请求test。但它们的回答是 404。

我在这里做错了什么?

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

标签: dockerflaskdocker-compose

解决方案


这是因为你的配置

app.config['SERVER_NAME'] = '0.0.0.0:5000'

你的 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')

推荐阅读