还有另一个docker / flask问题。
我无法从docker-compose
中的另一个容器连接我的烧瓶应用程序。
我的 dockerfile 设置了一个flask应用,例如:
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
答案 0 :(得分:2)
这是因为您的配置
app.config['SERVER_NAME'] = '0.0.0.0:5000'
您的烧瓶认为它的名字是0.0.0.0:5000
,因此没有回应其他人。
要进行验证,请通过测试致电curl -H Host:0.0.0.0:5000 -i http://app:5000
。
您可以删除此配置并使用
运行服务器app.run(host='0.0.0.0')