我是Docker的新手,我想对连接到sqlite数据库的Flask-Celery-RabbitMQ应用进行Docker化。
这是我的树文件:
--dockerized_app
--celery_app
--app
--__init__.py
--routes.py
--modules.py
--celery_endpoints.py
run.py
config.py
Dockerfile
requirements.txt
docker-compose.yml
my_db.db
如果我想在没有Docker的情况下运行此应用程序,我通常会这样做:
PATH=$PATH:/usr/local/sbin
rabbitmq-server
export FLASK_APP=run.py
flask run
celery -A run.celery worker --loglevel=info
Dockerfile
FROM python:3
ADD requirements.txt /app/requirements.txt
ADD ./celery_app/ /app/
WORKDIR /app/
RUN pip install -r requirements.txt
ENTRYPOINT celery -A celery_app worker --loglevel=info
docker-compose.yml
version: '3'
services:
rabbit:
hostname: rabbit
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=mypass
ports:
- "5673:5672"
worker:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/app
links:
- rabbit
depends_on:
- rabbit
requeriments.txt
Flask==1.0.2
Flask-SQLAlchemy==2.3.2
SQLAlchemy==1.2.7
celery==4.2.1
我运行docker-compose build,然后创建映像。芹菜启动很好,但是rabbitMQ没有,我得到了这个错误:
[2018-07-25 14:51:12,218: ERROR/MainProcess] consumer: Cannot connect
to amqp://guest:**@XXX.X.X.X:5672//: [Errno 111] Connection refused.
我认为问题是我没有宣布
PATH=$PATH:/usr/local/sbin
这是启动RabbitMQ所必需的,但是我不知道该怎么做。
我也不知道Flask是否进展顺利。