multi-stage-dockerfile
โดย github
สร้าง Dockerfile แบบหลายสเตจที่ปรับแต่งให้เหมาะสมและปลอดภัยสำหรับภาษาใดๆ หรือเฟรมเวิร์กใดๆ โดยจัดโครงสร้างการสร้างด้วยสเตจ builder และ runtime แยกกัน คัดลอกเฉพาะอาร์ติแฟกต์ที่จำเป็นเพื่อลดขนาดอิมเมจสุดท้ายและพื้นผิวการโจมตี เน้นการปรับแต่งการแคชเลเยอร์โดยจัดลำดับคำสั่งจากที่เปลี่ยนแปลงน้อยที่สุดไปยังบ่อยที่สุด ร่วมกับ .dockerignore และการรวมคำสั่ง แนะนำอิมเมจฐานที่เล็กที่สุด (Alpine, distroless หรือ official slim variants) พร้อมการระบุเวอร์ชันที่แน่นอนสำหรับ...
npx skills add https://github.com/github/awesome-copilot --skill multi-stage-dockerfileYour goal is to help me create efficient multi-stage Dockerfiles that follow best practices, resulting in smaller, more secure container images.
Multi-Stage Structure
- Use a builder stage for compilation, dependency installation, and other build-time operations
- Use a separate runtime stage that only includes what's needed to run the application
- Copy only the necessary artifacts from the builder stage to the runtime stage
- Use meaningful stage names with the
ASkeyword (e.g.,FROM node:18 AS builder) - Place stages in logical order: dependencies → build → test → runtime
Base Images
- Start with official, minimal base images when possible
- Specify exact version tags to ensure reproducible builds (e.g.,
python:3.11-slimnot justpython) - Consider distroless images for runtime stages where appropriate
- Use Alpine-based images for smaller footprints when compatible with your application
- Ensure the runtime image has the minimal necessary dependencies
Layer Optimization
- Organize commands to maximize layer caching
- Place commands that change frequently (like code changes) after commands that change less frequently (like dependency installation)
- Use
.dockerignoreto prevent unnecessary files from being included in the build context - Combine related RUN commands with
&&to reduce layer count - Consider using COPY --chown to set permissions in one step
Security Practices
- Avoid running containers as root - use
USERinstruction to specify a non-root user - Remove build tools and unnecessary packages from the final image
- Scan the final image for vulnerabilities
- Set restrictive file permissions
- Use multi-stage builds to avoid including build secrets in the final image
Performance Considerations
- Use build arguments for configuration that might change between environments
- Leverage build cache efficiently by ordering layers from least to most frequently changing
- Consider parallelization in build steps when possible
- Set appropriate environment variables like NODE_ENV=production to optimize runtime behavior
- Use appropriate healthchecks for the application type with the HEALTHCHECK instruction
Skills เพิ่มเติมจาก github
console-rendering
github
คำแนะนำสำหรับการใช้ระบบเรนเดอร์คอนโซลที่ใช้ struct tag ใน Go
official
acquire-codebase-knowledge
github
ใช้ทักษะนี้เมื่อผู้ใช้ขอให้ทำแผนที่ จัดทำเอกสาร หรือเริ่มต้นใช้งานในโค้ดเบสที่มีอยู่จริง โดยจะเริ่มทำงานเมื่อมีข้อความแจ้งเช่น "ทำแผนที่โค้ดเบสนี้" "จัดทำเอกสาร…
official
acreadiness-assess
github
Run the AgentRC readiness assessment on the current repository and produce a static HTML dashboard at reports/index.html. Wraps `npx github:microsoft/agentrc…
official
acreadiness-generate-instructions
github
สร้างไฟล์คำแนะนำ AI agent ที่ปรับแต่งตามคำสั่ง AgentRC instructions สร้างไฟล์ .github/copilot-instructions.md (ค่าเริ่มต้น แนะนำสำหรับ Copilot ใน VS…)
official
acreadiness-policy
github
ช่วยผู้ใช้เลือก เขียน หรือใช้ AgentRC policy นโยบายปรับแต่งการให้คะแนนความพร้อมโดยปิดการตรวจสอบที่ไม่เกี่ยวข้อง เปลี่ยนระดับผลกระทบ/ระดับ การตั้งค่า…
official
add-educational-comments
github
เพิ่มความคิดเห็นเชิงการศึกษาให้กับไฟล์โค้ดเพื่อเปลี่ยนให้เป็นแหล่งเรียนรู้ที่มีประสิทธิภาพ ปรับระดับความลึกและน้ำเสียงของคำอธิบายตามระดับความรู้ที่กำหนดได้สามระดับ: ผู้เริ่มต้น ระดับกลาง และระดับสูง ขอไฟล์โดยอัตโนมัติหากไม่มีไฟล์ที่ให้ไว้ พร้อมการจับคู่รายการแบบมีหมายเลขเพื่อการเลือกที่รวดเร็ว ขยายไฟล์ได้สูงสุด 125% โดยใช้เฉพาะความคิดเห็นเชิงการศึกษา (ขีดจำกัดสูงสุด: 400 บรรทัดใหม่; 300 บรรทัดสำหรับไฟล์ที่มีมากกว่า 1,000 บรรทัด) รักษาการเข้ารหัสไฟล์ รูปแบบการเยื้อง ความถูกต้องของไวยากรณ์ และ...
official
adobe-illustrator-scripting
github
เขียน ดีบัก และปรับสคริปต์อัตโนมัติของ Adobe Illustrator ให้เหมาะสมโดยใช้ ExtendScript (JavaScript/JSX) ใช้เมื่อสร้างหรือแก้ไขสคริปต์ที่จัดการ...
official
agent-governance
github
นโยบายเชิงประกาศ การจำแนกเจตนา และเส้นทางการตรวจสอบสำหรับควบคุมการเข้าถึงเครื่องมือและพฤติกรรมของเอเจนต์ AI นโยบายการกำกับดูแลที่ประกอบได้กำหนดเครื่องมือที่อนุญาต/บล็อก ตัวกรองเนื้อหา การจำกัดอัตรา และข้อกำหนดการอนุมัติ — จัดเก็บเป็นคอนฟิกูเรชัน ไม่ใช่โค้ด การจำแนกเจตนาเชิงความหมายตรวจจับพรอมต์อันตราย (การขโมยข้อมูล การยกระดับสิทธิ์ การฉีดพรอมต์) ก่อนการดำเนินการเครื่องมือโดยใช้สัญญาณตามรูปแบบ ตัวตกแต่งการกำกับดูแลระดับเครื่องมือบังคับใช้นโยบายที่ฟังก์ชัน...
official