Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Ou te fautua atu e faitau le tusitusiga o le lipoti a Alexander Sigachev mai Inventos "Atiae ma suʻega faiga ma Docker + Gitlab CI"

O i latou o loʻo amata ona faʻatinoina le atinaʻe ma suʻega faʻavae e faʻavae i luga o Docker + Gitlab CI e masani ona fai fesili masani. O fea e amata ai? E fa'apefea ona fa'atulaga? E fa'afefea ona su'e?

E lelei lenei lipoti aua e talanoa i se auala faʻatulagaina e uiga i le atinaʻeina ma le faʻataʻitaʻiga faʻaogaina o Docker ma Gitlab CI. O le lipoti lava ia e mai le 2017. Ou te manatu mai lenei lipoti e mafai ona e aʻoaʻoina faʻavae, metotia, manatu, poto masani o le faʻaaogaina.

O ai e popole, faamolemole i lalo o le pusi.

O loʻu igoa o Alexander Sigachev. Ou te faigaluega mo Inventos. O le a ou taʻu atu ia te oe loʻu poto masani i le faʻaaogaina o Docker ma pe faʻafefea ona faʻagasolo malie i luga o galuega faatino a le kamupani.

Tulaga autu: Faʻagasologa o atinaʻe e faʻaaoga ai Docker ma Gitlab CI.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O laʻu lauga lona lua lea e uiga ia Docker. I le taimi o le lipoti muamua, matou te faʻaaogaina Docker i Atinaʻe i luga o masini atiaʻe. Ole numera o tagata faigaluega na faʻaaogaina Docker e tusa ma le 2-3 tagata. Na faasolosolo malie lava, na maua le poto masani ma matou siitia teisi atu. So'oga i la matou lipoti muamua.

O le a le mea o le a iai i lenei lipoti? O le a matou faʻasoa atu lo matou poto masani e uiga i le rake na matou aoina, o a faʻafitauli ua matou foia. E le'i matagofie i so'o se mea, ae fa'ataga e fa'aauau.

O le tatou mautauave o le: fa'amauina mea uma e mafai ona tatou maua.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O a faafitauli o loo tatou foiaina?

A tele 'au i totonu o se kamupani, o le tagata fai polokalame o se punaoa fa'asoa. E iai la'asaga e toso ese ai se fai polokalame mai se tasi poloketi ma tu'u atu mo sina taimi i se isi galuega.

Ina ia vave ona malamalama le polokalame, e tatau ona ia sii maia le code source o le poloketi ma faʻalauiloa le siosiomaga i se taimi vave e mafai ai, lea e mafai ai e ia ona faʻagasolo atili e foia faafitauli o lenei poloketi.

E masani lava, afai e te amata mai le maoaʻe, ona itiiti lea o faʻamaumauga i le poloketi. O fa'amatalaga i le auala e fa'atulaga ai e avanoa mo na'o tagata tuai. E fa'atulaga e tagata faigaluega a latou fale faigaluega i le tasi pe lua aso. Ina ia faʻavaveina lenei mea, matou faʻaaogaina Docker.

O le isi mafuaaga o le faʻavasegaina o faʻatulagaga i Atinaʻe. I loʻu poto masani, e masani ona faia e le au atinaʻe le taulamua. I mataupu uma lona lima, e tuʻuina atu se vaega faʻapitoa, mo se faʻataʻitaʻiga, vasya.dev. O loʻo nofo i ona tafatafa o lona tuaoi o Petya, o lona vaega o le petya.dev. Latou te atiaʻe se upega tafaʻilagi poʻo se vaega o le faʻaogaina o le igoa ole igoa.

A fa'atupula'ia le faiga ma amata ona o'o atu nei igoa i totonu o fa'atonuga, ona tula'i mai lea o se fete'ena'iga o le si'osi'omaga o le Atina'e ma toe tusi le ala o le saite.

O le mea lava e tasi e tupu i faʻamaumauga faʻamaumauga. E le fa'alavelave se tasi i le puipuiga ma galue i se upu fa'a'a'a gaogao. I le tulaga faʻapipiʻi, na fesili MySQL i se tasi mo se faʻaupuga ma o le faʻaupuga na faʻaalia e 123. E masani ona tupu o loʻo suia pea le faʻamaumauga o faʻamaumauga e faʻatatau i le tautinoga a le tagata atiaʻe. Sa faasa'o e se tasi, e le'i faasa'oina e se tasi le config. Sa i ai togafiti ina ua matou ave i fafo se ituaiga o suʻega config i totonu .gitignore ma e tatau ona faʻapipiʻi e le au atinaʻe taʻitasi le faʻamaumauga. O lenei mea na faigata ai ona amata. E tatau, faatasi ai ma isi mea, ia manatua e uiga i le database. O le database e tatau ona amataina, e tatau ona tuʻuina se faʻaupuga, e tatau ona lesitala se tagata faʻaoga, e tatau ona faia se laulau, ma isi.

