Crescendo Lab เอกสาร ดีพลอย
ไทย
สมัครใช้งาน

push อิมเมจ Docker แล้วดีพลอย

ติดตั้งและลงชื่อเข้าใช้ agentlab CLI (alpha) แล้ว docker push อิมเมจ linux/amd64 ไปยังรีจิสทรีขององค์กร และดีพลอยเป็นเวอร์ชันของโปรเจกต์ เฉพาะแพ็กเกจชำระเงิน

อัปเดตล่าสุด
ดู Markdown เปิดใน Claude เปิดใน ChatGPT

ก่อนเริ่มต้น#

  • แพ็กเกจ Pro, Team หรือ Business แพ็กเกจ Free ไม่มีรีจิสทรีอิมเมจ ให้ดีพลอยจากซอร์สโค้ดหรือจาก Dockerfileแทน
  • บทบาทที่ดีพลอยได้
  • Docker และ Node.js 24 ขึ้นไปสำหรับ CLI CLI ทำงานบน macOS, Linux และ Windows ทั้ง x64 และ arm64

1. ติดตั้ง CLI#

sh
npm install --global @crescendolab/agentlab-cli@alpha
agentlab --version

CLI ยังเป็นรุ่น alpha

คำสั่งและการทำงานอาจเปลี่ยนก่อนออกรุ่นเสถียร ให้ติดตั้งด้วยแท็ก alpha ตามด้านบน

บน Windows ให้อนุญาตสคริปต์ติดตั้งของแพ็กเกจ สคริปต์จะวาง docker-credential-agentlab.exe ไว้ข้างไฟล์คำสั่งของ npm เพื่อให้ Docker หาเจอ

2. ลงชื่อเข้าใช้และตั้งค่า Docker#

sh
agentlab login
agentlab auth configure-docker
agentlab status

agentlab login จะเปิดเบราว์เซอร์ ให้ลงชื่อเข้าใช้และเลือกองค์กร agentlab auth configure-docker จะเพิ่มตัวช่วยข้อมูลรับรองของ Agent Lab ลงในการตั้งค่า Docker เพื่อให้ docker push ลงชื่อเข้าใช้ในนามคุณ ไม่ต้อง docker login agentlab status แสดงบัญชี องค์กร และเวลาที่การลงชื่อเข้าใช้หมดอายุ

การลงชื่อเข้าใช้หนึ่งครั้งใช้กับองค์กรเดียว หากต้องการเปลี่ยนองค์กร ให้รัน agentlab login อีกครั้ง

3. บิลด์และ push#

พาธของอิมเมจคือ registry.agentlab.cresclab.com/<id องค์กร>/<ชื่อ>:<แท็ก> id องค์กรเป็น UUID คำสั่งใน รีจิสทรีอิมเมจ › วิธีตั้งค่า ใส่ไว้ให้แล้ว

sh
docker build --platform linux/amd64 -t registry.agentlab.cresclab.com/<id องค์กร>/orders-api:v1 .
docker push registry.agentlab.cresclab.com/<id องค์กร>/orders-api:v1

ให้บิลด์เป็น linux/amd64 อิมเมจของแพลตฟอร์มอื่นจะถูกปฏิเสธตอน push บน Mac ที่ใช้ชิป Apple ต้องใส่ --platform linux/amd64

หลัง push อิมเมจจะถูกตรวจตามข้อกำหนดการรันคอนเทนเนอร์ และสแกนหาช่องโหว่ถ้าเปิดการสแกนไว้ การตรวจสอบ จะแสดง กำลังตรวจสอบ แล้วเป็น ผ่าน มีคำเตือน หรือ ถูกปฏิเสธ การ push ไม่เปลี่ยนเวอร์ชันที่เผยแพร่อยู่

4. ดีพลอยอิมเมจ#

  1. เปิดแท็บ ดีพลอย ของโปรเจกต์ ใน ดีพลอยเวอร์ชันใหม่จาก ให้เลือก อิมเมจ
  2. เลือก ที่เก็บ และ แท็กหรือ digest แล้วเลือก deploy อิมเมจ

หรือเปิดที่เก็บจาก รีจิสทรีอิมเมจ แล้วใช้ ดีพลอยไปที่โปรเจกต์

แท็กจะถูกแปลงเป็น digest ตอนสร้างเวอร์ชัน การ push แท็กเดิมอีกครั้งภายหลังจึงไม่เปลี่ยนเวอร์ชันนั้น ถ้ามีเพียงสภาพแวดล้อมจริง (production) เวอร์ชันจะเผยแพร่เองเมื่อผ่านการตรวจสอบ ถ้ามีหลายสภาพแวดล้อม คุณเลือกเวลาเผยแพร่ในแท็บ ดีพลอย (เวอร์ชัน) อิมเมจที่ถูกปฏิเสธดีพลอยไม่ได้ ส่วนอิมเมจที่ มีคำเตือน ต้องรอให้มีคนยืนยัน

push จาก CI#

ใน CI ให้ใช้ robot token แทน CLI เจ้าของหรือผู้ดูแลสร้างได้ที่ การตั้งค่าการดีพลอย › Robot token token แสดงเพียงครั้งเดียว ใช้ได้เฉพาะ push และเป็นขององค์กร ไม่ใช่ของคนที่สร้าง

sh
echo "$AGENTLAB_ROBOT_TOKEN" | docker login registry.agentlab.cresclab.com -u agentlab --password-stdin
docker push registry.agentlab.cresclab.com/<id องค์กร>/orders-api:$GIT_SHA

