Leabhar Docker Compose airson luchd-tòiseachaidh

Tha ùghdar an artaigil, an eadar-theangachadh air a bheil sinn a 'foillseachadh an-diugh, ag ràdh gu bheil e airson an luchd-leasachaidh sin a tha airson Docker Compose ionnsachadh agus a tha a' gluasad gu bhith a 'cruthachadh a' chiad iarrtas cleachdaiche-frithealaidh aca a 'cleachdadh Docker. Thathas den bheachd gu bheil leughadair an stuth seo eòlach air bunaitean Docker. Mura h-eil seo fìor, faodaidh tu sùil a thoirt air seo sreath de stuthan air seo post a’ còmhdach bunaitean Docker còmhla ri bunaitean Kubernetes, agus seo artaigil airson luchd-tòiseachaidh.

Leabhar Docker Compose airson luchd-tòiseachaidh

Dè a th’ ann an Docker Compose?

Tha Docker Compose na inneal a tha air a ghabhail a-steach le Docker. Tha e air a dhealbhadh gus fuasgladh fhaighinn air duilgheadasan co-cheangailte ri cleachdadh pròiseict.

Fhad ‘s a bha thu ag ionnsachadh bunaitean Docker, is dòcha gu bheil thu air tachairt ri cruthachadh thagraidhean sìmplidh a bhios ag obair gu neo-eisimeileach agus nach eil an urra, mar eisimpleir, air stòran dàta bhon taobh a-muigh no air seirbheisean sònraichte. Ann an cleachdadh, tha tagraidhean mar seo gu math tearc. Mar as trice bidh pròiseactan fìor a’ toirt a-steach seata iomlan de thagraidhean ag obair còmhla.

Ciamar a tha fios agad am feum thu Docker Compose a chleachdadh nuair a bhios tu a’ cleachdadh pròiseact? Gu dearbh tha e gu math sìmplidh. Ma chleachdas tu grunn sheirbheisean gus toirt air a’ phròiseact seo obrachadh, is dòcha gum bi Docker Compose feumail. Mar eisimpleir, ann an suidheachadh far a bheil iad a 'cruthachadh làrach-lìn a dh'fheumas ceangal ri stòr-dàta gus luchd-cleachdaidh a dhearbhadh. Faodaidh pròiseact mar seo a bhith air a dhèanamh suas de dhà sheirbheis - an tè a nì cinnteach gu bheil an làrach ag obrachadh, agus an tè air a bheil uallach airson an stòr-dàta a chumail suas.

Leigidh teicneòlas Docker Compose, airson cunntas a thoirt air ann an dòigh nas sìmplidhe, dhut mòran sheirbheisean a chuir air bhog le aon àithne.

An diofar eadar Docker and Docker Compose

Bithear a’ cleachdadh docker gus na soithichean (seirbheisean) fa leth a tha ann an tagradh a riaghladh.

Tha Docker Compose air a chleachdadh gus grunn shoithichean a tha a’ dèanamh suas tagradh a riaghladh aig an aon àm. Tha an inneal seo a’ tabhann na h-aon chomasan ri Docker, ach leigidh e leat obrachadh le tagraidhean nas iom-fhillte.

Leabhar Docker Compose airson luchd-tòiseachaidh
Docker (soitheach singilte) agus Docker Compose (iomadh soitheach)

Cùis cleachdaidh àbhaisteach airson Docker Compose

Tha Docker Compose, anns na làmhan ceart, na inneal fìor chumhachdach a leigeas leat tagraidhean a chuir an sàs gu sgiobalta le ailtireachd iom-fhillte. A-nis seallaidh sinn ri eisimpleir de chleachdadh practaigeach de Docker Compose, agus leigidh an sgrùdadh seo leat measadh a dhèanamh air na buannachdan a bheir cleachdadh Docker Compose dhut.