O le isi fa'afitauli o le 'ese'ese ituaiga o faletusi. E masani ona tupu e galue le atinaʻe ma galuega eseese. O loʻo i ai se poloketi Legacy na amata i le lima tausaga talu ai (mai le 2017 - ed. note). I le taimi o le faʻalauiloaina, na matou amata ile MySQL 5.5. O loʻo i ai foʻi galuega faʻaonaponei tatou te taumafai ai e faʻatino nisi faʻaonaponei faʻaonaponei o MySQL, mo se faʻataʻitaʻiga, 5.7 pe sili atu (i le 2017 - ed. note)

Soʻo se tasi e galue ma MySQL e iloa o nei faletusi e aumaia faʻalagolago ma i latou. E fai lava si fa'afitauli le fa'auma fa'atasi fa'avae 2. Le itiiti ifo, o tagata tuai o loʻo faʻafitauli e faʻafesoʻotaʻi i le database fou. O lenei mea e mafua ai le tele o faafitauli.

O le isi faʻafitauli o le taimi e galue ai se tagata faʻapipiʻi i luga o se masini faʻapitonuʻu, na te faʻaaogaina punaoa i le lotoifale, faila i le lotoifale, RAM i le lotoifale. O fegalegaleaiga uma i le taimi o le atinaʻeina o se fofo i faʻafitauli o loʻo faia i totonu o le faʻavae o le mea moni e galue i luga o le masini e tasi. O se faʻataʻitaʻiga pe a iai a matou 'auʻaunaga pito i tua i le Production 3, ma faʻasaoina e le tagata faʻapipiʻi faila i le root directory ma mai iina e ave e nginx faila e tali atu ai i le talosaga. A oʻo mai sea code i le Gaosiga, e aliali mai o loʻo i ai le faila i luga o se tasi o le 3 servers.

O lo'o fa'atupuina nei le ta'ita'iga a microservices. Pe a tatou vaevaeina a tatou talosaga tetele i ni vaega laiti e fegalegaleai ma isi. O lenei mea e mafai ai e oe ona filifili tekinolosi mo se faaputuga patino o galuega. E fa'atagaina ai fo'i oe e fa'asoa galuega ma matafaioi i le va o tagata atia'e.

Frondend-developer, atiina ae i luga o le JS, e toetoe lava a leai se aafiaga ile Backend. O le atinaʻe pito i tua, i le isi itu, e atiina ae, i la matou tulaga, Ruby on Rails ma e le faʻalavelave ia Frondend. O le fegalegaleaiga e faia e faʻaaoga ai le API.

I le avea ai o se ponesi, faatasi ai ma le fesoasoani a Docker, na mafai ai ona matou toe faʻaaogaina punaoa i luga ole Staging. O poloketi taʻitasi, ona o lona faʻapitoa, e manaʻomia ni faʻatulagaga patino. Fa'aletino, sa mana'omia le tu'ufa'atasia o se 'au'aunaga fa'akomepiuta ma fa'atulaga eseese, po'o le fa'asoa atu o se ituaiga si'osi'omaga fesuisuia'i ma galuega fa'atino e mafai, e fa'atatau i le fa'aliliuga o faletusi, fa'aaafia e le tasi le isi.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Meafaigaluega. O le a le mea tatou te faaaogaina?

  • Docker lava ia. O loʻo faʻamatalaina e le Dockerfile le faʻalagolago i se tasi talosaga.
  • Docker-compose o se fusi e tuʻufaʻatasia ai nai a matou talosaga Docker.
  • Matou te faʻaogaina le GitLab e teu ai le faʻailoga autu.
  • Matou te faʻaogaina le GitLab-CI mo le tuʻufaʻatasia o faiga.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

E lua vaega o le lipoti.

O le vaega muamua o le a talanoa e uiga i le auala na faʻatautaia ai Docker i masini a le au atiaʻe.

