Ръководство за начинаещи за Docker - как да създадете страна на клиент / сървър с Docker-Compose

Вие сте разработчик и искате да откриете docker-compose? Тази статия е направена за вас.

Авторско право за публикуване на dev.to

След кратко запознаване с Docker-Compose ще можете да създадете първото си приложение от страна на клиент / сървър с Docker.

Тази статия взема предвид, че знаете основите на Докер. Ако не, не изпадайте в паника! Предлагам ви да прочетете първата ми статия, за да откриете Докер и да научите как да създадете първото си приложение.

Какво е Docker-Compose?

Docker-Compose е инструмент, предоставен от Docker. За да бъде опростен, този инструмент се прилага за решаване на архитектурни проблеми във вашите проекти.

Както може би сте забелязали в предишната ми статия, ние създадохме проста програма, която показваше „Докер е магия!“ При стартирането му.

За съжаление, когато сте разработчик, рядко създавате самостоятелна програма (програма, която не се нуждае от стартиране на други услуги, например база данни).

Как обаче да разберете дали имате нужда от Docker-Compose? Лесно е, ако приложението ви изисква да стартират няколко услуги, имате нужда от този инструмент. Например, ако създадете уебсайт, който трябва да се свърже с вашата база данни за удостоверяване на потребителите (тук 2 услуги, уебсайт и база данни).

Docker-compose ви предлага възможността да стартирате всички тези услуги с една команда.

Разлика между Docker и Docker-Compose

Docker се използва за управление на индивидуален контейнер (услуга) за вашето приложение.

Docker-Compose се използва за управление на няколко контейнера едновременно за едно и също приложение. Този инструмент предлага същите функции като Docker, но ви позволява да имате по-сложни приложения.

Докер (индивидуален контейнер) VS Docker-Compose (няколко контейнера)

Типичен случай на употреба

Този инструмент може да стане много мощен и да ви позволи да разгърнете приложения със сложни архитектури много бързо. Ще ви дам конкретен случай, който ще докаже, че имате нужда от него.

Представете си, вие сте гордият създател на вашия уеб софтуер.

Вашето решение предлага два уебсайта. Първият позволява на магазините да създават своя онлайн магазин с няколко кликвания. Вторият е посветен на поддръжката на клиентите. Тези два сайта взаимодействат с една и съща база данни.

Започвате да имате успех и сървърът ви вече не е достатъчен. Така че решавате да преместите целия си софтуер на друга машина.

За съжаление не сте използвали докер-композиция. Така че ще трябва да мигрирате и пренастроите услугите си една след друга, надявайки се, че нищо не е забравено.

Ако сте използвали докер-композиция, само в няколко команди, щяхте да разгърнете цялата си архитектура на новия си сървър. Всичко, което трябва да направите сега, е да направите няколко конфигурации и да заредите архивирането на вашата база данни, за да финализирате миграцията.

Сега нека създадем първото си приложение от страна на клиент / сървър с Docker-Compose

Сега, когато знаете за какво ще се използва docker-compose, е време да създадете първото си приложение от страна на клиент / сървър!

Целта на този урок е да създаде малък уебсайт (сървър) в Python, който да съдържа изречение. Това изречение трябва да бъде извлечено от програма (клиент) в Python, която ще покаже изречението.

Забележка: Този урок взема предвид, че вече сте инсталирали Docker на вашия компютър и че имате основите. Ако това не е така, ви каня да се обърнете към предишната ми статия.

1. Създайте своя проект

За да създадете първото си приложение клиент / сървър, ви каня да създадете папка на вашия компютър. Той трябва да съдържа в корен следния файл и папки:

  • Файл „docker-compose.yml“ (файл за докер-композиране, който ще съдържа необходимите инструкции за създаване на различните услуги).
  • Папка „сървър“ (тази папка ще съдържа файловете, необходими за настройка на сървъра).
  • Папка „клиент“ (тази папка ще съдържа файловете, необходими за настройка на клиента).

Трябва да имате тази архитектура на папки:

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

2. Създайте вашия сървър

За да започнем с напомняния за основите на Докер, ще започнем със създаването на сървъра.

2а. Създайте файлове

Преминете към папката си „сървър“ и създайте следните файлове:

  • Файл „server.py“ (python файл, който ще съдържа сървърния код).
  • Файл „index.html“ (HTML файл, който ще съдържа изречението, което трябва да бъде показано).
  • „Dockerfile“ файл (докер файл, който ще съдържа необходимите инструкции за създаване на среда на сървъра).

