Posts

การ Build Docker Image ขึ้นสู่ Registry - แนะนำ Docker Registry ฟรี

Image
หลังจากที่เราเขียน Dockerfile กันเป็นแล้ว นั่นแปลว่าเราก็จะมี Image เป็นของตัวเองเรียบร้อยแล้ว และเพื่อให้สะดวกในอนาคต เราก็จะส่ง Image นี้ไปเก็บไว้ที่ registry กัน

Docker Registry ก็คือที่เก็บ docker image ซึ่งทุกคนที่เคยใช้ docker ก็ต้องเคยดึง image จาก Docker Hub กันอยู่แล้ว นอกจากเราจะสามารถสรรหา image และดึงลงมาใช้งานกันได้แล้ว เรายังสามารถส่ง image ของเราขึ้นไปที่ Docker Hub ได้ด้วยนะ

มาเริ่มกันที่ เขียน Dockerfile กันก่อน
ครั้งนี้เราสร้าง image ที่ run java application บน container กัน

Dockerfile
FROM openjdk:8-jdk-alpine ADD ./discovery-service-1.0-SNAPSHOT.jar /data/springboot-app.jar ENTRYPOINT ["java","-jar","/data/springboot-app.jar"]
Step 1/3 : ตั้งต้น parent image ด้วย OpenJDK
Step 2/3 : ก็อปไฟล์ *.jar จากเครื่อง host เข้าไปใน container
Step 3/3 : run *.jar

*.jar ไฟล์ที่ใช้เป็น spring boot application ซึ่งสามารถรันได้ทันที ซึ่งผมได้เตรียมไว้ให้แล้ว
Download >> discovery-service-1.0-SNAPSHOT.jar

