<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pradist Keawborisut</title>
    <description>The latest articles on DEV Community by Pradist Keawborisut (@pradist).</description>
    <link>https://dev.to/pradist</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F403098%2Fc615f419-fcf3-4da9-8e80-5d887853a0bb.jpeg</url>
      <title>DEV Community: Pradist Keawborisut</title>
      <link>https://dev.to/pradist</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pradist"/>
    <language>en</language>
    <item>
      <title>Java display test case name when run unit tests (Maven)</title>
      <dc:creator>Pradist Keawborisut</dc:creator>
      <pubDate>Mon, 25 Dec 2023 14:18:26 +0000</pubDate>
      <link>https://dev.to/pradist/java-display-test-case-name-when-run-unit-tests-maven-3le7</link>
      <guid>https://dev.to/pradist/java-display-test-case-name-when-run-unit-tests-maven-3le7</guid>
      <description>&lt;p&gt;ช่วงนี้ได้กลับมาเขียน Java อีกครั้ง โดย project ที่ดูแลอยู่ใช้ maven เป็น dependency management และได้ลองเขียน unit test โดยใช้คำสั่งตามด้านล่าง&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mvn &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;results ของ unit test จะแสดงตามรูปด้านล่าง&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SePM4wPN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u4vq0ol08v4q6fqrkxng.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SePM4wPN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u4vq0ol08v4q6fqrkxng.png" alt="Image description" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากรูปจะพบว่า results ที่ได้จะแสดง summary แบบที่ไม่มีชื่อ test case ที่เราได้เขียนไป แล้วจะทำอย่างไร ที่จะทำให้ผลของ unit test แสดงชื่อ test case ด้วย &lt;/p&gt;

&lt;p&gt;ผมไปเจอกับ plugin ตัวหนึ่งชื่อ &lt;code&gt;maven-surefire-plugin&lt;/code&gt; plugin ตัวนี้จะแสดงชื่อ test case ที่เราได้เขียนเอาไว้ โดยเพิ่ม code เข้าไปใน pom.xml ตาม code ด้านล่าง&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;maven-surefire-plugin&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;3.2.3&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;dependencies&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;me.fabriciorby&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;maven-surefire-junit5-tree-reporter&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;1.2.1&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/dependencies&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;reportFormat&amp;gt;&lt;/span&gt;plain&lt;span class="nt"&gt;&amp;lt;/reportFormat&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/plugin&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;run test &lt;code&gt;mvn test&lt;/code&gt;&lt;br&gt;
results ของ unit test จะแสดงตามรูปด้านล่าง&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--knT75E9s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ak7xraadtxdxzenr8f7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--knT75E9s--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ak7xraadtxdxzenr8f7.png" alt="Image description" width="800" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตอนนี้จะเห็นได้ว่ามี test case มาแสดงให้เห็นแล้ว &lt;/p&gt;

&lt;p&gt;แล้วจะทำอย่างไรให้มันดูง่ายขึ้นกว่านี้ได้อีก?&lt;/p&gt;

&lt;p&gt;ไปเจอ &lt;code&gt;maven-surefire-junit5-tree-reporter&lt;/code&gt; เป็น extension ของ &lt;code&gt;maven-surefire-plugin&lt;/code&gt; โดยมันจะทำให้ test case แสดงในรูปแบบของ tree&lt;/p&gt;

&lt;p&gt;เพิ่ม code ด้านล่างไปในส่วนของ configuration ของ plugin &lt;code&gt;maven-surefire-plugin&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;reportFormat&amp;gt;&lt;/span&gt;plain&lt;span class="nt"&gt;&amp;lt;/reportFormat&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;consoleOutputReporter&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;disable&amp;gt;&lt;/span&gt;true&lt;span class="nt"&gt;&amp;lt;/disable&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/consoleOutputReporter&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;statelessTestsetInfoReporter&lt;/span&gt; &lt;span class="na"&gt;implementation=&lt;/span&gt;&lt;span class="s"&gt;"org.apache.maven.plugin.surefire.extensions.junit5.JUnit5StatelessTestsetInfoTreeReporter"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;theme&amp;gt;&lt;/span&gt;UNICODE&lt;span class="nt"&gt;&amp;lt;/theme&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/statelessTestsetInfoReporter&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;run test &lt;code&gt;mvn test&lt;/code&gt;&lt;br&gt;
results ของ unit test จะแสดงตามรูปด้านล่าง&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uaMK60eS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k3sbir9uv93cpfdpxycz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uaMK60eS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k3sbir9uv93cpfdpxycz.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากรูปจะเห็นได้ว่า test results นั้นแสดงได้อย่างสวยงาม โดยจะมีสีและ icon บอก status ด้วยว่าแต่ละ test case นั้น success หรือ fail&lt;/p&gt;

