在docker-compose.yml中为服务创建单位文件

omjgkv6w  于 2021-06-10  发布在  Redis
关注(0)|答案(1)|浏览(374)

下面是我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文件中的代码

[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

不确定在何处包含此命令:cellery worker-b-l info-a whs.blueprints.contact.tasks,volumes:在单位文件中
上面的单位文件运行良好,但celery 没有连接到redis,因为它无法更新默认的broker\u url环境变量。下面是它试图连接的地方

os8fio9y

os8fio9y1#

---- celery@2435cb584127 v4.0.2(latentcall)

----****-----                                                                                    
---***** -- 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单元文件。
如果有人能帮忙的话,那将是一个很大的帮助。谢谢。。

相关问题