matic-insurance.rails-container
rails-container-app
Rôle utilisé pour télécharger, configurer et exécuter un conteneur Docker avec une application Rails. Avant de lancer l'application, ce rôle exécute les migrations.
Exigences
Ubuntu 14.04 a été testé.
Ce rôle utilise le module Docker d'Ansible, donc les exigences sont les mêmes.
Variables de rôle
Voici la liste des variables obligatoires avec des valeurs par défaut :
# Image et tag du dépôt Docker
app_docker_image: 'alpine'
app_docker_image_tag: 'latest'
# Nom du conteneur lorsqu'il est en cours d'exécution
app_container_name: 'rails'
# Liste des ports exposés pour le conteneur
app_ports_mapping: []
# Commande à exécuter dans Docker
app_command: 'bundle exec rails s'
# Dictionnaire des variables d'environnement
app_environment_vars: {}
# Fichiers de configuration à déployer sur le serveur et à monter dans l'image
app_configuration_files: {}
Si vous récupérez une image d'un dépôt Docker privé, spécifiez les identifiants Docker :
# Identifiants Docker pour une image privée
app_docker_login: 'login'
app_docker_password: 'password'
app_docker_email: 'email'
Ces variables sont optionnelles et peuvent être modifiées si nécessaire :
# Environnement pour exécuter Rails
app_environment: production
# Dossier contenant tous les fichiers de configuration sur la machine locale
app_files_local_folder: './files'
# Forcer le téléchargement de l'image
app_force_image_pull: true
# Politique de redémarrage du conteneur Docker
app_container_restart_policy: always
# Commande de migration
app_migration_command: 'bundle exec rake db:migrate'
# Limite de mémoire du conteneur
container_memory_limit: 1g
Dépendances
Aucune dépendance
Exemple de Playbook
Le playbook le plus simple peut ressembler à ceci :
- hosts: webservers
roles:
- role: rails-container-app
app_docker_image: 'maticinsurace/rails-app'
app_docker_tag: 'latest'
app_ports_mapping: ['3000:3000']
Ce playbook téléchargera l'image maticinsurace/rails-app:latest,
exécutera les migrations bundle exec rake db:migrate
et démarrera l'application Rails bundle exec rails s
.
Si vous souhaitez spécifier des variables d'environnement supplémentaires :
- 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
Cela exécutera Sidekiq et ajoutera les variables Redis/Postgres.
Si vous souhaitez déployer des fichiers personnalisés sur l'application :
- 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
Cela lira des fichiers depuis la machine locale en utilisant la clé comme chemin après app_files_local_folder
et les montera dans l'image Docker en utilisant la valeur comme chemin. Par exemple, ./files/webserver/settings.yaml
sera monté comme /app/config/settings.local.yaml:ro
.
Licence
MIT
Informations sur l'auteur
Matic est une plateforme de communication qui connecte les prêteurs et les emprunteurs lors de l'origine d'un nouveau prêt immobilier. Un emprunteur sait maintenant où il en est dans le processus de prêt et ce qu'il doit faire pour finaliser le prêt.
Download, configure and run rails app container
ansible-galaxy install matic-insurance.rails-container