O le vaega lona lua o le a talanoa pe faʻafefea ona fegalegaleai ma GitLab, pe faʻafefea ona matou faʻataʻitaʻiina suʻega ma pe faʻafefea ona matou taʻavale i le Staging.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Docker o se tekinolosi e faʻatagaina (faʻaaogaina se auala faʻaalia) e faʻamatala ai vaega talafeagai. O se faʻataʻitaʻiga Dockerfile. O iinei matou te taʻutino atu ai o loʻo matou maua mai le ata aloaia Ruby:2.3.0 Docker. O lo'o iai le Ruby version 2.3 fa'apipi'i. Matou te faʻapipiʻiina faletusi manaʻomia ma NodeJS. Matou te faʻamatalaina matou te fatuina se lisi /app. Seti le app directory e fai ma lisi galue. I totonu o lenei lisi matou te tuʻuina le Gemfile itiiti ma Gemfile.lock manaʻomia. Ona matou fausia lea o poloketi e faʻapipiʻi ai lenei ata faʻalagolago. Matou te faʻaalia o le a sauni le koneteina e faʻalogo i fafo atu o le taulaga 3000. O le faʻatonuga mulimuli o le faʻatonuga e tuʻu saʻo ai la matou talosaga. Afai tatou te faʻatinoina le faʻatonuga amata, o le a taumafai le talosaga e tamoʻe ma faʻatautaia le faʻatonuga.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Ole fa'ata'ita'iga la'ititi lea ole faila faila. I lenei tulaga, matou te faʻaalia o loʻo i ai se fesoʻotaʻiga i le va o pusa e lua. O lo'o tu'u sa'o i totonu o le 'au'aunaga fa'amaumauga ma le 'au'aunaga i luga ole laiga. O a matou 'upega tafaʻilagi i le tele o tulaga e manaʻomia ai se ituaiga o faʻamaumauga e avea o se pito i tua mo le teuina o faʻamatalaga. Talu ai o loʻo matou faʻaaogaina MySQL, o le faʻataʻitaʻiga o loʻo i MySQL - ae leai se mea e taofia ai i matou mai le faʻaogaina o isi faʻamaumauga (PostgreSQL, Redis).

Matou te ave mai le punavai aloaia mai le Docker hub le ata o MySQL 5.7.14 e aunoa ma ni suiga. Matou te aoina le ata e nafa ma la matou 'upega tafaʻilagi mai le lisi o loʻo iai nei. Na te aoina se ata mo i matou i le taimi muamua o le faʻalauiloaina. Ona fa'asolo lea o le fa'atonuga o lo'o matou fa'atinoina iinei. Afai tatou te toe foʻi i tua, o le a tatou vaʻai ua faʻamalamalamaina le faʻasalalauga e ala i Puma. Puma o se tautua na tusia i le Ruby. I le tulaga lona lua, matou te faʻaumatia. O lenei poloaiga e mafai ona faʻalagolago e faʻatatau i o tatou manaʻoga poʻo galuega.

Matou te faʻamatalaina foi e manaʻomia le tuʻuina atu o se taulaga i luga o la matou masini faʻapipiʻi faʻapitoa mai le 3000 i le 3000 i luga o le pusa pusa. O lenei mea e otometi lava ona faʻaaoga iptables ma lona masini, lea e tuʻu saʻo i Docker.

E mafai foi e le tagata atiaʻe, e pei ona i ai muamua, ona maua soʻo se tuatusi IP avanoa, mo se faʻataʻitaʻiga, 127.0.0.1 o le tuatusi IP i le lotoifale poʻo fafo o le masini.

O le laina mulimuli e fai mai o le upega tafaʻilagi e faʻalagolago i le db container. A matou valaʻau i le amataga o le upega tafaʻilagi, o le a amata muamua e le docker-compose le database mo i matou. Ua i ai i le amataga o le database (o le mea moni, pe a uma le faʻalauiloaina o le pusa! E le faʻamaonia ai le saunia o le database) o le a faʻalauiloa le talosaga, o la matou pito i tua.

Ole mea lea e aloese ai mai mea sese pe a le aumaia le database ma sefe punaoa pe a tatou taofi le pusa faʻamaumauga, ma faʻasaʻoloto ai punaoa mo isi poloketi.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O le a le mea e tuʻuina mai ai ia i matou le faʻaogaina o le database dockerization i luga o le poloketi. Matou te faʻaleleia le faʻasologa o MySQL mo tagata atiaʻe uma. E 'alofia ai nisi o mea sese e ono tupu pe a feeseesea'i fa'aliliuga, pe a suia le syntax, fa'atulagaga, fa'aletonu tulaga. O lenei mea e mafai ai ona e faʻamaonia se igoa talimalo masani mo le database, login, password. O loʻo matou o ese mai le faleoloa o igoa ma feeseeseaiga i faila faila na matou maua muamua.

