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
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
version: '3.7' | |
services: | |
sonarqube: | |
image: sonarqube | |
ports: | |
- 9000:9000 | |
- 9092:9092 | |
networks: | |
testing_net: | |
ipv4_address: 172.28.1.1 | |
jenkins: | |
image: jenkins | |
ports: | |
- 8080:8080 | |
- 50000:50000 | |
volumes: | |
- type: bind | |
source: D:/ProjectWorkspace | |
target: /project | |
extra_hosts: | |
- "sonar:172.28.1.1" | |
depends_on: | |
- sonarqube | |
networks: | |
testing_net: | |
ipv4_address: 172.28.1.2 | |
networks: | |
testing_net: | |
ipam: | |
driver: default | |
config: | |
- subnet: 172.28.0.0/16 |
คำสั่ง 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 ของเราเอง