Jawaban Yudha Prama dari Pertanyaan Bagaimana menggunakan Docker sebagai DevOps untuk Continous Integration dan Continous Delivery? di SETO.CO.ID

Lihat jawaban selengkapnya di SETO.CO.ID

Saya akan menjelaskan 3 bagian:

  1. Integrasi NodeJS dan Docker di satu virtual machine.
  2. Mengotomatisasi redeploy (update) menggunakan Docker.
  3. Mengotomatisasi redeploy (update) menggunakan Jenkins dan Ansible (1 line code).

Integrasi NodeJS dan Docker di satu virtual machine

Disini saya akan mengintegrasikan aplikasi NodeJS dengan Docker. Pertama adalah instalasi Docker pada virtual machine.

Perhatikan di akhir command ada “.” dimana itu mereferensikan pada folder dimana terdapat Dockerfile sebelumnya.

Mengotomatisasi redeploy (update) menggunakan Docker

Pertama, kita harus mendapatkan akses ke remote machine. Berikut scriptnya:

Setelah kita dapat akses, kita harus konfigurasi Ansible Playbook untuk diinstall di Docker di THE_HOST file. Script sebagai berikut:

Pada ansible hosts file, kita harus setting user and password untuk virtual machine

data-gist-line=”1-3″

Dengan begini kita bisa launch command sebagai berikut:

data-gist-line=”6″

Sekarang masukan Dockerfile lalu launch. Barusan kita punya Ansible task untuk ditambahkan ke Dockerfile melalui THE_HOST. Lalu kita punya Playbook yang akan dicopykan lalu dibuild ke container.

Mudah bukan? Selanjunya adalah copy Dockerfile, lalu build image lalu restart container.

Jika kita mengakses mesin kita di 0.0.0.0:41600 kita akan lihat server sudah running.

Redeploying dengan one line code

Kita bisa menggunakan Ansible Playbook untuk redeploy aplikasi sebanyak yang kita mau, kita cukup hanya perlu menjalankan PlayBook yang sama. Yang keren disini adalah Ansible Playbook hanya akan push perubahan pada script saja. Jadi tidak push seluruh script, tapi perubahan. Keren kan? Jadi ketika terdapat perubahan pada master branch repo menggunakan Git push (via polling atau git hook), lalu Jenkins and Ansible akan push ke server. 

Dengan demikian, kita bisa redeploy sebanyak yang kita suka dan dilakukan secara otomatis! Cool! Berikut scriptnya:

data-gist-line=”1-5″

BONUS: Integrasi Nginx dengan Docker

Copy certificate dan key lalu masukan ke /home/app/certs lalu run:

data-gist-line=”8-10″

Pastikan untuk mengubah domain.crt dan domain.key lalu run:

data-gist-line=”13″

Kita juga butuh untuk membuat user untuk registry dimana akan dipergunakan untuk autentikasi. Ganti testuser dan testpassword.

data-gist-line=”16″

Kita butuh generate dhparam.pem file menggunakan:

data-gist-line=”19″

Terakhir, kita harus buat server block untuk Nginx proxy:

data-gist-line=”22″

Sekarang reload Nginx lagi menggunakan:

data-gist-line=”25″

Terakhir, kita harus buat server block untuk Nginx proxy:

Tulisan ini dipost melalui Aplikasi Seto di tanya jawab seputar Sistem Admin, Programming, Linux, Node JS, Docker, dan Nginx.

Advertisements