rails-container
rails-container-app
Роль, используемая для загрузки, настройки и запуска docker-контейнера с приложением на rails. Перед запуском приложения роль выполняет миграции.
Требования
Тестировалось на Ubuntu 14.04.
Эта роль использует модуль docker от Ansible, поэтому требования таковы же.
Переменные роли
Вот список обязательных переменных с использованием значений по умолчанию:
# Docker-образ и тег репозитория
app_docker_image: 'alpine'
app_docker_image_tag: 'latest'
# Название контейнера во время его работы
app_container_name: 'rails'
# Список открытых портов для контейнера
app_ports_mapping: []
# Команда для выполнения в docker
app_command: 'bundle exec rails s'
# Словарь переменных окружения
app_environment_vars: {}
# Файлы конфигурации для развертывания на сервере и монтирования в образ
app_configuration_files: {}
Если вы загружаете образ из приватного docker-репозитория, укажите учетные данные:
# Учетные данные Docker для приватного образа
app_docker_login: 'login'
app_docker_password: 'password'
app_docker_email: 'email'
Эти переменные являются необязательными и могут быть изменены при необходимости:
# Окружение для работы rails
app_environment: production
# Папка с конфигурационными файлами на локальном компьютере
app_files_local_folder: './files'
# Принудительная загрузка образа
app_force_image_pull: true
# Политика перезапуска контейнера
app_container_restart_policy: always
# Команда миграции
app_migration_command: 'bundle exec rake db:migrate'
# Ограничение памяти контейнера
container_memory_limit: 1g
Зависимости
Нет зависимостей.
Пример Playbook
Простейший playbook может выглядеть так:
- hosts: webservers
roles:
- role: rails-container-app
app_docker_image: 'maticinsurace/rails-app'
app_docker_tag: 'latest'
app_ports_mapping: ['3000:3000']
Этот playbook загрузит образ maticinsurace/rails-app:latest,
выполнит миграции bundle exec rake db:migrate
и запустит приложение на rails bundle exec rails s
.
Если вы хотите указать дополнительные переменные окружения:
- hosts: webservers
roles:
- role: rails-container-app
app_command: 'bundle exec sidekiq'
app_environment_vars:
REDIS_URL: redis://redis.host:6379
DATABASE_URL: postgress://db.host:5432
Это выполнит sidekiq и добавит переменные для redis/postgress.
Если вы хотите развернуть пользовательские файлы в приложении:
- hosts: webservers
roles:
- role: rails-container-app
app_files_local_folder: './files/webserver'
app_configuration_files:
settings.yaml: /app/config/settings.local.yaml
apns_cert.pem: certs/apns.pem
Это прочитает файл с локального компьютера, используя ключ как путь после app_files_local_folder
,
и смонтирует их в docker-образ, используя значение как путь. Например, ./files/webserver/settings.yaml
будет смонтирован как /app/config/settings.local.yaml:ro
.
Лицензия
MIT
Информация о авторе
Matic – это коммуникационная платформа, которая связывает кредиторов и заемщиков, оформляющих новый ипотечный кредит. Заемщик теперь знает, на каком этапе находится его заявка и что нужно сделать, чтобы завершить кредит.
Download, configure and run rails app container
ansible-galaxy install matic-insurance/ansible-rails-container