From b961418627e49d720df294107d2cdc5d16b80203 Mon Sep 17 00:00:00 2001 From: Jacob Cody Wimer Date: Tue, 16 Feb 2016 10:21:02 -0500 Subject: [PATCH] Trying to handle containers in a smarter way --- playbooks/code-deploy.yml | 28 +++++++++++++++++++++------- roles/rails/tasks/web.yml | 12 +++++++++++- roles/rails/tasks/worker.yml | 12 +++++++++++- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/playbooks/code-deploy.yml b/playbooks/code-deploy.yml index de5010e..93c70cb 100644 --- a/playbooks/code-deploy.yml +++ b/playbooks/code-deploy.yml @@ -16,11 +16,18 @@ - name: Create apache docker image command: chdir=/root/wrestlingApp docker build -t wrestlingdev-web -f rails-prod-Dockerfile . - - name: Kill running docker container - shell: docker stop $(docker ps -a -q) + - name: Is wrestlingdev running + command: docker ps | grep wrestlingdev + register: wrestlingdev_running + ignore_errors: yes + + - name: Kill and remove container + command: docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) + when: wrestlingdev_running != "" - name: Start docker container - command: docker run -h {{ansible_hostname}} -d --restart=always --env-file /root/prod.env -v /srv/docker/apache2/logs:/var/log/apache2 -v /etc/localtime:/etc/localtime -p 80:80 -p 443:443 wrestlingdev-web + command: docker run -h {{ansible_hostname}} --name wrestlingdev-web -d --restart=always --env-file /root/prod.env -v /srv/docker/apache2/logs:/var/log/apache2 -v /etc/localtime:/etc/localtime -p 80:80 -p 443:443 wrestlingdev-web + when: wrestlingdev_running == "" - hosts: worker remote_user: root @@ -36,8 +43,15 @@ - name: Create apache docker image command: chdir=/root/wrestlingApp docker build -t wrestlingdev-worker -f rails-prod-Dockerfile . - - name: Kill running docker container - shell: docker stop $(docker ps -a -q) - + - name: Is wrestlingdev running + command: docker ps | grep wrestlingdev + register: wrestlingdev_running + ignore_errors: yes + + - name: Kill and remove container + command: docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) + when: wrestlingdev_running != "" + - name: Start docker container - command: docker run -h {{ansible_hostname}} -d --restart=always --env-file /root/prod.env -v /etc/localtime:/etc/localtime wrestlingdev-worker bundle exec rake jobs:work RAILS_ENV=production + command: docker run -h {{ansible_hostname}} --name wrestlingdev-worker -d --restart=always --env-file /root/prod.env -v /etc/localtime:/etc/localtime wrestlingdev-worker bundle exec rake jobs:work RAILS_ENV=production + when: wrestlingdev_running == "" diff --git a/roles/rails/tasks/web.yml b/roles/rails/tasks/web.yml index 65f378e..145224a 100644 --- a/roles/rails/tasks/web.yml +++ b/roles/rails/tasks/web.yml @@ -7,5 +7,15 @@ - name: Create apache docker image command: chdir=/root/wrestlingApp docker build -t wrestlingdev-web -f rails-prod-Dockerfile . +- name: Is wrestlingdev running + command: docker ps | grep wrestlingdev + register: wrestlingdev_running + ignore_errors: yes + +- name: Kill and remove container + command: docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) + when: wrestlingdev_running != "" + - name: Start docker container - command: docker run -h {{ansible_hostname}} -d --restart=always --env-file /root/prod.env -v /srv/docker/apache2/logs:/var/log/apache2 -v /etc/localtime:/etc/localtime -p 80:80 -p 443:443 wrestlingdev-web + command: docker run -h {{ansible_hostname}} --name wrestlingdev-web -d --restart=always --env-file /root/prod.env -v /srv/docker/apache2/logs:/var/log/apache2 -v /etc/localtime:/etc/localtime -p 80:80 -p 443:443 wrestlingdev-web + when: wrestlingdev_running == "" diff --git a/roles/rails/tasks/worker.yml b/roles/rails/tasks/worker.yml index 4c28066..4b471ba 100644 --- a/roles/rails/tasks/worker.yml +++ b/roles/rails/tasks/worker.yml @@ -7,5 +7,15 @@ - name: Create apache docker image command: chdir=/root/wrestlingApp docker build -t wrestlingdev-worker -f rails-prod-Dockerfile . +- name: Is wrestlingdev running + command: docker ps | grep wrestlingdev + register: wrestlingdev_running + ignore_errors: yes + +- name: Kill and remove container + command: docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) + when: wrestlingdev_running != "" + - name: Start docker container - command: docker run -h {{ansible_hostname}} -d --restart=always --env-file /root/prod.env -v /etc/localtime:/etc/localtime wrestlingdev-worker bundle exec rake jobs:work RAILS_ENV=production + command: docker run -h {{ansible_hostname}} --name wrestlingdev-worker -d --restart=always --env-file /root/prod.env -v /etc/localtime:/etc/localtime wrestlingdev-worker bundle exec rake jobs:work RAILS_ENV=production + when: wrestlingdev_running == ""