Ваш вопрос имеет несколько аспектов:
- docker - использование и работа в сети
- использование docker compose
- rails - конфигурация базы данных
- использование redisв окружении рельсов
Если вам все еще не нравится все это, я рекомендую вам попытаться устранить некоторые из шумов, и сначала убедитесь, что вы атакуете каждую тему отдельно и задаете вопросыкоторые в большей степени изолированы от данного аспекта - нам будет легче помочь.
Тем не менее, чтобы ответить на часть вашего вопроса с докером (-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.
Как только вы сможете запустить приложение rails локально (без докера), это должен быть прямой переход на Docker-Land.
Redis
Redis имеет много применений в Rails.Предполагая, что вы просто хотите использовать redis в качестве хранилища значений ключей, это довольно просто.
A.Добавьте драгоценный камень redis
в свой Gemfile.
B.Создайте инициализатор, например, в 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"
- Для других целей вы можете рассмотреть redis-rails gem
- Для получения дополнительной информации об использовании драгоценного камня
redis
см. readme