Node JS
  • SetUp Node&NVM
  • Folder Structure
  • Setup NodeJS Project
  • Library
    • Awilix
    • Swagger
    • Express
    • Jest
      • Supertest
    • Prettier
    • Eslint & Tslint
      • Tslint & Prettier
      • Tslint Plugin Prettier
      • Config With Airbnb
    • Husky And Friends
    • Sentry
  • INFRASTRUCTURE
    • Docker
      • Docker image
      • Docker container
      • Docker Volume
      • Docker command
      • Docker Compose
      • Problem & Solution
    • SonarQube
      • How to use in Nodejs
    • NGinX
    • ดูเพิ่มเติม
  • Note
    • .env declare type
    • Learn Link
Powered by GitBook
On this page
  • Docker Compose คืออะไร
  • คำสั่งใน Docker-compose
  • คำสั่งในไฟล์ docker-compose.yml
  • Example
  1. INFRASTRUCTURE
  2. Docker

Docker Compose

PreviousDocker commandNextProblem & Solution

Last updated 3 years ago

Docker Compose คืออะไร

Docker compose นั้นว่าง่ายๆ จะคล้ายๆกับ script คำสั่ง ที่เอาไว้สร้าง container หลายๆอันขึ้นมาพร้อมกัน โดยใช้คำสั่งเดียว ซึ่งปกติเราเวลาจะสร้างเจ้า container จะสร้างจาก image ถ้าต้องการสร้างหลายๆ container ก็ต้องมานั่ง docker run ... หลายๆรอบ

ปัญหาคือเราก็ต้องมาสร้าง container ทีละอัน และทำการ config ทีละอัน อีกที ซึ่งมันจะเสียเวลาอย่างมาก

เพราะปัญหาที่กล่าวมาข้างต้นเลยเกิด docker compose ขึ้นมา คือเราสามารถกำหนดไว้ในไฟล์ docker-compose.yml เลย ว่าใช้ services อะไรบ้าง ตั้งค่าไรบ้าง จากนั้นก็ใช้คำสั่ง run command เจ้า docker-compose โดยใช้คำสั่ง docker-compose up -d แค่บรรทัดเดียว มันก็จะทำการสร้าง container ทุกๆอันให้เราอัตโนมัติ ตามค่า config ที่เราตั้งไว้

คำสั่งใน Docker-compose

build — เป็นการสร้าง Services โดยการอ้างอิง Services จาก Dockerfile bundle — เป็นการสร้าง File ออกมาเป็นประเภท JSON Object config — เป็นการตรวจสอบและเรียกดู File ของ docker-compose.yml ที่สร้างเอาไว้ create — เป็นคำสั่งสำหรับใช้เพื่อสร้าง Services down — เป็นคำสั่งปิดการทำงานของ Container events — เป็นการบอกเหตุการณ์ที่เกิดขึ้นทั้งหมดของ Container exec — เป็นการเข้าไปจัดการ Container ที่ถูกอ้างอิง help — เป็นคำสั่งช่วยเหลือเพื่อดู Command ทั้งหมด images — เป็นคำสั่งที่ใช้ดู Images ทั้งหมดใน Docker kill — เป็นคำสั่งปิดการทำงานของ Container logs — เป็นการแสดงข้อมูลที่ถูกอ้างอิงจาก Container pause — เป็นคำสั่งหยุดการทำงานของ Container port — เป็นคำสั่งที่ใช้สำหรับดู port ของ Container ps — เป็นคําสั่งสําหรับดูว่าตอนนี้มี Container ตัวไหนทำงานอยู่บ้าง pull — เป็นการ Download Services ที่อยู่ใน Docker Hub push — เป็นการ Push Services ขึ้นไปบน Docker Hub restart — เป็นการ Restart เพื่อให้ Container ทำงานใหม่ rm — เป็นคำสั่งสําหรับไว้ลบ Container หากว่า Container กำลังทำงานอยู่ต้องทำการ Stop ก่อน หรือจะใช้คำสั่ง Docker rm -f เพื่อบังคับลบ run — เป็นการสร้าง Container ใหม่ พร้อมกับการตั้งค่าของ Services scale — เป็นการสั่ง Run Container โดยเรียงตามเลขที่เรากำหนด start — เป็นคำสั่งเริ่มการทำงานของ Container ใน Docker-Compose stop — เป็นคำสั่งหยุดการทำงานของ Container ใน Docker-Compose ที่เราให้ทำงานอยู่| top — เป็นการแสดงสิ่งที่กำลังทำงานอยู่ใน Docker-compose.yml unpause — เป็นคำสั่งที่ทำให้ Container ที่ถูก Pause ทำงานต่อ up — เป็นคำสั่งสำหรับ Start Container ทั้งหมด ใน Docker-compose ที่เราทำงานอยู่ version — เป็นคำสั่งที่ใช้ตรวจสอบ Version

คำสั่งในไฟล์ docker-compose.yml

version — เป็นการระบุว่าเราจะใช้ Compose file เวอร์ชั่นไหน services — เป็นการระบุ container ที่จะต้องใช้ image — เป็นการเรียกใช้ Image จาก Docker Hub Registry ports — เป็นการทำ port mapping ระหว่าง host กับ container volumes — การสร้าง volumes มี 2 แบบ ซึ่งถ้าสร้างอยู่ภายในชื่อ service แต่ละตัวก็คือการเชื่อม volume แต่ถ้าอยู่ในระดับเดียวกับ services: จะเป็นการสร้าง volume build — การบอกว่าให้ใช้ image ที่สร้างจาก Dockerfile links — เป็นการผูก service เข้าด้วยกัน ทำให้ service สามารถเรียกใช้งาน service ที่ link ได้ restart: alway — เป็นการกำหนดให้ service นั้น restart ตัวเองอัตโนมัติเมื่อเกิดข้อผิดพลาด หรือสั่งให้เริ่มต้นทำงานอัตโนมัติเมื่อเปิดเครื่องขึ้นมาใหม่ network — เป็นการใช้เพื่อสร้างเส้นทางสื่อสารกันระหว่าง container memory limit — การจำกัดการใช้งาน container เพื่อไม่ให้ใช้ ram เกินที่ตั้งไว้ context — path ของ dockerfile เพื่อที่จะใช้ในการสร้าง container memory reservations — การกำหนดค่าการใช้งาน ram ขั้นต่ำสำหรับ container depens_on — สั่งให้ service นั้นเริ่มทำงานหลังจาก service ที่ depens_on อยู่เริ่มต้นทำงานเสร็จแล้ว

Example

version: '3.1'
services:
  mysql:
    image: mysql:5.7
    ports:
      - 3308:3306
    volumes:
      - "./data:/var/lib/mysql"
    environment:
      MYSQL_ROOT_PASSWORD: 1234
      MYSQL_DATABASE: testhaha
  mongo:
    image: mongo
    restart: always
    volumes:
      - "./datamongo:/data/db"
    ports:
      - 27017:27017
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
      - 8000:80
    environment:
      PMA_PASSWORD: 1234
      PMA_USER: root
      PMA_HOSTS: mysql
ทำความรู้จัก Docker composeMedium
อ่านเพิ่มเติม
Logo