Smaoinich gu bheil thu nad leasaiche air pròiseact lìn. Tha dà làrach-lìn anns a’ phròiseact seo. Tha a’ chiad fhear a’ leigeil le luchd-gnìomhachais stòran air-loidhne a chruthachadh le dìreach beagan chlican. Tha an dàrna fear ag amas air taic teachdaiche. Bidh an dà làrach seo ag eadar-obrachadh leis an aon stòr-dàta.

Tha do phròiseact a 'sìor fhàs mòr-chòrdte, agus tha e a' tionndadh a-mach nach eil cumhachd an fhrithealaiche air a bheil e a 'ruith tuilleadh gu leòr. Mar thoradh air an sin, tha thu a 'co-dhùnadh am pròiseact gu lèir a ghluasad gu inneal eile.

Gu mì-fhortanach, cha do chleachd thu rudeigin mar Docker Compose. Mar sin, feumaidh tu seirbheisean a ghluasad agus ath-dhealbhadh aon aig aon àm, an dòchas nach dìochuimhnich thu dad sa phròiseas.

Ma chleachdas tu Docker Compose, tha gluasad do phròiseact gu frithealaiche ùr na chùis a dh’ fhaodar fhuasgladh le bhith a’ ruith beagan òrdughan. Gus crìoch a chur air gluasad a’ phròiseict gu àite ùr, cha leig thu leas ach cuid de shuidheachaidhean a dhèanamh agus leth-bhreac cùl-taic den stòr-dàta a luchdachadh suas chun t-seirbheisiche ùr.

A’ leasachadh tagradh frithealaiche teachdaiche a’ cleachdadh Docker Compose

A-nis gu bheil fios agad carson a tha sinn gu bhith a’ cleachdadh Docker Compose, tha an t-àm ann a’ chiad tagradh frithealaiche teachdaiche agad a chruthachadh a’ cleachdadh an inneal seo. Is e sin, tha sinn a’ bruidhinn mu bhith a’ leasachadh làrach-lìn beag (frithealaiche) ann am Python as urrainn faidhle a chuir a-mach le criomag de theacsa. Tha am faidhle seo air iarraidh bhon fhrithealaiche le prògram (cliant), cuideachd sgrìobhte ann am Python. Às deidh dhut faidhle fhaighinn bhon t-seirbheisiche, bidh am prògram a’ taisbeanadh an teacsa a tha air a stòradh ann air an sgrion.

Thoir an aire gu bheil sinn a’ gabhail ris gu bheil tuigse bhunasach agad air Docker agus gu bheil an àrd-ùrlar Docker agad mu thràth air a chuir a-steach.

Feuch an tòisich sinn ag obair air a 'phròiseact.

▍1. A 'cruthachadh pròiseact

Gus a’ chiad iarrtas teachdaiche/frithealaiche agad a thogail, tha mi a’ moladh gun tòisich thu le bhith a’ cruthachadh pasgan pròiseict. Bu chòir na faidhlichean agus na pasganan a leanas a bhith ann:

  • faidhl docker-compose.yml. Is e seo faidhle Docker Compose anns am bi an stiùireadh a dh’ fheumar gus na seirbheisean a thòiseachadh agus a rèiteachadh.
  • pasgan server. Bidh na faidhlichean ann a tha riatanach gus am frithealaiche a chumail a’ dol.
  • pasgan client. Bidh na faidhlichean tagraidh teachdaiche suidhichte an seo.

Mar thoradh air an sin, bu chòir gum biodh susbaint prìomh phasgan a’ phròiseict agad a’ coimhead mar seo:

.
├── client/
├── docker-compose.yml
└── server/
2 directories, 1 file

▍2. A 'cruthachadh frithealaiche

An seo, ann am pròiseas cruthachadh frithealaiche, bruidhnidh sinn air cuid de rudan bunaiteach a thaobh Docker.

2a. A 'cruthachadh fhaidhlichean

