Доцкер Цомпосе за контејнерирање МЕАН Стацк апликације

Доцкер Цомпосе је алат за дефинисање и покретање више контејнера за покретање сложених апликација у Доцкер-у, на пример контејнерирање МЕАН апликације.

У претходним блоговима на Доцкер-у бисте прочитали шта су Доцкер-ове слике, Доцкер-ови контејнери и шта је за њима потребно. Ако нисте читали о њима, тражим да прочитате , пре него што наставите са овим блогом на Доцкер Цомпосе.

Након истраживања могућности које имају Доцкер, сигурно је врло узбудљиво сазнати више. Зар не? Па, бар сам био кад сам набасао на изазов.



Увод у Доцкер Цомпосе

Садржај једне услужне апликације био ми је лак. Али када сам морао да садржавам више услуга у одвојеним контејнерима, налетео сам на блокаду пута. Мој захтев је био да садржавам и хостујем МЕАН стек апликацију.

Да, добро сте прочитали. Апликација пуног стека. У почетку сам мислио да то није могуће. Али након што сам чуо за Доцкер Цомпосе, знао сам да ће сви моји проблеми бити решени.

Доцкер Цомпосе се може користити за стварање засебних контејнера (и њихово хостовање) за сваки од стекова у МЕАН апликацији стека. МЕАН је скраћеница од МонгоДБ Екпресс Ангулар & НодеЈс. Демонстрација коју ћу приказати на овом блогу је такође на исту тему.

Коришћењем Доцкер Цомпосе можемо да хостујемо сваку од ових технологија у одвојеним контејнерима на истом хосту и натерамо их да међусобно комуницирају. Сваки контејнер ће изложити порт за комуникацију са другим контејнерима.

Комуникацију и време рада ових контејнера одржаваће Доцкер Цомпосе.

Па се можете запитати, како поставити целу ову инфраструктуру? Па, онда ћу вам дати детаљније објашњење.

Доцкерфиле

Слично као што вртимо било који контејнер за једну апликацију писањем датотеке доцкер, морат ћемо написати засебну датотеку за доцкер за изградњу сваке од апликација са једним спремником. Поред тога, мораћемо да напишемо и Доцкер Цомпосе датотеку која ће обавити стварни посао. Доцкер Цомпосе Филе извршиће различите доцкер датотеке да би креирао различите контејнере и омогућио им међусобну интеракцију.

У нашем случају имамо комплетну стек апликацију која се састоји од МонгоДБ, ЕкпрессЈС, Ангулар и НодеЈС. МонгоДБ брине о позадинској бази података, НодеЈС и ЕкпрессЈС су за приказивање на страни сервера, а Ангулар је за предњу страну.

МЕАН Стацк Апп - Доцкер Цомпосе - Едурека

С обзиром на то да постоје три компоненте, за сваку компоненту морамо да вртимо контејнере. Контејнере морамо да вртимо на следећи начин:

  1. Посуда 1 - Угаона
  2. Контејнер 2 - НодеЈС и ЕкпрессЈС
  3. Контејнер 3 - МонгоДБ

Израда Доцкер контејнера

Као први корак за доцкеризацију средње апликације, напишимо доцкерфиле за изградњу сваке од компонената, почев од Ангулар-овог контејнера. Ова датотека доцкера мораће бити присутна у директоријуму пројекта заједно са датотеком ‘пацкаге.јсон’. „Пацка.јсон“ садржи детаље о томе коју верзију зависности треба да користи „НПМ“ за изградњу угаоне апликације.

1. Доцкерфиле за предњи крај

ФРОМ чвор: 6 РУН мкдир -п / уср / срц / апп ВОРКДИР / уср / срц / апп ЦОПИ пацкаге.јсон / уср / срц / апп РУН нпм цацхе цлеан РУН нпм инсталл ЦОПИ. / уср / срц / апп ЕКСПОСЕ 4200 ЦМД ['нпм', 'старт']

Као и увек, наша прва команда је да повучемо основну слику, а ми повлачимо основну слику „чвор: 6“.

Следеће две команде односе се на стварање новог директоријума ‘/ уср / срц / апп’ унутар Доцкер контејнера за чување кутних кодова и стварање овог радног директоријума унутар контејнера.

Затим копирамо датотеку ‘пацкаге.јсон’ из нашег директорија пројекта у унутрашњост контејнера.

Затим покрећемо команду ‘нпм цацхе цлеан’ која чисти нпм кеш меморију.

