Konfigurasi Docker Nodejs untuk Google Cloud Run
Cloud Run merupakan layanan komputasi serverless berbasis container yang disediakan oleh Google. Ada dua kunci utama dari cloud run yaitu serverless dan container. Serverless berarti kita sebagai pengguna tidak perlu melakukan penyediaan, konfigurasi, dan pengelolaan server. Karena berbasis container, maka kita hanya perlu mengatur environment container tersebut dengan dockerfile. Lalu bagaimana kita melakukan konfigurasi dockerfile nodejs?
Oiya, sebenarnya untuk dockerfile ini bisa berlaku universal di platform manapun. Namun dalam kasus ini saya menggunakan studi kasus di Google Cloud Run. Sehingga untuk beberapa teknis saya sesuaikan dengan dokumentasi dan arahan dari Google Cloud Platform.
Sebelum kita mulai membahas dockerfilenya, kita coba bagi menjadi dua section. Pertama, kita coba gunakan dockerfile yang ada dari dokumentasi original dari Node. Kemudian melakukan adjustment agar sesuai dengan environment GCP.
Server.js
Dengan asumsi kita memiliki entrypoint di script bernama server.js:
1 |
|
Dockerfile Nodejs
1 |
|
Penyesuaian dengan Environment GCR/GCP
Ada dua hal yang perlu diperhatikan dalam melakukan deployment dockerfile di GCR. Pertama, environment variables yang perlu kita cermati karena ada beberapa nama yang sudah digunakan oleh GCP. Kedua, masalah networking terutama port.
Sebaiknya konstanta yang berkaitan dengan port menggunakan environment variable dari GCR dan memberi default value agar tidak bernilai salah ketika environment variablenya tidak diisi. Seperti ini misalnya:
1 |
|
Deploy ke GCR bisa dilakukan secara interactive dengan gcloud cli:
1 |
|
Kita bisa menggunakan Google Cloud Build sehingga hasil imagenya dapat disimpan dan digunakan untuk deploy instance GCR.
1 |
|
Tips
Pilih node image yang lebih kecil jika merasa hasil imagenya terlalu besar. Misalnya untuk image node:16
menghasilkan 3048 MB.
Sedangkan untuk node:16-alpine
menghasilkan 1992 MB.
Demikian untuk konfigurasi dasar untuk dockerfile nodejs. Semoga lain kesempatan akan kita bisa membahas tentang multistage dockerfile untuk nodejs maupun typescript. Saya juga menulis tentang konfigurasi docker untuk bahasa lain seperti php dan tutorial untuk melakukan instalasi font di docker.
Daftar Links
"Dockerizing a Node.js Web App" - https://nodejs.org/en/docs/guides/nodejs-docker-webapp/
"Quickstart: Deploy a Node.js service to Cloud Run" - https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-nodejs-service
"Container run contract" - https://cloud.google.com/run/docs/container-contract