DEV Community

Cover image for Bagaimana melakukan push Docker image ke private container registry secara gratis?
Mohammad Anang
Mohammad Anang

Posted on • Edited on

Bagaimana melakukan push Docker image ke private container registry secara gratis?

Penggunaan container service pada saat proses deployment untuk kebutuhan production menjadi ketergantungan yang lumayan tinggi. Sejalan dengan kepentingan tersebut, container registry menjadi gerbang awal sebelum menjalankan sebuah container. Dia digunakan untuk menyimpan image yang sudah di-compile, selanjutnya dapat digunakan untuk dijalankan menjadi container service di server production.

Umumnya penyedia layanan container registry tidak sulit ditemukan, salah satunya di situs docker official. Namun di sana memiliki keterbatasan pada akses untuk repository yang berbentuk private, yaitu 1 kuota saja. Sedangkan pada repository yang bersifat public tidak ada keterbatasan kuota. Ketentuan tersebut berlaku bagi pengguna yang tidak berbayar atau gratis. Sehingga dibagikan di sini alternatif lain untuk mendapatkan repository yang lebih leluasa, baik public maupun private. Yaitu menggunakan GitLab container registry, yang memiliki bentuk akses sesuai dengan repository yang telah dibuat. Jika repository berupa private, maka akses pada container registry juga berbentuk private. Begitu pula sebaliknya.

Persiapan & Langkah-langkah

Untuk memulai membuat container registry di GitLab dapat dipersiapkan sebuah aplikasi yang ingin dilakukan deployment ke server. Pada kasus ini diberikan contoh sederhana membuat REST API menggunakan nodejs dengan framework nestjs. Agar lebih singkat aplikasi yang digunakan dilakukan generate dari nestjs CLI. Berikut dijelaskan langkah-langkah pembuatan aplikasi hingga ke proses akhir menjadi container registry di GitLab repository.

  • Melakukan generate untuk membuat aplikasi REST API via terminal. (Pada kasus ini digunakan nodejs versi 18) Ketik dan jalankan untuk melakukan instalasi nestjs pada library global lokal.
npm i -g @nestjs/cli
Enter fullscreen mode Exit fullscreen mode
  • Membuat direktori aplikasi dengan menjalankan perintah berikut.
nest new <project-name>
Enter fullscreen mode Exit fullscreen mode
  • Membuat Dockerfile yang selanjutnya akan menjadi image untuk diteruskan ke container registry. Cuplikannya seperti berikut:

Docker

  • Membuat repository di GitLab untuk menyimpan source code aplikasi yang telah dibuat, sekaligus menjadi repository untuk container registry.

Gitlab Container Registry Capture

  • Melakukan push/upload ke GitLab repository.

Gitlab Repository

  • Melakukan build/compile aplikasi berdasarkan Dockerfile yang telah dibuat. Nama image diharuskan menyesuaikan pada halaman container registry di repository GitLab.

Container Registry Command

  • Memastikan login ke GitLab container registry dengan perintah:
docker login registry.gitlab.com
Enter fullscreen mode Exit fullscreen mode
  • Menjalankan docker container di lokal komputer dengan perintah:
docker run --rm -p -d 3000:3000 <image-name>
Enter fullscreen mode Exit fullscreen mode
  • Memastikan aplikasi berjalan sesuai di browser atau Postman.

Browser

Postman

  • Setelah berbentuk image, perlu dilakukan push/upload ke container registry di repository GitLab yang sebelumnya telah dibuat.

Image Pushed

  • Pada server yang ditujukan atau di lokal komputer, docker image pada GitLab container registry dapat dilakukan download/pull dengan perintah:
docker pull <image-name>
Enter fullscreen mode Exit fullscreen mode
  • Langkah akhir dapat dijalankan docker image yang telah diunduh/di-download dengan perintah:
docker run --rm -p -d 3000:3000 <image-name>
Enter fullscreen mode Exit fullscreen mode

Akhir Kata

Source code lengkap dapat dilihat pada link ini. Sekian.


Credits:
Image cover by Tri Eptaroka Mardiana on Unsplash.

Support me on:
saweria


my-site

Top comments (3)

Collapse
 
bcouetil profile image
Benoit COUETIL 💫

Hello, welcome to DEV !

Since your article is not written in english, you should make it clear in the title, which is in full english for now 😊

Collapse
 
mohammadanang profile image
Mohammad Anang

Done @bcouetil 😎

Collapse
 
bcouetil profile image
Benoit COUETIL 💫

Sorry if I did not make myself clear enough: your title is in english, and your article body is not.

So international people will come, thinking they will be able to read, but they will not 😵

Best you can do is writing your title in your language, to not disappoint people 😉