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:
- Buka GitHub
- Masuk ke Settings
- Pilih Developer Settings
- Pilih Personal Access Tokens
- Klik Generate New Token
Minimal berikan permission:
write:packages
read:packages
Opsional:
delete:packages
repo
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
Contoh:
echo ghp_xxxxxxxxxxxxxxxxxxxxx | docker login ghcr.io -u johndoe --password-stdin
Jika berhasil akan muncul:
Login Succeeded
Build Docker Image
Misalkan kita memiliki Dockerfile berikut:
FROM nginx:alpine
COPY . /usr/share/nginx/html
Build image:
docker build -t ghcr.io/username/aplikasi-web:latest .
Contoh:
docker build -t ghcr.io/johndoe/aplikasi-web:latest .
Pastikan format penamaan image mengikuti pola:
ghcr.io/<username>/<nama-image>:<tag>
Push Docker Image ke GHCR
Setelah proses build selesai, upload image ke GHCR:
docker push ghcr.io/username/aplikasi-web:latest
Contoh:
docker push ghcr.io/johndoe/aplikasi-web:latest
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
Contoh:
docker pull ghcr.io/johndoe/aplikasi-web:latest
Menjalankan Container dari GHCR
Setelah image berhasil di-pull:
docker run -d \
--name aplikasi-web \
-p 80:80 \
ghcr.io/johndoe/aplikasi-web:latest
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
Masukkan:
Username GitHub
Personal Access Token
Setelah berhasil login, image private dapat di-pull seperti biasa.
Mengubah Image Menjadi Public
Secara default image biasanya bersifat private.
Untuk mengubahnya menjadi public:
- Buka GitHub
- Pilih menu Packages
- Pilih image yang ingin diubah
- Klik Package Settings
- Ubah visibility menjadi Public
Setelah itu image dapat diakses tanpa autentikasi.
Best Practice Menggunakan GHCR
Gunakan Version Tag
Jangan hanya menggunakan:
latest
Gunakan juga versi yang jelas:
v1.0.0
v1.1.0
v2.0.0
Contoh:
docker build -t ghcr.io/johndoe/aplikasi-web:v1.0.0 .
docker push ghcr.io/johndoe/aplikasi-web:v1.0.0
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:
- Build image
- Push ke GHCR
- 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)