Lewati ke konten utama

Docker

Jalankan Custy dengan Docker

Image Rilis atau Build dari Source

Build Custy secara lokal dan jalankan CLI mandirinya terhadap workspace proyek yang di-mount secara terencana.

Commanddocker build --target production -t custy-prod:latest .

Category

Memulai

Quick Command

docker [build|run|compose] [OPTIONS]

image lokalDocker Composemount workspace

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

Required
Instal dan jalankan lingkungan Docker yang dapat membangun serta menjalankan container Linux.

Source Checkout Custy

Required
Build image dari repositori yang berisi Dockerfile dan metadata package Custy.

Workspace Proyek

Required
Mount root proyek yang tepat, termasuk direktori .git jika operasi Git diperlukan, ke /workspace.

Plugin Docker Compose

Optional
Instal Compose hanya ketika menggunakan service development atau production dari repositori.

Make

Optional
Gunakan Make sebagai wrapper praktis untuk perintah Docker dan Compose dari repositori.

Backup Proyek

Recommended
Commit atau backup pekerjaan penting sebelum memberi perintah yang dapat mengubah data akses ke proyek nyata.

Isi Image

Target Build Docker

Base Bersama

Python 3.14 slim, pip, Git, Make, Micro, Nano, Vim, Vi, direktori kerja /workspace, dan source tree Custy.

Production

Instalasi package runtime normal dengan custy sebagai entrypoint container.

Development

Instalasi editable dengan grup dependensi development opsional dan terminal editor interaktif yang sama.

Mount Proyek

Proyek host yang di-mount ke /workspace menjadi working tree nyata yang dibaca dan mungkin diubah oleh Custy.

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.

Build dan verifikasi
bash
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.

Build production langsung
bash
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 tagContohPerilaku
Rilis eksakv2.1.2Memilih rilis immutable dan disarankan untuk CI atau penggunaan yang dapat direproduksi.
Alias minorv2.1Bergerak ke patch stabil terbaru dalam lini 2.1.
Alias majorv2Bergerak ke rilis stabil terbaru dalam lini 2.
Alias latestlatestBergerak ke rilis stabil Custy terbaru.
Pull image Custy yang dipublikasikan
bash
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:latest

Jalankan 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.

Windows PowerShell
powershell
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 validate
Linux atau macOS
bash
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 validate
Profil release interaktif
powershell
docker 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.name dan user.email di 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/custy atau 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.
Protected token-file mount
powershell
docker run --rm -it -v "${PWD}:/workspace" -v "$env:LOCALAPPDATA/Custy/credentials:/run/secrets/custy:ro" -w /workspace custy-prod:latest push

Gunakan 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.

Service production
bash
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.

Service development
bash
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.

Helper image lokal pilihan
bash
# 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.


Lanjutkan