ลอง build มาทดสอบกันก่อน (ใครขี้…

[Go] Go Lang ฉบับมือใหม่หัดขับ

Image
Go ถูกสร้างโดย Google เพื่อตอบโจทย์การเขียนโปรแกรมให้มีลักษณะดังนี้
Static typing and run-time efficiency (like C++)Readability and Usability (like Python or JavaScript)High-performance networking and multiprocessing.....(wiki).....
         จะเห็นว่าไม่มีภาษาไหน สามารถตอบโจทย์นี้ได้ครบเลย Java ก็ performance ไม่ดี,  C ถึงแม้จะเร็วแต่ก็อ่านยากเกินไป หรือแม้แต่ภาษาใหม่ๆ ที่ลู่เข้าสู่ functional language ที่ว่าเข้าใจได้ง่าย แต่ Go ก็มองว่า OOP มันซับซ้อนและเงื่อนไขจุกจิกก็มีอยู่มาก

         Cross compiling เป็นความสามารถนึงที่ Go มีเหนือภาษาอื่นๆ ซึ่ง Go สามารถ build executable binary สำหรับแต่ละ OS ได้เลย

         Go มี concept ว่า ไฟล์ที่ได้มานั้นต้องสามารถเอาไปใช้งานเป็น Application ได้ทันที (ไม่ต้องการ core libraray เพิ่มเติม) ดังนั้นแล้ว ข้อเสียของ Go ก็คือ executable file จะมีขนาดใหญ่กว่าการ build จากภาษา C ที่คาดหวังว่า library พื้นฐานจะต้องมีอยู่แล้ว


เข้าสู่การทดลอง การติดตั้งติดตั้ง Go (Download)
*คนที่ไม่อยากติดตั้งบนเครื่องไปลองเขียน Online ได้ที่ https://play.golang.orgเมื่อต…

ส่งข้อความอัตโนมัติด้วย LINE Notify เพิ่มความเท่ให้กับ CI/CD

Image
LINE Notify เป็นบริการฟรีที่มีประโยชน์กับการทำงานเป็นทีม โดยเฉพาะอย่างยิ่ง เป็นการทำงานร่วมกับ tools ต่าง ๆ ซึ่งหน้าที่ของ LINE Notify ก็คือการ "ส่ง LINE" เพียงเท่านั้นจริง ๆ

         เมื่อเราทำงานเสร็จสิ้น เราก็อยากจะบอกให้ทีมรับรู้ คนไทยส่วนมากก็ยังชอบใช้ LINE คุยกัน ซึ่งก็หนีไม่พ้น "LINE กลุ่ม" จุดนี้เองที่ LINE Notify จะมาช่วยให้เราสะดวกสะบายมากยิ่งขึ้น เพราะเราสามารถ integrate เข้ากับ tools ต่าง ๆ ได้เพื่อให้ข้อความถูกส่งเข้ากลุ่มโดยอัตโนมัติ


มาลองกัน ! ตั้งค่าเริ่มต้น          1. เข้าสู่ระบบเพื่อเริ่มต้นการใช้งาน https://notify-bot.line.me/my/
         2. กด Generate token และเลือกกลุ่มเป้าหมาย

         3. Copy token เก็บไว้ (ไม่สามารถเรียกดูภายหลังได้)
ส่งข้อความ          เราสามารถส่งข้อความด้วยวิธีง่าย ๆ โดยการเรียก web service ที่ LINE เตรียมไว้ให้แล้ว วิธีที่ง่ายที่สุดคงหนีไม่พ้น cURL ที่ติดมากับ terminal ของ Mac/Ubuntu หรือถ้า Windows ก็ใช้ Git Bash ก็ได้

curl -X POST -H 'Authorization: Bearer <TOKEN>' -F 'message=Unit Test OK'…

Docker ใช้งาน Dockerfile เพื่อสร้าง Docker Image ของเราเอง

Image
Dockerfile คือการสร้าง Docker Image ในแบบของเราเอง หรือก็คือการ custom docker image นั่นแหละ ถึงแม้ว่าเราจะใช้ CLI เข้า container ได้เลย แต่จะดีกว่าไหมถ้าเราทำเป็น Docker Image ที่พร้อมใช้งาน ไม่ต้องมาคอยคิดว่าต้องลงอะไรบ้าง

Custom Image ทำไม ?          การสร้าง container จำเป็นต้องใช้ parent image เสมอ ถึงแม้ว่า Docker Hub จะมีให้เราเลือกโหลดมากมาย แต่ตัวไหนล่ะที่ตรงใจเรา
ตัวอย่าง Dockerfile          Dockerfile เป็นไฟล์ที่มี syntax เฉพาะของ Docker ลักษณะจะปะปนกับ shell script เพื่อเป็นชุดคำสั่งแรกเมื่อมีการสร้าง container นั่นเอง

คำสั่งใกล้เคียง $ docker run -p 8080:8080 jenkins


การใช้งาน Dockerfile          ขั้นตอนการสร้าง container จากเดิมที่เป็นแค่การดึง image มาใช้ คราวนี้เราจะสามารถเพิ่มเติมคำสั่งบางอย่างเข้าไป สิ่งที่ parent image เตรียมมาก็สามารถใช้ได้ และเพิ่มเติมสิ่งที่เราเพิ่มไปได้อีก
มาลอง Custom Docker Image กันFROM jenkins LABEL maintainer="LordGift" USER root RUN apt-get update && apt-get install -y android-sdk ENV JENKINS_HOME /var/jenkins_home EN…

Docker กับการสร้าง environment แบบ All-in-One (Docker Compose)

Image
Docker Compose เป็นสิ่งที่จะมายกเครื่อง Docker มากยิ่งขึ้น จากเดิม (Docker คืออะไร ?) เราได้ทดลองใช้ Docker ผ่าน CLI กันไป แต่การจะเอา container เดิมมาใช้ ก็จะมีความลำบากเล็กๆ และยิ่งถ้ามี container หลายตัวก็ยิ่งวุ่นวายไปใหญ่

assignment docker-compose.yml
         ไฟล์นี้คือหัวใจสำคัญของ docker compose เราจะต้องเขียน config ต่างๆ เข้าไปในรูปแบบ YAML ซึ่งจริงๆมันก็คือการย้ายการเขียน CLI ทีละคำสั่ง ให้อยู่ในรูปแบบไฟล์ที่สามารถอ่านได้ง่ายขึ้น ลดการเขียนคำสั่งไปได้เยอะ (ลด หมายความว่าก็ยังต้องเขียนบ้างนะ sentiment_very_satisfied )
docker-compose.yml
คำสั่ง Docker Composeสร้างและ start container ตามไฟล์ docker-compose.ymldocker-compose up
ดู container ที่เกี่ยวข้อง
docker-compose ps Name Command State Ports --------------------------------------------------------------------- my-ci_jenkins_1 /bin/tini -- /usr/local/bi ... Exit 255 my-ci_sonarqube_1 ./bin/run.sh Exit 143          * docker compose จะใช้ชื่อ f…

Docker คืออะไร ? แนะนำวิธีใช้งานเบื้องต้น

Image
Docker คือเครื่องมือ virtualization ที่มีความยืดหยุ่นสูง, lightweight และง่ายต่อการใช้งาน เหมาะกับ developer ที่ต้องการสร้าง environment เสมือนจริง ปัจจุบัน Docker ได้รับความนิยมสูงมาก ผู้ให้บริการ Cloud หลายเจ้าก็สามารถนำ Docker ไปใช้ได้ โลโก้ปลาวาฬแบกตู้คอนเทนเนอร์ ก็หมายถึง Docker ที่ขับเคลื่อน environment ต่างๆ ที่แพ็คสำเร็จไว้แล้วนั่นเอง

Container          Docker Container หมายถึงเครื่องเสมือน ซึ่งมีความใกล้เคียง Virtual Machine (VM) แบบที่เราคุ้นเคยกันอยู่มาก แต่ docker ถูกออกแบบมาให้จำลอง environment เฉพาะที่เราสนใจเท่านั้น เช่น Application Server, Build Tools, Website,... หรือจะเป็นการรวมกันหลาย ๆ อย่างก็ทำได้ โดย docker นั้นจะใช้ linux เป็นฐานในการสร้าง environment ต่างๆ ดังนั้นเราจำเป็นต้องอาศัย shell script เป็นหลัก

Image          Docker Image เป็น template ของ container คือจะประกอบด้วยชุดคำสั่งสำหรับสร้าง environment เริ่มต้น การจะสร้าง container ได้นั้น จำเป็นต้องดึง image มารัน ซึ่งมือใหม่อย่างเราสามารถไปเลือกดึง image จาก image repository มาลองเล่นก่อนได้ เมื่อมากฝีมือแ…

[Java] JShell เครื่องมือใหม่ที่มาพร้อมกับ Java 9+

Image
JShell คืออะไร ? JShell ถือกำเนิดมาพร้อมกับ Java 9 (JDK 9) เป็นเครื่องมือใหม่สำหรับ Java Developer ที่ตามหลังชาวบ้านมาอีกตัวหนึ่ง JShell เป็นเครื่องมือที่ช่วยให้เราสามารถทดลองเขียน code แบบง่ายๆ ไม่ต้องมาสร้าง file / project ให้วุ่นวาย (แอบเล่าให้ฟังว่าเมื่อก่อนผมใช้เว็บเขียน java online เพื่อทำอะไรแบบนี้ เหอๆ)

          REPL (Read-Eval-Print-Loop) เป็นคำนิยามอย่างเป็นทางการของ JShell หรือจะพูดให้ง่ายก็คือ การเขียนโปรแกรมแบบมี interaction ได้ทันที ถ้ายังไม่เข้าใจอีก ไปลองเล่นกันเลยดีกว่า


เริ่มต้นเขียนโปรแกรมบน JShell ติดตั้ง JDK (version 9 ขึ้นไป)
* JShell จะอยู่ใน JAVA_HOME/bin ถ้าอยากใช้ง่ายๆ ก็เพิ่มทำ PATH เข้า environment varible ไว้เลย

เรียกใช้ jshell โดยรันคำสั่ง jshell
$ jshell | Welcome to JShell -- Version 11 | For an introduction type: /help intro jshell>
เมื่อเข้าสู่ jshell แล้ว เราก็สามารถเริ่มพิมพ์ code java ได้เลย
jshell> System.out.println("Hello World"); Hello World
หรือจะเขียน method
jshell> String say(String msg) { ...> System.out.println(…

Facebook Comment

Recent Posts

Popular

[Java] ความแตกต่างระหว่าง Overloading กับ Overriding

ลืมรหัสปลดล็อค Android เข้าเครื่องไม่ได้ มีทางออกครับ

[Android] เปิดเครื่องไม่ได้ โลโก้ค้าง (Boot Loop)

Push Notification คืออะไร มีวิธีทำอย่างไร (No Code)

Portal คืออะไรกันนะ???

[Java] รู้จัก Maven ให้มากขึ้น เพื่อก้าวสู่ java professional

พิมพ์ซองจากรายชื่อ excel ด้วยวิธี Mail Merge

[Java] รู้จัก Spring Boot ฉบับมือใหม่

[Java] Java Servlet คืออะไร?

ความเร็วเน็ตที่แท้จริง Mbps MBps ???