Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම

සෑම වසර කිහිපයකට වරක්, මෘදුකාංග සංවර්ධන කර්මාන්තය සුසමාදර්ශී වෙනසකට භාජනය වේ. මෙම සංසිද්ධිවලින් එකක් මයික්‍රො සර්විස් සංකල්පය කෙරෙහි වැඩෙන උනන්දුව ලෙස හඳුනාගත හැකිය. ක්ෂුද්‍ර සේවා නවීන තාක්‍ෂණය නොවුනත්, එහි ජනප්‍රියත්වය වචනාර්ථයෙන් අහස උසට නැඟී ඇත්තේ මෑතදී පමණි.

විශාල මොනොලිතික් සේවාවන් දැන් ස්වාධීන, ස්වයංක්‍රීය ක්ෂුද්‍ර සේවා මගින් ප්‍රතිස්ථාපනය වේ. ක්ෂුද්‍ර සේවාවක් තනි සහ ඉතා නිශ්චිත අරමුණක් ඉටු කරන යෙදුමක් ලෙස සැලකිය හැකිය. උදාහරණයක් ලෙස, එය සම්බන්ධක DBMS, Express යෙදුමක්, Solr සේවාවක් විය හැකිය.

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම

මේ දිනවල, ක්ෂුද්‍ර සේවා භාවිතා නොකර නව මෘදුකාංග පද්ධතියක් සංවර්ධනය කිරීම සිතීම දුෂ්කර ය. මෙම තත්වය, අනෙක් අතට, අපව Docker වේදිකාවට ගෙන යයි.

Docker

වේදිකාව Docker, ක්ෂුද්‍ර සේවා සංවර්ධනය සහ යෙදවීමේදී, කර්මාන්ත ප්‍රමිතියක් බවට පත්ව ඇත. ව්‍යාපෘති වෙබ් අඩවියෙන් ඔබට ඩොකර් යනු ඕනෑම යෙදුමක් පහසුවෙන් නිර්මාණය කිරීමට මෙන්ම ඕනෑම පරිසරයක බෙදා හැරීමට සහ ක්‍රියාත්මක කිරීමට ආයතනවලට ඉඩ සලසන එකම ස්වාධීන බහාලුම් වේදිකාව බව ඔබට දැනගත හැකිය - දෙමුහුන් වලාකුළු වල සිට දාර පද්ධති දක්වා.

ඩොක්රා සෑදීම

තාක්ෂණය ඩොක්රා සෑදීම බහු බහාලුම් යෙදුම් වින්‍යාස කිරීම සඳහා නිර්මාණය කර ඇත. Docker Compose ව්‍යාපෘතියක ව්‍යාපෘතියේ නිර්මාතෘට අවශ්‍ය තරම් Docker බහාලුම් අඩංගු විය හැක.

Docker Compose සමඟ වැඩ කරන විට, යෙදුම් සේවා වින්‍යාස කිරීමට සහ එකිනෙකා සමඟ අන්තර්ක්‍රියා සංවිධානය කිරීමට YAML ගොනුවක් භාවිතා කරයි. එබැවින් Docker Compose යනු බහු බහාලුම් Docker යෙදුම් විස්තර කිරීම සහ ධාවනය කිරීම සඳහා වූ මෙවලමකි.

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම
ධාරක පද්ධතියක් මත ධාවනය වන බහාලුම් දෙකක්

GNU සාදන්න

වැඩසටහන make, මූලික වශයෙන් මූලාශ්‍ර කේතයෙන් වැඩසටහන් සහ පුස්තකාල ගොඩනැගීම ස්වයංක්‍රීය කිරීම සඳහා වූ මෙවලමකි. පොදුවේ, අපට එය පැවසිය හැකිය make සමහර ආදාන ද්‍රව්‍ය යම් ප්‍රතිදාන ආකාරයකට, යම් ඉලක්කයකට පරිවර්තනය කිරීම සඳහා අත්තනෝමතික විධාන ක්‍රියාත්මක කිරීම ඇතුළත් ඕනෑම ක්‍රියාවලියකට අදාළ වේ. අපගේ නඩුවේදී, විධාන docker-compose වියුක්ත ඉලක්ක බවට පරිවර්තනය වනු ඇත (දුරකථන ඉලක්ක).

වැඩසටහන කියන්න make එයින් අපට අවශ්‍ය දේ ගැන, අපට ගොනුවක් අවශ්‍ය වේ Makefile.