ระบบไม่ตรวจชื่อผู้ใช้ เพิกถอน token ได้ที่เดียวกัน

สิ่งที่อิมเมจต้องทำ#

อิมเมจที่ push และอิมเมจที่บิลด์จาก Dockerfile ใช้กฎเดียวกัน รายการทั้งหมดอยู่ในข้อกำหนดการรันคอนเทนเนอร์

กฎข้อกำหนด
แพลตฟอร์มlinux/amd64 เท่านั้น
คำสั่งเริ่มต้นมี CMD หรือ ENTRYPOINT
พอร์ตให้บริการ HTTP ที่ $PORT พอร์ตมาจากการตั้งค่าพอร์ตของโปรเจกต์ ถ้าไม่มีใช้พอร์ตเดียวที่อิมเมจ EXPOSE ถ้าไม่มีใช้ 8080
ผู้ใช้แนะนำ USER ที่ไม่ใช่ root ถ้าเป็น root หรือไม่มี USER จะรันเป็น uid 10001 กลุ่ม 0
ระบบไฟล์อ่านอย่างเดียว ยกเว้น /tmp
ขนาดไม่เกิน 2.5 GiB

สิ่งที่เก็บไว้#

  • ที่เก็บละ 5 เวอร์ชัน เมื่อการ push หรือบิลด์ทำให้มีเวอร์ชันที่ 6 อิมเมจที่เก่าที่สุดซึ่งไม่มีอะไรใช้จะถูกลบ อิมเมจถือว่าใช้อยู่เมื่อกำลังเผยแพร่ อยู่ใน 5 เวอร์ชันล่าสุดของโปรเจกต์ หรือถูกงานตามกำหนดเวลาใช้ ถ้าทุกอิมเมจในที่เก็บถูกใช้อยู่ การ push จะถูกปฏิเสธ
  • พื้นที่จัดเก็บตามแพ็กเกจ: Pro 50 GB, Team 250 GB, Business ตามสัญญา
  • การสแกนช่องโหว่ของอิมเมจที่ push มีใน Team และ Business ปิดเป็นค่าเริ่มต้น เปิด สแกนอิมเมจที่ push ใน การตั้งค่าการดีพลอย
  • โปรเจกต์ที่บิลด์จากซอร์สโค้ด ก็เก็บอิมเมจไว้ที่นี่ ในที่เก็บที่ตั้งชื่อตามโปรเจกต์
  • ลบ อิมเมจหรือทั้งที่เก็บได้จาก รีจิสทรีอิมเมจ (เฉพาะผู้ดูแล) อิมเมจที่ใช้อยู่ลบไม่ได้
  • ไม่รองรับการ pull รีจิสทรีรับเฉพาะการ push เพื่อดีพลอย docker pull จะถูกปฏิเสธ

คำสั่ง CLI#

คำสั่งทำอะไร
agentlab login [--org <uuid>]ลงชื่อเข้าใช้ผ่านเบราว์เซอร์ --org เลือกองค์กรไว้ล่วงหน้า
agentlab auth configure-dockerให้ Docker ใช้ตัวช่วยข้อมูลรับรองของ Agent Lab กับรีจิสทรี
agentlab status [--json]บัญชีที่ลงชื่อเข้าใช้ องค์กร และเวลาที่การลงชื่อเข้าใช้หมดอายุ
agentlab logoutออกจากระบบ และลบการลงชื่อเข้าใช้กับข้อมูลรับรองรีจิสทรีที่เก็บในเครื่องนี้
  • การลงชื่อเข้าใช้ถูกเก็บใน keychain ของระบบ หรือใน ~/.config/agentlab/credentials.json (สิทธิ์ 0600) เมื่อไม่มี keychain
  • เจ้าของและผู้ดูแลปิด อนุญาตให้ลงชื่อเข้าใช้ด้วย agentlab CLI ได้ใน การตั้งค่าการดีพลอย แล้ว CLI ที่ลงชื่อเข้าใช้อยู่จะหยุดทำงานในไม่ช้า CLI ที่ลงชื่อเข้าใช้อยู่ แสดงทุกการลงชื่อเข้าใช้ พร้อม เพิกถอนการลงชื่อเข้าใช้ ของแต่ละรายการ
  • ถอนการติดตั้ง CLI: agentlab logout แล้ว npm uninstall --global @crescendolab/agentlab-cli

เมื่อ push ไม่สำเร็จ#

สิ่งที่เห็นสาเหตุและวิธีแก้
unauthorizedรัน agentlab login อีกครั้ง ถ้าเคย docker login กับรีจิสทรีนี้ Docker จะใช้ข้อมูลนั้นก่อน: docker logout registry.agentlab.cresclab.com
denied ที่พูดถึงแพ็กเกจแพ็กเกจไม่มีรีจิสทรีอิมเมจ หรือพื้นที่จัดเก็บเต็ม เจ้าของหรือผู้ดูแลอัปเกรดได้ที่ การตั้งค่า › แพ็กเกจและการชำระเงิน
denied ที่พูดถึงแพลตฟอร์มอิมเมจไม่ใช่ linux/amd64 บิลด์ใหม่ด้วย --platform linux/amd64
denied ที่พูดถึงขีดจำกัดเวอร์ชันทุกอิมเมจในที่เก็บถูกใช้อยู่ ดีพลอยเวอร์ชันที่ใหม่กว่าก่อน หรือ push ไปที่เก็บใหม่
ถูกปฏิเสธ หลัง pushอิมเมจผิดกฎข้อใดข้อหนึ่งด้านบน ผลการตรวจสอบจะบอกว่าข้อไหน