下面是我的docker-compose.yml文件中的代码
version: '2'
services:
postgres:
image: 'postgres:9.5'
env_file:
- '.env'
volumes:
- 'postgres:/var/lib/postgresql/data'
ports:
- '5432:5432'
redis:
image: 'redis:3.0-alpine'
command: redis-server --requirepass XXXXXXXXXXXXX
volumes:
- 'redis:/var/lib/redis/data'
ports:
- '6379:6379'
website:
build: .
command: >
gunicorn -c "python:config.gunicorn" --reload "whs.app:create_app()"
env_file:
- '.env'
volumes:
- '.:/whs'
ports:
- '8000:8000'
celery:
build:
command: celery worker -B -l info -A whs.blueprints.contact.tasks
env_file:
- '.env'
volumes:
- '.:/whs'
volumes:
postgres:
redis:
celery.service单位文件中的代码
[Unit]
Description=Run %p
Requires=docker.service redis.service
After=docker.service redis.service
[Service]
Restart=always
ExecStartPre=-/usr/bin/docker kill %p
ExecStartPre=-/usr/bin/docker rm -f %p
ExecStart=/usr/bin/docker run --rm --name %p \
--network whs \
-v /var/lib/%p/data:/data %p:4.0.2
ExecStop=/usr/bin/docker stop %p
[Install]
WantedBy=multi-user.target
不确定此命令是否在哪里包括:celery worker -B -l info -A whs.blueprints.contact.tasks ,音量:文件
以上单位文件运行正常,但celery未连接到Redis,因为它无法更新默认的BROKER_URL ENVIRONMENT变量。下面是它尝试连接的地方
-------------- celery @ 2435cb584127 v4.0.2(潜在呼叫)
---- **** ----- --- * *** * -- Linux-4.19.0-9-amd64-x86_64-with-debian-8.8 2020-07-17 19:21:16 -- * - **** --- - ** ---------- [config] - ** ---------- .> app: default:0x7f06bd860ba8 (.default.Loader) - ** ---------- .> transport: amqp://guest:**@rabbit:5672// - ** ---------- .> results: disabled:// - *** --- * --- .> concurrency: 1 (prefork) -- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker) --- ***** ----- -------------- [queues] .> celery exchange=celery(direct) key=celery
在我的app.py中的以下代码应更新celery配置
celery = Celery(app.import_name, broker=app.config['CELERY_BROKER_URL'],
include=CELERY_TASK_LIST)
celery.conf.update(app.config)
使用 docker-compose up 在我的本地系统上运行时,该应用程序运行正常。唯一的区别是远程服务器正在使用systemd单位文件来提供这些服务。
如果有的话,这将是非常有用的帮助。谢谢。