අපේ Makefile නිතිපතා විධාන අඩංගු වනු ඇත docker и docker-compose, බොහෝ ගැටලු විසඳීමට නිර්මාණය කර ඇත. එනම්, අපි කතා කරන්නේ බහාලුමක් එකලස් කිරීම, එය ආරම්භ කිරීම, එය නැවැත්වීම, එය නැවත ආරම්භ කිරීම, බහාලුම් වෙත පරිශීලක පිවිසුම සංවිධානය කිරීම, බහාලුම් ලොග් සමඟ වැඩ කිරීම සහ වෙනත් සමාන ගැටළු විසඳීම ගැන ය.

Docker Compose සඳහා සාමාන්‍ය භාවිත අවස්ථා

පහත සඳහන් සංරචක ඇති සාමාන්‍ය වෙබ් යෙදුමක් සිතමු:

  • TimescaleDB දත්ත සමුදාය (Postgres).
  • Express.js යෙදුම.
  • පිං (කන්ටේනරයක් පමණි, විශේෂ කිසිවක් නොකරයි).

මෙම යෙදුමට Docker බහාලුම් 3ක් සහ ගොනුවක් අවශ්‍ය වේ docker-compose, මෙම බහාලුම් කළමනාකරණය සඳහා උපදෙස් අඩංගු වේ. සෑම කන්ටේනරයකම විවිධ ස්පර්ශක ස්ථාන ඇත. උදාහරණයක් ලෙස, කන්ටේනරයක් සමඟ timescale ඔවුන් දත්ත සමුදායන් සමඟ වැඩ කරන ආකාරයටම වැඩ කිරීමට හැකි වනු ඇත. එනම්, එය ඔබට පහත ක්‍රියා සිදු කිරීමට ඉඩ සලසයි:

  • Postgres කවචයට ඇතුල් වීම.
  • වගු ආනයනය සහ අපනයනය.
  • නිර්මාණය pg_dump වගු හෝ දත්ත සමුදායන්.

Express.js යෙදුම් බහාලුම, expressjs, පහත හැකියාවන් තිබිය හැක:

  • පද්ධති ලොගයෙන් නැවුම් දත්ත සැපයීම.
  • ඇතැම් විධානයන් ක්‍රියාත්මක කිරීමට shell වෙත පිවිසෙන්න.

බහාලුම් සමඟ අන්තර් ක්රියා කිරීම

අපි Docker Compose භාවිතයෙන් බහාලුම් අතර සන්නිවේදනය සැකසූ පසු, එම බහාලුම් සමඟ සන්නිවේදනය කිරීමට කාලයයි. Docker Compose පද්ධතිය තුළ විධානයක් ඇත docker-compose, උපකාරක විකල්පය -f, පද්ධතියට ගොනුවක් මාරු කිරීමට ඔබට ඉඩ සලසයි docker-compose.yml.

මෙම විකල්පයේ හැකියාවන් භාවිතා කරමින්, ඔබට පද්ධතිය සමඟ අන්තර්ක්‍රියා සීමා කළ හැක්කේ ගොනුවේ සඳහන් කර ඇති බහාලුම්වලට පමණි. docker-compose.yml.

විධාන භාවිතා කරන විට බහාලුම් සමඟ අන්තර්ක්‍රියා කෙබඳුදැයි බලමු docker-compose. අපි හිතුවොත් අපි shell එකට ලොග් වෙන්න ඕනේ කියලා psql, එවිට අනුරූප විධාන මේ වගේ විය හැක:

docker-compose -f docker-compose.yml exec timescale psql -Upostgres

ක්රියාත්මක කිරීමට භාවිතා නොකරන එකම විධානය docker-composeහා docker, මේ වගේ වෙන්න පුළුවන්:

docker exec -it  edp_timescale_1 psql -Upostgres

එවැනි අවස්ථාවලදී සෑම විටම විධානය භාවිතා කිරීම වඩාත් සුදුසු බව කරුණාවෙන් සලකන්න docker, සහ විධානය docker-compose, මෙය බහාලුම් නම් මතක තබා ගැනීමේ අවශ්‍යතාවය ඉවත් කරයි.

ඉහත විධාන දෙකම එතරම් අපහසු නැත. නමුත් අපි පෝරමයේ "එතන්න" භාවිතා කළා නම් Makefile, එය අපට සරල විධාන ස්වරූපයෙන් අතුරු මුහුණතක් ලබා දෙන අතර එයම සමාන දිගු විධාන ලෙස හඳුන්වනු ඇත, එවිට එම ප්‍රතිඵල මේ ආකාරයට ලබා ගත හැකිය:

