DEV Community

Nandan Ramdani
Nandan Ramdani

Posted on • Edited on

Cara Push dan Pull Docker Image ke GitHub Container Registry (GHCR)

Saat membuat aplikasi berbasis Docker, kita membutuhkan tempat untuk menyimpan image agar dapat digunakan kembali di server, VPS, maupun pipeline CI/CD.

Salah satu solusi yang populer adalah GitHub Container Registry (GHCR). Dengan GHCR, kita dapat menyimpan Docker image langsung di ekosistem GitHub tanpa perlu menggunakan layanan pihak ketiga.

Pada artikel ini kita akan belajar cara login, build, push, dan pull Docker image menggunakan GHCR.


Apa Itu GHCR?

GHCR (GitHub Container Registry) adalah layanan container registry yang disediakan oleh GitHub untuk menyimpan dan mendistribusikan container image seperti Docker image.

GHCR memungkinkan developer untuk:

  • Menyimpan Docker image
  • Mengelola versi image
  • Mengontrol akses image
  • Mengintegrasikan image dengan GitHub Actions
  • Menggunakan image langsung di server atau VPS

Karena terintegrasi langsung dengan GitHub, GHCR menjadi pilihan yang menarik bagi developer yang sudah menggunakan GitHub sebagai platform utama.


GHCR vs Docker Hub

Sebelum mulai, mungkin muncul pertanyaan:

Kenapa menggunakan GHCR jika sudah ada Docker Hub?

Beberapa kelebihan GHCR:

Fitur GHCR Docker Hub
Terintegrasi GitHub
Private Image Terbatas
GitHub Actions Integration
Permission Management Terbatas
Gratis untuk banyak kebutuhan

Jika source code kamu sudah berada di GitHub, biasanya GHCR menjadi pilihan yang lebih praktis.


Prasyarat

Sebelum memulai, pastikan:

  • Docker sudah terinstall
  • Memiliki akun GitHub
  • Memiliki Personal Access Token (PAT)

Untuk membuat PAT:

  1. Buka GitHub
  2. Masuk ke Settings
  3. Pilih Developer Settings
  4. Pilih Personal Access Tokens
  5. Klik Generate New Token

Minimal berikan permission:

write:packages
read:packages
Enter fullscreen mode Exit fullscreen mode

Opsional:

delete:packages
repo
Enter fullscreen mode Exit fullscreen mode

Permission repo diperlukan jika image berhubungan dengan repository privat.


Login ke GHCR

Login menggunakan Docker CLI:

echo TOKEN_GITHUB | docker login ghcr.io -u USERNAME_GITHUB --password-stdin
Enter fullscreen mode Exit fullscreen mode

Contoh:

echo ghp_xxxxxxxxxxxxxxxxxxxxx | docker login ghcr.io -u johndoe --password-stdin
Enter fullscreen mode Exit fullscreen mode

Jika berhasil akan muncul:

Login Succeeded
Enter fullscreen mode Exit fullscreen mode

Build Docker Image

Misalkan kita memiliki Dockerfile berikut:

FROM nginx:alpine

COPY . /usr/share/nginx/html
Enter fullscreen mode Exit fullscreen mode

Build image:

docker build -t ghcr.io/username/aplikasi-web:latest .
Enter fullscreen mode Exit fullscreen mode

Contoh:

docker build -t ghcr.io/johndoe/aplikasi-web:latest .
Enter fullscreen mode Exit fullscreen mode

Pastikan format penamaan image mengikuti pola:

ghcr.io/<username>/<nama-image>:<tag>
Enter fullscreen mode Exit fullscreen mode

Push Docker Image ke GHCR

Setelah proses build selesai, upload image ke GHCR:

docker push ghcr.io/username/aplikasi-web:latest
Enter fullscreen mode Exit fullscreen mode

Contoh:

docker push ghcr.io/johndoe/aplikasi-web:latest
Enter fullscreen mode Exit fullscreen mode

Tunggu hingga proses upload selesai.

Jika berhasil, image akan muncul pada halaman GitHub Packages.


Pull Docker Image dari GHCR

Untuk menggunakan image yang telah dipublikasikan:

docker pull ghcr.io/username/aplikasi-web:latest
Enter fullscreen mode Exit fullscreen mode

Contoh:

docker pull ghcr.io/johndoe/aplikasi-web:latest
Enter fullscreen mode Exit fullscreen mode

Menjalankan Container dari GHCR

Setelah image berhasil di-pull:

docker run -d \
  --name aplikasi-web \
  -p 80:80 \
  ghcr.io/johndoe/aplikasi-web:latest
Enter fullscreen mode Exit fullscreen mode

Container akan berjalan menggunakan image yang berasal dari GHCR.


Menggunakan Image Private

Jika image bersifat private, server harus login terlebih dahulu:

docker login ghcr.io
Enter fullscreen mode Exit fullscreen mode

Masukkan:

Username GitHub
Personal Access Token
Enter fullscreen mode Exit fullscreen mode

Setelah berhasil login, image private dapat di-pull seperti biasa.


Mengubah Image Menjadi Public

Secara default image biasanya bersifat private.

Untuk mengubahnya menjadi public:

  1. Buka GitHub
  2. Pilih menu Packages
  3. Pilih image yang ingin diubah
  4. Klik Package Settings
  5. Ubah visibility menjadi Public

Setelah itu image dapat diakses tanpa autentikasi.


Best Practice Menggunakan GHCR

Gunakan Version Tag

Jangan hanya menggunakan:

latest
Enter fullscreen mode Exit fullscreen mode

Gunakan juga versi yang jelas:

v1.0.0
v1.1.0
v2.0.0
Enter fullscreen mode Exit fullscreen mode

Contoh:

docker build -t ghcr.io/johndoe/aplikasi-web:v1.0.0 .
docker push ghcr.io/johndoe/aplikasi-web:v1.0.0
Enter fullscreen mode Exit fullscreen mode

Hindari Menyimpan Secret dalam Image

Jangan pernah menyimpan:

  • API Key
  • Database Password
  • Token

langsung di Docker image.

Gunakan environment variable saat container dijalankan.

Integrasikan dengan GitHub Actions

GHCR sangat cocok digunakan bersama GitHub Actions untuk membuat pipeline CI/CD otomatis.

Setiap push ke branch tertentu dapat langsung:

  1. Build image
  2. Push ke GHCR
  3. Deploy ke VPS

tanpa perlu menjalankan perintah manual.


Penutup

GitHub Container Registry (GHCR) merupakan solusi yang sederhana dan terintegrasi untuk menyimpan Docker image langsung di ekosistem GitHub.

Dengan GHCR, developer dapat mengelola image, mengatur akses, serta mengintegrasikannya dengan GitHub Actions untuk membangun workflow CI/CD yang lebih efisien.

Jika proyekmu sudah menggunakan GitHub sebagai repository utama, GHCR sering kali menjadi pilihan yang lebih praktis dibanding menggunakan registry terpisah.

Top comments (0)