15 poin oleh GN⁺ 2024-01-15 | 7 komentar | Bagikan ke WhatsApp

Apa itu #!?

  • #! (dibaca shebang) adalah konvensi yang di Unix umumnya digunakan untuk bahasa skrip seperti Python atau Bash
  • Ini memperkenalkan contoh penggunaan untuk memaketkan cara mendistribusikan aplikasi lintas platform dan di berbagai distribusi Linux menjadi satu berkas tunggal
  • Contoh Dockerfile menyusun server full-stack lengkap yang mencakup backend, database, dan UI dalam satu berkas tunggal
  • Mirip dengan Cosmopolitan Libc, tetapi ditujukan untuk pemaketan aplikasi

Mengapa menggunakannya?

  • Kenapa tidak?

Apakah aman?

  • Mungkin tidak.

Haruskah digunakan?

  • Bisa digunakan jika Anda mau.

Apakah performanya bagus?

  • Ada kemungkinan.

Apakah bisa dirawat?

  • Tidak.

Apakah ini bekerja?

  • Ya.

Bagaimana cara menjalankannya?

  • Dapat dijalankan dengan perintah berikut: chmod +x ./Dockerfile ./Dockerfile
  • Setelah itu, akses alamat http://127.0.0.1:8080.

Opini GN⁺

  • Artikel ini memperkenalkan cara unik memaketkan server full-stack ke dalam satu Dockerfile dengan memanfaatkan #! (shebang).
  • Ini membangkitkan rasa ingin tahu teknis dan menawarkan pendekatan baru terhadap cara deployment aplikasi tradisional.
  • Pendekatan ini tidak direkomendasikan dari sisi maintainability dan stabilitas, tetapi bisa menjadi alternatif menarik bagi pengembang yang tertarik pada proyek eksperimental dan inovatif.

7 komentar

 
minhoryang 2024-01-17

Untuk menggunakan heredoc seperti <<EOF, Anda perlu menambahkan # syntax = docker/dockerfile:1.4.0 di bagian atas Dockerfile. Menariknya, syntax juga diambil dari Docker registry.

 
pmc7777 2024-01-16

Wah... ini kejutan mental terbesar tahun ini wkwkwkwkwk

 
arfwene 2024-01-15

Cara yang menarik.

 
bbulbum 2024-01-15

Haha... benar-benar segar ya.

 
sagee 2024-01-15

Wah.. ini benar-benar segar. Rasanya seperti menemukan kombinasi antara besi tulangan dan beton... ya memang agak lebay sih, tapi bagus. #! Kebetulan karena di Dockerfile # adalah karakter komentar, trik seperti ini ternyata bisa dipakai.. Ke depannya sepertinya lebih baik dimasukkan ke Dockerfile daripada membuat file terpisah seperti build-run-test.sh.

 
GN⁺ 2024-01-15
Opini Hacker News
  • Contoh penggunaan shebang nix-shell

    • Menjelaskan cara menggunakan shebang nix-shell untuk membuat skrip yang dapat dijalankan dengan semua dependensi yang dibutuhkan.
    • Memberikan contoh skrip Python yang mengecilkan gambar hingga 50%.
    • Jika skrip diberi izin eksekusi (chmod +x), skrip tersebut menjadi file eksekusi dengan dependensi yang ditentukan.
  • Opsi -S / --split-string pada /usr/bin/env

    • Menjelaskan opsi -S yang tersedia sejak GNU Coreutils 8.30.
    • Opsi ini bergantung pada perilaku nonstandar, dan hanya bekerja pada OS yang memperlakukan seluruh teks sebagai argumen untuk file eksekusi.
    • Pada sebagian besar GNU/Linux modern, BSD, dan macOS, perilaku nonstandar ini berfungsi.
  • Docker dan kompatibilitas arsitektur

    • Menunjukkan bahwa Docker pada praktiknya memerlukan VM Linux di platform selain Linux.
    • Container Linux memang sangat bagus, tetapi sulit menganggap Docker sebagai solusi lintas platform yang benar-benar sejati.
  • Opini tentang aplikasi satu file

    • Memuji ide memasukkan seluruh aplikasi ke dalam satu file.
    • Mengkritik kompleksitas Docker dan mempertanyakan penggunaan container untuk keamanan atau manajemen versi.
    • Mengajukan pertanyaan apakah WebAssembly (WASM) bisa menyelesaikan masalah ini.
  • Penyebutan Podman dan bubblewrap sebagai alternatif Docker

    • Menyebutkan bahwa menggunakan Podman atau bubblewrap mungkin lebih baik daripada Docker.
    • Podman sedikit lebih bergantung pada distribusi tertentu, dan bubblewrap mungkin tidak disertakan di sebagian distribusi karena masalah keamanan.
  • Proyek satu file dengan heredoc

    • Menyebutkan bahwa bahkan tanpa shebang yang cerdik, proyek satu file untuk bahasa atau infrastruktur apa pun bisa dibuat dengan heredoc.
    • Memberikan contoh aplikasi yang sama yang dipaketkan sebagai skrip bash.
  • Kritik terhadap obsesi pada "satu file"

    • Menunjukkan bahwa alih-alih memaketkan semuanya ke dalam satu file, aplikasi mandiri bisa dibuat dengan menggunakan direktori.
    • Menyebutkan bahwa membuatnya menjadi satu file tidak selalu merupakan cara yang lebih baik.
  • Pola skrip self-consuming

    • Menjelaskan cara menyisipkan skrip interpreter lain di dalam skrip, lalu menggunakan sed untuk mengekstrak skrip di antara tag.
    • Mengakui bahwa cara seperti ini kadang sangat berguna, tetapi bisa menjadi rumit.
  • Cara menggunakan guix shell pada posisi shebang

    • Memberikan contoh penggunaan guix shell yang diambil dari manual Guix.
    • Bekerja bersama file manifest yang menentukan lingkungan yang lebih kompleks.
  • Dockerfile yang membangun dan menjalankan dirinya sendiri

    • Menjelaskan Dockerfile yang membangun dan menjalankan dirinya sendiri, ditulis pada November 2021, serta memberikan contoh kode.