make db-shell

භාවිතා කරන බව ඉතා පැහැදිලිය Makefile බහාලුම් සමඟ වැඩ කිරීම වඩාත් පහසු කරයි!

වැඩ කරන උදාහරණය

ඉහත ව්‍යාපෘති රූප සටහන මත පදනම්ව, අපි පහත ගොනුව සාදන්නෙමු docker-compose.yml:

version: '3.3'
services:
    api:
        build: .
        image: mywebimage:0.0.1
        ports:
            - 8080:8080
        volumes:
            - /app/node_modules/
        depends_on:
            - timescale
        command: npm run dev
        networks:
            - webappnetwork
    timescale:
        image: timescale/timescaledb-postgis:latest-pg11
        environment:
          - POSTGRES_USER=postgres
          - POSTGRES_PASSWORD=postgres
        command: ["postgres", "-c", "log_statement=all", "-c", "log_destination=stderr"]
        volumes:
          - ./create_schema.sql:/docker-entrypoint-initdb.d/create_schema.sql
        networks:
           - webappnetwork
    ping:
       image: willfarrell/ping
       environment:
           HOSTNAME: "localhost"
           TIMEOUT: 300
networks:
   webappnetwork:
       driver: bridge

Docker Compose වින්‍යාසය කළමනාකරණය කිරීමට සහ එය විස්තර කරන බහාලුම් සමඟ අන්තර් ක්‍රියා කිරීමට, අපි පහත ගොනුව සාදන්නෙමු Makefile:

THIS_FILE := $(lastword $(MAKEFILE_LIST))
.PHONY: help build up start down destroy stop restart logs logs-api ps login-timescale login-api db-shell
help:
        make -pRrq  -f $(THIS_FILE) : 2>/dev/null | awk -v RS= -F: '/^# File/,/^# Finished Make data base/ {if ($$1 !~ "^[#.]") {print $$1}}' | sort | egrep -v -e '^[^[:alnum:]]' -e '^$@$$'
build:
        docker-compose -f docker-compose.yml build $(c)
up:
        docker-compose -f docker-compose.yml up -d $(c)
start:
        docker-compose -f docker-compose.yml start $(c)
down:
        docker-compose -f docker-compose.yml down $(c)
destroy:
        docker-compose -f docker-compose.yml down -v $(c)
stop:
        docker-compose -f docker-compose.yml stop $(c)
restart:
        docker-compose -f docker-compose.yml stop $(c)
        docker-compose -f docker-compose.yml up -d $(c)
logs:
        docker-compose -f docker-compose.yml logs --tail=100 -f $(c)
logs-api:
        docker-compose -f docker-compose.yml logs --tail=100 -f api
ps:
        docker-compose -f docker-compose.yml ps
login-timescale:
        docker-compose -f docker-compose.yml exec timescale /bin/bash
login-api:
        docker-compose -f docker-compose.yml exec api /bin/bash
db-shell:
        docker-compose -f docker-compose.yml exec timescale psql -Upostgres

මෙහි විස්තර කර ඇති බොහෝ විධාන සියලුම බහාලුම් සඳහා අදාළ වේ, නමුත් විකල්පය භාවිතා කරයි c= විධානයක විෂය පථය එක් බහාලුමකට සීමා කිරීමට ඔබට ඉඩ සලසයි.

