【问题标题】:Problem reaching flask app in docker-compose在 docker-compose 中到达烧瓶应用程序的问题
【发布时间】:2018-12-20 16:25:37
【问题描述】:

又一个 docker/flask 问题。 我在从 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:5000 上运行,docker-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

实际上这 2 个容器应该看到彼此,事实上,当我查看 app 的日志时,我可以看到来自 test 的请求正在进来。 但他们的回答是 404。

我在这里做错了什么?

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

【问题讨论】:

    标签: docker flask docker-compose


    【解决方案1】:

    这是因为你的配置

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

    【讨论】:

    • 就是这样。谢谢。我一直认为设置 server_name 与设置主机和端口(参数)相同
    • 另外,请确保docker-compose up <service> 而不是docker-compose run <service>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 1970-01-01
    相关资源
    最近更新 更多