Matou te maua le avanoa e faʻaoga ai se config sili atu ona lelei mo le Atinaʻe siosiomaga, lea o le a ese mai le faaletonu. MySQL ua faʻatulagaina mo masini vaivai e ala i le faaletonu ma o lona faʻatinoga mai le pusa e matua leaga lava.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Docker e faʻatagaina oe e faʻaaoga le Python, Ruby, NodeJS, PHP faʻaliliu o le manaʻoga. Matou te faʻaumatia le manaʻoga e faʻaaoga se ituaiga o pule faʻasologa. I le taimi muamua, na faʻaaoga e Ruby se pusa rpm e mafai ai ona e suia le faʻasologa e faʻatatau i le poloketi. E faʻatagaina foʻi, faʻafetai i le Docker container, e faʻafeiloaʻi solo le code ma faʻasologa faʻatasi ma faʻalagolago. E leai se fa'afitauli tatou te malamalama ai i le fa'aliliuga ma le fa'ailoga. Ina ia faafou le lomiga, tuu i lalo le pusa tuai ma sii i luga le pusa fou. A iai se mea ua faaletonu, e mafai ona tatou tuu i lalo le atigipusa fou, sii i luga le pusa tuai.

A maeʻa ona fausia le ata, o pusa i le Atinaʻe ma le Gaosiga o le a tutusa. E moni lava lenei mea mo faʻapipiʻi tetele.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI I Frontend matou te faʻaaogaina JavaScipt ma NodeJS.

O lea ua i ai le matou galuega mulimuli i ReacJS. Na faʻatautaia e le tagata faʻapipiʻi mea uma i totonu o le koneteina ma atinaʻe e faʻaaoga ai le vevela-reload.

O le isi, o le JavaScipt faʻapotopotoga galuega ua faʻalauiloaina ma o le code tuʻufaʻatasia i statics e tuʻuina atu e ala i le nginx saving resources.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O lea ua ou tuuina atu le polokalame o le tatou galuega mulimuli.

O a galuega na foia? Sa i ai sa matou mana'oga e fausia se faiga e fegalegaleai ai masini feavea'i. Latou te mauaina faʻamatalaga. O se tasi o avanoa o le auina atu lea o faʻamatalaga tulei i lenei masini.

O le a le mea ua tatou faia mo lenei mea?

Na matou vaevaeina i totonu o le talosaga ia vaega e pei o: le vaega faʻatonu i luga o le JS, le pito i tua, lea e galue i le REST interface i lalo o Ruby on Rails. O le pito i tua e fegalegaleai ma le database. O le i'uga e maua e tu'uina atu i le kalani. E fegalegaleai le vaega pule ma le pito i tua ma le database e ala i le REST interface.

Sa i ai fo'i le mana'oga e lafo atu fa'asalalauga fa'asalalau. A o lei faia lena mea, sa i ai sa matou poloketi na faʻatinoina se masini e nafa ma le tuʻuina atu o faʻamatalaga i luga o masini feaveaʻi.

Ua matou atinaʻeina le polokalame lenei: o se tagata faʻapipiʻi mai le browser e fegalegaleai ma le admin panel, o le admin panel e fegalegaleai ma le pito i tua, o le galuega o le auina atu o faʻamatalaga Push.

O faʻasalalauga faʻasalalau e fegalegaleai ma se isi vaega o loʻo faʻatinoina i NodeJS.

E fausia laina ma auina atu faʻamatalaga e tusa ai ma a latou masini.

E lua fa'amaumauga o lo'o tusia iinei. I le taimi nei, faatasi ai ma le fesoasoani a Docker, matou te faʻaogaina 2 faʻamaumauga tutoʻatasi e le fesoʻotaʻi le tasi i le isi i soʻo se auala. E le gata i lea, o loʻo i ai a latou fesoʻotaʻiga masani masani, ma faʻamaumauga faʻaletino o loʻo teuina i faʻamaumauga eseese i luga o le masini a le tagata atiaʻe.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

E tutusa ae i numera. O iinei e taua ai le toe faʻaogaina o code.

Afai na matou talanoa muamua e uiga i le toe faʻaaogaina o code i le tulaga o faletusi, ona i ai lea i lenei faʻataʻitaʻiga, o la matou auaunaga e tali atu i Push faʻamatalaga e toe faʻaaogaina e avea o se server atoatoa. E maua ai se API. Ma ua uma ona fegalegaleai le tatou atinae fou.

