Deir údar an ailt, a bhfuil an t-aistriúchán á fhoilsiú againn inniu, go bhfuil sé beartaithe do na forbróirí sin atá ag iarraidh Docker Compose a fhoghlaim agus atá ag bogadh i dtreo a gcéad iarratas cliant-freastalaí a chruthú ag baint úsáide as Docker. Glactar leis go bhfuil léitheoir an ábhair seo eolach ar bhunghnéithe Docker. Mura bhfuil sé seo amhlaidh, is féidir leat breathnú ar
Cad is Docker Compose ann?
Is uirlis é Docker Compose atá san áireamh le Docker. Tá sé deartha chun fadhbanna a bhaineann le himscaradh tionscadal a réiteach.
Agus bunghnéithe Docker á bhfoghlaim agat, b’fhéidir gur tháinig tú trasna ar chruthú feidhmchláir shimplí a oibríonn go huathrialach agus nach mbraitheann, mar shampla, ar fhoinsí sonraí seachtracha nó ar sheirbhísí áirithe. Go praiticiúil, tá iarratais den sórt sin annamh. Is iondúil go mbíonn sraith iomlán feidhmchlár ag obair le chéile i gceist le fíorthionscadail.
Cén chaoi a bhfuil a fhios agat más gá duit Docker Compose a úsáid agus tionscadal á imscaradh agat? Tá sé an-simplí i ndáiríre. Má úsáideann tú seirbhísí iolracha chun an tionscadal seo a oibriú, seans go mbeidh Docker Compose áisiúil. Mar shampla, i gcás ina gcruthaíonn siad suíomh Gréasáin a chaithfidh nascadh le bunachar sonraí chun úsáideoirí a fhíordheimhniú. Féadfaidh dhá sheirbhís a bheith i dtionscadal den sórt sin - an ceann a áirithíonn oibriú an tsuímh, agus an ceann atá freagrach as an mbunachar sonraí a chothabháil.
Ligeann teicneolaíocht Docker Compose, chun cur síos a dhéanamh air ar bhealach simplithe, duit go leor seirbhísí a sheoladh ag baint úsáide as ordú amháin.
Difríocht idir Docker agus Docker Compose
Úsáidtear docker chun na coimeádáin aonair (seirbhísí) a chomhdhéanann iarratas a bhainistiú.
Úsáidtear Docker Compose chun coimeádáin iolracha a chomhdhéanann feidhmchlár a bhainistiú ag an am céanna. Tugann an uirlis seo na cumais chéanna le Docker, ach ligeann duit oibriú le hiarratais níos casta.
Docker (coimeádán singil) agus Docker Compose (coimeádáin iolracha)
Cás úsáide tipiciúil le haghaidh Docker Compose
Uirlis thar a bheith cumhachtach is ea Docker Compose a ligeann duit feidhmchláir a bhfuil ailtireachtaí casta acu a imscaradh go han-tapa. Anois féachfaimid ar shampla d'úsáid phraiticiúil Docker Compose, agus ligfidh an anailís duit na buntáistí a bhaineann le húsáid Docker Compose a mheas.
Samhlaigh gur forbróir tú ar thionscadal gréasáin. Cuimsíonn an tionscadal seo dhá shuíomh Gréasáin. Ligeann an chéad cheann do dhaoine gnó siopaí ar líne a chruthú gan ach cúpla cad a tharlaíonn. Tá an dara ceann dírithe ar thacaíocht do chustaiméirí. Idirghníomhaíonn an dá shuíomh seo leis an mbunachar sonraí céanna.
Tá do thionscadal ag éirí níos mó agus níos mó tóir, agus tharla sé go bhfuil an chumhacht an fhreastalaí ar a ritheann sé a thuilleadh go leor. Mar thoradh air sin, socraíonn tú an tionscadal ar fad a aistriú chuig meaisín eile.
Ar an drochuair, níor úsáid tú rud éigin cosúil le Docker Compose. Mar sin, beidh ort seirbhísí a aistriú agus a athchumrú ceann ag an am, ag súil nach ndéanfaidh tú dearmad ar rud ar bith sa phróiseas.
Má úsáideann tú Docker Compose, ansin is féidir do thionscadal a aistriú chuig freastalaí nua is féidir a réiteach trí roinnt orduithe a rith. Chun aistriú an tionscadail chuig suíomh nua a chríochnú, ní gá duit ach roinnt socruithe a dhéanamh agus cóip chúltaca den bhunachar sonraí a uaslódáil chuig an bhfreastalaí nua.
Feidhmchlár cliant-freastalaí a fhorbairt ag baint úsáide as Docker Compose
Anois go bhfuil a fhios agat cad chuige a n-úsáidfimid Docker Compose, tá sé in am agat do chéad iarratas cliant-freastalaí a chruthú ag baint úsáide as an uirlis seo. Eadhon, táimid ag caint faoi shuíomh Gréasáin beag (freastalaí) a fhorbairt i Python a fhéadfaidh comhad a aschur le blúire téacs. Iarrtar an comhad seo ón bhfreastalaí ag clár (cliant), atá scríofa i Python freisin. Tar éis comhad a fháil ón bhfreastalaí, taispeánann an clár an téacs atá stóráilte ann ar an scáileán.
Tabhair faoi deara go nglacfaimid leis go bhfuil tuiscint bhunúsach agat ar Docker agus go bhfuil an t-ardán Docker suiteáilte agat cheana féin.
A ligean ar tosú ag obair ar an tionscadal.
▍1. Tionscadal a Chruthú
Chun do chéad iarratas cliant-freastalaí a thógáil, molaim duit tosú trí fhillteán tionscadail a chruthú. Ba cheart go mbeadh na comhaid agus na fillteáin seo a leanas ann:
- comhad
docker-compose.yml
. Comhad Docker Compose é seo ina mbeidh na treoracha is gá chun na seirbhísí a thosú agus a chumrú. - Fillteán
server
. Beidh na comhaid ann atá riachtanach chun an freastalaí a choinneáil ag rith. - Fillteán
client
. Beidh comhaid iarratais an chliaint lonnaithe anseo.
Mar thoradh air sin, ba cheart go mbeadh cuma mar seo ar a bhfuil i bpríomhfhillteán do thionscadail:
.
├── client/
├── docker-compose.yml
└── server/
2 directories, 1 file
▍2. Freastalaí a chruthú
Anseo, agus muid ag cruthú freastalaí, déanfaimid teagmháil le roinnt rudaí bunúsacha maidir le Docker.
2a. Comhaid a chruthú
Téigh go dtí an fillteán server
agus cruthaigh na comhaid seo a leanas ann:
- comhad
server.py
. Beidh cód an fhreastalaí ann. - comhad
index.html
. Beidh píosa téacs sa chomhad seo ba cheart don fheidhmchlár cliant a aschur. - comhad
Dockerfile
. Is comhad Docker é seo ina mbeidh na treoracha is gá chun timpeallacht an fhreastalaí a chruthú.
Seo an chuma ar cheart a bheith ar ábhar d'fhillteáin server/
:
.
├── Dockerfile
├── index.html
└── server.py
0 directories, 3 files
2b. Comhad Python á chur in eagar.
Cuir leis an gcomhad server.py
an cód seo a leanas:
#!/usr/bin/env python3
# Импорт системных библиотек python.
# Эти библиотеки будут использоваться для создания веб-сервера.
# Вам не нужно устанавливать что-то особенное, эти библиотеки устанавливаются вместе с Python.
import http.server
import socketserver
# Эта переменная нужна для обработки запросов клиента к серверу.
handler = http.server.SimpleHTTPRequestHandler
# Тут мы указываем, что сервер мы хотим запустить на порте 1234.
# Постарайтесь запомнить эти сведения, так как они нам очень пригодятся в дальнейшем, при работе с docker-compose.
with socketserver.TCPServer(("", 1234), handler) as httpd:
# Благодаря этой команде сервер будет выполняться постоянно, ожидая запросов от клиента.
httpd.serve_forever()
Ligeann an cód seo duit freastalaí gréasáin simplí a chruthú. Tabharfaidh sé an comhad do chliaint index.html
, a thaispeánfar a bhfuil ann níos déanaí ar an leathanach gréasáin.
2c. Comhad HTML á chur in eagar
A chomhdú index.html
cuir an téacs seo a leanas leis:
Docker-Compose is magic!
Seolfar an téacs seo chuig an gcliant.
2d. Ag cur an Dockerfile in eagar
Anois cruthóimid comhad simplí Dockerfile
, a bheidh freagrach as an timpeallacht rite a eagrú don fhreastalaí Python. Mar bhunús don íomhá cruthaithe, úsáidfimid
# На всякий случай напоминаю, что Dockerfile всегда должен начинаться с импорта базового образа.
# Для этого используется ключевое слово 'FROM'.
# Здесь нам нужно импортировать образ python (с DockerHub).
# В результате мы, в качестве имени образа, указываем 'python', а в качестве версии - 'latest'.
FROM python:latest
# Для того чтобы запустить в контейнере код, написанный на Python, нам нужно импортировать файлы 'server.py' и 'index.html'.
# Для того чтобы это сделать, мы используем ключевое слово 'ADD'.
# Первый параметр, 'server.py', представляет собой имя файла, хранящегося на компьютере.
# Второй параметр, '/server/', это путь, по которому нужно разместить указанный файл в образе.
# Здесь мы помещаем файл в папку образа '/server/'.
ADD server.py /server/
ADD index.html /server/
# Здесь мы воспользуемся командой 'WORKDIR', возможно, новой для вас.
# Она позволяет изменить рабочую директорию образа.
# В качестве такой директории, в которой будут выполняться все команды, мы устанавливаем '/server/'.
WORKDIR /server/
Anois, a ligean ar tosú ag obair ar an gcliant.
▍3. Cliant a chruthú
Agus taobh cliaint ár dtionscadal á gcruthú againn, cuimhnímid ar roinnt bunúsacha Docker ar an mbealach.
3a. Comhaid a chruthú
Téigh go dtí d'fhillteán tionscadail client
agus cruthaigh na comhaid seo a leanas ann:
- comhad
client.py
. Beidh an cód cliant lonnaithe anseo. - comhad
Dockerfile
. Tá an ról céanna ag an gcomhad seo agus atá ag comhad comhchosúil san fhillteán freastalaí. Eadhon, tá treoracha ann a chuireann síos ar conas timpeallacht a chruthú chun cód cliant a fhorghníomhú.
Mar thoradh air sin, d'fhillteán client/
ag an gcéim seo den obair ba chóir go mbeadh cuma mar seo air:
.
├── client.py
└── Dockerfile
0 directories, 2 files
3b. Comhad Python á Eagarthóireacht
Cuir leis an gcomhad client.py
an cód seo a leanas:
#!/usr/bin/env python3
# Импортируем системную библиотеку Python.
# Она используется для загрузки файла 'index.html' с сервера.
# Ничего особенного устанавливать не нужно, эта библиотека устанавливается вместе с Python.
import urllib.request
# Эта переменная содержит запрос к 'http://localhost:1234/'.
# Возможно, сейчас вы задаётесь вопросом о том, что такое 'http://localhost:1234'.
# localhost указывает на то, что программа работает с локальным сервером.
# 1234 - это номер порта, который вам предлагалось запомнить при настройке серверного кода.
fp = urllib.request.urlopen("http://localhost:1234/")
# 'encodedContent' соответствует закодированному ответу сервера ('index.html').
# 'decodedContent' соответствует раскодированному ответу сервера (тут будет то, что мы хотим вывести на экран).
encodedContent = fp.read()
decodedContent = encodedContent.decode("utf8")
# Выводим содержимое файла, полученного с сервера ('index.html').
print(decodedContent)
# Закрываем соединение с сервером.
fp.close()
Leis an gcód seo, is féidir leis an bhfeidhmchlár cliant sonraí a íoslódáil ón bhfreastalaí agus é a thaispeáint ar an scáileán.
3c. Ag cur an Dockerfile in eagar
Mar atá i gcás an fhreastalaí, cruthaímid simplí Dockerfile
, atá freagrach as an timpeallacht a chruthú ina reáchtálfar an t-iarratas cliant Python. Seo é an cód cliant Dockerfile
:
# То же самое, что и в серверном Dockerfile.
FROM python:latest
# Импортируем 'client.py' в папку '/client/'.
ADD client.py /client/
# Устанавливаем в качестве рабочей директории '/client/'.
WORKDIR /client/
▍4. Docker Compose
Mar is féidir a bheith tugtha faoi deara agat, chruthaigh muid dhá thionscadal éagsúla: freastalaí agus cliant. Tá a chomhad féin ag gach ceann acu Dockerfile
. Go dtí seo, níl gach rud a tharla imithe thar na bunghnéithe a bhaineann le bheith ag obair le Docker. Anois cuirimid tús le Docker Compose. Chun seo a dhéanamh, a ligean ar dul go dtí an comhad docker-compose.yml
, atá suite i bhfillteán fréimhe an tionscadail.
Tabhair faoi deara nach bhfuilimid ag iarraidh na horduithe go léir is féidir a úsáid i docker-compose.yml
. Is é an príomhaidhm atá againn ná siúl trí shampla praiticiúil a thabharfaidh an t-eolas bunúsach duit ar Docker Compose.
Seo é an cód le cur sa chomhad docker-compose.yml
:
# Файл docker-compose должен начинаться с тега версии.
# Мы используем "3" так как это - самая свежая версия на момент написания этого кода.
version: "3"
# Следует учитывать, что docker-composes работает с сервисами.
# 1 сервис = 1 контейнер.
# Сервисом может быть клиент, сервер, сервер баз данных...
# Раздел, в котором будут описаны сервисы, начинается с 'services'.
services:
# Как уже было сказано, мы собираемся создать клиентское и серверное приложения.
# Это означает, что нам нужно два сервиса.
# Первый сервис (контейнер): сервер.
# Назвать его можно так, как нужно разработчику.
# Понятное название сервиса помогает определить его роль.
# Здесь мы, для именования соответствующего сервиса, используем ключевое слово 'server'.
server:
# Ключевое слово "build" позволяет задать
# путь к файлу Dockerfile, который нужно использовать для создания образа,
# который позволит запустить сервис.
# Здесь 'server/' соответствует пути к папке сервера,
# которая содержит соответствующий Dockerfile.
build: server/
# Команда, которую нужно запустить после создания образа.
# Следующая команда означает запуск "python ./server.py".
command: python ./server.py
# Вспомните о том, что в качестве порта в 'server/server.py' указан порт 1234.
# Если мы хотим обратиться к серверу с нашего компьютера (находясь за пределами контейнера),
# мы должны организовать перенаправление этого порта на порт компьютера.
# Сделать это нам поможет ключевое слово 'ports'.
# При его использовании применяется следующая конструкция: [порт компьютера]:[порт контейнера]
# В нашем случае нужно использовать порт компьютера 1234 и организовать его связь с портом
# 1234 контейнера (так как именно на этот порт сервер
# ожидает поступления запросов).
ports:
- 1234:1234
# Второй сервис (контейнер): клиент.
# Этот сервис назван 'client'.
client:
# Здесь 'client/ соответствует пути к папке, которая содержит
# файл Dockerfile для клиентской части системы.
build: client/
# Команда, которую нужно запустить после создания образа.
# Следующая команда означает запуск "python ./client.py".
command: python ./client.py
# Ключевое слово 'network_mode' используется для описания типа сети.
# Тут мы указываем то, что контейнер может обращаться к 'localhost' компьютера.
network_mode: host
# Ключевое слово 'depends_on' позволяет указывать, должен ли сервис,
# прежде чем запуститься, ждать, когда будут готовы к работе другие сервисы.
# Нам нужно, чтобы сервис 'client' дождался бы готовности к работе сервиса 'server'.
depends_on:
- server
▍5. Tógáil an tionscadail
Tar éis isteach docker-compose.yml
Tá na treoracha riachtanacha go léir curtha isteach, ní mór an tionscadal a chur le chéile. Tá an chéim seo dár gcuid oibre cosúil leis an ordú a úsáid docker build
, ach tá an t-ordú comhfhreagrach ábhartha do roinnt seirbhísí:
$ docker-compose build
▍6. Seoladh an tionscadail
Anois go bhfuil an tionscadal curtha le chéile, tá sé in am é a sheoladh. Freagraíonn an chéim seo dár gcuid oibre don chéim ina ndéantar, agus muid ag obair le coimeádáin aonair, an t-ordú a fhorghníomhú docker run
:
$ docker-compose up
Tar éis an t-ordú seo a fheidhmiú, ba chóir go mbeadh an téacs a d'íoslódáil an cliant ón bhfreastalaí le feiceáil sa teirminéal: Docker-Compose is magic!
.
Mar a luadh cheana, úsáideann an freastalaí an port ríomhaire 1234
chun iarratais cliant a sheirbhísiú. Dá bhrí sin, má théann tú chuig an seoladh i do bhrabhsálaí Docker-Compose is magic!
.
Orduithe Úsáideacha
Breathnaímid ar roinnt orduithe a d'fhéadfadh a bheith úsáideach duit agus tú ag obair le Docker Compose.
Ligeann an t-ordú seo duit coimeádáin agus acmhainní eile a chruthaigh an t-ordú a stopadh agus a scriosadh docker-compose up
:
$ docker-compose down
Priontálann an t-ordú seo logaí seirbhíse:
$ docker-compose logs -f [service name]
Mar shampla, inár dtionscadal is féidir é a úsáid san fhoirm seo: $ docker-compose logs -f [service name]
.
Leis an ordú seo is féidir leat liosta coimeádán a thaispeáint:
$ docker-compose ps
Ligeann an t-ordú seo duit ordú a rith i gcoimeádán reatha:
$ docker-compose exec [service name] [command]
Mar shampla, d'fhéadfadh sé breathnú mar seo: docker-compose exec server ls
.
Ligeann an t-ordú seo duit liosta íomhánna a thaispeáint:
$ docker-compose images
Torthaí
D'fhéachamar ar na bunghnéithe a bhaineann le bheith ag obair le teicneolaíocht Docker Compose, a ligfidh eolas air duit an teicneolaíocht seo a úsáid agus, más mian leat, tosú ar staidéar níos doimhne a dhéanamh air.
Léitheoirí a chara! An úsáideann tú Docker Compose i do thionscadail?
Foinse: will.com