Dagger Shell - Shell baru untuk era container
(dagger.io)- Shell Unix telah digunakan selama lebih dari 50 tahun, dan merupakan alat komputasi yang kuat yang memungkinkan perilaku kompleks disusun dari perintah sederhana
- Namun, stack perangkat lunak modern telah menjadi jauh lebih kompleks, dan shell lama sulit menangani semua pekerjaan ini
- Terinspirasi oleh Docker, make, powershell, nix, dan lainnya, kini dibutuhkan shell modern yang secara native mendukung container, secret, endpoint layanan, eksekusi deklaratif, cache, dan sandboxing
- Dagger Shell adalah frontend berbasis sintaks bash untuk Dagger Engine, dan dapat digunakan untuk berbagai tugas otomasi seperti build, test, deployment, dan environment sementara
- Alih-alih menggantikan shell sistem, ini adalah alat pelengkap yang membantu menyusun workflow kompleks dari kombinasi modul sederhana
container | from alpine | with-exec apk add git | terminal -
Shell dan kode saja sudah cukup
- Saat menangani skrip kompleks, Anda bisa menulisnya dalam bahasa pemrograman sungguhan alih-alih mempelajari DSL aneh
- Tersedia SDK untuk berbagai bahasa seperti Go, Python, Typescript, Java, dan PHP
- Fungsi yang ditulis dalam bahasa tersebut dapat diperluas menjadi primitive baru di Dagger
-
Shell yang terhubung ke API
- Dagger Shell berperan sebagai klien API Dagger, dengan akses ke objek bertipe, dokumentasi, dan ekosistem modul yang dapat digunakan ulang (Daggerverse)
- Misalnya, Anda bisa memuat dan menjalankan modul pemindaian keamanan Trivy
-
Lingkungan sandbox bawaan
- Semua perintah berjalan di dalam sandbox secara default, dan akses ke file, secret, layanan, dan lainnya harus ditentukan secara eksplisit. Sedikit lebih panjang, tetapi meningkatkan repeatability dan keamanan
container | from alpine | with-secret-variable POSTGRES_PASSWORD op://dev/db-password/credential | with-directory /src ~/src/myapp | with-service-binding db tcp://localhost:5432 | terminal
- Semua perintah berjalan di dalam sandbox secara default, dan akses ke file, secret, layanan, dan lainnya harus ditentukan secara eksplisit. Sedikit lebih panjang, tetapi meningkatkan repeatability dan keamanan
-
Build container yang sederhana
- Pembuatan container berbasis Alpine, penyisipan file teks, pengaturan output pesan, hingga push ke registry sementara dapat dijalankan sekaligus
- Dapat dilakukan tanpa perlu berpindah konteks antara penulisan Dockerfile, perintah build, dan push
# Build a wolfi linux container with curl, then test connection to stable and dev docs github.com/dagger/dagger/modules/wolfi | container --packages=curl | with-service-binding docs-stable $(github.com/dagger/dagger/docs@v0.17.1 | server) | with-service-binding docs-dev $(github.com/dagger/dagger/docs@main | server) | with-exec curl http://docs-stable | with-exec curl http://docs-dev
-
Menyiapkan environment pengujian
- Penyiapan environment pengujian, yang sering menjadi masalah di CI, juga dapat ditangani dengan mudah
- Dengan dukungan native untuk service binding, beberapa instance live dapat dihubungkan dan diuji
repo=$(git https://github.com/dagger/hello-dagger | head | tree) env=$(container | from node:23 | with-directory /app $repo | with-workdir /app) build=$($env | with-exec npm install | with-exec npm run build | directory ./dist) container | from nginx | with-directory /usr/share/nginx/html $build | terminal --cmd=/bin/bash
-
Build multi-tahap (Multi-Stage Builds)
- Pipeline build yang kompleks dapat diimplementasikan dengan sintaks yang jelas dan modular
- Dengan mendefinisikan setiap tahap sebagai variabel, debugging dan penggunaan ulang menjadi lebih mudah
container | from golang:latest | with-directory /src $(git https://github.com/dagger/dagger | head | tree) | with-workdir /src | with-exec go build ./cmd/dagger | file ./dagger | export ./dagger
2 komentar
Sebagai informasi, tautannya telah berubah menjadi alamat https://dagger.io/blog/…
Opini Hacker News
Belakangan ini rasanya makin sulit memahami kegunaan nyata Dagger
Saya sering menyusun berbagai image dengan menggabungkan Dockerfile dan shell script
Saya melewatkan fakta bahwa Dagger sedang mencoba menggantikan Docker
Sudah ada web UI yang memungkinkan penulisan skrip Dagger Shell dalam format notebook
Saya jadi penasaran setelah melihat penjelasan di situs Dagger
Promosi diri yang terkait
Apakah tujuannya untuk melakukan pekerjaan pengembangan di dalam container?
Tepatnya, apa yang bisa dilakukan dengan alat ini?
Kesan awal saya, ini seperti tahap perantara antara Dockerfile dan mendefinisikan serta menyusun perangkat lunak dengan kode sungguhan
Apakah Dagger mengubah arah produknya?