I lena taimi, sa matou faʻaaogaina le 4 o le NodeJS. I le taimi nei (i le 2017 - ed. note) i atinaʻe lata mai matou te faʻaogaina le 7 o le NodeJS. E leai se fa'afitauli i vaega fou e fa'aaofia ai lomiga fou o faletusi.

Afai e manaʻomia, e mafai ona e toe faʻafoʻi ma siitia le NodeJS version mai le Push notification service.

Ma afai e mafai ona tatou faʻatumauina le fesoʻotaʻiga API, ona mafai lea ona sui i isi poloketi sa faʻaaogaina muamua.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O le a le mea e te manaʻomia e faʻaopoopo ai Docker? Matou te faʻaopoopoina se Dockerfile i la matou fale teu oloa, lea e faʻamatalaina ai faʻalagolago manaʻomia. I lenei faʻataʻitaʻiga, o vaega o loʻo faʻamavaeina i lalo. Ole seti la'ititi lea ole fa'atupu i tua.

Pe a fatuina se poloketi fou, matou te fatuina se Dockerfile, faʻamatala le faʻaogaina o meaola faanatura (Python, Ruby, NodeJS). I le docker-compose, o loʻo faʻamatalaina ai le faʻalagolago tatau - le database. Matou te faʻamatalaina matou te manaʻomia se faʻamaumauga o sea ituaiga ma se faʻamatalaga, teu faʻamaumauga iina ma iina.

Matou te faʻaogaina se isi pusa lona tolu ma le nginx e tautua static. E mafai ona tuu i luga ata. Backend tuʻuina i latou i se voluma saunia muamua, lea o loʻo faʻapipiʻiina foi i totonu o se atigipusa ma le nginx, lea e tuʻuina atu ai le static.

Ina ia teuina le nginx, mysql configuration, matou te faʻaopoopoina se faila Docker lea matou te teuina ai faʻamaumauga talafeagai. A fai e se tagata atiaʻe se git clone o se fale teu oloa i luga o lana masini, ua uma ona i ai sana poloketi ua saunia mo atinaʻe faʻapitonuʻu. E leai se fesiligia po o le a le taulaga poʻo le a le faʻatulagaga e faʻaoga.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Le isi, e tele a matou vaega: admin, inform-API, faʻasalalauga faʻasalalauga.

Ina ia amataina nei mea uma, na matou faia se isi fale teu oloa, lea na matou taʻua o le dockerized-app. I le taimi nei matou te faʻaogaina ni fale teu oloa i luma o vaega taʻitasi. E matua'i eseese lava - i le GitLab e foliga mai o se faila, ae i luga o le masini a le tagata atia'e, o se pusa mo se galuega fa'apitoa. E tasi le tulaga i lalo o vaega ia o le a tuʻufaʻatasia.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O se faʻataʻitaʻiga lea o mea o loʻo i totonu o le dockerized-app. Matou te aumaia foi le Docker directory iinei, lea matou te faʻatumu ai faʻasalalauga manaʻomia mo fegalegaleaiga a vaega uma. E iai le README.md o loʻo faʻamatala faʻapuupuu le auala e faʻatino ai le poloketi.

O iinei ua matou faʻaogaina faila faila e lua. Ua faia lenei mea ina ia mafai ona tamoe i laasaga. Pe a galue se tagata atiae ma le autu, na te le manaʻomia ni faʻasalalauga faʻasalalau, naʻo le faʻalauiloaina o se faila faila faila ma, e tusa ai, ua faʻasaoina le punaoa.

Afai e iai se mana'oga e tu'ufa'atasia ma fa'amatalaga tulei, ona fa'alauiloa lea o le docker-compose.yaml ma le docker-compose-push.yaml.

Talu ai ona o le docker-compose.yaml ma le docker-compose-push.yaml o loʻo i totonu o se faila, e otometi lava ona fatuina se fesoʻotaʻiga virtual e tasi.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Fa'amatalaga o vaega. Ole faila sili atu lea e nafa ma le aoina o vaega. O le a le mea ofoofogia iinei? O iinei matou te faʻaalia ai le vaega paleni.

Ole ata lea o le Docker ua saunia e faʻaogaina le nginx ma se talosaga e faʻalogo ile Docker socket. Dynamic, a'o ki ma tape pusa, e toe fa'afouina le nginx config. Matou te tufatufa atu le faʻaogaina o vaega e igoa ole vaega lona tolu.

