การเชื่อมต่อ Code Project กับ Docker Container ที่ใช้ Docker Volumes
ที่มา/ปัญหา
เพื่อให้การใช้งาน Docker Volumes ร่วมกับโปรแกรม Cursor และ Git Azure ได้อย่างมีประสิทธิภาพจึงต้องทำการเชื่อมต่อข้อมูลไฟล์ Project กับ Container และใช้ SSH ในการเชื่อมต่อโดยมีขั้นตอนการทำดังต่อไปนี้
สิ่งที่จำเป็นและต้องเตรียม
๑. Docker Desktop
๒. Docker Container
๓. Extension SFTP ของ Cursor หรือ VS Code
ขั้นตอนการติดตั้งและใช้งาน
๑. ติดตั้ง OpenSSH Server โดยเข้าไปที่ Container Exec แล้วลองพิมพ์ ls ดูไฟล์ Project ว่าอยู่ถูกที่ไหม จากนั้นพิมพ์คำสั่งดังนี้ ถ้าเรียบร้อยจะเห็นข้อความว่า sshd is running.
apt-get update && apt-get install -y openssh-server
mkdir /var/run/sshd
echo ‘root:dockerpwd’ | chpasswd
sed -i ‘s/#PermitRootLogin prohibit-password/PermitRootLogin yes/’ /etc/ssh/sshd_config
service ssh start
service ssh status


๒. ติดตั้ง Extension SFTP ของ Cursor หรือ VS Code โดยเปิด Editor ไปที่ Extension ค้นหาคำว่า SFTP แล้วกด Install เมื่อติดตั้งเรียบร้อยให้ไปที่ช่องค้นหาตรงกลางแล้วเลือก Show and Run Commands แล้วพิมพ์คำว่า SFTP แล้วเลือก SFTP:config



เมื่อเลือก SFTP:config แล้วจะได้ไฟล์ config เริ่มต้นดังนี้

ให้แก้ไขไฟล์ config ใหม่โดย name ให้ตั้งชื่อตาม container เพื่อจะได้ไม่สับสน port ให้ใส่ตาม port sftp ที่สร้างตอน docker run ถ้าไม่ได้กำหนดไว้ ให้ใส่ port 22 password ดูจากหัวข้อ 4.2.1. ถ้าไม่ได้เปลี่ยนก็ใช้ตามนี้ได้เลย uploadOnSave เปลี่ยนเป็น true เพื่อให้แก้ไขไฟล์เมื่อ save ดังตัวอย่าง

{
“host”: “localhost”,
“protocol”: “sftp”,
“port”: 2007,
“username”: “root”,
“password”: “dockerpwd”,
“remotePath”: “/var/www/html”,
“uploadOnSave”: true,
“ignore”: [“.vscode”, “.git”, “.DS_Store”],
“watcher”: {
“files”: “**/*”,
“autoUpload”: true,
“autoDelete”: true
}

ลองแก้ไขไฟล์แล้วกด save เสร็จแล้วคลิกเลือก output ทางซ้ายล่าง แล้วเลือก sftp ทางขวาถ้าใน output มีคำว่า local -> remote แสดงว่าใช้งาน sftp ได้แล้ว

ข้อควรระวังการใช้งานเมื่อมีการ pull git หรือรัน composer เราจะต้องใช้คำสั่งดังนี้ทุกครั้ง กรณี pull git เมื่อ pull git เสร็จแล้วให้ไปที่ช่องค้นหาตรงกลางแล้วพิมพ์ >SFTP แล้วเลือก Sync Local -> Remote

กรณี รัน composer หรือ update composer เสร็จแล้วให้ไปที่ช่องค้นหาตรงกลางแล้วพิมพ์ >SFTP แล้วเลือก Sync Remote -> Local

ผลลัพธ์ที่ได้
โปรแกรม Cursor หรือ VS Code สามารถทำงานได้คล้ายกับการใช้ Bind Mounts ใน Docker Desktop โดยการแก้ไขไฟล์เพื่อเปลี่ยนแปลงข้อมูลหน้าเว็บ ถึงเราจะเปลี่ยนมาใช้ Docker Volumes แทนแต่เราก็ยังคงใช้งาน Git Azure ได้ตามเดิม ซึ่งอาจจะมีขั้นตอนบางอย่างที่ยุ่งยากเพราะต้อง Sync ไปมาระหว่าง Local กับ Remote แต่ก็มี watcher ช่วยตรวจสอบไฟล์และอัปเดตได้ในระดับหนึ่งแล้ว ถือเป็นอีกทางเลือกสำหรับผู้ที่ต้องการความเร็วในการโหลด Web Application
Tag:pantakarn