Трябва да имате архитектурата на тази папка в следния път „сървър /“:

,
├── Dockerfile
├── index.html
└── server.py
0 директории, 3 файла

2б. Редактирайте файла Python

Можете да добавите следния код към файла „server.py“:

Този код ще ви позволи да създадете прост уеб сървър в тази папка. Той ще извлече съдържанието на файла index.html, за да го сподели на уеб страница.

2в. Редактирайте Html файла

Можете да добавите следното изречение към файла „index.html“:

Сървърът ще сподели този файл при стартиране и това изречение ще бъде показано.

2г. Редактирайте файла Docker

Тук ще създадем основен Dockerfile, който ще отговаря за изпълнението на нашия Python файл. За целта ще използваме официалния образ, създаден за изпълнение на Python.

3. Създайте своя клиент

За да продължим с напомнянията за основите на Докер, ще създадем клиента.

3а. Създайте файлове

Преместете се в папката „клиент“ и създайте следните файлове:

  • Файл „client.py“ (python файл, който ще съдържа клиентския код).
  • Файл „Dockerfile“ (докер файл, който ще съдържа необходимите инструкции за създаване на среда на клиента).

Обикновено трябва да имате архитектурата на тази папка в следния път „клиент /“:

,
├── client.py
└── Dockerfile
0 директории, 2 файла

3б. Редактирайте файла Python

Можете да добавите следния код към файла „client.py“:

Този код ще ви позволи да получите съдържанието на уеб страницата на сървъра и да го покажете.

3в. Редактирайте файла Docker

Що се отнася до сървъра, ние ще създадем основен Dockerfile, който ще отговаря за изпълнението на нашия Python файл.

4. Обратно към Docker-Compose

Както може би сте забелязали, ние създадохме два различни проекта, сървъра и клиента, и двамата с Dockerfile.

Досега нищо не се е променило от основите, които вече знаете.

Сега ще редактираме „docker-compose.yml“ в основата на хранилището.

Забележка: Docker-Compose е завършен, тази статия има за цел да ви даде конкретен и типичен пример. Ето защо няма да видите всички ключови думи.

5. Изградете Docker-Compose

След като докер-композицията е настроена, вашето клиентско / сървърно приложение трябва да бъде изградено. Тази стъпка съответства на командата „docker build“, но се прилага към различните услуги.

$ docker-compose build

6. Пуснете Docker-Compose

Вашият докер композит е изграден! Сега е време да започнете! Тази стъпка съответства на командата „run docker run“, но се прилага към различните услуги.

$ docker-композиране

Ето, това е всичко. Трябва да видите „Docker-Compose е магия!“, Показан на вашия терминал.

Забележка: Както е посочено в урока, услугата „сървър“ използва порт 1234 на вашия компютър, за да разпространява съдържанието му. Ако отворите страницата „http: // localhost: 1234 /“ на вашия компютър, трябва да видите „Docker-Compose е магия!“.

Кодът е наличен

Ако искате да извлечете пълния код, за да го откриете лесно или да го изпълните, го оставих на ваше разположение в моя Github.

Полезни команди за Докер

Както обикновено, подготвих списък с поръчки, които могат да ви бъдат полезни с docker-compose.

  • Спира контейнерите и премахва контейнери, изображения ... създадени от „docker-compose up“.
$ docker-композиране надолу
  • Показва изходните данни от дневника от услугите (например: „docker-compose logs -f client“).
$ docker-compose дневници -f [име на услугата]
  • Изброява контейнери.
$ docker-композира ps
  • Изпълнява команда в работещ контейнер (пример: „docker-compose exec server ls“).
$ docker-compose exec [име на услугата] [команда]
  • Изброява изображения.
$ docker-композиране на изображения

Вече свърши…

Благодаря за четенето! Редовно споделям статии за FreeCodeCamp; можете да разгледате моя профил в Twitter, за да следите дейностите ми и да получите полезни съвети и новини за развитието.

Ако искате да се научите да кодирате, получавайте ресурси, изпратени директно на вашата пощенска кутия, които ви позволяват да подобрите уменията си за програмиране. Вземете най-новите статии, курсове, уроци, съвети, книги, мотивация и друго изключително съдържание.
Така че, присъединете се към новата общност, посветена на кода, без допълнително забавяне (гаранция без спам)!

-> Абонирайте се за бюлетина [Тук кодираме]

Не се колебайте да ми дадете малко отзиви, за да подобря бъдещите си статии в коментарите по-долу.