&lt;p&gt;โดยที่ &lt;code&gt;maven-surefire-junit5-tree-reporter&lt;/code&gt; สามารถเลือก theme ได้ด้วย theme ที่ผมเลือกเป็น &lt;code&gt;UNICODE&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;ถ้าจะลองเล่นไปที่ link นี้ได้เลยครับ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/fabriciorby/maven-surefire-junit5-tree-reporter"&gt;https://github.com/fabriciorby/maven-surefire-junit5-tree-reporter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตัวอย่าง &lt;a href="https://github.com/pradist/maven-examples/blob/main/fizzbuzz/pom.xml"&gt;pom.xml&lt;/a&gt; เต็มๆ&lt;/p&gt;

&lt;p&gt;หรือใครมีวิธีอื่นอีก แนะนำกันใน comment ได้เลยครับ&lt;/p&gt;

</description>
      <category>java</category>
      <category>maven</category>
    </item>
    <item>
      <title>Introduction to Container Technologies</title>
      <dc:creator>Pradist Keawborisut</dc:creator>
      <pubDate>Sat, 13 Feb 2021 06:05:39 +0000</pubDate>
      <link>https://dev.to/pradist/introduction-to-container-technologies-5afb</link>
      <guid>https://dev.to/pradist/introduction-to-container-technologies-5afb</guid>
      <description>&lt;p&gt;อ้างอิงจาก &lt;a href="https://dev.to/pradist/deploy-a-static-website-with-docker-and-nginx-31i1"&gt;บทความที่แล้ว&lt;/a&gt; ที่ไม่ได้บอกความเป็นมาของ Docker ก็เลยจะนำมาเล่า ในบนความนี้ ก่อนที่จะรู้จักกับ Docker จะขอเล่าถึงเรื่อง Container Technologies กันก่อน&lt;/p&gt;

&lt;p&gt;ก่อนอื่นถ้าเป็นสาย developer ทุกคนคงเคยได้ยินกับคำพูดที่ว่า "Code นี้ Run ที่เครื่องผม Work นะครับ" แต่มันไม่ได้ Work กับทุก Environment เช่น ในเครื่องของ developer คนอื่น หรือบน Environment อื่นๆ และจะทำยังไงให้ Code ที่เขียนสามารถ Run แล้ว Work ในทุก Environment นี่เลยเป็นที่มาของ Software Container ผู้คิดได้เปรียบเทียบ Software กับการส่งสินค้าในรูปแบบของตู้ Container ซึ่งเราไม่ต้องรู้หลอกว่าของภายในเป็นอะไรลักษณะแบบใด จะต้องใช้อุณหภูมิปกติหรือต้องแช่แข็ง แต่วิธีการส่งคือส่งแบบเดียวกัน ใช้เคนยกขนาดเดียวกัน&lt;/p&gt;

&lt;h4&gt;
  
  
  Software Container
&lt;/h4&gt;

&lt;p&gt;เป็น concept ของการสร้างสภาพแวดล้อมเฉพาะให้ซอฟต์แวร์ทำงานได้โดยไม่กวนกับซอฟต์แวร์ตัวอื่นบนระบบปฏิบัติการเดียวกัน เราสามารถเอา Container ไปรันในคอมพิวเตอร์หรือ Server เครื่องไหนก็ยังทำงานได้เหมือนเดิม โปรแกรมใน Container ยังทำงานได้ปกติไม่ผิดเพี้ยนจากเดิม โดยจะมี Docker มาเป็นตัว Engine&lt;/p&gt;

&lt;h4&gt;
  
  
  Docker
&lt;/h4&gt;

&lt;p&gt;เป็น engine ตัวหนึ่งที่มีการทำงานในลักษณะจำลองสภาพแวดล้อมขึ้นมาบนเครื่อง server เพื่อใช้ในการ run service ที่ต้องการ มีการทำงานคล้ายคลึงกับ Virtual Machine เช่น VMWare, VirtualBox, XEN, KVM แต่ข้อแตกต่างที่ชัดเจนคือ Virtual Machine ที่รู้จักกันก่อนหน้านี้นั้น เป็นการจำลองทั้ง OS เพื่อใช้งานและหากต้องการใช้งาน service ใดๆ จึงทำการติดตั้งเพิ่มเติมบน OS นั้นๆ แต่สำหรับ docker แล้วจะใช้ container ในการจำลองสภาพแวดล้อมขึ้นมา เพื่อใช้งานสำหรับ 1 service ที่ต้องการใช้งานเท่านั้น โดยไม่ต้องมีส่วนของ OS เข้าไปเกี่ยวข้องเหมือน Virtual Machines&lt;/p&gt;

