
uv 0.13.1 ปล่อย Docker image Python 3.15 แท็ก stable แล้ว
uv 0.13.1 ที่เพิ่งปล่อยเมื่อวาน (14 ตุลาคม 2026) เริ่มเผยแพร่ Docker image ที่ใช้ Python 3.15 เป็นฐานภายใต้แท็ก stable แทนที่จะเป็นแท็ก candidate อีกต่อไป https://github.com/astral-sh/uv/releases https://github.com/astral-sh/uv/pull/22421 นี่คือข่าวสำคัญสำหรับทีมพัฒนาที่ใช้ Docker กับ uv เพราะการเปลี่ยนจาก rc มาเป็น stable หมายถึง image เหล่านี้จะถูกใช้โดย default เมื่อใครก็ตาม pull ด้วยแท็ก python3.15-* โดยไม่ต้องระบุ rc อีก
การเปลี่ยนแปลงนี้เกิดขึ้นหลังจาก Python 3.15 กลายเป็นเวอร์ชัน stable จริง ๆ และ upstream base image บน Docker Hub ถูกเผยแพร่แล้ว ทำให้ทีม Astral สามารถอัปเดตการ build Docker ของ uv ได้สำเร็จ https://github.com/astral-sh/uv/pull/22421 ส่วน uv 0.13.0 เมื่อวันที่ 9 ตุลาคม เพิ่งทำให้ Python 3.15 เป็น default สำหรับการติดตั้ง Python อัตโนมัติ แต่เรื่อง Docker image stable นี้เพิ่งมาใน 0.13.1 จึงเป็นจุดที่หลายทีมต้องปรับตาม
สรุป 30 วินาที: เกิดอะไรขึ้น
uv 0.13.1 ปล่อยเมื่อ 14 ตุลาคม 2026 มีการเปลี่ยนแปลงหลักคือ “Publish Python 3.15-based uv Docker images under stable tags” https://github.com/astral-sh/uv/releases https://newreleases.io/project/pypi/uv/release/0.13.1 แท็กที่เคยเป็น python3.15-rc-* ตอนนี้กลายเป็น python3.15-* แบบ stable แล้ว
นอกจากนี้ยังเพิ่มการดาวน์โหลด CPython 3.16.0a1, เพิกเฉยต่อ Requires-Python upper bounds ในคำสั่ง pip check และ install —strict, และรายงาน missing trusted hashes ให้เห็นชัดเจนขึ้น https://github.com/astral-sh/uv/releases
ในส่วน Docker guide ระบุแท็กที่ใช้ได้ทั้งหมด เช่น ghcr.io/astral-sh/uv:python3.15-trixie, python3.15-trixie-slim, python3.15-alpine3.23 เป็นต้น https://docs.astral.sh/uv/guides/integration/docker/
ทำไมเรื่องนี้เกี่ยวกับคุณ
ถ้าคุณเป็น programmer หรือ DevOps ที่ใช้ uv ในการจัดการ Python project แล้วเอาไป build Docker image สำหรับ production หรือ CI/CD คุณต้องสนใจเรื่องนี้แน่นอน เพราะ image ที่คุณ pull ด้วยแท็ก python3.15 อาจเปลี่ยน base จาก 3.14 เป็น 3.15 โดยอัตโนมัติหลังจากนี้
สำหรับคนธรรมดาที่ไม่ได้เขียนโค้ดทุกวัน ลองคิดภาพตามนี้ ถ้าคุณเปิดร้านข้าวตามสั่ง แล้ววันหนึ่งหม้อหุงข้าวรุ่นเก่าชำรุด คุณเปลี่ยนไปใช้หม้อหุงข้าวรุ่นใหม่ที่กินไฟน้อยกว่า หุงเร็วขึ้น แต่ข้าวที่ออกมากลิ่นและรสอาจเปลี่ยนนิดหน่อย ถ้าไม่ลองหุงสัก 2-3 รอบก่อนเปิดร้าน คุณอาจเสี่ยงให้ลูกค้าบ่นได้ เหมือนกันกับการเปลี่ยน Docker base image จาก Python 3.14 เป็น 3.15 ถ้าไม่ทดสอบแอปก่อน มันอาจมี bug เล็ก ๆ ที่โผล่ขึ้นมาใน production โดยไม่รู้ตัว
เรื่องเงินก็ชัดเจน ถ้า image ใหม่ทำให้ build เร็วขึ้นหรือขนาดเล็กลง คุณประหยัดค่าใช้จ่าย cloud ได้ ถ้าเกิดปัญหาคุณอาจเสียเงิน downtime หรือต้องรีบแก้ไขดึกดื่น
ทำงานยังไง
uv มีทั้ง distroless image (มีแต่ uv ล้วน ๆ) และ derived image (มี OS + Python + uv ติดตั้งมาให้) https://docs.astral.sh/uv/guides/integration/docker/ หลังจาก PR #22421 ภาพที่ใช้ Python 3.15 จะถูก publish ด้วยแท็ก stable โดยตรง ไม่ต้องใส่ -rc อีก https://github.com/astral-sh/uv/pull/22421
แท็กที่ใช้ได้ตอนนี้ (เฉพาะที่ปรากฏในเอกสาร) ได้แก่
- ghcr.io/astral-sh/uv:python3.15-trixie
- ghcr.io/astral-sh/uv:python3.15-trixie-slim
- ghcr.io/astral-sh/uv:python3.15-alpine3.23
- ghcr.io/astral-sh/uv:python3.15-alpine
และแท็กแบบ versioned เช่น ghcr.io/astral-sh/uv:0.13.1-python3.15-trixie-slim https://docs.astral.sh/uv/guides/integration/docker/
การทำงานเหมือนการเปลี่ยนรุ่นหม้อหุงข้าวในครัวร้านตามสั่งครับ คุณมีหม้อเก่า (Python 3.14) ที่ใช้มานาน วันหนึ่งมีหม้อใหม่ (Python 3.15) ที่ประหยัดไฟกว่าและร้อนเร็วขึ้น แต่เพื่อให้ข้าวสุกเท่ากันทุกหม้อ คุณต้องลองหุงด้วยสูตรเดิมก่อน ถ้าข้าวออกมาแข็งหรือแฉะเกินไป ค่อยปรับน้ำหรือเวลา วิธีทดสอบ Docker image ก็เหมือนกัน เอาโค้ดโปรเจกต์ทั้งหมดไป build ใน container ด้วย image ใหม่ แล้วรัน test suite ทุกชุด ถ้าไม่มี error ค่อยเอาไปใช้จริง
ใน Dockerfile ควร pin ทั้ง uv version และ Python base ด้วย เช่น ghcr.io/astral-sh/uv:0.13.1-python3.15-trixie-slim แทนที่จะใช้ :latest หรือ :python3.15 ล้วน ๆ เพราะแท็กที่ไม่ pin version อาจเปลี่ยนเนื้อหาเมื่อมี release ใหม่ https://docs.astral.sh/uv/guides/integration/docker/
จุดหักมุม: Python 3.15 มาเร็วกว่าที่คิด
หลายคนอาจยังคิดว่า Python 3.15 ยังไม่ stable แต่จริง ๆ แล้ว upstream ได้ปล่อย base image stable แล้วตั้งแต่ต้นเดือนตุลาคม ทำให้ uv สามารถเลื่อนจากแท็ก rc มา stable ได้ในเวอร์ชัน 0.13.1 https://github.com/astral-sh/uv/pull/22421 นี่ทำให้ทีมที่รออัปเกรดต้องตัดสินใจเร็วขึ้นกว่าที่วางแผนไว้
เรื่องเงิน / ผลกระทบ
การใช้ image ใหม่ที่เล็กและเร็วขึ้นช่วยลดเวลา build CI ได้หลายนาทีต่อวัน สำหรับทีมเล็ก ๆ อาจไม่เห็นผลมาก แต่บริษัทที่มี pipeline วิ่งวันละหลายสิบครั้งจะประหยัดค่าใช้จ่าย cloud ได้จริง ๆ
ถ้าไม่ทดสอบดีพอและมี bug จากการเปลี่ยน Python เวอร์ชัน อาจทำให้ production ล่ม ส่งผลต่อรายได้และชื่อเสียงของธุรกิจ โดยเฉพาะเว็บขายของออนไลน์หรือแอปที่ลูกค้าใช้ทุกวัน
สำหรับ IT คน เรื่องใหม่ที่ช่วยได้คือ uv จะ ignore Requires-Python upper bounds ในโหมด —strict ทำให้บางแพ็กเกจที่ระบุ upper bound ไว้สูงเกินไปยังติดตั้งได้ https://github.com/astral-sh/uv/releases และมันจะรายงาน missing trusted hashes ให้เห็นชัด ช่วยเพิ่มความปลอดภัยโดยไม่ต้องแก้โค้ดมาก
ข้อมูลที่ยังไม่ชัด และจุดที่แหล่งข่าวพูดไม่ตรงกัน
วันที่ PR #22421 ถูก merge มีการพูดถึงทั้ง 9 ตุลาคมและ 13 ตุลาคมใน commit ต่าง ๆ https://github.com/astral-sh/uv/pull/22421 แต่ release notes ของ 0.13.1 ยืนยันชัดว่าเผยแพร่เมื่อ 14 ตุลาคม จึงถือว่า stable tags มาเต็มตัวในวันนั้น
เอกสาร Docker ระบุแท็ก python3.15-alpine3.23 และ python3.15-trixie-slim แต่ไม่ได้บอกราคาหรือมีให้บริการใน Docker Hub ประเทศไทยแบบพิเศษ จึงยังไม่ทราบว่าคนไทยจะ pull ได้เร็วแค่ไหน
uv 0.13.0 ประกาศให้ 3.15 เป็น default ตั้งแต่ 9 ตุลาคม แต่ Docker image ต้องรออีก 5 วันจึงจะ stable แบบเต็มตัว แหล่งข่าวเดียวกันแต่ช่วงเวลาต่างกันเล็กน้อย
แล้วเราควรทำอะไร
สำหรับ programmer และ DevOps
- อ่าน Docker guide ล่าสุดที่ https://docs.astral.sh/uv/guides/integration/docker/ แล้วอัปเดต Dockerfile ให้ pin ทั้ง uv version และ python base เช่น 0.13.1-python3.15-trixie-slim
- สร้าง image ทดสอบใหม่ด้วยแท็ก python3.15 แล้วรัน test suite ทั้งหมด
- ถ้าใช้ใน production ให้อัปเดต docker-compose หรือ Kubernetes manifest แล้ว monitor log 24 ชั่วโมงแรกหลัง deploy
สำหรับเจ้าของธุรกิจหรือผู้จัดการทีม IT
- ถามทีมพัฒนาว่าโปรเจกต์หลัก ๆ ใช้ Python version ไหนและ Docker image ไหน
- จัดสรรเวลา 1-2 วันสำหรับการทดสอบก่อนอัปเกรด production
- ถ้าใช้ cloud CI/CD ให้เช็คค่าใช้จ่ายหลังจากเปลี่ยน image ว่าลดลงหรือไม่
สำหรับนักเรียนหรือคนที่กำลังเรียน Python
- ลอง pull image ใหม่ด้วยคำสั่ง
docker run -it ghcr.io/astral-sh/uv:python3.15-alpine python --versionเพื่อเห็น Python 3.15 ทำงาน - ทำโปรเจกต์เล็ก ๆ แล้ว build ด้วย uv ใน Docker เพื่อฝึกการ pin version
ผมมองว่า…
ผมมองว่า การเปลี่ยนไปใช้ Python 3.15 ผ่าน Docker image stable เป็นเรื่องดีและถึงเวลาแล้ว ไม่ใช่การไล่ตาม trend แต่คือการใช้เครื่องมือที่เร็ว ปลอดภัย และประหยัดทรัพยากรมากขึ้นในชีวิตประจำวันของคนทำเว็บและแอป ทีมที่ pin version ดี ๆ จะได้ประโยชน์เต็ม ๆ ส่วนคนที่ยังใช้ :latest อาจเจอ surprise เล็ก ๆ น้อย ๆ ได้
ปิดท้าย: สิ่งที่ต้องจับตา
ต้องจับตาว่า Python 3.16.0a1 ที่เพิ่งเพิ่มเข้ามาจะมีผลต่อ package ไหนบ้าง และว่าในเดือนหน้า uv จะมี feature ไหนที่ช่วยจัดการ Docker image ได้ดีกว่านี้ โดยเฉพาะเรื่อง cache และ bytecode compilation ที่เอกสารพูดถึงไว้ https://docs.astral.sh/uv/guides/integration/docker/
Recap
- อ่าน release notes uv 0.13.1 แล้ว
- เช็ค Dockerfile ว่าป็นทั้ง uv version และ python base หรือยัง
- สร้าง test image ด้วย python3.15-trixie-slim หรือ python3.15-alpine3.23
- รัน test suite ครบทุกชุดก่อน deploy production
- อัปเดต documentation ของทีมให้ระบุแท็กที่ใช้ชัดเจน
- ติดตาม release ถัดไปของ uv และ Python 3.15 patch