Я развертываю приложение ROR, используя Ansible с Docker, образ Ruby Docker, созданный и отправленный в Docker HUB, Ansible клонировал приложение из частного репозитория на целевой сервер, контейнер докера успешно создан, но не может запустить Команды Ruby, такие как Bundle install, DB Migrate, Rake Task. Эти команды необходимо запускать при развертывании в интерактивном режиме из Ansible Code.
А как запустить приложение после запуска вышеуказанной задачи с единорогом.
Это делается для автоматизации процесса развертывания с использованием Ansible, ранее использовавшего Capistrano, но теперь мы переходим из Capistrano в Ansible.
---
- hosts: Ec2-Instance
become: true
tasks:
- name: Creating Deploy path
file:
state: directory
path: "/var/www/"
- name: Copying SSH Key | Temp
copy:
src: ~/.ssh/id_rsa
dest: ~/.ssh/id_rsa
owner: deployer
group: deployer
mode: 400
- name: Cloning a web application to the application path
git:
repo: private repo
version: master
dest: /var/www/app-path/
accept_hostkey: yes
register: git
- name: Remove SSH Key
shell: "sudo rm -rf ~/.ssh/id_rsa"
- name: Run Ruby Docker Container
docker_container:
name: 'container_name'
image: 'docker-hub/ruby-2.4.1:0.1'
tty: yes
detach: true
restart: yes # not required. Use with started state to force a matching container to be stopped and restarted.
interactive: yes # not required. Keep stdin open after a container is launched, even if not attached.
state: started
volumes: /var/www/app-path:/var/www/app-path/
working_dir: /var/www/app-path/
env:
gem_path: /var/www/app-path
gemfile: /var/www/app-path
bundler:
deployment_mode: production
Я ожидаю, что Ansible Playbook развернет приложение Ruby on Rails с Docker / Nginx / Unicorn