පසු Makefile සූදානම්, ඔබට එය මේ ආකාරයෙන් භාවිතා කළ හැකිය:

  • make help — සඳහා පවතින සියලුම විධාන ලැයිස්තුවක් නිකුත් කිරීම make.

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම
පවතින විධානයන් මත උදව්

  • make build - රූපයක් එකලස් කිරීම Dockerfile. අපගේ උදාහරණයේදී අපි දැනට පවතින පින්තූර භාවිතා කළෙමු timescale и ping. නමුත් රූපය api අපට දේශීයව එකතු කිරීමට අවශ්‍යයි. මෙම විධානය ක්‍රියාත්මක කිරීමෙන් පසුව සිදු කරනු ලබන්නේ මෙයයි.

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම
ඩොකර් කන්ටේනරයක් තැනීම

  • make start - සියලුම බහාලුම් දියත් කිරීම. එක් බහාලුමක් පමණක් දියත් කිරීමට, ඔබට වැනි විධානයක් භාවිතා කළ හැකිය make start c=timescale.

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම
කාල පරාසයේ බහාලුම් ධාවනය කිරීම

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම
පිං කන්ටේනරයක් ධාවනය කිරීම

  • make login-timescale - කන්ටේනරයේ බාෂ් සැසියට පිවිසෙන්න timescale.

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම
කාලපරිමාණ කන්ටේනරයක බෂ් ධාවනය කිරීම

  • make db-shell - ඇතුල්වීම psql කන්ටේනරයක timescale දත්ත සමුදායට එරෙහිව SQL විමසුම් ක්රියාත්මක කිරීමට.

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම
කාල පරිමාණයේ බහාලුමක් තුළ psql ධාවනය කිරීම

  • make stop - බහාලුම් නතර කිරීම.

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම
කාල පරාසයක බහාලුමක් නැවැත්වීම

  • make down - බහාලුම් නැවැත්වීම සහ ඉවත් කිරීම. නිශ්චිත බහාලුමක් ඉවත් කිරීම සඳහා, ඔබට අවශ්ය බහාලුම් නියම කරමින් මෙම විධානය භාවිතා කළ හැකිය. උදාහරණ වශයෙන් - make down c=timescale හෝ make down c=api.

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම
සියලුම බහාලුම් නැවැත්වීම සහ මකා දැමීම

ප්රතිඵල

Docker Compose අපට බහාලුම් කළමනාකරණය සඳහා පොහොසත් විධාන මාලාවක් ලබා දුන්නද, සමහර විට මෙම විධාන දිගු හා මතක තබා ගැනීමට අපහසු වේ.

භාවිතා කිරීමේ ක්රමය Makefile ගොනුවකින් බහාලුම් සමඟ ඉක්මන් සහ පහසු අන්තර්ක්‍රියාකාරිත්වයක් ඇති කර ගැනීමට අපට උදවු විය docker-compose.yml. එනම්, අපි පහත සඳහන් දේ ගැන කතා කරමු:

  • සංවර්ධකයා අන්තර්ක්‍රියා කරන්නේ විස්තර කර ඇති ව්‍යාපෘති බහාලුම් සමඟ පමණි docker-compose.yml, අනෙකුත් ධාවන බහාලුම් මගින් වැඩ කටයුතු වලට බාධා නොකෙරේ.
  • යම් විධානයක් අමතක වූ අවස්ථාවක, ඔබට විධානය ක්රියාත්මක කළ හැකිය make help සහ පවතින විධානයන් මත උපකාර ලබා ගන්න.
  • නවතම ලොග් ඇතුළත් කිරීම් ලබා ගැනීම හෝ පද්ධතියකට ලොග් වීම වැනි ක්‍රියා සිදු කිරීමට ඔබට දිගු තර්ක ලැයිස්තු මතක තබා ගැනීමට අවශ්‍ය නැත. උදාහරණයක් ලෙස, වැනි විධානයක් docker-compose -f docker-compose.yml exec timescale psql -Upostgres බවට පරිවර්තනය වේ make db-shell.
  • ගොනුව Makefile ව්‍යාපෘතිය වර්ධනය වන විට ඔබට නම්‍යශීලීව එයට අනුගත විය හැක. උදාහරණයක් ලෙස, දත්ත සමුදා උපස්ථයක් සෑදීමට හෝ වෙනත් ක්‍රියාවක් කිරීමට විධානයක් එක් කිරීම පහසුය.
  • සංවර්ධකයින් විශාල කණ්ඩායමක් එයම භාවිතා කරන්නේ නම් Makefile, මෙය සහයෝගීතාවය විධිමත් කරන අතර දෝෂ අඩු කරයි.

ප්රාදේශීය සභා අපේ වෙළඳපොළ රූපයක් තිබේ Docker, එක් ක්ලික් කිරීමකින් ස්ථාපනය කළ හැක. ඔබට බහාලුම්වල ක්‍රියාකාරිත්වය පරීක්ෂා කළ හැකිය VPS. සියලුම නව ගනුදෙනුකරුවන්ට දින 3ක පරීක්ෂණ නොමිලේ ලබා දේ.

හිතවත් පා readers කයින්! ඔබ Docker Compose ස්වයංක්‍රීය කරන්නේ කෙසේද?

Docker Compose: Makefiles භාවිතයෙන් ඔබේ කාර්යය සරල කිරීම

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න