Mo le siosiomaga Atinaʻe, matou te faʻaogaina le .dev domain - api.informer.dev. O talosaga e iai le .dev domain o lo'o avanoa ile masini fa'apitonu'u a le tagata atia'e.

E le gata i lea, o configs e fa'afeiloa'i i poloketi ta'itasi ma fa'alauiloa fa'atasi galuega uma i le taimi e tasi.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

I le faʻataʻitaʻiga, e foliga mai o le kalani o la matou suʻesuʻega poʻo se meafaigaluega matou te faia ai talosaga i le paleni.

E fa'atulaga e le fa'aitulaga igoa ole pusa e fa'afeso'ota'i.

E mafai ona nginx, lea e tuʻuina atu i le admin JS. E mafai ona avea ma nginx, lea e tuʻuina atu ai le API, poʻo faila faila, lea e tuʻuina atu i le nginx i le tulaga o ata faʻapipiʻi.

O le ata o loʻo faʻaalia ai o pusa e fesoʻotaʻi e se fesoʻotaiga vavave ma natia i tua o se sui.

I luga o le masini a le tagata atiaʻe, e mafai ona e mauaina le atigipusa e iloa ai le IP, ae i le mataupu faavae matou te le faʻaogaina lenei mea. E toetoe lava a leai se mana'oga mo se avanoa tuusa'o.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O le fea faʻataʻitaʻiga e te vaʻai i ai e faʻapipiʻi ai lau talosaga? I loʻu manatu, o se faʻataʻitaʻiga lelei o le ata faʻailoga aloaia mo MySQL.

E fai lava si faigata. E tele fa'aliliuga. Ae o lona faʻatinoga e mafai ai e oe ona faʻataunuʻuina le tele o manaʻoga e ono tulaʻi mai i le faagasologa o le atinaʻe atili. Afai e te faʻaaluina le taimi ma mafaufau pe faʻafefea ona fegalegaleai uma, ona ou manatu lea o le a leai sau faʻafitauli i le faʻatinoina o oe lava.

Hub.docker.com e masani ona iai fesoʻotaʻiga ile github.com, lea e iai faʻamatalaga mataʻutia e mafai ona e fausia ai le ata oe lava.

E le gata i lea i totonu o lenei fale teu oloa o loʻo i ai le docker-endpoint.sh script, lea e nafa ma le amataga muamua ma mo le faʻagasolo atili o le faʻalauiloaina o talosaga.

Faʻapea foʻi i lenei faʻataʻitaʻiga, o loʻo i ai le gafatia e faʻapipiʻi ai le faʻaogaina o fesuiaiga o le siosiomaga. E ala i le faʻamalamalamaina o se fesuiaiga o le siosiomaga pe a taʻavale se atigipusa se tasi pe ala i le docker-compose, e mafai ona tatou fai atu e manaʻomia le setiina o se faʻaupuga avanoa mo le docker e aʻa i luga o MySQL poʻo soʻo se mea tatou te mananaʻo ai.

O lo'o i ai se filifiliga e fai ai se fa'aupuga fa'afuase'i. Matou te fai atu matou te manaʻomia se tagata faʻaoga, matou te manaʻomia le setiina o se faʻamatalaga mo le tagata faʻaoga, ma e manaʻomia ona matou fatuina se faʻamaumauga.

I a matou poloketi, matou te tuʻufaʻatasia le Dockerfile, lea e nafa ma le amataina. O iina na matou faʻasaʻo ai i o matou manaʻoga e fai naʻo se faʻaopoopoga o aia tatau e faʻaaogaina e le talosaga. O lenei mea na mafai ai ona matou fatuina se faʻamaumauga mai le faʻamafanafanaga talosaga mulimuli ane. O talosaga Ruby o loʻo i ai se faʻatonuga mo le fatuina, suia, ma le tapeina o faʻamaumauga.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Ole fa'ata'ita'iga lea ole foliga fa'apitoa ole MySQL ile github.com. E mafai ona e tatalaina le Dockerfile ma vaʻai pe faʻafefea ona faʻapipiʻi iina.

docker-endpoint.sh o le tusitusiga e nafa ma le mea e ulufale ai. I le taimi o le amataga amata, e manaʻomia ni laasaga sauniuni, ma o nei gaioiga uma e faia i fafo naʻo le faʻamatalaga amata.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Sei o tatou agai atu i le vaega lona lua.

Ina ia teu faʻamatalaga punaʻoa, na matou sui i le gitlab. O se faiga e fai si mamana lea e iai se fa'aaliga va'aia.

