Docker กับการสร้าง environment แบบ All-in-One (Docker Compose)
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.yml
docker-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 จะใช้ชื่อ folder ของเราเป็นตัวกำหนดชื่อ container เพราะฉะนั้นหากเป็นเครื่องเดียวกันที่ copy ทั้ง folder ไป มันก็ยังเห็น container เป็นของเดิมอยู่
-
ดูรายการ network (ถ้ายังไม่ถูก down จะไม่สามารถสร้างวง network ซ้ำกันได้)
docker network ls
NETWORK ID NAME DRIVER SCOPE 1d7fb97453ae bridge bridge local fbf218bef328 host host local 9c64cfd5bea9 my-ci-dockerfile_testing_net bridge local 6e295959a223 my-ci_default bridge local 3834c5e3cc7b my-ci_testing_net bridge local 695f31fa231a none null local
-
ถ้ามี container อยู่แล้ว จะใช้คำสั่ง up หรือ start ก็ได้ (ไม่ต่างกัน)
docker-compose start
-
stop container ที่เกี่ยวข้อง
docker-compose stop
-
ลบ container ทั้งหมด รวมไปถึง networks, images และ volumes
docker-compose down
- Jenkins : http://localhost:8080
- SonarQube : http://localhost:9000
นอกเหนือจากตัวอย่างนี้ สามารถหาข้อมูลได้ที่ Official Website >> Overview of Docker Compose ครับ และเชิญติดตามตอนต่อไปของเรื่อง Docker กันครับ
- Docker คืออะไร ? แนะนำวิธีใช้งานเบื้องต้น
- Docker กับการสร้าง environment แบบ All-in-One (Docker Compose)
- Docker ใช้งาน Dockerfile เพื่อสร้าง Docker Image ของเราเอง