Docker
Jalankan Custy dengan Docker
Build Custy secara lokal dan jalankan CLI mandirinya terhadap workspace proyek yang di-mount secara terencana.
docker build --target production -t custy-prod:latest .Category
Quick Command
docker [build|run|compose] [OPTIONS]Ringkasanâ
Dockerfile multi-stage Custy menyediakan target image development dan
production. Keduanya menyertakan Python 3.14, pip, Git, Make, serta editor
terminal Micro, Nano, Vim, dan Vi. Target production menginstal package runtime, sedangkan target development menginstal
Custy dalam mode editable beserta dependensi development.
Cara ini menghilangkan kebutuhan untuk menginstal Python atau Git di host. Docker tetap harus menerima direktori proyek, metadata repositori, identitas, dan kredensial yang diperlukan oleh operasi Custy yang dipilih.
Persyaratan
Requirements
Docker Engine
Source Checkout Custy
Workspace Proyek
Plugin Docker Compose
Make
Backup Proyek
Isi Image
Target Build Docker
Base Bersama
Production
Development
Mount Proyek
Build Image Production
Dari root source Custy, helper Make merupakan cara build lokal yang disarankan.
Helper ini memperoleh versi package yang dinormalisasi dari Git sebelum .git
dikecualikan dari konteks Docker, sehingga custy --version di dalam image
sesuai dengan checkpoint source.make c-build-prod
docker run --rm custy-prod:latest --version
docker run --rm custy-prod:latest --help
Untuk build langsung, berikan versi package PEP 440 yang dituju secara
eksplisit. Build argument ini mengontrol metadata package dan banner Custy; nilai
tersebut tidak mengubah versi proyek target yang di-mount.docker build --build-arg CUSTY_BUILD_VERSION=2.1.2 --target production -t custy-prod:latest .
Gunakan --target development -t custy-dev:latest ketika menguji atau
mengembangkan Custy itu sendiri.
Pull Image Production yang Dipublikasikan
Rilis stabil memublikasikan empat tag GHCR yang terkoordinasi. Semua alias versi
mempertahankan prefiks v yang digunakan Custy.
| Bentuk tag | Contoh | Perilaku |
|---|---|---|
| Rilis eksak | v2.1.2 | Memilih rilis immutable dan disarankan untuk CI atau penggunaan yang dapat direproduksi. |
| Alias minor | v2.1 | Bergerak ke patch stabil terbaru dalam lini 2.1. |
| Alias major | v2 | Bergerak ke rilis stabil terbaru dalam lini 2. |
| Alias latest | latest | Bergerak ke rilis stabil Custy terbaru. |
docker pull ghcr.io/devalltect00/custy:v2.1.2
docker pull ghcr.io/devalltect00/custy:v2.1
docker pull ghcr.io/devalltect00/custy:v2
docker pull ghcr.io/devalltect00/custy:latestJalankan Custy pada Proyek
Jalankan perintah berikut dari root proyek yang ingin dikelola Custy. Karena
image menggunakan custy sebagai entrypoint, argumen setelah nama image
merupakan argumen Custy.
Menjalankan image tanpa command juga valid: Custy menampilkan root help dan
berhenti dengan status berhasil.docker run --rm -it -v "${PWD}:/workspace" custy-prod:latest --help
docker run --rm -it -v "${PWD}:/workspace" custy-prod:latest init
docker run --rm -it -v "${PWD}:/workspace" custy-prod:latest validatedocker run --rm -it -v "$(pwd):/workspace" custy-prod:latest --help
docker run --rm -it -v "$(pwd):/workspace" custy-prod:latest init
docker run --rm -it -v "$(pwd):/workspace" custy-prod:latest validatedocker run --rm -it -v "${PWD}:/workspace" -w /workspace custy-prod:latest run release
Identitas Git dan Akses Remote
Mount proyek membuat direktori .git lokal tersedia, tetapi tidak otomatis
menyalin konfigurasi Git global pengguna host, SSH key, atau sesi credential
manager ke dalam container.
- Konfigurasikan
user.namedanuser.emaildi repositori atau sediakan konfigurasi Git yang sudah ditinjau secara sengaja sebelum alur commit atau tag. - Sediakan SSH key, token, atau mekanisme kredensial Git lain yang didukung hanya ketika push diperlukan.
- Pertahankan normal Git dan SSH authentication lebih dulu. Untuk supported
GitHub atau GitLab HTTPS remote, Custy dapat membaca token secara opsional
dari protected file yang di-mount ke
/run/secrets/custyatau named environment variable. - Tinjau setiap mount kredensial dan konfigurasi dengan cermat; jangan pernah memasukkan secret ke dalam image.
- Perintah lokal seperti inisialisasi tidak memerlukan kredensial remote.
docker run --rm -it -v "${PWD}:/workspace" -v "$env:LOCALAPPDATA/Custy/credentials:/run/secrets/custy:ro" -w /workspace custy-prod:latest pushGunakan Docker Compose
File Compose terutama merupakan helper development untuk source checkout Custy
itu sendiri. Service dasarnya me-mount checkout saat ini ke /workspace.
Gunakan perintah docker run -v secara langsung ketika menjalankan Custy pada
root proyek yang berbeda.docker compose -f docker-compose.yml -f docker-compose.prod.yml build app
docker compose -f docker-compose.yml -f docker-compose.prod.yml run --rm app --help
docker compose -f docker-compose.yml -f docker-compose.prod.yml run --rm app init
Gunakan stack development untuk pengujian Custy dan tool kontributor.docker compose -f docker-compose.yml -f docker-compose.dev.yml build app
docker compose -f docker-compose.yml -f docker-compose.dev.yml run --rm app --help
docker compose -f docker-compose.yml -f docker-compose.dev.yml run --rm test
Helper Makefile Opsional
Dari source checkout Custy, GNU Make dapat membungkus perintah Docker dan
Compose lokal.# Build target Dockerfile secara langsung
make d-build-prod
make d-init
# Gunakan service Docker Compose
make c-build-prod
# Buat dan periksa external credentials
make d-credentials-set-github
make d-credentials-status
make d-credentials-test CUSTY_CREDENTIALS_REMOTE=origin
# Aktifkan read-only credential mount untuk push
make d-run-push CUSTY_CREDENTIALS_MOUNT=true
Default CUSTY_CREDENTIALS_MOUNT adalah false, sehingga native Git, SSH, dan
manual interactive authentication tetap dipertahankan. Mengaturnya menjadi
true menambahkan external credential directory ke runtime target sebagai
read-only volume. Helper credential set selalu memakai writable mount,
sedangkan helper status dan test selalu memakai read-only access. Interface
yang sama tersedia melalui c-credentials-* / c-run-push untuk Compose dan
r-custy-credentials-* / r-custy-run-push untuk published image.
Override CUSTY_CREDENTIALS_HOST_DIR jika file tidak berada di platform
default directory. Make interface menerima directory path, bukan token value.
Lihat Credential Examples untuk
behavior matrix dan platform default yang lengkap.