Rach don phasgan server agus cruthaich na faidhlichean a leanas ann:

  • faidhl server.py. Bidh còd an fhrithealaiche ann.
  • faidhl index.html. Bidh pìos teacsa san fhaidhle seo a bu chòir don aplacaid teachdaiche a-mach.
  • faidhl Dockerfile. Is e seo faidhle Docker anns am bi an stiùireadh a dh’ fheumar gus àrainneachd an fhrithealaiche a chruthachadh.

Seo cò ris a bu chòir susbaint a’ phasgan agad a bhith coltach server/:

.
├── Dockerfile
├── index.html
└── server.py
0 directories, 3 files

2b. A 'deasachadh faidhle Python.

Cuir ris an fhaidhle server.py an còd 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()

Leigidh an còd seo leat frithealaiche lìn sìmplidh a chruthachadh. Bheir e am faidhle don luchd-dèiligidh index.html, agus thèid na tha ann a thaisbeanadh nas fhaide air adhart air an duilleag lìn.

2c. Deasachadh faidhle HTML

Gus faidhleadh index.html cuir an teacsa a leanas ris:

Docker-Compose is magic!

Thèid an teacsa seo a chuir chun neach-dèiligidh.

2d. A 'deasachadh an Dockerfile

A-nis cruthaichidh sinn faidhle sìmplidh Dockerfile, a bhios an urra ri bhith ag eagrachadh na h-àrainneachd runtime airson frithealaiche Python. Mar bhunait airson an ìomhaigh chruthaichte, cleachdaidh sinn ann an dòigh oifigeil, air a dhealbhadh gus prògraman sgrìobhte ann am Python a ruith. Seo susbaint an Dockerfile:

# На всякий случай напоминаю, что 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/

A-nis leig dhuinn tòiseachadh ag obair air an neach-dèiligidh.

▍3. A 'cruthachadh neach-dèiligidh

Fhad ‘s a tha sinn a’ cruthachadh taobh teachdaiche ar pròiseact, bidh cuimhne againn air cuid de bhunaitean Docker air an t-slighe.

3a. A 'cruthachadh fhaidhlichean

Rach don phasgan pròiseict agad client agus cruthaich na faidhlichean a leanas ann:

  • faidhl client.py. Bidh an còd teachdaiche suidhichte an seo.
  • faidhl Dockerfile. Tha an aon àite aig an fhaidhle seo ri faidhle coltach ris ann am pasgan an fhrithealaiche. Is e sin, tha stiùireadh ann a tha ag innse mar a chruthaicheas tu àrainneachd airson còd teachdaiche a chuir an gnìomh.

Mar thoradh air an sin, am pasgan agad client/ aig an ìre seo den obair bu chòir dha coimhead mar seo:

.
├── client.py
└── Dockerfile
0 directories, 2 files

3b. A 'deasachadh faidhle Python

Cuir ris an fhaidhle client.py an còd 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 a’ chòd seo, faodaidh an tagradh teachdaiche dàta a luchdachadh sìos bhon t-seirbheisiche agus a thaisbeanadh air an sgrion.

3c. A 'deasachadh an Dockerfile

Mar ann an cùis an fhrithealaiche, bidh sinn a 'cruthachadh sìmplidh Dockerfile, le uallach airson an àrainneachd a chruthachadh anns am bi an tagradh cliant Python a’ ruith. Seo an còd teachdaiche Dockerfile:

# То же самое, что и в серверном Dockerfile.

FROM python:latest

# Импортируем 'client.py' в папку '/client/'.

ADD client.py /client/

# Устанавливаем в качестве рабочей директории '/client/'.

WORKDIR /client/

▍4. Sgrìobhadh Docker

