我是RoR的新手,我希望将Redis和Postgres的Rails应用程序停靠在3个不同的容器中。
我现在有一个在容器内运行的简单rails项目
我该如何配置……
您的问题有多个方面:
如果你还不熟悉所有这些,我建议你尝试消除一些噪音,首先要确保你分别攻击每个主题,并提出一些更加孤立的问题 - 它将使它成为一个问题我们更容易帮助。
然而,要回答问题的docker(-compose)部分,您缺少配置中的一些元素。这个例子应该让你走上正确的轨道我希望:
# docker-compose.yml version: '3' volumes: pgdata: services: db: image: postgres volumes: - pgdata:/pgdata environment: - POSTGRES_PASSWORD=mypass - POSTGRES_USER=rails - PGDATA=/pgdata redis: image: redis web: image: you/your_app build: . command: bin/rails server depends_on: [db, redis] ports: ["3000:3000"] volumes: - $PWD:/app environment: DATABASE_URL: postgresql://rails:mypass@db/your_db_name REDIS_URL: redis://redis:6379
如果你看看你的rails文件夹,在 config/database.yml 文件,你应该看到 DATABASE_URL 环境变量用于告诉Rails其Postgres数据库的位置。
config/database.yml
DATABASE_URL
一旦你能够让你的rails应用程序在本地运行(没有docker),它应该是一个直接切换到docker-land。
的 Redis的 强>
Redis在Rails中有很多用途。 假设您只是想将redis用作键值存储,这非常简单。
A.添加 redis 宝石到你的Gemfile。
redis
B.创建一个初始化程序,例如 config/initializers/redis.rb 把它放进去:
config/initializers/redis.rb
# This automatically reads the REDIS_URL from the environment $redis ||= Redis.new
C.代码中的其他任何地方,您可以像这样使用它:
$redis.ping $redis.set "some-key", "some-value" $redis.get "some-key"