python - 码头工人 | 烧瓶+Redis | 烧瓶没有启动
问题描述
我正在尝试将一个简单的 python 应用程序容器化,该应用程序存储访问站点的时间量。Redis 似乎可以工作,但 Flask 拒绝吃午饭。我在运行docker-compose up --build时收到此错误:
web-fe_1 以代码 0 退出
下面是我的 Dockerfile、docker-compose.yml 和 app.py
FROM python:3.6-alpine
ENV FLASK_APP app.py
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD [ "flask","run","--host=0.0.0.0","--port=5000"]
version: "3.5"
services:
web-fe:
build: .
command: python app.py
ports:
- target: 5000
published: 5000
networks:
- counter-net
volumes:
- type: volume
source: counter-vol
target: /code
redis:
image: "redis:alpine"
networks:
counter-net:
networks:
counter-net:
volumes:
counter-vol:
import os
from flask import Flask
from flask_redis import FlaskRedis
app = Flask(__name__)
app.config['REDIS_URL'] = 'redis://redis:6379/0'
redis = FlaskRedis(app)
@app.route('/')
def counter():
return '{0} {1} {2}'.format('Hello! You have visited me:',str(redis.incr('web2_counter')),' times.')
这与 Poulton 在https://github.com/nigelpoulton/counter-app上的反应用程序几乎相同。唯一不同的是我的 app.py 没有调用功能(if__name__== “<strong>main ”</strong > ).. 问题是我想在不修改app.py的情况下完成这项工作,并且只能通过Dockerfile / docker -compose解决这个问题
解决方案
关于您的docker-compose.yml
定义网络不是必需的,因为bridge
网络已经是默认设置。您可以将您的更新docker-compose.yml
为:
version: "3.5"
services:
web-fe:
build: .
command: python app.py
ports:
- target: 5000
published: 5000
volumes:
- type: volume
source: counter-vol
target: /code
redis:
image: "redis:alpine"
volumes:
counter-vol:
我猜想换app.config['REDIS_URL'] = 'redis://redis:6379/0'
线app.config['REDIS_URL'] = 'http://redis:6379'
推荐阅读
- c - 函数'getline'的隐式声明甚至认为它是
- python - 什么是更快,scipy fsolve vs root?
- android - NFC 标签 - 控制标签扫描时间的方法
- ember.js - 使 AuthenticatedRouteMixin 内的嵌套路由可访问
- c# - 如何从数据库中一一选择一列的数据并显示到标签
- c# - 使用 Dapper 在 Linq 中多对多
- macos - QT5.9.1 应用内购买与 macOS 上的 Apple App Store
- vba - 在 VBA 中计算 NPV 的更有效方法
- c++ - 缺少类型说明符 - 声明静态成员后假定为 int 错误
- django - 来自 url 的函数或类