ஒவ்வொரு சில வருடங்களுக்கும், மென்பொருள் மேம்பாட்டுத் துறை ஒரு முன்னுதாரண மாற்றத்திற்கு உட்படுகிறது. இந்த நிகழ்வுகளில் ஒன்று மைக்ரோ சர்வீசஸ் என்ற கருத்தில் வளர்ந்து வரும் ஆர்வமாக அங்கீகரிக்கப்படலாம். மைக்ரோ சர்வீஸ்கள் புதிய தொழில்நுட்பம் அல்ல என்றாலும், சமீபத்தில்தான் அதன் புகழ் உண்மையில் உயர்ந்துள்ளது.
பெரிய ஒற்றைக்கல் சேவைகள் இப்போது சுயாதீனமான, தன்னாட்சி மைக்ரோ சர்வீஸால் மாற்றப்படுகின்றன. ஒரு மைக்ரோ சர்வீஸ் என்பது ஒரு தனி மற்றும் மிகவும் குறிப்பிட்ட நோக்கத்திற்காக சேவை செய்யும் ஒரு பயன்பாடாக கருதப்படலாம். எடுத்துக்காட்டாக, இது ஒரு தொடர்புடைய DBMS, ஒரு எக்ஸ்பிரஸ் பயன்பாடு, ஒரு Solr சேவை.
இந்த நாட்களில், மைக்ரோ சர்வீஸைப் பயன்படுத்தாமல் ஒரு புதிய மென்பொருள் அமைப்பை உருவாக்குவதை கற்பனை செய்வது கடினம். இந்த சூழ்நிலை, நம்மை டோக்கர் தளத்திற்கு இட்டுச் செல்கிறது.
கூலியாள்
மேடையில்
டக்கர் எழுது
தொழில்நுட்பம்
டோக்கர் கம்போஸ் உடன் பணிபுரியும் போது, பயன்பாட்டுச் சேவைகளை உள்ளமைக்கவும், ஒருவருக்கொருவர் தொடர்புகொள்வதற்கும் YAML கோப்பு பயன்படுத்தப்படுகிறது. டோக்கர் கம்போஸ் என்பது மல்டி-கன்டெய்னர் டோக்கர் அப்ளிகேஷன்களை விவரித்து இயக்குவதற்கான ஒரு கருவியாகும்.
ஹோஸ்ட் சிஸ்டத்தில் இயங்கும் இரண்டு கொள்கலன்கள்
குனு மேக்
திட்டம் make
, அடிப்படையில் நிரல்களையும் நூலகங்களையும் மூலக் குறியீட்டிலிருந்து தானாக உருவாக்குவதற்கான ஒரு கருவியாகும். பொதுவாக, அப்படிச் சொல்லலாம் make
சில உள்ளீட்டு பொருட்களை சில நோக்கத்திற்காக சில வெளியீட்டு வடிவமாக மாற்ற தன்னிச்சையான கட்டளைகளை செயல்படுத்துவதை உள்ளடக்கிய எந்தவொரு செயல்முறைக்கும் பொருந்தும். எங்கள் விஷயத்தில், கட்டளைகள் docker-compose
சுருக்க இலக்குகளாக மாற்றப்படும் (
நிரல் சொல்ல make
அதிலிருந்து நமக்கு என்ன வேண்டும் என்பது பற்றி, நமக்கு ஒரு கோப்பு தேவை Makefile
.
எங்கள் Makefile
வழக்கமான கட்டளைகளைக் கொண்டிருக்கும் docker
и docker-compose
, இது பல பிரச்சனைகளை தீர்க்க வடிவமைக்கப்பட்டுள்ளது. அதாவது, ஒரு கொள்கலனைச் சேர்ப்பது, அதைத் தொடங்குவது, நிறுத்துவது, மறுதொடக்கம் செய்வது, கொள்கலனில் பயனர் உள்நுழைவை ஒழுங்கமைப்பது, கொள்கலன் பதிவுகளுடன் பணிபுரிவது மற்றும் பிற ஒத்த சிக்கல்களைத் தீர்ப்பது பற்றி பேசுகிறோம்.
டோக்கர் கம்போசிற்கான வழக்கமான பயன்பாட்டு வழக்குகள்
பின்வரும் கூறுகளைக் கொண்ட ஒரு வழக்கமான வலை பயன்பாட்டை கற்பனை செய்வோம்:
- TimescaleDB தரவுத்தளம் (Postgres).
- Express.js பயன்பாடு.
- பிங் (வெறும் ஒரு கொள்கலன், சிறப்பு எதுவும் செய்யாது).
இந்த பயன்பாட்டிற்கு 3 டோக்கர் கொள்கலன்கள் மற்றும் ஒரு கோப்பு தேவைப்படும் docker-compose
, இந்த கொள்கலன்களை நிர்வகிப்பதற்கான வழிமுறைகளைக் கொண்டுள்ளது. ஒவ்வொரு கொள்கலனும் வெவ்வேறு தொடு புள்ளிகளைக் கொண்டிருக்கும். உதாரணமாக, ஒரு கொள்கலனுடன் timescale
அவர்கள் தரவுத்தளங்களுடன் வேலை செய்வது போலவே தோராயமாக வேலை செய்ய முடியும். அதாவது, பின்வரும் செயல்களைச் செய்ய இது உங்களை அனுமதிக்கிறது:
- Postgres ஷெல்லில் உள்நுழைகிறது.
- அட்டவணைகள் இறக்குமதி மற்றும் ஏற்றுமதி.
- உருவாக்கம்
pg_dump
அட்டவணைகள் அல்லது தரவுத்தளங்கள்.
Express.js பயன்பாட்டுக் கொள்கலன், expressjs
, பின்வரும் திறன்களைக் கொண்டிருக்கலாம்:
- கணினி பதிவிலிருந்து புதிய தரவை வழங்குதல்.
- சில கட்டளைகளை இயக்க ஷெல்லில் உள்நுழைக.
கொள்கலன்களுடன் தொடர்புகொள்வது
டோக்கர் கம்போஸைப் பயன்படுத்தி கொள்கலன்களுக்கு இடையே தொடர்பை அமைத்தவுடன், அந்தக் கொள்கலன்களுடன் தொடர்புகொள்வதற்கான நேரம் இது. டோக்கர் கம்போஸ் அமைப்பில் ஒரு கட்டளை உள்ளது docker-compose
, ஆதரவு விருப்பம் -f
, இது ஒரு கோப்பை கணினிக்கு மாற்ற உங்களை அனுமதிக்கிறது docker-compose.yml
.
இந்த விருப்பத்தின் திறன்களைப் பயன்படுத்தி, கோப்பில் குறிப்பிடப்பட்டுள்ள கொள்கலன்களுக்கு மட்டுமே கணினியுடனான தொடர்புகளை நீங்கள் கட்டுப்படுத்தலாம். docker-compose.yml
.
கட்டளைகளைப் பயன்படுத்தும் போது கொள்கலன்களுடனான தொடர்புகள் எப்படி இருக்கும் என்பதைப் பார்ப்போம் docker-compose
. நாம் ஷெல்லில் உள்நுழைய வேண்டும் என்று கற்பனை செய்தால் 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
டோக்கர் கம்போஸ் உள்ளமைவை நிர்வகிக்கவும், அது விவரிக்கும் கொள்கலன்களுடன் தொடர்பு கொள்ளவும், பின்வரும் கோப்பை உருவாக்குவோம் 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
.
கிடைக்கக்கூடிய கட்டளைகளில் உதவி
make build
- ஒரு படத்தை அசெம்பிள் செய்தல்Dockerfile
. எங்கள் எடுத்துக்காட்டில் ஏற்கனவே உள்ள படங்களைப் பயன்படுத்தினோம்timescale
иping
. ஆனால் படம்api
நாங்கள் உள்நாட்டில் சேகரிக்க விரும்புகிறோம். இந்த கட்டளையை இயக்கிய பின் இதுவே சரியாகும்.
டோக்கர் கொள்கலனை உருவாக்குதல்
make start
- அனைத்து கொள்கலன்களையும் தொடங்குதல். ஒரே ஒரு கொள்கலனைத் தொடங்க, நீங்கள் ஒரு கட்டளையைப் பயன்படுத்தலாம்make start c=timescale
.
டைம்ஸ்கேல் கொள்கலனை இயக்குகிறது
பிங் கொள்கலனை இயக்குகிறது
make login-timescale
- கொள்கலனின் பாஷ் அமர்வுக்கு உள்நுழைகtimescale
.
டைம்ஸ்கேல் கொள்கலனில் பாஷ் இயங்குகிறது
make db-shell
- நுழைவாயில்psql
ஒரு கொள்கலனில்timescale
தரவுத்தளத்திற்கு எதிராக SQL வினவல்களை இயக்க.
டைம்ஸ்கேல்ட்பி கொள்கலனில் psql ஐ இயக்குகிறது
make stop
- கொள்கலன்களை நிறுத்துதல்.
கால அளவு கொள்கலனை நிறுத்துதல்
make down
- கொள்கலன்களை நிறுத்துதல் மற்றும் அகற்றுதல். ஒரு குறிப்பிட்ட கொள்கலனை அகற்ற, விரும்பிய கொள்கலனைக் குறிப்பிடும் இந்த கட்டளையைப் பயன்படுத்தலாம். உதாரணத்திற்கு -make down c=timescale
அல்லதுmake down c=api
.
அனைத்து கொள்கலன்களையும் நிறுத்துதல் மற்றும் நீக்குதல்
முடிவுகளை
கொள்கலன்களை நிர்வகிப்பதற்கான சிறந்த கட்டளைகளை டோக்கர் கம்போஸ் எங்களுக்கு வழங்கினாலும், சில நேரங்களில் இந்த கட்டளைகள் நீண்டதாகவும் நினைவில் கொள்வது கடினமாகவும் இருக்கும்.
பயன்படுத்தும் முறை Makefile
ஒரு கோப்பிலிருந்து கொள்கலன்களுடன் விரைவான மற்றும் எளிதான தொடர்புகளை ஏற்படுத்த எங்களுக்கு உதவியது docker-compose.yml
. அதாவது, நாங்கள் பின்வருவனவற்றைப் பற்றி பேசுகிறோம்:
- டெவலப்பர் விவரிக்கப்பட்டுள்ள திட்டக் கொள்கலன்களுடன் மட்டுமே தொடர்பு கொள்கிறார்
docker-compose.yml
, மற்ற இயங்கும் கொள்கலன்களால் வேலை குறுக்கிடப்படவில்லை. - ஒரு குறிப்பிட்ட கட்டளை மறந்துவிட்டால், நீங்கள் கட்டளையை இயக்கலாம்
make help
மற்றும் கிடைக்கும் கட்டளைகளில் உதவி பெறவும். - சமீபத்திய பதிவு உள்ளீடுகளைப் பெறுவது அல்லது கணினியில் உள்நுழைவது போன்ற செயல்களைச் செய்ய நீண்ட வாதங்களின் பட்டியல்களை நீங்கள் நினைவில் வைத்திருக்க வேண்டியதில்லை. உதாரணமாக, ஒரு கட்டளை போன்றது
docker-compose -f docker-compose.yml exec timescale psql -Upostgres
மாறும்make db-shell
. - கோப்பு
Makefile
திட்டம் வளரும்போது நீங்கள் அதை நெகிழ்வாக மாற்றியமைக்கலாம். எடுத்துக்காட்டாக, தரவுத்தள காப்புப்பிரதியை உருவாக்க அல்லது வேறு ஏதேனும் செயலைச் செய்ய கட்டளையைச் சேர்ப்பது எளிது. - டெவலப்பர்களின் ஒரு பெரிய குழு அதைப் பயன்படுத்தினால்
Makefile
, இது ஒத்துழைப்பை ஒழுங்குபடுத்துகிறது மற்றும் பிழைகளை குறைக்கிறது.
சோசலிஸ்ட் கட்சி எங்கள்
அன்புள்ள வாசகர்கள்! டோக்கர் கம்போஸை எவ்வாறு தானியங்குபடுத்துவது?
ஆதாரம்: www.habr.com