Уводзіны ў Docker - як стварыць кліент / сервер на Docker-Compose

Вы распрацоўшчык і хочаце адкрыць для сябе Docker-Compose? Гэты артыкул зроблена для вас.

Аўтарскія правы на dev.to

Пасля кароткага ўвядзення ў Docker-Compose вы можаце стварыць свой першы дадатак на баку кліента / сервера з дапамогай Docker.

Гэты артыкул улічвае, што вы ведаеце асновы Докера. Калі няма, не панікуйце! Я прапаную вам прачытаць мой першы артыкул, каб выявіць Докер і даведацца, як стварыць першае прыкладанне.

Што такое Docker Compose?

Docker-Compose - гэта інструмент ад Docker. Для спрашчэння гэты інструмент быў рэалізаваны для вырашэння архітэктурных праблем у вашых праектах.

Як вы ўжо заўважылі ў папярэдняй артыкуле, мы стварылі простую праграму, якая паказвае "Докер - гэта магія!".

На жаль, як распрацоўшчык вы рэдка ствараеце аўтаномную праграму (праграму, якая не патрабуе запуску іншых службаў, напрыклад, базы дадзеных).

Як даведацца, ці патрэбны вам Docker Compose? Калі для запуску прыкладання патрабуецца некалькі службаў, вам спатрэбіцца гэты інструмент. Напрыклад, калі вы ствараеце вэб-сайт, які павінен падключыцца да вашай базы дадзеных для праверкі сапраўднасці карыстальнікаў (тут 2 паслугі, вэб-сайт і база дадзеных).

Docker-compose дазваляе запускаць усе гэтыя сэрвісы адной камандай.

Розніца паміж Докерам і Докерам Складай

Докер выкарыстоўваецца для кіравання адзіным кантэйнерам (паслугай) для вашага прыкладання.

Docker-Compose выкарыстоўваецца для кіравання некалькімі кантэйнерамі для аднаго і таго ж прыкладання адначасова. Гэты інструмент прапануе тыя ж функцыі, што і Docker, але дазваляе больш складаныя прыкладанні.

Докер (адзін кантэйнер) VS Docker-Compose (некалькі кантэйнераў)

Тыповае прыкладанне

Гэты інструмент можа стаць вельмі магутным і дазволіць вам вельмі хутка разгортваць прыкладанні са складанай архітэктурай. Я дам вам канкрэтны выпадак, які дакажа, што вам гэта трэба.

Уявіце, што вы ганарыцеся стваральнікам вашага вэб-праграмнага забеспячэння.

Ваша рашэнне прапануе два вэб-сайты. Першы дае магчымасць крамам стварыць свой інтэрнэт-краму ўсяго ў некалькі клікаў. Другі прысвечаны абслугоўванню кліентаў. Гэтыя два сайты ўзаемадзейнічаюць з адной базай дадзеных.

Вы пачынаеце дамагчыся поспеху, і вашаму серверу ўжо недастаткова. Такім чынам, вы вырашылі перанесці ўсё праграмнае забеспячэнне на іншы кампутар.

На жаль, вы не выкарыстоўвалі Docker-Compose. Такім чынам, вы павінны міграваць і наладжваць свае паслугі адна за адной, спадзеючыся, што нічога не забыта.

Калі б вы выкарыстоўвалі Docker-Compose, вы б развязалі ўсю сваю архітэктуру на новым серверы ўсяго некалькімі камандамі. Цяпер усё, што вам трэба зрабіць, гэта зрабіць некалькі налад і загрузіць рэзервовую копію базы дадзеных, каб завяршыць міграцыю.

Зараз мы ствараем першае прыкладанне на баку кліента / сервера з Docker-Compose

Цяпер, калі вы ведаеце, для чаго выкарыстоўваецца Docker-Compose, прыйшоў час стварыць свой першы дадатак на баку кліента / сервера!

Мэтай гэтага ўрока з'яўляецца стварэнне невялікага вэб-сайта (сервера) у Python, які змяшчае прапанову. Гэта прапанова павінна быць атрымана праграмай (кліентам) у Python, якая адлюстроўвае прапанову.

Заўвага: у гэтым уроку ўлічваецца, што ў вас ужо ўстаноўлены Docker на вашым кампутары і вы маеце асновы. Калі гэта не так, я прашу вас звярнуцца да маёй папярэдняй артыкулы.

1. Стварыце свой праект

Каб стварыць свой першы кліент / серверны дадатак, я запрашаю вас стварыць тэчку на вашым кампутары. Яна павінна ўтрымліваць наступныя файлы і папкі ў каранёвым каталогу:

  • Файл Docker-Compose.yml (файл Docker-Compose, які змяшчае інструкцыі, неабходныя для стварэння розных сэрвісаў).
  • "Серверная" тэчка (гэтая тэчка змяшчае файлы, неабходныя для налады сервера).
  • "Кліент" - тэчка (гэтая тэчка змяшчае файлы, неабходныя для налады кліента).

Вы павінны мець архітэктуру гэтай тэчкі:

. ├── кліент / ├── docker-compose.yml └── сервер /
2 каталогі, 1 файл

2. Стварыце свой сервер

Па-першае, мы збіраемся стварыць сервер, які нагадвае вам аб асновах Докера.

2а. Стварэнне файлаў

