Merge pull request #5 from koodiklinikka/put_koodiklinikka_front_to_docker

dockerify koodiklinikka.fi
This commit is contained in:
Niko Kurtti
2015-03-30 19:33:34 +03:00
8 changed files with 79 additions and 28 deletions

View File

@@ -2,7 +2,6 @@
- name: Setup new application server - name: Setup new application server
hosts: application hosts: application
roles: roles:
- nvm
- koodiklinikka.fi - koodiklinikka.fi
- koodiklinikka.fi-api - koodiklinikka.fi-api
- tohtori - tohtori

View File

@@ -28,7 +28,7 @@ server {
root {{ koodiklinikka_app_path }}/public; root {{ koodiklinikka_app_path }}/public;
location / { location / {
try_files $uri /index.html; proxy_pass http://localhost:{{ koodiklinikka_port }};
} }
location /api { location /api {

View File

@@ -6,7 +6,6 @@
git git
repo="{{ koodiklinikka_api_repository_url }}" repo="{{ koodiklinikka_api_repository_url }}"
dest="{{ koodiklinikka_api_app_path }}" dest="{{ koodiklinikka_api_app_path }}"
version=docker
accept_hostkey=True accept_hostkey=True
sudo: no sudo: no
register: gitclone register: gitclone

View File

@@ -1,11 +1,9 @@
--- ---
koodiklinikka_project_name: koodiklinikka.fi koodiklinikka_container_name: koodiklinikka.fi-front
koodiklinikka_client_repo: git@github.com:koodiklinikka/koodiklinikka.fi.git koodiklinikka_repository_url: git@github.com:koodiklinikka/koodiklinikka.fi.git
koodiklinikka_nodejs_version: v0.10.25 koodiklinikka_port: 8000
koodiklinikka_app_path: /opt/web/koodiklinikka.fi koodiklinikka_app_path: /opt/web/koodiklinikka.fi-front
koodiklinikka_nvm_script: /opt/web/nvm/nvm.sh koodiklinikka_nvm_script: /opt/web/nvm/nvm.sh
koodiklinikka_user: web koodiklinikka_user: web
nvm_path: /opt/web/nvm
nvm_user: web

View File

@@ -3,19 +3,53 @@
remote_user: "{{ koodiklinikka_user }}" remote_user: "{{ koodiklinikka_user }}"
action: > action: >
git git
repo="{{ koodiklinikka_client_repo }}" repo="{{ koodiklinikka_repository_url }}"
dest="{{ koodiklinikka_app_path }}" dest="{{ koodiklinikka_app_path }}"
accept_hostkey=True accept_hostkey=True
sudo: no
register: gitclone
- name: Make sure Node.js is installed and properly aliased - name: get previous container
remote_user: "{{ koodiklinikka_user }}" shell: docker images|grep {{ koodiklinikka_container_name }}|grep latest| awk '{print $3}'
command: > register: current_image_sha
bash -c "source {{ koodiklinikka_nvm_script }} && nvm install {{ koodiklinikka_nodejs_version }} && nvm alias {{ koodiklinikka_project_name }} {{ koodiklinikka_nodejs_version }}"
register: nvm_result
changed_when: >
"already installed" not in nvm_result.stdout
- name: Install client NPM dependencies and build assets - name: Build {{ koodiklinikka_container_name }}
remote_user: "{{ koodiklinikka_user }}" shell: ./build_docker
command: > args:
bash -c "source {{ koodiklinikka_nvm_script }} && nvm use {{ koodiklinikka_project_name }} && cd {{ koodiklinikka_app_path }} && npm install && NODE_ENV=production npm run build" chdir: "{{ koodiklinikka_app_path}}"
sudo: yes
when: gitclone.changed
register: container
- name: tag previous version
shell: docker tag -f {{ current_image_sha.stdout }} {{ koodiklinikka_container_name }}:old
when: container is defined and container.changed and current_image_sha.stdout != ""
- name: get running container
shell: docker ps |grep {{ koodiklinikka_container_name }}| awk '{print $1}'
register: current_container_id
- name: kill old version
shell: docker stop {{ koodiklinikka_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:{{ koodiklinikka_port }}:{{ koodiklinikka_port }} -d --name {{ koodiklinikka_container_name }} {{ koodiklinikka_container_name }}:latest
when: container is defined and container.changed
- name: get old images
shell: docker images | grep "^<none>" | awk '{print $3}'
register: old_images
- name: clean untagged (old) images
shell: docker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
when: old_images.stdout != ""
ignore_errors: yes

View File

@@ -0,0 +1,21 @@
---
- name: get running container
shell: docker ps -a|grep {{ koodiklinikka_container_name }}|grep latest| awk '{print $1}'
register: current_container_id
- name: kill old version
shell: docker stop {{ koodiklinikka_container_name }}
when: current_container_id != ""
- 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 -d --name {{ koodiklinikka_container_name }} {{ koodiklinikka_container_name }}:old

View File

@@ -1,7 +0,0 @@
---
- name: Install NVM
remote_user: "{{ nvm_user }}"
action: >
git
repo="https://github.com/creationix/nvm"
dest="{{ nvm_path }}"

7
rollback_front.yml Normal file
View File

@@ -0,0 +1,7 @@
---
- name: Rollback api
hosts: application
vars_files:
- roles/koodiklinikka.fi/defaults/main.yml
tasks:
- include: roles/koodiklinikka.fi/tasks/rollback.yml