&lt;h4&gt;
  
  
  Docker products
&lt;/h4&gt;

&lt;p&gt;[1] Community Edition (CE): ไม่มีค่าใช้จ่ายเหมาสำหรับผู้พัฒนา&lt;br&gt;
[2] Enterprise Edition (EE): มีค่าใช้จ่ายโดยจะเสียค่า Licence แบบรายปี มี Support ตลอด 24 ชม. เหมาะสำหรับองค์กรใหญ่ ที่ต้องการใช้ feature ของ Docker ยกตัวอย่างเช่น Tool ที่เอาไว้ Monitoring ต่างๆเพื่ออำนวยความสะดวกกับผู้ใช้งานมากขึ้น&lt;/p&gt;
&lt;h4&gt;
  
  
  วิธี Install Docker CE
&lt;/h4&gt;

&lt;p&gt;โดยสามารถติดตั้งได้ทั้ง &lt;a href="https://docs.docker.com/engine/install/" rel="noopener noreferrer"&gt;Linux&lt;/a&gt;, &lt;a href="https://docs.docker.com/docker-for-mac/install/" rel="noopener noreferrer"&gt;Mac&lt;/a&gt; และ &lt;a href="https://docs.docker.com/docker-for-windows/install/" rel="noopener noreferrer"&gt;Windows&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;วิธีตรวจสอบให้เข้าไปที่ Terminal ดังนี้แล้วพิมพ์คำสังนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ docker version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;จะแสดงรายละเอียดต่างๆ ของ Docker แสดงว่าคุณลง Docker ได้สำเร็จแล้ว&lt;/p&gt;

&lt;p&gt;ถ้าเป็น Docker เวอร์ชันใหม่ๆ จะมี Dashboard มาให้ใช้ (Docker Desktop เวอร์ชัน 2.2.0 ขึ้นไป) เพิ่มความสะดวกให้กับผู้ใช้งานมากขึ้นในการ Monitoring&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkv7npate25e3dyfw9jp8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fkv7npate25e3dyfw9jp8.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;โดยคลิกไปที่ Icon Docker แล้วเลือก Dashboard จากนั้นจะเห็นหน้าจอดังรูป&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjgcfzqmjadnhgpkcdwdf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fjgcfzqmjadnhgpkcdwdf.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากรูปจะแสดงให้เห็นว่าตอนนี้ Menu ซ้ายอยู่ที่ images จะบอกว่าในเครื่องของเรานั้นมี image อะไรอยู่บ้าง&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fulhcmkejpeb696exqlff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fulhcmkejpeb696exqlff.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เมื่อเลือก Menu Containers/Apps ก็จะแสดง Containers ทั้งหมดที่เราเคย Run ที่เห็นเป็นสีเขียวนั้นแสดงว่า Containers นั้นยัง Run อยู่ เราสามารถ Click เข้าไปดูได้แสดงดังรูปด้านล่าง&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fitg9qjbh7xkjgcjrgmx7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fitg9qjbh7xkjgcjrgmx7.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จะเห็นได้ว่าสามารถดู Logs Inspect และ Stats ต่างๆได้ว่าตอนนี้ Container ใช้ Resources ไปทั้งหมดเท่าไร&lt;/p&gt;

&lt;p&gt;ส่วน Icon ต่างๆที่อยู่มุมด้านขวาบน&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Open In Browser: สามารถเปิดบน Browser ได้ในกรณีที่ Publish Port ออกมา&lt;br&gt;
Cli: สามารถเข้าไปใช้ Command Line ใน Container ได้&lt;br&gt;
Stop: Stop Containers&lt;br&gt;
Restart: Restart Containers&lt;br&gt;
Delete: Delete Containers&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h4&gt;
  
  
  Photo
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://blog.kumina.nl/wp-content/uploads/2017/04/Benefits-of-container-technology-1200x627.jpg" rel="noopener noreferrer"&gt;https://blog.kumina.nl/wp-content/uploads/2017/04/Benefits-of-container-technology-1200x627.jpg&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  References
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://blog.kumina.nl/2017/04/the-benefits-of-containers-and-container-technology/" rel="noopener noreferrer"&gt;https://blog.kumina.nl/2017/04/the-benefits-of-containers-and-container-technology/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://medium.com/@rachatatongpagdee/docker-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3-%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99%E0%B8%AD%E0%B8%A2%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B9%84%E0%B8%A3-7e77145967b6" rel="noopener noreferrer"&gt;https://medium.com/@rachatatongpagdee/docker-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3-%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99%E0%B8%AD%E0%B8%A2%E0%B9%88%E0%B8%B2%E0%B8%87%E0%B9%84%E0%B8%A3-7e77145967b6&lt;/a&gt;&lt;/p&gt;