Mar is dòcha gu bheil thu air mothachadh, chruthaich sinn dà phròiseact eadar-dhealaichte: frithealaiche agus teachdaiche. Tha a faidhle fhèin aig gach fear dhiubh Dockerfile. Gu ruige seo, chan eil a h-uile càil a tha air tachairt air a dhol seachad air bunaitean a bhith ag obair le Docker. A-nis bidh sinn a’ tòiseachadh le Docker Compose. Gus seo a dhèanamh, rachamaid chun an fhaidhle docker-compose.yml, suidhichte ann am pasgan freumh a’ phròiseict.

Thoir an aire nach eil sinn an seo a’ feuchainn ri na h-òrdughan uile a ghabhas cleachdadh ann a chòmhdach docker-compose.yml. Is e ar prìomh amas coiseachd tro eisimpleir practaigeach a bheir dhut an eòlas bunaiteach air Docker Compose.

Seo an còd airson a chur san fhaidhle 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. A 'togail a' phròiseact

Às deidh a-staigh docker-compose.yml Chaidh a h-uile stiùireadh riatanach a chuir a-steach, feumaidh am pròiseact a bhith air a chruinneachadh. Tha an ceum seo den obair againn coltach ri bhith a’ cleachdadh na h-àithne docker build, ach tha an àithne co-fhreagarrach buntainneach do ghrunn sheirbheisean:

$ docker-compose build

▍6. Cur air bhog a 'phròiseict

A-nis gu bheil am pròiseact deiseil, tha an t-àm ann a chuir air bhog. Tha an ceum seo de ar n-obair a 'freagairt ris a' cheum anns a bheil, nuair a bhios sinn ag obair le soithichean fa leth, an òrdugh air a chur gu bàs docker run:

$ docker-compose up

Às deidh an àithne seo a chuir an gnìomh, bu chòir an teacsa a chaidh a luchdachadh sìos leis an neach-dèiligidh bhon fhrithealaiche nochdadh anns a’ chrìoch: Docker-Compose is magic!.

Mar a chaidh ainmeachadh roimhe, bidh am frithealaiche a’ cleachdadh port a’ choimpiutair 1234 ri iarrtasan luchd-cleachdaidh seirbheis. Mar sin, ma thèid thu chun an t-seòlaidh sa bhrobhsair agad http://localhost:1234/, seallaidh e duilleag le teacsa Docker-Compose is magic!.

Òrdughan feumail

Bheir sinn sùil air cuid de òrdughan a dh’ fhaodadh a bhith feumail dhut nuair a bhios tu ag obair le Docker Compose.

Leigidh an àithne seo leat stad agus cuir às do shoithichean agus goireasan eile a chruthaich an àithne docker-compose up:

$ docker-compose down

Bidh an àithne seo a’ clò-bhualadh logaichean seirbheis:

$ docker-compose logs -f [service name]

Mar eisimpleir, anns a’ phròiseact againn faodar a chleachdadh san fhoirm seo: $ docker-compose logs -f [service name].

A’ cleachdadh an àithne seo faodaidh tu liosta de shoithichean a thaisbeanadh:

$ docker-compose ps

Leigidh an àithne seo leat òrdugh a chuir an gnìomh ann an soitheach ruith:

$ docker-compose exec [service name] [command]

Mar eisimpleir, is dòcha gum bi e coltach ri seo: docker-compose exec server ls.

Leigidh an àithne seo leat liosta de dhealbhan a thaisbeanadh:

$ docker-compose images

Builean

Tha sinn air sùil a thoirt air bunaitean a bhith ag obair le teicneòlas Docker Compose, agus le eòlas air a leigeas leat an teicneòlas seo a chleachdadh agus, ma thogras tu, tòiseachadh air sgrùdadh nas doimhne a dhèanamh air. an seo stòr leis a’ chòd airson a’ phròiseict air an do choimhead sinn an seo.

Luchd leughaidh! Am bi thu a’ cleachdadh Docker Compose anns na pròiseactan agad?

Leabhar Docker Compose airson luchd-tòiseachaidh

Source: www.habr.com

Cuir beachd ann