เกี่ยวกับ
Container รันแอปของคุณจาก image และเพิ่ม Instance เมื่อมีคนใช้มากขึ้น จนลดเหลือศูนย์เมื่อไม่มีใครเรียก (--min-instances 0) ทุกการ Deploy สร้าง Revision ใหม่ Revision ล่าสุดได้รับ traffic ทั้งหมด และคุณส่ง traffic กลับไปที่ Revision ก่อนหน้าได้ทุกเมื่อ
- จาก source (
--sourceค่าเริ่มต้น): th แพ็กโฟลเดอร์แล้วเรา build ให้ จึงไม่ต้องมี Docker ถ้ามีDockerfileจะใช้ไฟล์นั้น ถ้าไม่มี โปรเจกต์ Node.js, Python และ Go จะได้ Dockerfile ที่สร้างให้ ซึ่งแสดงใน log ของ Build ไฟล์ที่ระบุใน.thignore(ถ้าไม่มีใช้.dockerignoreถ้าไม่มีอีกใช้.gitignore) จะไม่ถูกอัปโหลด และ source ที่แพ็กแล้วมีขนาดได้ไม่เกิน 100 MB - จาก image (
--image): image ใดก็ได้ที่แพลตฟอร์ม pull ได้ หรือ image ที่คุณ push ด้วย Docker หลังรันth auth configure-docker - การตั้งค่า: การ Deploy ครั้งแรกจะสร้าง Container (ต้องมี Region) การ Deploy ครั้งต่อไปจะคงการตั้งค่าเดิม และเปลี่ยนเฉพาะพารามิเตอร์ที่คุณใส่ พารามิเตอร์ตัวแปรสภาพแวดล้อมจะแทนที่ตัวแปรทั้งชุด
- Registry: image ที่ build และ push แล้วเก็บใน Registry ของ Project ได้ 20 GB ต่อ Project image ของ 10 Revision ล่าสุดของแต่ละ Container และ image ที่มี tag จะถูกเก็บไว้ Build เข้า Registry อื่นด้วย
--repositoryและจัดการ Registry ด้วย th registry
แอปต้องฟังที่ 0.0.0.0 บนพอร์ตใน $PORT (ค่าเริ่มต้น 8080) ดูเรื่องการขยายและการเข้าถึงได้ที่ Container ทำงานอย่างไร ในศูนย์ช่วยเหลือ
คู่มือการใช้งาน
Deploy จาก source
- ในโฟลเดอร์โปรเจกต์ รัน
th container deploy api --source .(ครั้งแรกให้ใส่--regionหรือตั้งด้วยth config set region) - th จะแพ็กและอัปโหลดโฟลเดอร์ แล้วแสดง log ของ Build ใน terminal
- เมื่อ Build สำเร็จ Revision ใหม่จะถูก Deploy และแสดง URL ของบริการ
th container deploy api --source . --region bkkถ้ากด Ctrl+C ระหว่าง Build ตัว Build จะยังทำงานต่อที่ฝั่งเรา ติดตามต่อได้ด้วย th builds log <id> --follow
Deploy image และเปลี่ยนการตั้งค่า
th container deploy api --image ghcr.io/acme/api:1.4 --port 3000
th container deploy api --cpu 1 --memory 512Mi --min-instances 0 --max-instances 5 \
--set-env-vars NODE_ENV=production --secret-env API_KEY=xxxxพารามิเตอร์ที่ไม่ได้ใส่จะคงค่าปัจจุบันของบริการ --env, --set-env-vars และ --secret-env รวมกันจะแทนที่ตัวแปรทั้งหมด จึงต้องใส่ทุกตัวทุกครั้งที่เปลี่ยนตัวใดตัวหนึ่ง
ย้อนกลับไป Revision ก่อนหน้า
- ดูรายการ Revision ด้วย
th container revisions list --service apiเครื่องหมาย*คือ Revision ที่ให้บริการอยู่ - ส่ง traffic ทั้งหมดไปที่ Revision ที่ต้องการ:
th container services update-traffic api --to-revision 3 - ถ้าจะกลับไปใช้ล่าสุด ใช้
--to-revision LATEST
th container revisions list --service api
th container services update-traffic api --to-revision 3เพิ่มพื้นที่ว่างใน Registry
- ดูว่าแต่ละ repository ใช้พื้นที่เท่าไรด้วย
th container images list - ดู image ของ repository หนึ่งด้วย
th container images list apiKEPT=yesหมายถึงมี Container รัน image นั้นอยู่ หรือมี Revision เก็บไว้สำหรับย้อนกลับ - ลบ tag (
api:old-tag) ลบ image ด้วย digest (api@sha256:…) หรือลบทั้ง repository ที่ไม่มีอะไรรันอยู่
th container images list
th container images list api
th container images delete api:old-tag
th container images delete-repository old-workerคำสั่ง
| คำสั่ง | คำอธิบาย |
|---|---|
th container deploy | Deploy Container |
th container services list | แสดง Container ของ Project ปัจจุบัน |
th container services describe | แสดงการตั้งค่าและ Revision ที่ให้บริการอยู่ของ Container |
th container services logs | แสดง log บรรทัดล่าสุดของ Container |
th container services update-traffic | ส่ง traffic ทั้งหมดไปที่ Revision ก่อนหน้า (หรือใหม่กว่า) |
th container services delete | ลบ Container และทุก Revision ของ Container นั้น |
th container revisions list | แสดง Revision ของ Container เรียงจากใหม่ไปเก่า |
th container images list | ถ้าไม่ใส่ REPOSITORY จะแสดง repository ใน Registry ของ Project และพื้นที่ที่ใช้ไปจากโควตาของ Registry |
th container images delete | IMAGE คือ REPOSITORY:TAG (ลบเฉพาะ tag), REPOSITORY@sha256:DIGEST หรือ REPOSITORY@ ตามด้วยเลขฐานสิบหก 7 ตัวแรกขึ้นไปของ digest (ลบ image และทุก tag ของ image นั้น) หรือชื่อเต็ม <host>/<namespace>/REPOSITORY[:TAG|@DIGEST] |
th container images delete-repository | ลบ repository พร้อมทุก image และ tag ในนั้น |
th builds list | แสดง Build ล่าสุด 100 รายการของ Project ทั้ง Container และ Function เรียงจากใหม่ไปเก่า |
th builds log | แสดง log ของ Build --follow แสดงต่อไปจนกว่า Build จะจบ |
th builds cancel | หยุด Build ที่อยู่ในคิวหรือกำลังทำงาน |
th container deploy
Deploy Container
ไวยากรณ์
th container deploy NAME [--source DIR | --image IMAGE] [flags]เมื่อใช้ --source (ค่าเริ่มต้น ".") โฟลเดอร์จะถูกอัปโหลดและ build บน ThailandHosting โดยไม่ต้องมี Docker ในเครื่อง ใช้ Dockerfile ของโฟลเดอร์นั้น หรือ Dockerfile ที่สร้างให้สำหรับ Node.js, Go หรือ Python ไฟล์ที่ระบุใน .thignore (ถ้าไม่มีใช้ .dockerignore ถ้าไม่มีอีกใช้ .gitignore) จะไม่ถูกอัปโหลด
ถ้ายังไม่มีบริการชื่อ NAME จะสร้างบริการใหม่ (ต้องมี Region) ถ้ามีแล้วจะ Deploy เป็น Revision ใหม่ซึ่งได้รับ traffic ทั้งหมด แฟล็กที่ไม่ได้ใส่จะคงการตั้งค่าปัจจุบันของบริการ
Build จาก source เก็บ image ใน Registry หลักของ Project เป็น <host>/<project>/NAME ใส่ --repository REGISTRY/IMAGE เพื่อเก็บใน Registry อื่นของ Project แทน (ดู th registry list)
ตัวอย่าง
Build โฟลเดอร์ปัจจุบันแล้ว Deploy เป็น Container ใหม่ใน bkk
th container deploy api --source . --region bkkBuild เก็บใน Registry prod เป็น prod/api:v1.4.0
th container deploy api --source . --repository prod/api --tag v1.4.0Deploy image ที่ฟังพอร์ต 3000
th container deploy api --image ghcr.io/acme/api:1.4 --port 3000เปลี่ยนขนาดและตั้งตัวแปร
th container deploy api --cpu 0.5 --memory 512Mi --env NODE_ENV=productionลดเหลือศูนย์เมื่อว่าง และขยายได้ถึง 5 Instance
th container deploy api --min-instances 0 --max-instances 5 --concurrency 80ให้ผู้เรียกต้องใช้ Invoker token
th container deploy api --no-allow-unauthenticatedใน CI: ไม่มีคำถามยืนยัน
th container deploy api --source . --quietอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Container (บริการ) ซึ่งเป็นส่วนหนึ่งของ URL ของบริการ |
พารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--source | ข้อความ | . | โฟลเดอร์ที่จะอัปโหลดและ build |
--image | ข้อความ | Deploy image นี้แทนการ build | |
--port | ตัวเลข | 8080 | พอร์ตที่ Container ฟัง |
--cpu | ข้อความ | vCPU เช่น 0.25, 0.5, 1, 2 | |
--memory | ข้อความ | หน่วยความจำ เช่น 256Mi, 512Mi, 1Gi | |
--compute-class | ข้อความ | compute class เช่น general, economy, highcpu, highmem | |
--env | รายการ | ตัวแปรสภาพแวดล้อม KEY=VALUE (ระบุซ้ำได้) | |
--set-env-vars | รายการ | ตัวแปรสภาพแวดล้อม KEY=VALUE,KEY2=VALUE2 | |
--secret-env | รายการ | ตัวแปรสภาพแวดล้อมแบบ secret KEY=VALUE (ระบุซ้ำได้) | |
--min-instances | ตัวเลข | จำนวน Instance ต่ำสุด (0 คือลดเหลือศูนย์ได้) | |
--max-instances | ตัวเลข | จำนวน Instance สูงสุด | |
--concurrency | ตัวเลข | จำนวน request ที่แต่ละ Instance รับพร้อมกัน | |
--timeout | ข้อความ | timeout ของ request เช่น 300s หรือ 5m | |
--allow-unauthenticated | แฟล็ก | อนุญาตให้เรียกแบบสาธารณะ (--no-allow-unauthenticated ต้องใช้ Invoker token) | |
--cpu-always-allocated | แฟล็ก | คง CPU ไว้ระหว่าง request | |
--health-check-path | ข้อความ | HTTP path สำหรับ health check | |
--command | รายการ | Entrypoint คั่นด้วยจุลภาค (ระบุซ้ำได้) | |
--args | รายการ | อาร์กิวเมนต์ คั่นด้วยจุลภาค (ระบุซ้ำได้) | |
--clear-command | แฟล็ก | ใช้ entrypoint ของ image เอง | |
--clear-args | แฟล็ก | ใช้อาร์กิวเมนต์ของ image เอง | |
--dockerfile | ข้อความ | Dockerfile | path ของ Dockerfile ใน source |
--tag | ข้อความ | tag ของ image สำหรับการ build จาก source | |
--repository | ข้อความ | NAME | ที่เก็บ image ของการ build จาก source: IMAGE หรือ REGISTRY/IMAGE |
--message | ข้อความ | บันทึกที่เก็บไว้กับ Revision | |
--async | แฟล็ก | จบคำสั่งทันทีเมื่อระบบรับการ Deploy แล้ว (ใช้ได้เฉพาะกับ --image) |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th container services list
แสดง Container ของ Project ปัจจุบัน
ไวยากรณ์
th container services listตัวอย่าง
ดูรายการ Container ของ Project
th container services listพารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th container services describe
แสดงการตั้งค่าและ Revision ที่ให้บริการอยู่ของ Container
ไวยากรณ์
th container services describe NAMEตัวอย่าง
ดูการตั้งค่าและ Revision ที่ให้บริการอยู่
th container services describe apiอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Container (บริการ) ซึ่งเป็นส่วนหนึ่งของ URL ของบริการ |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th container services logs
แสดง log บรรทัดล่าสุดของ Container
ไวยากรณ์
th container services logs NAME [--lines N]ตัวอย่าง
log 200 บรรทัดล่าสุด
th container services logs api --lines 200อาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Container (บริการ) ซึ่งเป็นส่วนหนึ่งของ URL ของบริการ |
พารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--lines | ตัวเลข | 100 | จำนวนบรรทัด |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th container services update-traffic
ส่ง traffic ทั้งหมดไปที่ Revision ก่อนหน้า (หรือใหม่กว่า)
ไวยากรณ์
th container services update-traffic NAME --to-revision REVREV คือชื่อ หมายเลข หรือ ID ของ Revision หรือ LATEST
ตัวอย่าง
ย้อนกลับไป Revision 3
th container services update-traffic api --to-revision 3กลับไปใช้ Revision ล่าสุด
th container services update-traffic api --to-revision LATESTอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Container (บริการ) ซึ่งเป็นส่วนหนึ่งของ URL ของบริการ |
พารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--to-revisionจำเป็น | ข้อความ | ชื่อ หมายเลข หรือ ID ของ Revision หรือ LATEST |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th container services delete
ลบ Container และทุก Revision ของ Container นั้น
ไวยากรณ์
th container services delete NAME [--quiet]--quiet ข้ามการยืนยัน
ตัวอย่าง
ลบหลังยืนยัน
th container services delete apiลบโดยไม่ถามยืนยัน
th container services delete api --quietอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
NAMEจำเป็น | ชื่อ Container (บริการ) ซึ่งเป็นส่วนหนึ่งของ URL ของบริการ |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th container revisions list
แสดง Revision ของ Container เรียงจากใหม่ไปเก่า
ไวยากรณ์
th container revisions list --service NAMEเครื่องหมาย * คือ Revision ที่ให้บริการอยู่
ตัวอย่าง
ดูรายการ Revision โดย * คือ Revision ที่ให้บริการอยู่
th container revisions list --service apiพารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--serviceจำเป็น | ข้อความ | ชื่อบริการ |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th container images list
ถ้าไม่ใส่ REPOSITORY จะแสดง repository ใน Registry ของ Project และพื้นที่ที่ใช้ไปจากโควตาของ Registry
ไวยากรณ์
th container images list [REPOSITORY]ถ้าใส่ REPOSITORY จะแสดง image ใน repository นั้น เรียงจากใหม่ไปเก่า KEPT=yes หมายถึงมี Container รัน image นั้นอยู่ หรือมี Revision เก็บไว้สำหรับย้อนกลับ
ตัวอย่าง
repository และพื้นที่ Registry ที่ใช้
th container images listimage ของ repository api
th container images list apiอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
REPOSITORYไม่บังคับ | repository ใน Registry ของ Project ปกติเป็นชื่อเดียวกับ Container |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th container images delete
IMAGE คือ REPOSITORY:TAG (ลบเฉพาะ tag), REPOSITORY@sha256:DIGEST หรือ REPOSITORY@ ตามด้วยเลขฐานสิบหก 7 ตัวแรกขึ้นไปของ digest (ลบ image และทุก tag ของ image นั้น) หรือชื่อเต็ม <host>/<namespace>/REPOSITORY[:TAG|@DIGEST]
ไวยากรณ์
th container images delete IMAGE [--quiet]image ที่ Container รันอยู่จะลบไม่ได้ --quiet ข้ามการยืนยัน
ตัวอย่าง
ลบ tag
th container images delete api:old-tagลบ image และทุก tag ด้วย digest
th container images delete api@3f2c9a1อาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
IMAGEจำเป็น | REPOSITORY:TAG, REPOSITORY@sha256:DIGEST, REPOSITORY@ ตามด้วยเลขฐานสิบหก 7 ตัวแรกขึ้นไปของ digest หรือชื่อเต็ม <host>/<namespace>/REPOSITORY… |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th container images delete-repository
ลบ repository พร้อมทุก image และ tag ในนั้น
ไวยากรณ์
th container images delete-repository REPOSITORY [--quiet]ลบไม่ได้ถ้ามี Container รัน image ใด image หนึ่งของ repository นั้นอยู่ --quiet ข้ามการยืนยัน
ตัวอย่าง
ลบ repository ที่ไม่มีอะไรรันอยู่
th container images delete-repository old-workerอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
REPOSITORYจำเป็น | repository ใน Registry ของ Project ปกติเป็นชื่อเดียวกับ Container |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th builds list
แสดง Build ล่าสุด 100 รายการของ Project ทั้ง Container และ Function เรียงจากใหม่ไปเก่า
ไวยากรณ์
th builds list [--status STATUS] [--kind container|function] [--repository REPOSITORY]REPOSITORY คือที่เก็บ image (IMAGE ใน Registry หลัก หรือ REGISTRY/IMAGE ใน Registry อื่น) DEPLOYED TO คือบริการที่ Revision ใช้ image นั้น image removed หมายถึง image ถูก Cleanup หรือลบออกจาก Registry แล้ว
ตัวอย่าง
Build ที่อยู่ในคิวหรือกำลังทำงาน
th builds list --status activeBuild ของ Function ที่ล้มเหลว
th builds list --kind function --status failedBuild ล่าสุด 100 รายการ ทั้ง Container และ Function
th builds listเฉพาะ Build ที่เก็บใน api
th builds list --repository apiพารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--status | ข้อความ | เฉพาะ Build ที่ active (อยู่ในคิวหรือกำลังทำงาน), queued, running, succeeded, failed หรือ cancelled | |
--kind | ข้อความ | เฉพาะ Build ของ container หรือ function | |
--repository | ข้อความ | เฉพาะ Build ที่เก็บใน repository นี้ |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th builds log
แสดง log ของ Build --follow แสดงต่อไปจนกว่า Build จะจบ
ไวยากรณ์
th builds log ID [--follow]ตัวอย่าง
ติดตาม Build จนจบ
th builds log <build-id> --followอาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
IDจำเป็น | Build ID ตามที่ th container deploy หรือ th builds list แสดง |
พารามิเตอร์
| ชื่อ | ชนิด | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|---|
--follow | แฟล็ก | แสดงต่อไปจนกว่า Build จะจบ |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet
th builds cancel
หยุด Build ที่อยู่ในคิวหรือกำลังทำงาน
ไวยากรณ์
th builds cancel IDตัวอย่าง
หยุด Build ที่อยู่ในคิวหรือกำลังทำงาน
th builds cancel <build-id>อาร์กิวเมนต์ตามตำแหน่ง
| ชื่อ | คำอธิบาย |
|---|---|
IDจำเป็น | Build ID ตามที่ th container deploy หรือ th builds list แสดง |
พารามิเตอร์ส่วนกลาง
คำสั่งนี้รับพารามิเตอร์ส่วนกลางด้วย: --project, --region, --endpoint, --format, --quiet