ProHoster > Blog > Pulega > Fausiaina o se filifili CI/CD ma fa'autometi galuega ma Docker
Fausiaina o se filifili CI/CD ma fa'autometi galuega ma Docker
Na ou tusia aʻu upega tafaʻilagi muamua i le tuai o 90s. I lena taimi sa matua faigofie lava ona tuʻuina i latou i le faasologa o galuega. Sa i ai se server Apache i luga o nisi talimalo faʻasoa, e mafai ona e ulufale i totonu o lenei server e ala i le FTP e ala i le tusiaina o se mea faapena ftp://ftp.example.com. Ona tatau lea ona e ulufale i lou igoa ma le upu faataga ma tuu faila i le server. Sa i ai taimi eseese, sa faigofie mea uma i lena taimi nai lo le taimi nei.
I le luasefulu tausaga talu mai lena taimi, ua matua suia mea uma. O upegatafa'ilagi ua sili atu ona lavelave; e tatau ona faʻapipiʻi aʻo leʻi faʻatagaina i le gaosiga. E tasi le server na avea ma tele sapalai o lo'o tamo'e i tua o uta paleni, ma o le fa'aogaina o faiga fa'atonutonu fa'asologa na avea ma mea masani.
Mo la'u lava galuega faatino sa i ai sa'u faatulagaga faapitoa. Ma na ou iloa ou te manaʻomia le tomai e faʻapipiʻi ai le saite i le gaosiga e ala i le faia o le tasi gaioiga: tusitusi code i se lala master luga ole GitHub. E le gata i lea, na ou iloa ina ia mautinoa le faʻaogaina o laʻu upega tafaʻilagi, ou te leʻi manaʻo e faʻatautaia se fuifui tele Kubernetes, pe faʻaaoga tekinolosi Docker Swarm, pe tausia se vaʻa o 'auʻaunaga ma pods, sui ma isi ituaiga uma. lavelave. Ina ia ausia le sini o le faafaigofieina o galuega, sa tatau ona ou faamasani i le CI/CD.
Afai ei ai sau galuega laiti (i lenei tulaga, o se Node.js poloketi) ma e te fia iloa pe faʻafefea ona faʻaogaina le faʻaogaina o lenei poloketi, aʻo faʻamautinoa o mea o loʻo teuina i totonu o le faleoloa e fetaui lelei ma mea e galue i le gaosiga, ona ou manatu atonu e te fiafia i lenei tusiga.
Mea e manaʻomia
O le tagata faitau o lenei tusiga e tatau ona i ai se malamalamaaga masani o le laina faʻatonu ma le tusiaina o tusitusiga Bash. E le gata i lea, o le a ia manaʻomia ni tala Travis C.I. и Docker hub.
Sini
O le a ou le fai atu o lenei tusiga e mafai ona taʻua ma le le faatuaoia o se "aʻoaʻoga". O le tele lea o se pepa o loʻo ou talanoa ai e uiga i mea ua ou aʻoaʻoina ma faʻamatalaina le faagasologa e fetaui ma aʻu mo le suʻega ma le faʻapipiʻiina o code i le gaosiga, faia i le tasi pasi faʻaautomatika.
O le mea lea na iu ai i laʻu galuega.
Mo le fa'ailoga ua lafoina i so'o se lala o fale teu oloa vagana ai master, o gaioiga nei e faia:
O le poloketi e fausia i luga o Travis CI amata.
O su'ega uma, tu'ufa'atasia ma fa'ai'uga fa'ai'uga e fa'atino.
Na'o le code e pau i totonu master, o mea nei e faia:
O mea uma na taʻua i luga, faʻaopoopo ...
Fausia se ata Docker e faʻavae i luga o le tulafono o loʻo iai nei, faʻatulagaga ma le siosiomaga.
Fa'asoa le ata ile Docker Hub.
So'oga i le 'au'aunaga gaosiga.
Tuuina atu o se ata mai le Docker Hub i le server.
Taofi le koneteina o iai nei ma amata se mea fou e faʻatatau i le ata fou.
Afai e leai se mea e te iloa e uiga i Docker, ata ma pusa, aua e te popole. O le a ou taʻu atu ia te oe mea uma.
O le a le CI/CD?
O le fa'apuupuuga CI/CD o lo'o fa'atusaina mo le "fa'aauauina tu'ufa'atasia/fa'aauau le fa'atinoina."
▍Fa'aauau fa'atasi
Fa'aauau le tu'ufa'atasiga o se fa'agasologa lea e faia ai e le au atina'e le fa'atumauina o le fa'aputuga autu autu a le poloketi (e masani lava o se lala master). I le taimi lava e tasi, o le tulaga lelei o le code e faʻamautinoa e ala i suʻega faʻapitoa.
▍Fa'aauau le fa'aogaina
O le fa'aauauina o le fa'aogaina o le fa'apipi'iina fa'aautomatika o le code i le gaosiga. O le vaega lona lua o le CI/CD acronym o nisi taimi e sipelaina o le "faʻaauau pea." Ole mea lea e tutusa lelei ma le "fa'aauauina o le fa'atinoina", ae o le "fa'aauau le tu'uina atu" o lona uiga o le mana'oga e fa'amautu ma le lima suiga a'o le'i amataina le fa'agaioiga o galuega.
Amataina
O le app na ou masani ona aʻoaʻoina ai nei mea uma e taʻua Manatua. Ose poloketi i luga ole laiga lea o lo'o ou galue ai, ua mamanuina mo le tusiaina o fa'amatalaga. I le taimi muamua sa ou taumafai e fai JAMStack-poloketi, pe naʻo se talosaga pito i luma e aunoa ma se 'auʻaunaga, ina ia faʻaogaina le tulaga masani talimalo ma le faʻatinoina o galuega faatino e ofoina atu Faʻailoa. A'o fa'atupula'ia le lavelave o le talosaga, na ou mana'omia le faia o lana vaega o le 'au'aunaga, o lona uiga e mana'omia le fa'atulagaina o la'u lava ta'iala mo le tu'ufa'atasia fa'a otometi ma le fa'aogaina otometi o le poloketi.
I loʻu tulaga, o le talosaga o se Express server o loʻo tamoe i le Node.js siʻosiʻomaga, o loʻo tuʻuina atu se tasi itulau React talosaga ma lagolagoina se API faʻaumau-itulau. O lenei fausaga e mulimuli i le fuafuaga e mafai ona maua i totonu lenei Ta'iala fa'amaoni fa'aputu atoa.
Sa ou feutagai ma uo, o ia o se tagata poto faapitoa i masini, ma fesili ia te ia po o le a le mea e tatau ona ou faia e faʻaoga uma ai i le auala ou te manaʻo ai. Na ia tuʻuina mai ia te aʻu le manatu o le a foliga mai o se faʻaogaina otometi, o loʻo faʻamatalaina i le vaega o Sini o lenei tusiga. O le i ai o nei sini o lona uiga e tatau ona ou iloa pe faʻapefea ona faʻaoga Docker.
Docker
Docker o se meafaigaluega e, faʻafetai i tekonolosi faʻapipiʻi, faʻatagaina talosaga e faigofie ona tufatufaina atu, faʻapipiʻi ma tamoʻe i le siosiomaga lava e tasi, e tusa lava pe o loʻo tamomoe le Docker platform i siosiomaga eseese. Muamua, na ou manaʻomia e tuʻu oʻu lima i luga o meafaigaluega laina laina Docker (CLI). Faatonuga O le taʻiala faʻapipiʻi Docker e le mafai ona taʻua manino ma malamalama, ae mai ai e mafai ona e aʻoaʻoina ina ia faia le laasaga muamua faʻapipiʻi, e tatau ona e siiina le Docker Desktop (mo Mac poʻo Windows).
Docker Hub e tutusa lelei lava ma GitHub mo git repository, poʻo le resitala npm mo paketi JavaScript. O se fale teu oloa i luga ole laiga mo ata Docker. O le mea lea e fesoʻotaʻi i ai Docker Desktop.
O lea la, ina ia amata ma Docker, e tatau ona e faia ni mea se lua:
A maeʻa lenei mea, e mafai ona e siaki pe o galue le Docker CLI e ala i le faʻatinoina o le poloaiga lenei e siaki ai le Docker version:
docker -v
Le isi, faʻaoga i totonu Docker Hub e ala i le faʻaogaina o lou igoa ole igoa ma le upega tafaʻilagi pe a fesiligia:
docker login
Mo le faʻaaogaina o Docker, e tatau ona e malamalama i manatu o ata ma pusa.
▍ Ata
O se ata o se mea e pei o se mamanu o loʻo i ai faʻatonuga mo le faʻapipiʻiina o le koneteina. O se ata e le masuia o le faiga faila ma faatulagaga a le talosaga. E faigofie ona fa'asoa ata e tagata atia'e.
# Вывод сведений обо всех образах
docker images
O lenei faʻatonuga o le a faʻaalia ai se laulau ma le ulutala lea:
REPOSITORY TAG IMAGE ID CREATED SIZE
---
Le isi o le a tatou vaʻavaʻai i nisi o faʻataʻitaʻiga o faʻatonuga i le faatulagaga tutusa - muamua o loʻo i ai se faʻatonuga ma se faʻamatalaga, ona sosoo ai lea ma se faʻataʻitaʻiga o mea e mafai ona gaosia.
▍Contains
O se atigipusa o se afifi fa'atino e iai mea uma e mana'omia e fa'atino ai se talosaga. O se talosaga faʻatasi ma lenei faiga o le a galue tutusa, e tusa lava po o le a le atinaʻe: i totonu o se siosiomaga tuʻufua ma i le siosiomaga tutusa. O le manatu o faʻataʻitaʻiga o le ata lava e tasi e faʻalauiloa i siosiomaga eseese.
# Перечисление всех контейнеров
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
---
▍ Fa'ailoga
O le pine o se faʻaaliga o se faʻamatalaga patino o se ata.
▍Ose faʻamatalaga vave ile Docker commands
O se faʻamatalaga lautele lea o nisi o faʻatonuga masani a Docker.
Ou te iloa le faʻatinoina o se gaosiga o talosaga i le lotoifale. E i ai la'u fa'atulagaga Webpack ua fuafuaina e fausia ai se talosaga React ua saunia. O le isi, o loʻo i ai laʻu faʻatonuga e amata ai se Node.js faʻavae server i luga o le taulaga 5000. E pei o lenei:
npm i # установка зависимостей
npm run build # сборка React-приложения
npm run start # запуск Node-сервера
E tatau ona maitauina e leai sau faʻataʻitaʻiga talosaga mo lenei mea. Ae o iinei, mo faʻataʻitaʻiga, soʻo se faʻaoga faigofie Node o le a faia.
Ina ia mafai ona faʻaogaina le koneteina, e te manaʻomia le tuʻuina atu o faʻatonuga ia Docker. E faia lenei mea e ala i se faila e taʻua Dockerfile, o loʻo i totonu o le lisi autu o le poloketi. O lenei faila, i le taimi muamua, e foliga mai e matua le malamalama.
Ae o mea o loʻo i ai naʻo faʻamatalaina, faʻatasi ai ma faʻatonuga faʻapitoa, se mea e tutusa ma le faʻatulagaina o se siosiomaga galue. O nisi nei o poloaiga:
FROM — O lenei poloaiga e amata ai se faila. O lo'o fa'amaoti mai ai le ata fa'avae o lo'o fausia ai le koneteina.
KOPI — Kopi faila mai se punavai i le lotoifale i se koneteina.
GALUEGA - Faʻatulagaina le tusi galue mo poloaiga nei.
# Загрузить базовый образ
FROM node:12-alpine
# Скопировать файлы из текущей директории в директорию app/
COPY . app/
# Использовать app/ в роли рабочей директории
WORKDIR app/
# Установить зависимости (команда npm ci похожа npm i, но используется для автоматизированных сборок)
RUN npm ci --only-production
# Собрать клиентское React-приложение для продакшна
RUN npm run build
# Прослушивать указанный порт
EXPOSE 5000
# Запустить Node-сервер
ENTRYPOINT npm run start
Fa'alagolago i le ata fa'avae e te filifilia, atonu e te mana'omia le fa'apipi'iina o isi fa'alagolago. O le mea moni o nisi o ata faʻavae (pei o Node Alpine Linux) ua faia ma le faʻamoemoe e faʻapipiʻi tutusa pe a mafai. O se taunuuga, atonu latou te le maua nisi o polokalama e te faʻamoemoeina.
▍Fausia, fa'ailoga ma fa'agaoioia le koneteina
O le fa'apotopotoga fa'apitonu'u ma le fa'alauiloaina o le atigipusa e mae'a Dockerfile, o galuega e fai si faigofie. Ae e te leʻi tuleia le ata i Docker Hub, e tatau ona e suʻeina i le lotoifale.
▍ Fonotaga
Muamua e tatau ona e aoina ata, faʻamaonia se igoa ma, pe a filifili, se pine (afai e le o faʻamaonia se pine, o le a otometi lava ona tuʻuina atu e le faiga se pine i le ata latest).
# Сборка образа
docker build -t <image>:<tag> .
A maeʻa le faʻatonuina o lenei poloaiga, e mafai ona e matamata Docker fausia le ata.
Sending build context to Docker daemon 2.88MB
Step 1/9 : FROM node:12-alpine
---> ...выполнение этапов сборки...
Successfully built 123456789123
Successfully tagged <image>:<tag>
O le fausiaina e ono alu ni nai minute - e fa'alagolago uma i le tele o lau fa'alagolago. A maeʻa le fausiaina, e mafai ona e faʻatautaia le poloaiga docker images ma va'ai i le fa'amatalaga o lau ata fou.
REPOSITORY TAG IMAGE ID CREATED SIZE
<image> latest 123456789123 About a minute ago x.xxGB
▍Tatala
Ua faia le ata. O lona uiga e mafai ona e fa'atautaia se koneteina e fa'atatau i ai. Ona ou te manaʻo e mafai ona maua le talosaga o loʻo taʻavale i totonu o le pusa i localhost:5000, a'u, i le itu agavale o le paga 5000:5000 i le isi poloaiga ua faapipiiina 5000. I le itu taumatau o loʻo i ai le pusa pusa.
# Запуск с использованием локального порта 5000 и порта контейнера 5000
docker run -p 5000:5000 <image>:<tag>
I le taimi nei ua faia le koneteina ma tamoʻe, e mafai ona e faʻaogaina le poloaiga docker ps e vaʻai i faʻamatalaga e uiga i lenei pusa (pe mafai ona e faʻaogaina le poloaiga docker ps -a, lea e fa'aalia ai fa'amatalaga e uiga i koneteina uma, ae le na'o mea ta'avale).
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
987654321234 <image> "/bin/sh -c 'npm run…" 6 seconds ago Up 6 seconds 0.0.0.0:5000->5000/tcp stoic_darwin
Afai e te alu nei i le tuatusi localhost:5000 - e mafai ona e vaʻai i se itulau o se talosaga taʻavale e foliga tutusa ma le itulau o se talosaga o loʻo taʻavale i se siosiomaga gaosiga.
▍ Fa'ailoga ma fa'asalalau
Ina ia faʻaaogaina se tasi o ata na faia i luga o le gaosiga o le gaosiga, matou te manaʻomia le mafai ona sii maia lenei ata mai Docker Hub. O lona uiga e te manaʻomia muamua le fatuina o se fale teu oloa mo le poloketi ile Docker Hub. A maeʻa lenei, o le a tatou maua se nofoaga e mafai ona tatou lafoina ai le ata. O le ata e tatau ona toe faʻaigoaina ina ia amata lona igoa i le matou Docker Hub username. E tatau ona soso'o ma le igoa o le fale teu oloa. Soo se pine e mafai ona tuu i le pito o le igoa. Lalo o se faʻataʻitaʻiga o le faʻaigoaina o ata e faʻaaoga ai lenei polokalame.
Ole taimi nei e mafai ona e fausia le ata i se igoa fou ma faʻatautaia le poloaiga docker push e tulei i le fale teu oloa Docker Hub.
docker build -t <username>/<repository>:<tag> .
docker tag <username>/<repository>:<tag> <username>/<repository>:latest
docker push <username>/<repository>:<tag>
# На практике это может выглядеть, например, так:
docker build -t user/app:v1.0.0 .
docker tag user/app:v1.0.0 user/app:latest
docker push user/app:v1.0.0
Afai e sologa lelei mea uma, o le a maua le ata ile Docker Hub ma faigofie ona faʻapipiʻi i luga o le 'auʻaunaga pe faʻafeiloaʻi i isi atinaʻe.
Laasaga muamua
I le taimi nei ua matou faʻamaonia o le talosaga, i le tulaga o se pusa Docker, o loʻo tamoʻe i le lotoifale. Ua matou lafoina le pusa i Docker Hub. O lona uiga o nei mea uma ua maeʻa ona tatou alualu i luma lelei i la tatou sini. O lea la e mana'omia ona tatou fo'ia nisi fesili se lua:
Faʻatulagaina se meafaigaluega CI mo le suʻega ma le faʻaogaina o code.
Faʻatulagaina le 'auʻaunaga gaosiga ina ia mafai ona sii mai ma faʻatautaia la matou code.
I la matou tulaga, matou te faʻaaogaina Travis C.I.. I le avea ai ma se server- DitigalOcean.
E tatau ona maitauina o iinei e mafai ona e faʻaogaina se isi tuʻufaʻatasiga o auaunaga. Mo se faʻataʻitaʻiga, nai lo Travis CI, e mafai ona e faʻaogaina CircleCI poʻo Github Actions. Ma nai lo le DigitalOcean - AWS poʻo Linode.
Na matou filifili e galulue ma Travis CI, ma ua uma ona ou faʻatulagaina i lenei auaunaga. O le mea lea, o lenei o le a ou talanoa puupuu e uiga i le auala e saunia ai mo le galuega.
Travis C.I.
Travis CI o se meafaigaluega mo le suʻega ma le faʻaogaina o code. Ou te le manaʻo e alu i le faʻalavelave o le faʻatulagaina o Travis CI, talu ai o galuega taʻitasi e tulaga ese, ma o le a le maua ai se aoga tele. Ae o le a ou faʻamatalaina faʻavae e amata ai oe pe a e filifili e faʻaaoga Travis CI. Pe e te filifilia Travis CI, CircleCI, Jenkins, poʻo se isi mea, o metotia faʻatulagaina tutusa o le a faʻaaogaina i soo se mea.
Ina ia amata ma Travis CI, alu i upegatafa'ilagi o galuega ma fai se tala. Ona tuʻufaʻatasia lea o Travis CI ma lau tala GitHub. A faʻatūina le faiga, e tatau ona e faʻamaonia le fale teu oloa e te manaʻo e faʻaogaina ai galuega ma mafai ai ona e maua. (Ou te faʻaaogaina GitHub, ae ou te mautinoa e mafai e Travis CI ona tuʻufaʻatasia ma BitBucket, ma GitLab, ma isi auaunaga tutusa).
O taimi uma lava e amata ai Travis CI, e faʻalauiloaina le 'auʻaunaga, faʻataunuʻuina poloaiga o loʻo faʻamaonia i le faila faʻatulagaina, e aofia ai le faʻapipiʻiina o lala faʻapipiʻi talafeagai.
▍Taamilosaga olaga o galuega
Travis CI seti faila valaau .travis.yml ma teuina i totonu o le lisi autu o le poloketi, lagolagoina le manatu o mea na tutupu taamilosaga o le olaga galuega. O mea nei o loʻo lisiina i le faasologa e tutupu ai:
apt addons
cache components
before_install
install
before_script
script
before_cache
after_success или after_failure
before_deploy
deploy
after_deploy
after_script
▍Su'ega
I le faila faʻapipiʻi o le a ou faʻapipiʻiina le Travis CI server i le lotoifale. Na ou filifilia Node 12 o le gagana ma taʻu atu i le faiga e faʻapipiʻi ai faʻalagolago e manaʻomia e faʻaaoga ai Docker.
O mea uma o loʻo lisiina i totonu .travis.yml, o le a faʻataunuʻuina pe a faia uma talosaga toso i lala uma o le fale teu oloa, sei vagana ua faʻamaonia. Ole mea aoga lea aua o lona uiga e mafai ona tatou faʻataʻitaʻiina uma code e sau i totonu o le fale teu oloa. Ole mea lea e te iloa ai pe ua sauni le code e tusi ile lala. master, ma pe o le a motusia le faagasologa o le fausiaina o galuega. I lenei faʻalapotopotoga faʻavaomalo, ou te faʻapipiʻi mea uma i le lotoifale, faʻatautaia le Webpack dev server i tua (o se vaega lea o laʻu galuega), ma faʻataʻitaʻi suʻega.
Afai e te mana'o i lau fale teu oloa e fa'aalia pine o lo'o fa'ailoa mai ai le fa'asoaina o su'ega, iinei E mafai ona e mauaina ni fa'atonuga pupuu ile fa'aogaina o Jest, Travis CI ma Coveralls e aoina ma fa'aali nei fa'amatalaga.
O lea la o le anotusi lea o le faila .travis.yml:
# Установить язык
language: node_js
# Установить версию Node.js
node_js:
- '12'
services:
# Использовать командную строку Docker
- docker
install:
# Установить зависимости для тестов
- npm ci
before_script:
# Запустить сервер и клиент для тестов
- npm run dev &
script:
# Запустить тесты
- npm run test
O le mea lea e muta ai gaioiga o loʻo faia mo lala uma o le fale teu oloa ma mo talosaga toso.
▍ Fa'atonu
Faʻavae i luga o le manatu o faʻataʻitaʻiga faʻaautomatika uma ua maeʻa ma le manuia, matou te mafai, lea e filifili, faʻapipiʻi le code i le gaosiga o le server. Talu ai matou te mananaʻo e faia lenei mea mo naʻo code mai le lala master, matou te tuʻuina atu i le faiga faʻatonuga talafeagai i le faʻatulagaina o faʻatulagaga. Ae e te leʻi taumafai e faʻaoga le code o le a matou vaʻavaʻai i le isi i lau poloketi, ou te fia lapatai atu ia te oe e tatau ona i ai sau faʻamatalaga moni e valaʻau mo le faʻapipiʻiina.
deploy:
# Собрать Docker-контейнер и отправить его на Docker Hub
provider: script
script: bash deploy.sh
on:
branch: master
E lua faʻafitauli e foia e le faʻapipiʻiina tusitusiga:
Fausia, faʻailoga ma lafo le ata i Docker Hub e faʻaaoga ai se meafaigaluega CI (i la matou tulaga, Travis CI).
Faʻapipiʻiina o le ata i luga o le 'auʻaunaga, taofi le pusa tuai ma amata se mea fou (i la matou tulaga, o le 'auʻaunaga e tamoʻe i luga o le DigitalOcean platform).
Muamua, e tatau ona e setiina se faiga otometi mo le fausiaina, faʻailoga, ma tulei le ata ile Docker Hub. E tutusa uma lava ma mea ua uma ona matou faia ma le lima, sei vagana ai matou te manaʻomia se taʻiala mo le tuʻuina atu o pine faʻapitoa i ata ma faʻautometi logins. Sa faigata ia te aʻu nisi o auiliiliga o le faʻapipiʻiina o tusitusiga, e pei o le faʻailogaina o fuafuaga, saini, SSH key encoding, SSH connection establishment. Ae laki la'u uo tama e lelei tele i le bash, pei o le tele o isi mea. Sa ia fesoasoani mai ia te au e tusia lenei tusitusiga.
O lea la, o le vaega muamua o le tusitusiga o loʻo tuʻuina atu le ata i Docker Hub. E fai lava si faigofie lenei mea. O le faʻailoga faʻailoga na ou faʻaaogaina e aofia ai le tuʻufaʻatasia o se git hash ma se git tag, pe a iai se tasi. O lenei mea e faʻamautinoa ai e tulaga ese le tag ma faʻafaigofie ona iloa le faʻapotopotoga o loʻo faʻavae ai. DOCKER_USERNAME и DOCKER_PASSWORD o fesuiaiga o le siosiomaga o tagata e mafai ona seti i le faʻaogaina o le Travis CI interface. Travis CI o le a otometi lava ona faʻagasolo faʻamatalaga maʻaleʻale ina ia le paʻu i lima sese.
O le vaega muamua lea o le tusitusiga deploy.sh.
#!/bin/sh
set -e # Остановить скрипт при наличии ошибок
IMAGE="<username>/<repository>" # Образ Docker
GIT_VERSION=$(git describe --always --abbrev --tags --long) # Git-хэш и теги
# Сборка и тегирование образа
docker build -t ${IMAGE}:${GIT_VERSION} .
docker tag ${IMAGE}:${GIT_VERSION} ${IMAGE}:latest
# Вход в Docker Hub и выгрузка образа
echo "${DOCKER_PASSWORD}" | docker login -u "${DOCKER_USERNAME}" --password-stdin
docker push ${IMAGE}:${GIT_VERSION}
O le a le vaega lona lua o le tusitusiga o le a faʻalagolago atoa i le tagata talimalo o loʻo e faʻaogaina ma pe faʻafefea ona faʻatulagaina le fesoʻotaʻiga i ai. I loʻu tulaga, talu ai ou te faʻaogaina le Digital Ocean, ou te faʻaogaina poloaiga e faʻafesoʻotaʻi i le server doctl. A galue ma le AWS, o le a faʻaaogaina le aoga aws, ma faapena atu ai lava.
O le setiina o le server e le'i faigata tele. O lea, ou te setiina se matāua e faʻavae i luga o le ata faʻavae. E tatau ona maitauina o le faiga na ou filifilia e manaʻomia ai le faʻapipiʻiina o le Docker e tasi le taimi ma le faʻalauiloaina o le Docker. Na ou faʻaogaina le Ubuntu 18.04 e faʻapipiʻi ai Docker, o lea afai o loʻo e faʻaogaina foi le Ubuntu e fai tutusa, e mafai ona e mulimuli lenei taiala faigofie.
Ou te le o talanoa iinei e uiga i poloaiga patino mo le tautua, talu ai o lenei itu e mafai ona matua ese lava i tulaga eseese. O le a ou tuʻuina atu se fuafuaga lautele o gaioiga e faʻatino pe a uma ona faʻafesoʻotaʻi e ala i le SSH i le 'auʻaunaga lea o le a faʻapipiʻiina ai le poloketi:
E tatau ona tatou su'e le koneteina o lo'o tamo'e nei ma taofi.
Ona e manaʻomia lea e faʻalauiloa se pusa fou i tua.
E te mana'omia le setiina o le uafu fa'apitonu'u a le server i 80 - o le a fa'atagaina oe e ulufale i le saite i se tuatusi pei example.com, e aunoa ma le faʻamalamalamaina o le taulaga, nai lo le faʻaaogaina o se tuatusi pei example.com:5000.
Mulimuli ane, e tatau ona e tape uma pusa tuai ma ata.
O le fa'aauauina lea o le mau.
# Найти ID работающего контейнера
CONTAINER_ID=$(docker ps | grep takenote | cut -d" " -f1)
# Остановить старый контейнер, запустить новый, очистить систему
docker stop ${CONTAINER_ID}
docker run --restart unless-stopped -d -p 80:5000 ${IMAGE}:${GIT_VERSION}
docker system prune -a -f
O nisi mea e tatau ona gauai i ai
E mafai pe a e faʻafesoʻotaʻi i le 'auʻaunaga e ala i le SSH mai Travis CI, o le a e vaʻai i se lapataiga o le a taofia ai oe mai le faʻaauauina o le faʻapipiʻiina aʻo faʻatali le faiga mo le tali a le tagata faʻaoga.
The authenticity of host '<hostname> (<IP address>)' can't be established.
RSA key fingerprint is <key fingerprint>.
Are you sure you want to continue connecting (yes/no)?
Na ou aʻoaʻoina o se ki manoa e mafai ona faʻapipiʻiina i le base64 ina ia faʻasaoina i se faiga e mafai ai ona faʻaoga lelei ma faʻatuatuaina. I le tulaga faʻapipiʻi, e mafai ona e faʻavasega le ki lautele ma tusi i se faila known_hosts ina ia mafai ona aveese le sese o loo i luga.
O le auala lava lea e tasi e mafai ona faʻaogaina i se ki faʻapitoa pe a faʻatuina se fesoʻotaʻiga, talu ai e te manaʻomia se ki faʻapitoa e maua ai le server. A e galue ma le ki, e tatau lava ona e faʻamautinoa o loʻo teuina ma le saogalemu i totonu ole suiga ole siosiomaga Travis CI ma e le faʻaalia i soo se mea.
O le isi mea e tatau ona matauina atonu e te manaʻomia le faʻataʻitaʻiina o le faʻataʻitaʻiga atoa o le laina e tasi, mo se faʻataʻitaʻiga - ma doctl. Atonu e mana'omia ai nisi taumafaiga faaopoopo.
doctl compute ssh <droplet> --ssh-command "все команды будут здесь && здесь"
TLS/SSL ma le Paleni o uta
Ina ua uma ona ou faia mea uma o loʻo taʻua i luga, o le faʻafitauli mulimuli na ou feagai o le leai o se SSL i le server. Talu ai ou te faʻaaogaina se Node.js server, ina ia faʻamalosia ia galue sui sui Nginx ma Let's Encrypt, e tatau ona e faʻaogaina tele.
Ou te leʻi manaʻo e fai ma le lima nei faʻatulagaga SSL, o lea na ou faia ai se paleni o uta ma faʻamaumau faʻamatalaga i DNS. I le tulaga o le DigitalOcean, mo se faʻataʻitaʻiga, o le fatuina o se faʻafouga-auto-faʻailogaina tusi faamaonia i luga o le paleni o uta o se faiga faigofie, saoloto ma vave. O lenei faiga o loʻo i ai le faʻamanuiaga faʻaopoopo e faigofie ai ona faʻatutuina le SSL i luga o le tele o sapalai o loʻo taʻavale i tua o le paleni o uta pe'ā manaʻomia. O lenei mea e mafai ai e le 'auʻaunaga latou lava ona le "mafaufau" e uiga i le SSL, ae i le taimi lava e tasi e faʻaaoga ai le taulaga e pei ona masani ai 80. O lea la o le setiina o le SSL i luga o le paleni o uta e sili atu ona faigofie ma sili atu ona faigofie nai lo isi auala o le setiina o le SSL.
O lea e mafai ona e tapunia uma ports i luga o le server e talia fesoʻotaʻiga ulufale mai - sei vagana ai le taulaga 80, fa'aaoga e feso'ota'i ai ma le uta paleni, ma le uafu 22 mo SSH. O se taunuuga, o se taumafaiga e faʻaoga saʻo le server i luga o soʻo se taulaga e ese mai i nei mea e lua o le a le manuia.
O taunuʻuga
Ina ua uma ona ou faia mea uma na ou talanoa ai i lenei mea, e le o le Docker platform po o manatu o filifili CI / CD otometi na ou toe fefe ai. Na mafai ona ou faʻatutuina se filifili tuʻufaʻatasiga faʻaauau, lea e faʻataʻitaʻiina ai le code aʻo leʻi alu i le gaosiga ma otometi lava ona faʻapipiʻi le code i luga o le server. O nei mea uma e fou lava ia te aʻu, ma ou te mautinoa o loʻo i ai auala e faʻaleleia ai laʻu faʻaogaina otometi ma faʻaleleia atili. Afai la e iai ni ou manatu i lenei mataupu, faamolemole taʻu mai ia te aʻu. ia te au iloa. Ou te faʻamoemoe na fesoasoani lenei tusiga ia te oe i au taumafaiga. Ou te manaʻo e talitonu ina ua uma ona e faitauina, na e aʻoaʻoina le tele o mea na ou aʻoaʻoina aʻo ou mafaufau i mea uma na ou talanoa ai i totonu.
SALA I la matou maketi e iai se ata Docker, lea e mafai ona faʻapipiʻi i le kiliki e tasi. E mafai ona e siaki le faagaoioiga o containers i VPS. O tagata fou uma e tu'uina atu 3 aso o su'ega e leai se totogi.
Lau faitau le au faitau! E te fa'aogaina tekinolosi CI/CD i au poloketi?