{"id":13890,"date":"2026-04-30T14:58:13","date_gmt":"2026-04-30T07:58:13","guid":{"rendered":"https:\/\/km.ict.buu.ac.th\/?p=13890"},"modified":"2026-04-30T14:58:14","modified_gmt":"2026-04-30T07:58:14","slug":"%e0%b8%81%e0%b8%b2%e0%b8%a3%e0%b9%80%e0%b8%8a%e0%b8%b7%e0%b9%88%e0%b8%ad%e0%b8%a1%e0%b8%95%e0%b9%88%e0%b8%ad-code-project-%e0%b8%81%e0%b8%b1%e0%b8%9a-docker-container-%e0%b8%97%e0%b8%b5%e0%b9%88","status":"publish","type":"post","link":"http:\/\/km.ict.buu.ac.th\/?p=13890","title":{"rendered":"\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d Code Project \u0e01\u0e31\u0e1a Docker Container \u0e17\u0e35\u0e48\u0e43\u0e0a\u0e49 Docker Volumes"},"content":{"rendered":"<p><strong>\u0e17\u0e35\u0e48\u0e21\u0e32\/\u0e1b\u0e31\u0e0d\u0e2b\u0e32<\/strong><\/p><p>    \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Docker Volumes \u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 Cursor \u0e41\u0e25\u0e30 Git Azure \u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e1f\u0e25\u0e4c Project \u0e01\u0e31\u0e1a Container \u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49 SSH \u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e42\u0e14\u0e22\u0e21\u0e35\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e14\u0e31\u0e07\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e19\u0e35\u0e49<\/p><p><strong>\u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e25\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21<\/strong><\/p><p>    \u0e51. Docker Desktop<br>    \u0e52. Docker Container<br>    \u0e53. Extension SFTP \u0e02\u0e2d\u0e07 Cursor \u0e2b\u0e23\u0e37\u0e2d VS Code<\/p><p><strong>\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19<\/strong><\/p><p>    \u0e51. \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 OpenSSH Server \u0e42\u0e14\u0e22\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e17\u0e35\u0e48 Container Exec \u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c ls \u0e14\u0e39\u0e44\u0e1f\u0e25\u0e4c Project \u0e27\u0e48\u0e32\u0e2d\u0e22\u0e39\u0e48\u0e16\u0e39\u0e01\u0e17\u0e35\u0e48\u0e44\u0e2b\u0e21 \u0e08\u0e32\u0e01\u0e19\u0e31\u0e49\u0e19\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49 \u0e16\u0e49\u0e32\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e08\u0e30\u0e40\u0e2b\u0e47\u0e19\u0e02\u0e49\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e27\u0e48\u0e32 sshd is running.<br>    apt-get update &amp;&amp; apt-get install -y openssh-server<br>    mkdir \/var\/run\/sshd<br>    echo &#8216;root:dockerpwd&#8217; | chpasswd<br>    sed -i &#8216;s\/#PermitRootLogin prohibit-password\/PermitRootLogin yes\/&#8217; \/etc\/ssh\/sshd_config<br>    service ssh start<br>    service ssh status<br><\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"987\" height=\"376\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/1-1.png\" alt=\"\" class=\"wp-image-13931\" \/><\/figure><\/div><div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1001\" height=\"612\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/2-1.png\" alt=\"\" class=\"wp-image-13932\" \/><\/figure><\/div><p>    \u0e52. \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 Extension SFTP \u0e02\u0e2d\u0e07 Cursor \u0e2b\u0e23\u0e37\u0e2d VS Code \u0e42\u0e14\u0e22\u0e40\u0e1b\u0e34\u0e14 Editor \u0e44\u0e1b\u0e17\u0e35\u0e48 Extension \u0e04\u0e49\u0e19\u0e2b\u0e32\u0e04\u0e33\u0e27\u0e48\u0e32 SFTP \u0e41\u0e25\u0e49\u0e27\u0e01\u0e14 Install \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e40\u0e23\u0e35\u0e22\u0e1a\u0e23\u0e49\u0e2d\u0e22\u0e43\u0e2b\u0e49\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e0a\u0e48\u0e2d\u0e07\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e15\u0e23\u0e07\u0e01\u0e25\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01 Show and Run Commands \u0e41\u0e25\u0e49\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c\u0e04\u0e33\u0e27\u0e48\u0e32 SFTP \u0e41\u0e25\u0e49\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01 SFTP:config<\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"294\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/3-1-1024x294.png\" alt=\"\" class=\"wp-image-13933\" \/><\/figure><\/div><div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"819\" height=\"199\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/4-1.png\" alt=\"\" class=\"wp-image-13934\" \/><\/figure><\/div><div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"721\" height=\"87\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/5-1.png\" alt=\"\" class=\"wp-image-13935\" \/><\/figure><\/div><p>    \u0e40\u0e21\u0e37\u0e48\u0e2d\u0e40\u0e25\u0e37\u0e2d\u0e01 SFTP:config \u0e41\u0e25\u0e49\u0e27\u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e1f\u0e25\u0e4c config \u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49<\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"356\" height=\"367\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/6-1.png\" alt=\"\" class=\"wp-image-13936\" \/><\/figure><\/div><p>    \u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e1f\u0e25\u0e4c config \u0e43\u0e2b\u0e21\u0e48\u0e42\u0e14\u0e22 name \u0e43\u0e2b\u0e49\u0e15\u0e31\u0e49\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e15\u0e32\u0e21 container \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e08\u0e30\u0e44\u0e14\u0e49\u0e44\u0e21\u0e48\u0e2a\u0e31\u0e1a\u0e2a\u0e19 port \u0e43\u0e2b\u0e49\u0e43\u0e2a\u0e48\u0e15\u0e32\u0e21 port sftp \u0e17\u0e35\u0e48\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e15\u0e2d\u0e19 docker run \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e01\u0e33\u0e2b\u0e19\u0e14\u0e44\u0e27\u0e49 \u00a0\u0e43\u0e2b\u0e49\u0e43\u0e2a\u0e48 port 22 password \u0e14\u0e39\u0e08\u0e32\u0e01\u0e2b\u0e31\u0e27\u0e02\u0e49\u0e2d 4.2.1. \u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e01\u0e47\u0e43\u0e0a\u0e49\u0e15\u0e32\u0e21\u0e19\u0e35\u0e49\u0e44\u0e14\u0e49\u0e40\u0e25\u0e22 uploadOnSave \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e40\u0e1b\u0e47\u0e19 true \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e21\u0e37\u0e48\u0e2d save \u0e14\u0e31\u0e07\u0e15\u0e31\u0e27\u0e2d\u0e22\u0e48\u0e32\u0e07<\/p><div class=\"wp-block-image\"><figure class=\"alignright size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"366\" height=\"307\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/7-1.png\" alt=\"\" class=\"wp-image-13937\" style=\"width:382px;height:auto\" \/><\/figure><\/div><p>{<br>\u00a0\u00a0\u00a0 &#8220;host&#8221;: &#8220;localhost&#8221;,<br>\u00a0\u00a0\u00a0 &#8220;protocol&#8221;: &#8220;sftp&#8221;,<br>\u00a0\u00a0\u00a0 &#8220;port&#8221;: 2007,<br>\u00a0\u00a0\u00a0 &#8220;username&#8221;: &#8220;root&#8221;,<br>\u00a0\u00a0\u00a0 &#8220;password&#8221;: &#8220;dockerpwd&#8221;,<br>\u00a0\u00a0\u00a0 &#8220;remotePath&#8221;: &#8220;\/var\/www\/html&#8221;,<br>\u00a0\u00a0\u00a0 &#8220;uploadOnSave&#8221;: true,<br>\u00a0\u00a0\u00a0 &#8220;ignore&#8221;: [&#8220;.vscode&#8221;, &#8220;.git&#8221;, &#8220;.DS_Store&#8221;],<br>\u00a0\u00a0\u00a0 &#8220;watcher&#8221;: {<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;files&#8221;: &#8220;**\/*&#8221;,<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;autoUpload&#8221;: true,<br>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &#8220;autoDelete&#8221;: true<br>}<\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"535\" height=\"140\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/8-1.png\" alt=\"\" class=\"wp-image-13938\" \/><\/figure><\/div><p>    \u0e25\u0e2d\u0e07\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e25\u0e49\u0e27\u0e01\u0e14 save \u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e04\u0e25\u0e34\u0e01\u0e40\u0e25\u0e37\u0e2d\u0e01 output \u0e17\u0e32\u0e07\u0e0b\u0e49\u0e32\u0e22\u0e25\u0e48\u0e32\u0e07 \u0e41\u0e25\u0e49\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01 sftp \u0e17\u0e32\u0e07\u0e02\u0e27\u0e32\u0e16\u0e49\u0e32\u0e43\u0e19 output \u0e21\u0e35\u0e04\u0e33\u0e27\u0e48\u0e32 local -&gt; remote \u0e41\u0e2a\u0e14\u0e07\u0e27\u0e48\u0e32\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 sftp \u0e44\u0e14\u0e49\u0e41\u0e25\u0e49\u0e27<\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"266\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/9-1-1024x266.png\" alt=\"\" class=\"wp-image-13939\" \/><\/figure><\/div><p>    \u0e02\u0e49\u0e2d\u0e04\u0e27\u0e23\u0e23\u0e30\u0e27\u0e31\u0e07\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e21\u0e35\u0e01\u0e32\u0e23 pull git \u0e2b\u0e23\u0e37\u0e2d\u0e23\u0e31\u0e19 composer \u0e40\u0e23\u0e32\u0e08\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e43\u0e0a\u0e49\u0e04\u0e33\u0e2a\u0e31\u0e48\u0e07\u0e14\u0e31\u0e07\u0e19\u0e35\u0e49\u0e17\u0e38\u0e01\u0e04\u0e23\u0e31\u0e49\u0e07 \u0e01\u0e23\u0e13\u0e35 pull git \u0e40\u0e21\u0e37\u0e48\u0e2d pull git \u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e43\u0e2b\u0e49\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e0a\u0e48\u0e2d\u0e07\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e15\u0e23\u0e07\u0e01\u0e25\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c &gt;SFTP \u0e41\u0e25\u0e49\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01 Sync Local -&gt; Remote<\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"723\" height=\"156\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/10-1.png\" alt=\"\" class=\"wp-image-13940\" \/><\/figure><\/div><p>    \u0e01\u0e23\u0e13\u0e35 \u0e23\u0e31\u0e19 composer \u0e2b\u0e23\u0e37\u0e2d update composer \u0e40\u0e2a\u0e23\u0e47\u0e08\u0e41\u0e25\u0e49\u0e27\u0e43\u0e2b\u0e49\u0e44\u0e1b\u0e17\u0e35\u0e48\u0e0a\u0e48\u0e2d\u0e07\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e15\u0e23\u0e07\u0e01\u0e25\u0e32\u0e07\u0e41\u0e25\u0e49\u0e27\u0e1e\u0e34\u0e21\u0e1e\u0e4c &gt;SFTP \u0e41\u0e25\u0e49\u0e27\u0e40\u0e25\u0e37\u0e2d\u0e01 Sync Remote -&gt; Local<\/p><div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"722\" height=\"149\" src=\"https:\/\/km.ict.buu.ac.th\/wp-content\/uploads\/2026\/04\/11-1.png\" alt=\"\" class=\"wp-image-13941\" \/><\/figure><\/div><p><strong>\u0e1c\u0e25\u0e25\u0e31\u0e1e\u0e18\u0e4c\u0e17\u0e35\u0e48\u0e44\u0e14\u0e49<\/strong><\/p><p>    \u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 Cursor \u0e2b\u0e23\u0e37\u0e2d VS Code \u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e17\u0e33\u0e07\u0e32\u0e19\u0e44\u0e14\u0e49\u0e04\u0e25\u0e49\u0e32\u0e22\u0e01\u0e31\u0e1a\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49 Bind Mounts \u0e43\u0e19 Docker Desktop \u0e42\u0e14\u0e22\u0e01\u0e32\u0e23\u0e41\u0e01\u0e49\u0e44\u0e02\u0e44\u0e1f\u0e25\u0e4c\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2b\u0e19\u0e49\u0e32\u0e40\u0e27\u0e47\u0e1a \u0e16\u0e36\u0e07\u0e40\u0e23\u0e32\u0e08\u0e30\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e21\u0e32\u0e43\u0e0a\u0e49 Docker Volumes \u0e41\u0e17\u0e19\u0e41\u0e15\u0e48\u0e40\u0e23\u0e32\u0e01\u0e47\u0e22\u0e31\u0e07\u0e04\u0e07\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Git Azure \u0e44\u0e14\u0e49\u0e15\u0e32\u0e21\u0e40\u0e14\u0e34\u0e21 \u0e0b\u0e36\u0e48\u0e07\u0e2d\u0e32\u0e08\u0e08\u0e30\u0e21\u0e35\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e1a\u0e32\u0e07\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e17\u0e35\u0e48\u0e22\u0e38\u0e48\u0e07\u0e22\u0e32\u0e01\u0e40\u0e1e\u0e23\u0e32\u0e30\u0e15\u0e49\u0e2d\u0e07 Sync \u0e44\u0e1b\u0e21\u0e32\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07 Local \u0e01\u0e31\u0e1a Remote \u0e41\u0e15\u0e48\u0e01\u0e47\u0e21\u0e35 watcher \u0e0a\u0e48\u0e27\u0e22\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e44\u0e1f\u0e25\u0e4c\u0e41\u0e25\u0e30\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e44\u0e14\u0e49\u0e43\u0e19\u0e23\u0e30\u0e14\u0e31\u0e1a\u0e2b\u0e19\u0e36\u0e48\u0e07\u0e41\u0e25\u0e49\u0e27 \u0e16\u0e37\u0e2d\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e35\u0e01\u0e17\u0e32\u0e07\u0e40\u0e25\u0e37\u0e2d\u0e01\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e39\u0e49\u0e17\u0e35\u0e48\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e04\u0e27\u0e32\u0e21\u0e40\u0e23\u0e47\u0e27\u0e43\u0e19\u0e01\u0e32\u0e23\u0e42\u0e2b\u0e25\u0e14 Web Application<\/p><p><\/p><p><\/p><p><\/p><p><\/p><p><\/p>","protected":false},"excerpt":{"rendered":"<p>\u0e17\u0e35\u0e48\u0e21\u0e32\/\u0e1b\u0e31\u0e0d\u0e2b\u0e32 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Docker Volumes \u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 Cursor \u0e41\u0e25\u0e30 Git Azure \u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e1f\u0e25\u0e4c Project \u0e01\u0e31\u0e1a Container \u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49 SSH \u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e42\u0e14\u0e22\u0e21\u0e35\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e14\u0e31\u0e07\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e19\u0e35\u0e49 \u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e25\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21 \u0e51. Docker Desktop \u0e52. Docker Container \u0e53. Extension SFTP \u0e02\u0e2d\u0e07 Cursor \u0e2b\u0e23\u0e37\u0e2d VS Code \u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e51. \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 OpenSSH Server \u0e42\u0e14\u0e22\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e17\u0e35\u0e48 Container Exec \u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c &hellip; <\/p>\n","protected":false},"author":57,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"pmpro_default_level":"","footnotes":""},"categories":[729,689,695],"tags":[806],"class_list":["post-13890","post","type-post","status-publish","format-standard","hentry","category-explicit-knowledge","category-knowleagebase","category-developer","tag-pantakarn","pmpro-has-access"],"jetpack_featured_media_url":"","rttpg_featured_image_url":null,"rttpg_author":{"display_name":"pantakarn","author_link":"http:\/\/km.ict.buu.ac.th\/?author=57"},"rttpg_comment":0,"rttpg_category":"<a href=\"http:\/\/km.ict.buu.ac.th\/?cat=729\" rel=\"category\">Explicit Knowledge<\/a> <a href=\"http:\/\/km.ict.buu.ac.th\/?cat=689\" rel=\"category\">\u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e04\u0e27\u0e32\u0e21\u0e23\u0e39\u0e49<\/a> <a href=\"http:\/\/km.ict.buu.ac.th\/?cat=695\" rel=\"category\">\u0e0a\u0e38\u0e21\u0e0a\u0e19\u0e19\u0e31\u0e01\u0e1e\u0e31\u0e12\u0e19\u0e32<\/a>","rttpg_excerpt":"\u0e17\u0e35\u0e48\u0e21\u0e32\/\u0e1b\u0e31\u0e0d\u0e2b\u0e32 \u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e43\u0e2b\u0e49\u0e01\u0e32\u0e23\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 Docker Volumes \u0e23\u0e48\u0e27\u0e21\u0e01\u0e31\u0e1a\u0e42\u0e1b\u0e23\u0e41\u0e01\u0e23\u0e21 Cursor \u0e41\u0e25\u0e30 Git Azure \u0e44\u0e14\u0e49\u0e2d\u0e22\u0e48\u0e32\u0e07\u0e21\u0e35\u0e1b\u0e23\u0e30\u0e2a\u0e34\u0e17\u0e18\u0e34\u0e20\u0e32\u0e1e\u0e08\u0e36\u0e07\u0e15\u0e49\u0e2d\u0e07\u0e17\u0e33\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e1f\u0e25\u0e4c Project \u0e01\u0e31\u0e1a Container \u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49 SSH \u0e43\u0e19\u0e01\u0e32\u0e23\u0e40\u0e0a\u0e37\u0e48\u0e2d\u0e21\u0e15\u0e48\u0e2d\u0e42\u0e14\u0e22\u0e21\u0e35\u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e17\u0e33\u0e14\u0e31\u0e07\u0e15\u0e48\u0e2d\u0e44\u0e1b\u0e19\u0e35\u0e49 \u0e2a\u0e34\u0e48\u0e07\u0e17\u0e35\u0e48\u0e08\u0e33\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e25\u0e30\u0e15\u0e49\u0e2d\u0e07\u0e40\u0e15\u0e23\u0e35\u0e22\u0e21 \u0e51. Docker Desktop \u0e52. Docker Container \u0e53. Extension SFTP \u0e02\u0e2d\u0e07 Cursor \u0e2b\u0e23\u0e37\u0e2d VS Code \u0e02\u0e31\u0e49\u0e19\u0e15\u0e2d\u0e19\u0e01\u0e32\u0e23\u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07\u0e41\u0e25\u0e30\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19 \u0e51. \u0e15\u0e34\u0e14\u0e15\u0e31\u0e49\u0e07 OpenSSH Server \u0e42\u0e14\u0e22\u0e40\u0e02\u0e49\u0e32\u0e44\u0e1b\u0e17\u0e35\u0e48 Container Exec \u0e41\u0e25\u0e49\u0e27\u0e25\u0e2d\u0e07\u0e1e\u0e34\u0e21\u0e1e\u0e4c &hellip;","_links":{"self":[{"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=\/wp\/v2\/posts\/13890"}],"collection":[{"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=\/wp\/v2\/users\/57"}],"replies":[{"embeddable":true,"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=13890"}],"version-history":[{"count":2,"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=\/wp\/v2\/posts\/13890\/revisions"}],"predecessor-version":[{"id":13942,"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=\/wp\/v2\/posts\/13890\/revisions\/13942"}],"wp:attachment":[{"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=13890"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=13890"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/km.ict.buu.ac.th\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=13890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}