Након тога покрећемо команду ‘нпм инсталл’ која започиње преузимање котловских плоча потребних за хостовање апликације Ангулар. Почиње преузимање котловских плоча на основу верзија зависности наведених у „пацкаге.јсон“.

Следеће покретање команде „РУН“ је копирање свих кодова, фасцикли присутних из директорија пројекта у унутрашњост контејнера.

Горња команда тражи од контејнера да изложи број порта 4200 за комуникацију са задњим сервером за слање захтева корисника који приступају предњем клијенту путем веб корисничког интерфејса.

Коначно, последња команда је „РУН“ команда за покретање „нпм“. Ово започиње извршавање кодова за изградњу наше апликације Ангулар.

Апликација Ангулар је сада спремна, али неће бити правилно хостована због зависности од позадинског сервера и базе података. Па идемо даље и напишите доцкер датотеку за контејнерирање позадинског сервера.

2. Доцкерфиле за задњи крај

Чак ће и ова датотека доцкера бити присутна у директоријуму пројекта. Овај директоријум ће такође садржати датотеку ‘пацкаге.јсон’ за дефинисање зависности Екпресс сервера и других захтева НодеЈС-а. Али што је најважније, садржи пројектни код који подржава позадински сервер.

ФРОМ чвор: 6 РУН мкдир -п / уср / срц / апп ВОРКДИР / уср / срц / апп ЦОПИ пацкаге.јсон / уср / срц / апп РУН нпм цацхе цлеан РУН нпм инсталл ЦОПИ. / уср / срц / апп ЕКСПОСЕ 3000 ЦМД ['нпм', 'старт']

Као што видите, постоји много сличности између две датотеке доцкер-а. Користимо исти ‘чвор: 6’ као основни слој слике, креирамо нови директоријум унутар контејнера, претварамо га у радни директоријум и између осталих покрећемо команду ‘нпм инсталл’. Али једина разлика је број порта који је изложен за комуникацију. У овом случају је дефинисан број порта 3000. Овде ће бити хостован сервер који ће тражити захтеве клијента.

3. База података

Можда се питате зашто у наслову нисам поменуо „доцкерфиле за базу података“. Разлог је тај што заправо немамо потребе за прилагођавањем. Можемо одмах извући основну слику „МонгоДБ“ за чување података и само изложити број порта на којем му се може приступити.

Сад би вам било на уму питање где бих то могао да урадим? Па, то можемо учинити у Доцкер Цомпосе датотеци.

Доцкер Цомпосе Филе

Доцкер Цомпосе Филе је ИАМЛ датотека која садржи детаље о услугама, мрежама и количинама за подешавање апликације Доцкер.

Покрените доњу команду да бисте пронашли верзију вашег Доцкер Енгине-а.

доцкер -в

Извршењем наредбе вратиће се верзија покренута на вашем хосту. На основу верзије Доцкер Енгине-а на вашем рачунару, преузмите одговарајућу верзију Доцкер Цомпосе. Можете потражити одговарајућу верзију за преузимање Доцкерова званична документација .

Пошто покрећем Доцкер Енгине верзије 17.05.0-це, користио сам Доцкер Цомпосе верзију 3.

Инсталирајте Доцкер Цомпосе

Да бисте преузели Цомпосе, покрените доњи скуп наредби.

судо цурл -Л хттпс://гитхуб.цом/доцкер/цомпосе/релеасес/довнлоад/1.16.1/доцкер-цомпосе-`унаме -с`-`унаме -м` -о / уср / лоцал / бин / доцкер- састави судо цхмод + к / уср / лоцал / бин / доцкер-цомпосе

Имајте на уму да ће се број верзије у наредби променити на основу верзије Доцкер Енгине коју користите.

Испод су наредбе које су део моје датотеке Доцкер Цомпосе.

верзија: '3.0' # наведите верзију доцкер-цомпосе # Дефинишите услуге / контејнере који ће се покретати услуге: ангулар: # име прве градње услуге: ангулар-апп ​​# наведите директоријум портова Доцкерфиле: - '4200: 4200' # наведите мапирање портова екпресс: # име друге градње услуге: екпресс-сервер # наведите директоријум портова Доцкерфиле: - '3000: 3000' # наведите везе мапирања портова: - база података # повежите ову услугу са базом података базе података: # име треће слике услуге: монго # наведите слику за изградњу контејнера из портова: - '27017: 27017' # наведите прослеђивање порта

