--- - name: Deploy client from git remote_user: "{{ user }}" action: > git repo="{{ repository_url }}" dest="{{ app_path }}" accept_hostkey=True sudo: no register: gitclone - name: get previous container shell: docker images|grep {{ container_name }}|grep latest| awk '{print $3}' register: current_image_sha - name: Build {{ container_name }} shell: ./build_docker args: chdir: "{{ app_path}}" sudo: yes when: gitclone.changed register: container - name: tag previous version shell: docker tag -f {{ current_image_sha.stdout }} {{ container_name }}:old when: container is defined and container.changed and current_image_sha.stdout != "" - name: get running container shell: docker ps |grep {{ container_name }}| awk '{print $1}' register: current_container_id - name: kill old version shell: docker stop {{ container_name }} when: container is defined and container.changed and current_container_id.stdout != "" - name: get old containers shell: docker ps -a|grep Exited| awk '{print $1}' register: old_containers - name: clean old containers shell: docker rm $(docker ps -a|grep Exited| awk '{print $1}') when: old_containers.stdout != "" - name: Start the container shell: docker run --restart=always -p 127.0.0.1:{{ port }}:{{ port }} -d --name {{ container_name }} {{ container_name }}:latest when: container is defined and container.changed - name: get old images shell: docker images | grep "^" | awk '{print $3}' register: old_images - name: clean untagged (old) images shell: docker rmi $(docker images -a | grep "^" | awk '{print $3}') when: old_images.stdout != "" ignore_errors: yes