Docker Compose гэж юу вэ?
2B | +1% better 2day | dev.011
Яг 1 жилийн өмнө “Docker гэж юу вэ?” гэсэн нийтлэл бичиж байсан юм байна. Нийтлэлийг уншсан бол Docker (Container) нь Virtual Machine биш гэдгийг ойлгосон байх. Түүнээс гадна Dockerfile-г ашиглан Image үүсгээд, түүнийгээ ажиллуулаад Container run хийдэг гэдгийг бүгд мэдэж байгаа биз дээ?
Тэгвэл өнөөдөр цааш нь дэлгэрүүлэн Docker Compose гэж юу болох, яаж хэрэглэх талаар богинохоон нийтлэл бичлээ. Цааш үргэлжлүүлэхээс өмнө docker-compose-г өөрийн компьютер дээрээ суулгаарай. (заавар)
Docker Compose
Docker Compose нь олон container-г ажиллуулахад зориулсан хэрэгсэл бөгөөд docker-compose.yaml файлыг ашигладаг байна.
Эхний ээлжид MySQL container-г асааж үзье. Энгийн docker run командаар docker run -e MYSQL_ROOT_PASSWORD=PWD4toor -p 3307:3306 -d mysql:5.7
гэж бичдэг. Үүнийг харин docker-compose.yaml дээр доорх байдлаар бичнэ.
Дээрх docker-compose.yaml файл дээрх тохиргоонууд
- version : Docker Compose-н хувилбарыг зааж өгнө
- services : Ажиллуулах container-уудаа үүсгэнэ (define)
- db : үүсгэж буй service-н нэр
- image : Ямар Docker image ажиллуулахаа сонгоно
- ports : Нээх портуудын тохиргоо (гадна host дээрх : container доторх)
- environment : ENV хувьсагчууд
Дараа нь тэгвэл MySQL-тэйгээ хамт Node.js зориулсан container асаая. Сүүлийн үеийн ихэнх вэб апп-ууд Node дээр суурилсан framework-өөр хийгдсэн байдаг. (ReactJS, NestJS, Loopback, Express… гэх мэт)
Ингэхдээ шууд Node 12 image ашиглаад дотор нь жишээ вэб апп-н кодоо оруулаад бэлдэнэ ээ.
— Жишээ вэб апп-н кодыг бэлтгэх (copy & npm install)
— Container ажиллах үед апп-аа бэлдэж migration ажиллуулах
# Dockerfile for web image
FROM node:12 # Base image-ээ сонгох
WORKDIR /app # ажиллах directory-г тохируулах
COPY /example-web-app . # вэб апп-н файлуудыг хуулах
RUN npm install # npm module-г суулгах
Дээрх docker-compose.yaml файл дээрх тохиргоонууд
- build : ашиглах Docker image-ээ өөрсдөө үүсгэнэ. Ингэхдээ тухайн directory доторх Dockerfile-г ашиглана.
- command : Container асахдаа ажиллах командууд
- depends_on : Өөр 1 service дээр хамааралтай гэх тохиргоо. Ингэснээр
web
гэдэг servicedb
service-г амжилттай асахыг хүлээдэг.
За ингээд л болчихлоо. Апп маань бэлэн тест хийж болж байна. Одоо ингээд өөрийн компьютер дээрээ Node эсвэл MySQL байхгүй байсан ч зөвхөн Docker-н тусламжтайгаар апп-аа ажиллуулах боломжтой боллоо.
(source code GitHub)