Top Comment [RE: มีใคร Dev ด้วย Window 10 WSL บ้างครับ]
tech stack ผมใช้คล้ายๆท่านนะ ตอนนี้ผม dev บน windows 10 + wsl2 ส่วนตัวผมไม่เจอปัญหาอะไรครับ
ไล่ทีละอันแบบคร่าวๆละกันนะครับ
vscode
ใช้ได้ปกติเลยครับ ถ้าเปิดจาก wsl directory เดียวมันลง wsl plugin ให้เองครับ สะดวกมากไม่ปัญหาอะไรนะ
docker
support wsl แล้วครับ สามารถเปิด feature wsl2 integration ได้ครับ ยังไม่ได้ลองกะ kubenetes แหะ อันนี้จะตอบไม่ได้
terminal
ผมใช้ windows terminal เพราะมัน smooth สวย customize ได้เยอะ และมันเป็นของ ms เอง, shell ผมใช้ของ fish แต่ zsh ก็ไม่มีปัญหาครับ ลองแล้วเหมือนกัน แล้วแต่ถนัดเลย
linux distro
อันนี้แล้วแต่ท่านจะเลือกเลย เห็นมีหลายตัว ผมใช้แค่ 2 ตัวคือ ubuntu, wlinux(pegwin) แต่จับ wlinux เป็นหลัก เพราะขี้เกียจมานั่ง setup หลายๆอย่างฮะ ซื้อเวลา แต่ ubuntu ที่ผมใช้ก็ไม่มีปัญหานะ
runtime management
ผมใช้ asdf tool ใน brew ใช้ control runtime version อันนี้ก็ไม่มีปัญหาครับ
มาถึงปัญหาที่ผมเจอบ้าง
1. git plugin + window path
.
คือ ถ้าจะ dev บน window path หมายถึงตัว code / repos อยู่ใน windows path เช่น /c/xxx, ด้วย wsl + (zsh|fish + git plugin) จะเจอปัญหาเวลาเข้าไปที่ repo หรือ directory นั้นมันจะค้างครับ หรือหน่วงไปสักพักใหญ่เลย
ผมเลยแก้โดยที่มา dev ใน wsl path แทนจบครับ dev ได้ปกติ ถ้าอยากจะเปิดผ่าน explorer ค่อย map drive มาที่ wsl path แทนก็ได้
2. wsl network
.
ที่เจอคือ เวลา dev ใน wsl แล้วมีการ binding port ไว้ แล้วเราต้อง access จาก windows side (host) โดยปกติเราสามารถใช้ผ่าน localhost, ::1 ได้เลยใช่ไหมครับ แต่บางทีถ้าเกิดเราปิดเครื่อง หรือบางที hyper v มันหยุดทำงานไป ผมเข้าใจว่าเวลาที่มัน start wsl distro (container) ขึ้นมาใหม่ มันจะได้ private ip มาอีกชุด ซึ่งบางทีมันไม่ได้ update private ip นี้ให้เราครับ จะเจอปัญหาเข้าไม่สามารถ access localhost ผ่าน port จาก host side ได้
แก้ปัญหาโดย เปิด powershell แล้วพิมพ์ wsl --terminate ครับ
3. file permission
.
เวลาใช้ copy, write file จาก windows ไปยัง wsl path หรือสลับกันจาก wsl ไป windows (อันนี้ผมจำไม่ได้นะว่าขาไหน) จะเจอปัญหา permission denied
วิธีแก้คือ ต้องแก้ umask ใน /etc/wsl.conf (ใน wsl distro)
ผมใช้ config ตามนี้
Spoil
[automount]
enabled = true
options = "metadata,uid=1000,gid=1000,umask=0022,fmask=11,case=off"
mountFsTab = true
crossDistro = true
[filesystem]
umask = 0022
ที่ยังไม่ลอง
gpu passthrough มายัง wsl ครับ
คิดว่าน่าจะครบแล้วนะครับ ถ้าติดตรงไหน ลองถามมาก็ได้ครับ จะได้ตอบได้ตรงจุด