docker - 在 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: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
实际上,这两个容器应该可以互相看到app
,而且当我查看日志时,我确实可以看到进来的请求test
。但它们的回答是 404。
我在这里做错了什么?
顺便说一句,我在这里有一个最小的例子:https ://github.com/mRcSchwering/flask_docker-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')
推荐阅读
- labview - Labview:将控件保存在一定大小下
- typescript - 我们如何从 apollo-server 模块传递 ApolloServer 中的数据源和合并的 graphql 模式和解析器?
- symfony - 从 Symfony 3.4 中的参数读取 getParameter null
- ios - Game Center 未经身份验证,在 iOS 12 中请求身份验证
- r - R闪亮:在完成所有observeEvent代码之前更新tabsetpanel
- c++ - 动态数组模板类:ostream& 运算符友元函数的问题
- xaml - 使用 Visual Studio 2017 Xamarin 创建嵌入式 ListView
- excel - 将数据复制到新工作表,不包括最后 4 行
- sql - 为什么这个新的可为空的时间戳字段包含我添加到具有预先存在记录的表之后的值?
- python - 使用 pandas str.replace 执行全字子字符串替换