O se tasi o vaega o Gitlab o Gitlab CI. E fa'atagaina oe e fa'amatala se fa'asologa o fa'atonuga o le a fa'aaoga mulimuli ane e fa'atulaga ai se faiga e tu'uina atu ai tulafono po'o le fa'ata'ita'iina otometi.

Gitlab CI 2 lauga https://goo.gl/uohKjI - lipoti mai le kalapu a Ruby Rusia - e fai si auiliiliga ma atonu e te fiafia i ai.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O lenei o le a tatou vaʻavaʻai i mea e manaʻomia ina ia mafai ai ona faʻagaoioia Gitlab CI. Ina ia mafai ona amata Gitlab CI, matou te manaʻomia le tuʻuina o le faila .gitlab-ci.yml i le aʻa o le poloketi.

O iinei matou te faʻamatalaina matou te mananaʻo e faʻatino se faasologa o setete e pei o se suʻega, faʻapipiʻi.

Matou te faʻatinoina tusitusiga e valaʻau saʻo i le docker-compose e fausia ai la matou talosaga. Ua na'o se fa'ata'ita'iga pito i tua.

Ma le isi, matou te fai atu e tatau ona faʻatautaia femalagaiga e sui ai le database ma faʻataʻitaʻi suʻega.

Afai e saʻo le faʻatinoina o tusitusiga ma e le toe faʻafoʻi mai se faʻailoga sese, ona alu lea o le faiga i le laasaga lona lua o le faʻapipiʻiina.

O loʻo faʻatinoina nei le tulaga faʻapipiʻi mo le faʻatulagaina. Matou te leʻi faʻatulagaina se toe amata le taimi e leai se taimi.

Matou te tapeina faʻamalosi uma pusa, ona matou toe faʻatūina uma lea o pusa, aoina i le taimi muamua i le taimi o suʻega.

O loʻo matou taufetuli mo le siʻosiʻomaga o loʻo i ai nei fesuiaiga o faʻamaumauga faʻamaumauga na tusia e le au atiaʻe.

O lo'o i ai se fa'amatalaga e fa'atatau i na'o le paranesi matai.

Pe a suia isi lala e le faia.

E mafai ona fa'atulagaina fa'asalalauga i lala.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Ina ia faʻatulaga atili lenei mea, matou te manaʻomia le faʻapipiʻi Gitlab Runner.

O lenei aoga o loʻo tusia i Golang. O se faila e tasi, e pei ona masani ai i le lalolagi o Golang, e le manaʻomia ni faʻalagolago.

I le amataga, matou te lesitala le Gitlab Runner.

Matou te maua le ki i le Gitlab web interface.

Ona matou taʻua lea o le initialization command i luga o le laina o le poloaiga.

Seti Gitlab Runner fegalegaleai (Shell, Docker, VirtualBox, SSH)

Ole code ile Gitlab Runner o le a faʻatinoina i luga o tautinoga uma, e faʻatatau ile .gitlab-ci.yml faʻatulagaina.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

E faʻafefea ona vaʻaia ile Gitlab ile upega tafaʻilagi. A maeʻa ona matou faʻafesoʻotaʻi GItlab CI, e iai la matou fuʻa e faʻaalia ai le tulaga o le fausiaina i le taimi nei.

Matou te vaʻai na faia se tautinoga i le 4 minute talu ai, lea na pasia uma suʻega ma e leʻi tupu ai ni faʻafitauli.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

E mafai ona tatou vaʻavaʻai totoʻa i le fausiaina. O iinei tatou te vaʻaia ai e lua setete ua uma ona pasia. Tulaga su'ega ma tulaga fa'apipi'i ile fa'atulagaina.

Afai tatou te kiliki i luga o se fale faʻapitoa, ona i ai lea o se faʻamafanafanaga o faʻatonuga na faʻatautaia i le faagasologa e tusa ai ma le .gitlab-ci.yml.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

E fa'apei le tala fa'asolopito o le matou oloa. Ua tatou vaaia sa i ai taumafaiga manuia. A tu'uina atu su'ega, e le fa'agasolo i le isi la'asaga ma e le'o fa'afouina le fa'ailoga fa'atulagaina.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O a galuega na matou foia i le faʻatulagaina ina ua matou faʻatinoina le docker? O la matou polokalama e aofia ai vaega ma e manaʻomia le toe amata, naʻo se vaega o vaega na faʻafouina i totonu o le fale teu oloa, ae le o le polokalama atoa.

Ina ia faia lenei mea, e tatau ona matou talepeina mea uma i ni faila eseese.

