Docker Compose гэж юу вэ?

2B | +1% better 2day | dev.011

--

Яг 1 жилийн өмнө Docker гэж юу вэ? гэсэн нийтлэл бичиж байсан юм байна. Нийтлэлийг уншсан бол Docker (Container) нь Virtual Machine биш гэдгийг ойлгосон байх. Түүнээс гадна Dockerfile-г ашиглан Image үүсгээд, түүнийгээ ажиллуулаад Container run хийдэг гэдгийг бүгд мэдэж байгаа биз дээ?

Lifecycle : Dockerfile → Image → Container

Тэгвэл өнөөдөр цааш нь дэлгэрүүлэн 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 гэдэг service db service-г амжилттай асахыг хүлээдэг.

За ингээд л болчихлоо. Апп маань бэлэн тест хийж болж байна. Одоо ингээд өөрийн компьютер дээрээ Node эсвэл MySQL байхгүй байсан ч зөвхөн Docker-н тусламжтайгаар апп-аа ажиллуулах боломжтой боллоо.
(source code GitHub)

--

--

Билигүн.Б (Програмч аав)
2B +1% better 2day

I am who I am... || өөрийнхөөрөө байхаас ичихгүй