#! คืออะไร?
#! (ออกเสียงว่า shebang) เป็นธรรมเนียมที่ใช้บน Unix โดยหลักสำหรับภาษาสคริปต์อย่าง Python หรือ Bash
- นี่คือการแนะนำกรณีตัวอย่างของการใช้สิ่งนี้เพื่อแพ็กเกจวิธีการแจกจ่ายแอปพลิเคชันแบบข้ามแพลตฟอร์มและรองรับหลายลินุกซ์ดิสโทรให้อยู่ในไฟล์เดียว
- ตัวอย่าง Dockerfile ประกอบเซิร์ฟเวอร์แบบ full-stack ทั้งแบ็กเอนด์ ฐานข้อมูล และ UI ไว้ครบในไฟล์เดียว
- คล้ายกับ Cosmopolitan Libc แต่มีไว้เพื่อการแพ็กเกจแอปพลิเคชัน
ทำไมถึงใช้?
ปลอดภัยไหม?
ควรใช้ไหม?
ประสิทธิภาพดีไหม?
ดูแลรักษาได้ไหม?
ใช้งานได้จริงไหม?
รันอย่างไร?
- สามารถรันได้ด้วยคำสั่งต่อไปนี้:
chmod +x ./Dockerfile ./Dockerfile
- จากนั้นเข้าไปที่ http://127.0.0.1:8080
ความเห็นของ GN⁺
- บทความนี้แนะนำวิธีที่แปลกใหม่ในการแพ็กเกจเซิร์ฟเวอร์แบบ full-stack ด้วย Dockerfile เพียงไฟล์เดียวโดยใช้
#! (shebang)
- ช่วยกระตุ้นความอยากรู้อยากเห็นทางเทคนิค และนำเสนอแนวทางใหม่ต่อวิธีการ deploy แอปพลิเคชันแบบดั้งเดิม
- แม้ว่าวิธีนี้จะไม่แนะนำในแง่การดูแลรักษาและความเสถียร แต่ก็อาจเป็นทางเลือกที่น่าสนใจสำหรับนักพัฒนาที่สนใจโปรเจกต์แนวทดลองและนวัตกรรม
7 ความคิดเห็น
หากต้องการใช้ heredoc อย่าง
<<EOFจำเป็นต้องใส่# syntax = docker/dockerfile:1.4.0ไว้ด้านบนสุดของ Dockerfile และที่น่าประหลาดใจก็คือsyntaxเองก็ดึงมาจาก Docker registry ด้วยว้าว... นี่คือช็อกทางจิตใจครั้งใหญ่ที่สุดของปีเลย 5555555555
เป็นวิธีที่น่าสนุกดีนะ
555.. ไอเดียสดใหม่จริง ๆ นะ
ว้าว... อันนี้สดใหม่ดีนะครับ/ค่ะ เหมือนกับการค้นพบการผสมกันของเหล็กเสริมกับคอนกรีต... ก็อาจจะเวอร์ไปหน่อย แต่ชอบเลยครับ/ค่ะ
พอ
#!ดันไปตรงจังหวะกับการที่ใน Dockerfile เครื่องหมาย#เป็นคอมเมนต์พอดี เลยทำให้ลูกเล่นแบบนี้ใช้ได้สินะ...ต่อไปคงต้องใส่ไว้ใน Dockerfile แทนไฟล์แยกอย่าง
build-run-test.shอะไรทำนองนั้นแล้วล่ะครับ/ค่ะอันนี้น่าสนุกดีนะครับ 5555 "ทำไมถึงไม่ควรใช้ล่ะ?"
ความคิดเห็นจาก Hacker News
ตัวอย่างการใช้ shebang ของ nix-shell
nix-shellเพื่อสร้างสคริปต์ที่รันได้ซึ่งรวม dependency ที่จำเป็นทั้งหมดไว้chmod +x) ก็จะกลายเป็นไฟล์ที่รันได้พร้อม dependency ที่ระบุไว้ตัวเลือก
-S/--split-stringของ/usr/bin/env-Sที่ใช้ได้ตั้งแต่ GNU Coreutils 8.30Docker และความเข้ากันได้ของสถาปัตยกรรม
ความเห็นเกี่ยวกับแอปพลิเคชันไฟล์เดียว
กล่าวถึง Podman และ bubblewrap ในฐานะทางเลือกของ Docker
โปรเจ็กต์ไฟล์เดียวที่ใช้ heredocs
วิจารณ์ความยึดติดกับคำว่า "ไฟล์เดียว"
แพตเทิร์นสคริปต์ที่บริโภคตัวเอง
วิธีใช้
guix shellตำแหน่ง shebangguix shellที่นำมาจากคู่มือของ GuixDockerfile ที่ build และรันตัวเองได้