gpt4 book ai didi

ruby-on-rails - AWS 上的 dockerised rails 应用程序中的 Sidekiq

转载 作者:行者123 更新时间:2023-12-02 21:14:06 24 4
gpt4 key购买 nike

我有一个包含此内容的 docker compose 文件。

version: '3'
services:
db:
image: postgres
restart: always
ports:
- "5432:5432"
environment:
POSTGRES_PASSWORD: pass
POSTGRES_USER: user
volumes:
- postgres_data:/var/lib/postgresql/data

redis:
image: "redis:alpine"
ports:
- "6379:6379"
volumes:
- 'redis:/var/lib/redis/data'

sidekiq:
build: .
links:
- db
- redis
command: bundle exec sidekiq
volumes:
- '.:/app'

web:
image: production_image
ports:
- "80:80"
links:
- db
- redis
- sidekiq
restart: always

volumes:
postgres_data:
redis:

在此运行 sidekiq,我们运行 bundle exec sidekiq在当前目录中。这适用于开发环境中的本地计算机。但是在 AWS EC2 容器上,我发送了我的 docker-compose.yml文件并运行 docker-compose up .但由于项目代码不存在,sidekiq 失败。我应该如何在 EC2 实例上运行 sidekiq 而不在那里发送我的代码并且只在撰写文件中使用我的代码的 docker 容器?

最佳答案

您需要做的两件事是删除从本地文件系统获取实际应用程序代码的 volumes: 声明,并将构建的 Docker 镜像上传到某个注册表。由于您在 AWS 上,因此 ECR 是一个现成的选择;公共(public) Docker Hub 也可以正常工作。

根据您的 Rails 应用程序的结构,对主应用程序和 Sidekiq 工作程序使用具有不同命令的相同图像可能是有意义的,并且它可能只是让它说

sidekiq:
image: production_image
command: bundle exec sidekiq

由于您无论如何都在查看 AWS,因此您还应该考虑使用托管服务进行数据存储的可能性(RDS 用于数据库,Elasticache 用于 Redis)。重要的是将这些数据存储的位置作为环境变量包含在内,以便您以后可以更改它们(也许它们会默认为 localhost 供开发人员使用,但在部署时总是有所不同)。

您还会注意到我的示例没有 links: 。 Docker 为容器提供了一个内部 DNS 服务来查找彼此,并且 Docker Compose 安排通过 YAML 文件中的服务 key 来查找容器。

最后,您应该能够在将其部署到 EC2 之前在本地测试此设置。根据需要运行 docker builddocker-compose up;调试;如果它有效,那么 docker push 图像并在亚马逊上启动它。
version: '3'
volumes: *volumes_from_the_question
services:
db: *db_from_the_question
redis: *redis_from_the_question

sidekiq:
image: 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/sidekiq:1.0
environment:
- PGHOST: db
- REDIS_HOST: redis

app:
image: 123456789012.dkr.ecr.us-east-1.amazonaws.com/myapp/app:1.0
ports:
- "80:80"
environment:
- PGHOST: db
- REDIS_HOST: redis

关于ruby-on-rails - AWS 上的 dockerised rails 应用程序中的 Sidekiq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52290678/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com