Dockerize Rails проект с Postgres и Redis - PullRequest
0 голосов
/ 28 февраля 2019

Я новичок в RoR, и я хочу докеризировать приложение Rails с Redis и Postgres, работающими в 3 разных контейнерах.

Теперь у меня есть простой проект rails, работающий внутри контейнера

Как быЯ настраиваю проект RoR следующим образом:

  1. Как подключить Rails с Postgres?

  2. Как настроить Redis с Rails как простойхранение данных в памяти и доступ к нему?

Спасибо:)

docker-compose.yml

version: '3'
services: 
  rails: 
    build: .
    volumes:
      - ./:/app
    ports:
      - 3000:3000
  postgres:
    image: postgres
  redis:
    image: redis

РЕДАКТИРОВАТЬ:

Изменена база данных sqlite на postgres

1 Ответ

0 голосов
/ 28 февраля 2019

Ваш вопрос имеет несколько аспектов:

  1. docker - использование и работа в сети
  2. использование docker compose
  3. rails - конфигурация базы данных
  4. использование 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...