Перайдзіце ў тэчку Сервер і стварыце наступныя файлы:

  • Файл "server.py" (файл Python, які змяшчае код сервера).
  • Файл "index.html" (файл HTML, які ўтрымлівае прапанову, якое будзе адлюстроўвацца).
  • Докерскі файл (файл Docker, які змяшчае інструкцыі, неабходныя для стварэння сервернай асяроддзя).

Вы павінны мець архітэктуру гэтай тэчкі ў наступным шляху "сервер /":

. ├── Dockerfile ├── index.html └── server.py
0 каталогі, 3 файлы

2б. Адрэдагуйце файл python

Вы можаце дадаць наступны код у файл server.py:

З дапамогай гэтага кода вы можаце стварыць просты вэб-сервер у гэтай тэчцы. Змесціва файла index.html размешчана для агульнага доступу на вэб-сайце.

2в. Адрэдагуйце файл HTML

Вы можаце дадаць у файл index.html наступнае прапанову:

Пры запуску сервер выпускае гэты файл, і гэтая запіс адлюстроўваецца.

2d. Адрэдагуйце файл Docker

Тут мы ствараем просты Dockerfile, які адказвае за выкананне нашага файла Python. Для гэтага мы выкарыстоўваем афіцыйны вобраз, створаны для запуску Python.

3. Стварыце кліента

Каб працягнуць асновы Докера, мы ствараем кліента.

3а. Стварэнне файлаў

Перайдзіце ў папку кліента і стварыце наступныя файлы:

  • Файл "client.py" (файл Python, які змяшчае код кліента).
  • Докерскі файл (файл Docker, які змяшчае інструкцыі, неабходныя для стварэння кліенцкага асяроддзя).

Звычайна трэба мець архітэктуру гэтай тэчкі ў наступным шляху "кліент /":

. ├── client.py └── Dockerfile
0 каталогі, 2 файлы

3б. Адрэдагуйце файл python

Вы можаце дадаць наступны код у файл client.py:

З дапамогай гэтага кода вы можаце атрымаць доступ і адлюстроўваць змест сайта сервера.

3в. Адрэдагуйце файл Docker

Мы ствараем просты сервер Dockerfile для сервера, які адказвае за выкананне нашага файла Python.

4. Вярнуцца да Docker-Compose

Як вы ўжо заўважылі, мы стварылі два розныя праекты: сервер і кліент, абодва з файлам Docker.

Пакуль што нічога не змянілася ў асновах, якія вы ўжо ведаеце.

Цяпер мы рэдагуем файл "docker-compose.yml" у каранёвым каталогу рэпазітара.

Заўвага: паколькі Docker-Compose завершаны, гэты артыкул прызначана для таго, каб даць вам пэўны і тыповы прыклад. З гэтай прычыны паказаны не ўсе ключавыя словы.

5. Пабудаваць Докер складаць

Пасля налады Docker Compose неабходна стварыць прыкладанне для кліента / сервера. Гэты крок адпавядае камандзе "пабудаваць докер", але прымяняецца да розных службаў.

$ docker-compose зборка

6. Запусціце Docker-Compose

Ваш кампазітар Докер гатовы! Цяпер прыйшоў час пачаць! Гэты крок адпавядае камандзе "запуск докера", але ўжываецца да розных службаў.

$ docker-скласці

Пойдзем, вось і ўсё. "Docker-Compose - гэта магія!" Паказваць.

Заўвага: Як паказана ў падручніку, ваша служба "сервер" выкарыстоўвае порт 1234 на вашым кампутары для распаўсюджвання свайго змесціва. Пры адкрыцці старонкі "http: // localhost: 1234 /" на вашым кампутары "Docker-Compose - гэта магія!" Паказваць.

Код даступны

Калі вы хочаце атрымаць поўны код для зручнага выяўлення або выканання, я зрабіў яго даступным на маім github.

Карысныя каманды для Докера

Як звычайна, я склаў спіс заказаў, якія могуць вам спатрэбіцца з docker-compose.

  • Спыняе кантэйнеры і выдаляе кантэйнеры, выявы ..., створаныя пры дапамозе "Docker-Compose-Up".
$ docker-скласці
  • Паказвае вывад часопісаў службаў (прыклад: Docker-Compose Logs -f Client).
$ docker-compose logs -f [назва службы]
  • Спіс кантэйнераў.
$ docker-compose ps
  • Выконвае каманду ў запушчаным кантэйнеры (напрыклад: 'Docker-Compose Exec Server ls').
$ docker-compose exec [назва службы] [каманда]
  • Спіс малюнкаў.
$ docker-кампазіцыі малюнкаў

Усё скончана ...

Дзякуй за чытанне! Я рэгулярна дзялюся артыкуламі пра FreeCodeCamp; Вы можаце праверыць мой профіль Twitter, каб сачыць за маёй дзейнасцю і атрымліваць карысныя парады і навіны па распрацоўцы.

Калі вы хочаце навучыцца кодаваць, вы атрымліваеце рэсурсы, якія накіроўваюцца непасрэдна ў вашу паштовую скрыню, каб вы маглі палепшыць свае навыкі праграмавання. Атрымайце найноўшыя артыкулы, курсы, навучальныя дапаможнікі, парады, кнігі, матывацыю і іншы эксклюзіўны кантэнт. Так што неадкладна далучайцеся да новай суполкі для атрымання кода (гарантыя без спаму)!

-> Падпішыцеся на рассылку [Тут мы код]

Не саромейцеся, дайце мне водгукі, каб палепшыць мае будучыя артыкулы ў каментарах ніжэй.