ข้อกำหนดการรันคอนเทนเนอร์
กฎที่อิมเมจของแอปคอนเทนเนอร์ต้องทำตาม ส่วนที่แพลตฟอร์มปรับได้จะปรับให้ และแสดงประกาศไว้ในหน้าเวอร์ชัน
กฎ#
| รายการ | ข้อกำหนด | ถ้าไม่เป็นไปตามข้อกำหนด |
|---|---|---|
| คำสั่งเริ่มต้น | ต้องมี CMD หรือ ENTRYPOINT | เวอร์ชันถูกปฏิเสธ |
| พอร์ต | ให้บริการ HTTP ที่ $PORT | เลือกตามลำดับ การตั้งค่า → EXPOSE → 8080 ดูการตั้งค่าแอป |
| แพลตฟอร์ม | linux/amd64 | การพุชอิมเมจแพลตฟอร์มอื่นถูกปฏิเสธ |
| ผู้ใช้ | แนะนำให้ตั้ง USER ที่ไม่ใช่ root | ถ้าเป็น root หรือไม่ได้ตั้ง จะรันด้วย uid 10001 กลุ่ม 0 ส่วน USER ที่ไม่มีในอิมเมจจะถูกปฏิเสธ |
| ระบบไฟล์ | อ่านอย่างเดียว ยกเว้น /tmp | การเขียนที่อื่นจะล้มเหลว |
| ข้อมูลรับรองคลาวด์ | แพลตฟอร์มไม่ได้ให้ | ใช้ความลับของแอปเพื่อเชื่อมต่อบริการภายนอก |
เมื่ออิมเมจรันด้วย uid 10001 ไฟล์ที่อิมเมจอ่านต้องให้กลุ่ม 0 อ่านได้
ประกาศ#
สิ่งที่แพลตฟอร์มปรับจะแสดงเป็นประกาศในหน้าเวอร์ชันและแท็บ ตรวจสอบ ของอิมเมจ เครื่องมือ AI อ่านรหัสเดียวกันได้จากสถานะการดีพลอย
| รหัส | ความหมาย | สิ่งที่ต้องทำ |
|---|---|---|
imageUserForced | อิมเมจรันด้วย root จึงเปลี่ยนไปรันด้วย uid 10001 | ไม่ต้องทำอะไร ถ้าต้องการให้ประกาศหายไป ให้ตั้ง USER ที่ไม่ใช่ root ใน Dockerfile |
imagePortFromExpose | แอปรอรับที่พอร์ตเดียวที่อิมเมจ EXPOSE | ไม่ต้องทำอะไร |
imagePortsAmbiguous | อิมเมจ EXPOSE หลายพอร์ตและไม่มี 8080 จึงรันที่ 8080 ซึ่งมักไม่ใช่พอร์ตที่เซิร์ฟเวอร์รอรับ | เลือกพอร์ตที่ถูกต้องใน ตั้งค่า › การตั้งค่าการทำงาน › พอร์ต แล้วรีสตาร์ตบริการ หรือให้ Dockerfile EXPOSE เฉพาะพอร์ตนั้น |
อิมเมจที่เขียนไฟล์ตอนเริ่มทำงาน#
บางอิมเมจเขียนไฟล์นอก /tmp ตอนเริ่มทำงาน เช่น nginx:alpine เขียนที่ /var/cache/nginx จึงเริ่มไม่ได้บนระบบไฟล์แบบอ่านอย่างเดียว ให้ใช้อิมเมจที่ไม่ต้องเขียนไฟล์ หรือย้ายตำแหน่งที่เขียนไปที่ /tmp
FROM nginxinc/nginx-unprivileged:alpine
COPY dist/ /usr/share/nginx/html/แค่ให้บริการไฟล์สแตติก?
ให้ดีพลอยเป็นเว็บไซต์แบบสแตติกแทน ไม่ต้องรัน nginx เอง