Ina ua uma ona matou faia lenei mea, sa i ai se matou faʻafitauli i le mea moni e fai e Docker-compose lana lava avanoa fesoʻotaʻiga mo tama taʻitasi ma e le vaʻaia vaega a le tuaoi.

Ina ia mafai ona fealuaʻi, matou faia le fesoʻotaʻiga i Docker ma le lima. Na tusia i Docker-tusi e te faʻaogaina sea fesoʻotaʻiga mo lenei poloketi.

O le mea lea, o vaega taʻitasi e amata i lenei mata e vaʻaia vaega i isi vaega o le faiga.

O le isi mataupu o le vaevaeina o le faʻatulagaina i le tele o poloketi.

Talu ai ina ia mafai e nei mea uma ona foliga matagofie ma latalata i le gaosiga, e lelei le faʻaogaina o le taulaga 80 poʻo le 443, lea e faʻaaogaina i soo se mea i le WEB.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

Na faapefea ona tatou foia? Ua matou tofia le tasi Gitlab Runner i galuega tetele uma.

Gitlab e faʻatagaina oe e faʻatautaia le tele o Gitlab Runners tufatufaina, lea o le a naʻo le faʻaaogaina o galuega uma i se auala vevesi ma faʻatautaia.

Ina ia leai so matou fale, matou te faʻatapulaʻaina le vaega o a matou poloketi i le tasi Gitlab Runner, lea e faʻafetaui e aunoa ma ni faʻafitauli ma a matou voluma.

Na matou siitia le nginx-proxy i se isi tusitusiga amata ma faʻaopoopo faʻasologa mo galuega uma i totonu.

O la matou poloketi e tasi le fa'asologa, ma o le paleni e tele fa'asologa i igoa o galuega. E mafai ona sui atili ile igoa ole igoa.

O a matou talosaga e sau e ala i le itu i luga o le taulaga 80 ma e faʻamalieina i totonu o se vaega o pusa e tautuaina lenei vaega.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

O a isi faafitauli sa iai? Ole mea lea ole koneteina uma ole a'a ile faaletonu. O le a'a lea e le tutusa ma le a'a o le faiga.

Ae peita'i, afai e te ulufale i totonu o le atigipusa, o le a avea ma a'a ma o le faila matou te fatuina i totonu o lenei pusa e maua ai aia tatau.

Afai na ulufale le tagata faʻapipiʻi i totonu o le koneteina ma faia nisi o faʻatonuga iina e gaosia ai faila, ona tuʻua lea o le koneteina, ona iai lea o sana faila i lana lisi galue e le mafai ona ia mauaina.

E mafai faapefea ona foia? E mafai ona e fa'aopoopo tagata fa'aoga o le a iai i totonu o le koneteina.

O a fa'afitauli na tula'i mai ina ua matou fa'aopoopo le tagata fa'aoga?

Pe a fatuina se tagata faʻaoga, e masani ona le tutusa a matou ID kulupu (UID) ma ID faʻaoga (GID).

Ina ia foia lenei faʻafitauli i totonu o le pusa, matou te faʻaogaina tagata faʻaoga ID 1000.

I la matou tulaga, o lenei mea na fetaui ma le mea moni e toetoe lava o tagata atiaʻe uma e faʻaaogaina le Ubuntu OS. Ma i luga ole Ubuntu, o le tagata muamua e iai le ID ole 1000.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

E i ai a tatou fuafuaga?

Faitau le Docker pepa. O loʻo faʻaleleia le poloketi, o loʻo suia faʻamaumauga. O faʻamaumauga na maua i le lua pe tolu masina talu ai ua faasolosolo malie lava ona tuai.

O nisi o fa'afitauli na matou fo'ia e foliga mai ua uma ona fo'ia i auala masani.

O lea ou te fia alu atili ai e alu sa'o i le fa'aupuga.

O se tasi faʻataʻitaʻiga o le Docker's built-in mechanism e taʻua o Docker Swarm, lea e sau mai le pusa. Ou te manaʻo e faʻatautaia se mea i le gaosiga e faʻavae i luga ole tekonolosi Docker Swarm.

O koneteina fa'asusu e fa'alavelave ai le galue i ogalaau. O lea la ua vavae ese ogalaau. O lo'o ta'ape i luga o koneteina. O se tasi o galuega o le faʻafaigofie ona maua o ogalaau e ala i le upega tafaʻilagi.

Atinaʻe ma suʻega faʻagasologa ma Docker ma Gitlab CI

puna: www.habr.com

Faaopoopo i ai se faamatalaga