matic-insurance.rails-container
rails-container-app
Rol utilizado para descargar, configurar y ejecutar un contenedor docker con una aplicación Rails. Antes de ejecutar la aplicación, el rol realiza las migraciones.
Requisitos
Se ha probado en Ubuntu 14.04.
Este rol utiliza el módulo docker de Ansible, por lo que los requisitos son los mismos.
Variables del Rol
Aquí está la lista de variables requeridas con valores predeterminados:
# Imagen y etiqueta del repositorio de Docker
app_docker_image: 'alpine'
app_docker_image_tag: 'latest'
# Nombre del contenedor cuando está en ejecución
app_container_name: 'rails'
# Lista de puertos expuestos para el contenedor
app_ports_mapping: []
# Comando para ejecutar en Docker
app_command: 'bundle exec rails s'
# Diccionario de variables de entorno
app_environment_vars: {}
# Archivos de configuración para implementar en el servidor y montar en la imagen
app_configuration_files: {}
Si estás extrayendo la imagen de un repositorio privado de Docker, especifica las credenciales de Docker:
# Credenciales de Docker para imagen privada
app_docker_login: 'login'
app_docker_password: 'password'
app_docker_email: 'email'
Estas variables son opcionales y se pueden cambiar si es necesario:
# Entorno para ejecutar Rails
app_environment: production
# Carpeta con todos los archivos de configuración en la máquina local
app_files_local_folder: './files'
# Forzar extracción de imagen
app_force_image_pull: true
# Política de reinicio del contenedor Docker
app_container_restart_policy: always
# Comando de migración
app_migration_command: 'bundle exec rake db:migrate'
# Límite de memoria del contenedor
container_memory_limit: 1g
Dependencias
Sin dependencias
Ejemplo de Playbook
El playbook más simple puede ser el siguiente:
- hosts: webservers
roles:
- role: rails-container-app
app_docker_image: 'maticinsurace/rails-app'
app_docker_tag: 'latest'
app_ports_mapping: ['3000:3000']
Este playbook extraerá la imagen maticinsurace/rails-app:latest,
ejecutará migraciones bundle exec rake db:migrate
y comenzará la aplicación Rails bundle exec rails s
.
Si quieres especificar variables de entorno adicionales:
- 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
Esto ejecutará sidekiq y añadirá las variables de redis/postgress.
Si deseas que archivos personalizados se implementen en la aplicación:
- 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
Esto leerá el archivo de la máquina local usando la clave como ruta después de app_files_local_folder
y los montará en la imagen de Docker usando el valor como ruta. Por ejemplo, ./files/webserver/settings.yaml
se montará como /app/config/settings.local.yaml:ro
.
Licencia
MIT
Información del Autor
Matic es una plataforma de comunicación que conecta a prestamistas y prestatarios para la obtención de un nuevo préstamo hipotecario. Ahora, un prestatario sabe en qué parte del proceso de préstamo se encuentra y qué necesita hacer para completar el préstamo.
Download, configure and run rails app container
ansible-galaxy install matic-insurance.rails-container