Прилично сам сигуран да вам наредбе у горњој датотеци немају смисла. Па, решимо тај проблем.

У првом реду кода дефинисао сам верзију Доцкер Цомпосе коју користим. Ово је веома важан корак ако желите да Цомпосе правилно функционише без икаквих грешака. Обавезно преузмите верзију Доцкер Цомпосе у складу са верзијом вашег Доцкер Енгине-а.

Након тога, дефинисао сам три контејнера помоћу кључне речи „услуге“. Ове услуге се односе на три компоненте мог стека, предњи крај, задњи крај и базу података. Дакле, у овом случају, назив мојих контејнера биће име мојих услуга, тј. „Угаона“, „експресна“ и „база података“.

Кључна реч ‘буилд’ се користи да означи да је датотека доцкера за предење тог контејнера присутна у том директоријуму. Чекај, како си збуњен?

То је једноставно. Путање треба навести након „буилд:“. У нашем случају, „ангулар-апп“ и „екпресс-сервер“ су путање до два директоријума до којих се може доћи из директоријума у ​​којем је датотека Доцкер Цомпосе. За наш контејнер базе података, једноставно сам рекао, користите основну „слику: монго“ уместо путање до доцкфиле.

За сваку од ових услуга такође сам одредио бројеве порта који се могу користити за примање / слање захтева из других контејнера (услуга). 4200 у случају угла, 3000 у случају екпресс-а и 27017 у случају монго-а.

Поред тога, експресни контејнер има „везу:“ до контејнера базе података, што значи да ће било који подаци примљени на страни сервера бити послати у базу података у којој ће се чувати.

Сада смо коначно на крају постављања Цомпосе-а. Да бисмо покренули Доцкер Цомпосе и завртили три контејнера са три услуге, потребно је једноставно да извршимо следеће две наредбе из директоријума у ​​којем се налази Доцкер Цомпосе датотека (ИАМЛ датотека):

доцкер-цомпосе буилд доцкер-цомпосе уп

Команда „доцкер-цомпосе буилд“ користи се за изградњу / обнављање услуга, док се наредба „доцкер-цомпосе уп“ користи за стварање / покретање контејнера. Хајде! Испробајте сами.

Испод су снимци екрана слика Доцкера који се израђују, а затим извршавају. Можете приметити да се Угаона слика прави, а затим именом означава као „угаона: најновија“.

Такође, слика за Екпресс је изграђена са именом и ознаком као „екпресс: латест“.

Сада када је слика изграђена, покушајмо да је покренемо и тако вртимо контејнер у процесу. Испод је тај снимак екрана.

Испод је снимак екрана на којем стоји „вебпацк: успешно компајлиран“, што значи да Доцкер успешно контејнерише три услуге.

Сада када су контејнери хостовани, можете видети услуге активне на њиховим портовима. Идите да укуцате следеће бројеве порта у свој веб прегледач да бисте ступили у интеракцију са ГУИ апликације МЕАН.

лоцалхост: 4200 - Угаона апликација (фронт-енд)
лоцалхост: 3000 - Екпресс Сервер & НодеЈС (позадински / на страни сервера)
лоцалхост: 27017 - МонгоДБ (база података)

Импресионирани сте већ? Чекај, јер Доцкер још није готов! Наредбу „доцкер-цомпосе сцале =’ к '“можемо користити за лако увећавање / смањивање броја примена. Другим речима, можемо створити толики број контејнера за услугу. Испод је комплетна команда за прилагођавање одређене услуге на контејнере „5“:

скала доцкер-цомпосе = 5

Тако лако скалирање услуга, паковање и контејнерирање на тако исплатив начин је оно што Доцкер чини једним од најбољих алата за примену и мојим личним фаворитом.

Ако и даље сумњате у овај концепт, можете погледати доњи видео где сам објаснио исти концепт практичним практичним упутствима о томе како да подесим Доцкер Цомпосе.

Доцкер Цомпосе | Контејнеризација МЕАН апликације стека | Водич за ДевОпс

Сад кад сте сазнали за Доцкер, погледајте Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250 000 задовољних ученика раширених широм света. Овај курс за обуку за сертификацију Едурека Доцкер помаже ученицима да стекну стручност у примени Доцкера и његовом савладавању.

Имате питање за нас? Молимо вас да то споменете у одељку за коментаре и јавићемо вам се.

динамичко додељивање меморије у језику ц ++ са примером програма