mirror of
https://github.com/koodiklinikka/playbooks.git
synced 2026-01-26 03:03:59 +00:00
Merge pull request #5 from koodiklinikka/put_koodiklinikka_front_to_docker
dockerify koodiklinikka.fi
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
- name: Setup new application server
|
||||
hosts: application
|
||||
roles:
|
||||
- nvm
|
||||
- koodiklinikka.fi
|
||||
- koodiklinikka.fi-api
|
||||
- tohtori
|
||||
|
||||
@@ -28,7 +28,7 @@ server {
|
||||
root {{ koodiklinikka_app_path }}/public;
|
||||
|
||||
location / {
|
||||
try_files $uri /index.html;
|
||||
proxy_pass http://localhost:{{ koodiklinikka_port }};
|
||||
}
|
||||
|
||||
location /api {
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
git
|
||||
repo="{{ koodiklinikka_api_repository_url }}"
|
||||
dest="{{ koodiklinikka_api_app_path }}"
|
||||
version=docker
|
||||
accept_hostkey=True
|
||||
sudo: no
|
||||
register: gitclone
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
---
|
||||
koodiklinikka_project_name: koodiklinikka.fi
|
||||
koodiklinikka_client_repo: git@github.com:koodiklinikka/koodiklinikka.fi.git
|
||||
koodiklinikka_nodejs_version: v0.10.25
|
||||
koodiklinikka_container_name: koodiklinikka.fi-front
|
||||
koodiklinikka_repository_url: git@github.com:koodiklinikka/koodiklinikka.fi.git
|
||||
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_user: web
|
||||
|
||||
nvm_path: /opt/web/nvm
|
||||
nvm_user: web
|
||||
|
||||
@@ -3,19 +3,53 @@
|
||||
remote_user: "{{ koodiklinikka_user }}"
|
||||
action: >
|
||||
git
|
||||
repo="{{ koodiklinikka_client_repo }}"
|
||||
repo="{{ koodiklinikka_repository_url }}"
|
||||
dest="{{ koodiklinikka_app_path }}"
|
||||
accept_hostkey=True
|
||||
sudo: no
|
||||
register: gitclone
|
||||
|
||||
- name: Make sure Node.js is installed and properly aliased
|
||||
remote_user: "{{ koodiklinikka_user }}"
|
||||
command: >
|
||||
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: get previous container
|
||||
shell: docker images|grep {{ koodiklinikka_container_name }}|grep latest| awk '{print $3}'
|
||||
register: current_image_sha
|
||||
|
||||
- name: Install client NPM dependencies and build assets
|
||||
remote_user: "{{ koodiklinikka_user }}"
|
||||
command: >
|
||||
bash -c "source {{ koodiklinikka_nvm_script }} && nvm use {{ koodiklinikka_project_name }} && cd {{ koodiklinikka_app_path }} && npm install && NODE_ENV=production npm run build"
|
||||
- name: Build {{ koodiklinikka_container_name }}
|
||||
shell: ./build_docker
|
||||
args:
|
||||
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
|
||||
|
||||
21
roles/koodiklinikka.fi/tasks/rollback.yml
Normal file
21
roles/koodiklinikka.fi/tasks/rollback.yml
Normal 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
|
||||
|
||||
@@ -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
7
rollback_front.yml
Normal 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
|
||||
Reference in New Issue
Block a user