</description>
      <category>docker</category>
    </item>
    <item>
      <title>Deploy a Static Website with Docker and Nginx</title>
      <dc:creator>Pradist Keawborisut</dc:creator>
      <pubDate>Sat, 06 Feb 2021 11:12:09 +0000</pubDate>
      <link>https://dev.to/pradist/deploy-a-static-website-with-docker-and-nginx-31i1</link>
      <guid>https://dev.to/pradist/deploy-a-static-website-with-docker-and-nginx-31i1</guid>
      <description>&lt;p&gt;บทความนี้จะเป็นการใช้งาน Docker เบื้องต้น เหมาะสำหรับผู้เริ่มต้นใช้งาน Docker สามารถนำไปใช้สำหรับงานเล็กๆได้ เนื่องจากเป็นบทความแรก เลยขอเริ่มต้นกันแบบง่ายๆ ด้วยการนำ Static Website ไป Run บน Docker มาเริ่มกันเลย&lt;/p&gt;

&lt;p&gt;1.Pull Image ของ Nginx ลงเครื่องกันก่อนเลย&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;$ docker pull nginx:alpine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2.หลังจากมี Image ในเครื่องแล้วลองทดสอบ Run ด้วย&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;$ docker run -d --name static-web -p 8080:80 nginx:alpine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;-d Run container in background&lt;/code&gt;&lt;br&gt;
&lt;code&gt;-p Publish a container's port -p จากตัวอย่าง จะทำการ expose port 80 ใน container มาที่ port 8080 บน localhost&lt;/code&gt;&lt;br&gt;
&lt;code&gt;--name กำหนดชื่อให้ container&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;3.ลองดูว่าในเครื่องของเรานั้นมี Container อะไร Run อยู่บ้าง&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;$ docker container ls
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS         PORTS                  NAMES
181930d29e68   nginx:alpine   "/docker-entrypoint.…"   10 seconds ago   Up 9 seconds   0.0.0.0:8080-&amp;gt;80/tcp   static-web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;จะเห็นได้ว่ามี Container ชื่อ static-web Run อยู่ สามารถไปที่ Browser ลองพิมพ์ localhost:8080 จะเห็บ Static Website แสดงแบบนี้ โดยจะแสดงหน้า Default ของ Nginx &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fispvqrma3f2y93dcocjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fispvqrma3f2y93dcocjw.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.เมื่อถ้าต้องการ Edit หน้านี้แบบง่ายๆ ลองเข้าไปที่ Container ใช้คำสั่งดังนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;$ docker exec -it static-web sh
/ # vi usr/share/nginx/html/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;exec คือการเข้าไปใน container ที่กำลัง run อยู่&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;ลองแก้ข้อความให้เหลือแบบนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Welcome!&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Hello World!&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;และลอง Reload ที่ Browser อีกครั้งก็จะเห็นข้อความที่เราแก้แบบนี้&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faqfc1ef6mb9k6pdcraxv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Faqfc1ef6mb9k6pdcraxv.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;อ้าว! แล้วถ้าไม่อยากเข้าไปแก้ HTML ใน Container แบบนี้ละทำยังไงละ&lt;/p&gt;

&lt;p&gt;เราก็ใช้วิธีการ Bind mount a volume เข้าไปเลย โดยทำแบบนี้&lt;br&gt;
โดยก่อนใช้วิธีนี้เราต้องมีไฟล์ index.html ในเครื่องของเราก่อน&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ ls
index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;ls: list directory contents&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;และใช้คำสั่งนี้&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ docker run -d -v /$(pwd)/index.html:/usr/share/nginx/html/index.html -p:8080:80 —name static-web nginx:alpine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;-v Bind mount a volume จากตัวอย่างจะทำการ Bind /$(pwd)/index.html เข้าไปที่ /usr/share/nginx/html/index.html ของ Container&lt;/code&gt;&lt;br&gt;
&lt;code&gt;$(pwd) คือ full path&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;หลังจาก Run เสร็จแล้วไปที่ Browser พิมพ์ localhost:8080 ก็จะเห็นเป็น Output ของ index.html ของเรา โดยตอนนี้เราสามารถแก้อะไรใน $(pwd)/index.html ที่อยู่ในเครื่องของเราก็ได้ หลังจากนั้นก็กด Reload ที่ Browser ก็จะเห็นความเปลี่ยนแปลงตามที่เราแก้ได้เลยทันที&lt;/p&gt;

&lt;p&gt;ทั้งหมดนี้ก็เป็นวิธีง่ายๆ ในการนำ Static Website ไป Run บน Docker&lt;/p&gt;

</description>
      <category>nginx</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
