【发布时间】:2021-06-22 14:03:01
【问题描述】:
我有一个 docker swarm 集群,将我的 rails 应用和 sidekiq 作为单独的容器托管。
API 应用程序将传入的上传文件写入 public 文件夹,并将路径发送给 sidekiq worker 以上传到 s3。我为此使用了 docker 卷映射。
由于这种依赖关系,我需要在运行我的 API 应用程序的所有节点中运行一个 sidekiq 容器。
当 swarm 在新节点部署 API 容器时,有什么方法可以告诉 swarm 部署 sidekiq 容器?
或者,是否有任何解决方法可以解决我的问题而无需首先依赖卷映射?
我的 docker-stack.yml
version: "3.9"
services:
app:
image: rails_app
command: bundle exec rails s -e production
ports:
- 8000:8000
volumes:
- app-assets:/app/public/assets
networks:
- my-network
deploy:
replicas: 6
placement:
constraints:
- "node.role==worker"
update_config:
parallelism: 2
delay: 10s
restart_policy:
condition: on-failure
delay: 5s
worker:
image: rails_app
command: bundle exec sidekiq -c 2 -e production
networks:
- my-network
volumes:
- app-assets:/app/public/assets
deploy:
replicas: 6
placement:
constraints:
- "node.role==worker"
restart_policy:
condition: on-failure
delay: 5s
networks:
my-network:
volumes:
app-assets:
【问题讨论】:
标签: ruby-on-rails docker docker-swarm sidekiq