Лінійка

Створіть та опублікуйте просту мікросервісу в Docker

Створіть та опублікуйте просту мікросервісу в Docker

У цій статті ми покажемо, як створити найпростіший мікросервіс на Fastapi Python Framework і запустити його в контейнер Docker. Спочатку подумайте, як завантажити та запустити готовий контейнер та основні команди для управління контейнером у Docker, а потім перейдіть до створення нашого зображення за допомогою Microveric.

Нагадаємо це Докер - Це програмне забезпечення, яке дозволяє упакувати програму та всі його залежності в одному модулі. Важливою перевагою є процес розгортання програми, зібраного в контейнері, добре інтегрований у трубку CI/CD.

Коротко, переваги використання Docker:

  1. Це дозволяє нам перенести програму в інші операційні системи за допомогою підтримки Cgroups;
  2. Більш ефективно дозволяє завантажувати хост -машину. Віртуальне залізо не створюється, як при використанні віртуальних машин;
  3. Він ідеально інтегрований у трубопровід CI/CD;
  4. Додано ще один рівень абстракції, що дозволяє використовувати різні версії мов, бібліотеки тощо на одному хості.

Основні команди управління двигуном Docker

У статті ми знизимо процес встановлення Docker у Linux (ми припускаємо, що ви вже зробили це). Давайте впевнені, що ви встановили та встановлюється послуга Docker і працює. Виконайте команду в терміналі

Sudo systemctl статус docker

Висновок повинен бути приблизно таким:

● Докер.Сервіс - Двигун Docker Apply Container Завантажений: Завантажений (/lib/systemd/system/docker.Послуга; Інвалід; Привід постачальника: увімкнено) Active: Active (запуск) Оскільки TUE 2021-02-16 16:14:48 +05; 4 год 58 хв. Тому Документи: https: // docs.Докер.Com min pid: 20976 (dockerd) завдання: 57 cgar: /система.Зріз/докер.Сервіс ├─20976/usr/bin/dockerd -h fd: // -containerd =/run/containerd/containerd.Sock ├─27968/usr/bin/docker -proxy -proto tcp -host -ip 0.0.0.0 -host -port 5432 -Container -Ip 172.17.0.2 -container -port 5432 └ └28315/usr/bin/docker -proxy -proto tcp -host -ip 0.0.0.0 -host -port 18000 -Container -Ip 172.17.0.3 -container -port 18000

Якщо служба Docker не буде запущена, відображення команди буде приблизно наступним:

● Докер.Сервіс - Двигун Docker Apply Container Завантажений: Завантажений (/lib/systemd/system/docker.Послуга; Інвалід; Привід постачальника: Увімкнено) Активний: неактивне (мертвий), оскільки TUE 2021-02-16 21:17:32 +05; 1s тому Документи: https: // docs.Докер.Com Процес: 20976 execstart =/usr/bin/dockerd -h fd: // -containerd =/run/containerd/containerd.Sock (код = вийшов, статус = 0/успіх) Основний PID: 20976 (код = Вийшов, стан = 0/Успіх) 

Спробуйте розпочати послугу з наступної команди

Sudo systemctl запуск Docker

Якщо все пройшло без помилок, ви можете перейти до наступного кроку.

Якщо відображається таке повідомлення:

Робота для Docker.Служба не вдалася, оскільки процес управління вийшов із кодом помилки. Див. "SystemCtl Status Docker.Детальніше.

Тож послуга не розпочалася, і вам потрібно спостерігати за журналом і вирішувати проблему. Наступна команда отримає вміст журналу Service Dockerd:

Sudo journalctl -xe/usr/bin/dockerd

Запуск першого контейнера в Docker

Отже, у вас є докер, і ви можете запустити перший контейнер. Заповніть команду в консолі:

Sudo docker тягнути busybox

За допомогою цієї команди ми завантажили готове зображення Зайнята скринька З сервера Docker Hub. Docker Hub - видавець сховища Docker. Він надає можливість зберігати свій імідж, обмінюватися ними з іншими людьми. Це сховище містить багато готових зображень із популярними. Зайнята скринька - Це набір утель в одному виконуваному файлі Unix.

Sudo docker run -rm oinsuppobla sh

За допомогою цієї команди ми запустили контейнер за допомогою опції -це Ми підключили інтерактивні Tty у контейнері та запустив командну оболонку Штук. Ключ -Rm Дозволяє автоматично зняти контейнер при виході з інтерактивного режиму.

Основні команди контейнера Basybox/Linux доступні всередині контейнера OubyBox.

Припустимо, ви можете побачити список каталогів:

Щоб вийти з контейнера, виконайте команду:

Вихід

Наступна команда дозволяє переглянути список доступних локальних зображень:

Sudo docker зображення

В кінці списку нещодавно завантажено Зайнята скринька.

Ви можете побачити список занедбаних контейнерів з командою:

Sudo docker ps -a

Ви також можете передати фільтр:

Sudo docker ps -filter status = "exted"

Ця команда принесе всі контейнери зі статусом виходу. Це контейнери, які зупиняються, але не видалені.

Це короткий набір команд, які використовуються для запуску контейнера, підключіть інтерактивний tty в контейнер і введіть контейнер.

Запуск контейнера Nginx із зображення Docker Hub

Наступний крок ми збираємо наше зображення на основі готового зображення. Для цього створіть папку в каталозі поточного користувача.

Mkdir nginx
Cd nginx

У цій папці ми створюємо файл індексу.Html та dockerfile з наступного вмісту

Індекс.HTML

 Docker Test Я працюю в Docker  

Dockerfile

З індексу копіювання NGINX.html/usr/share/nginx/html 

У файлі Dockerfile Використовуючи Директиву, ми вказали, що нам потрібно використовувати зображення nginx. Команда копіювання дозволяє скопіювати файл індексу з поточного каталогу.HTML у папці/usr/share/nginx/html на зображенні.

Дотримуйтесь команди nginx:

Sudo docker build . --Тег mynginx

Ця команда завантажує офіційне зображення Docker Hub Nginx останньої доступної версії. Нове місцеве зображення буде позначено Tag Mynginx: Останнє

Тепер ви можете запустити контейнер за допомогою зібраного зображення:

Sudo docker run -p 8080: 80 -d -name nginx_test mynginx

Цю команду ми запустили контейнер. Опція Потрібно кинути порт 80 Контейнер на порту хост -автомобілів 8080. Опція -D Дозволяє запускати контейнер у фоновому режимі без посилання на поточну консоль, опція -Назва Встановлює назву контейнер.

Щоб перевірити роботу Nginx на зображенні, відкрийте браузер та перейдіть на адресу http: // localhost: 8080/ . Перш ніж вам слід відкрити сторінку HTML, яку ми скопіювали в контейнер.

Щоб зупинити контейнер, завершити:

Sudo docker stop nginx_test

Щоб видалити контейнер:

Sudo docker rm nginx_test

Ми створюємо просту мікросервіс на Python Framework Fastapi

Створіть структуру проекту:

~# mkdir fpdc
~# CD FPDC

Створіть два відновлення в каталозі FPDC.Txt і main.Плутанина. Головний файл.PY стане точкою введення для запуску програми, файлу requrements.TXT - це залежності.

Додайте до файлу відновлення.Txt наступні залежності:

Fastapi == 0.63.* uvicorn == 0.13.*
Фастапі - Це веб -рамки Python, яка дозволяє швидко створювати продуктивні асинхронні веб -сервіси в Python.

Увікург - Це легкий сервер ASGI. З ним ви можете запускати веб -сервіси, написані за допомогою Fastapi, Django, Flask та інших.

Вміст файлів Головний.Плутанина

Від impate fastapi app fastapi = fastapi (title = "test microsevice") @app.Get ("/api/v1/привіт") def hello (name: str = ""): return "msg": f "hello name" 

Цей рядок ми створюємо додаток ASGI:
APP = Fastapi (title = "Test Microsevice")

Після того, як ми створимо функцію маршруту (маршрутизатор):
@App.Get ("/api/v1/hello")
Def Hello (Ім'я: str = ""):
Return "msg": f "hello name"

Рядок над функцією - це деконтинг, він додає маршрут до нашої програми.

Тепер ми створимо DockerFile з таким вмістом:

Від Python: 3.7.7-х
Запустіть mkdir /додаток
Копіювати ./Головний.Py /додаток
WorkDir /APP /
Вимоги до копіювання.Txt /app /requrements.TXT
Запустіть вимоги до встановлення -r -r.TXT
Викрити 8000
Cmd ["uvicorn", "-host", "0.0.0.0 "," Main: App "]

Dockerfile - схоже на MakeFile, він також вказує на команди, але лише для складання контейнера. Давайте більше розглянемо команди.

З - Ця інструкція встановлює основне зображення (зображення) для складання.

Пробігати - виконує довільні команди оболонки. У цьому випадку створює каталог /додаток

Копіювати - Копіює файли з господаря автомобіля до контейнера Docker.

Викривати - вказує на те, що контейнер слухає порт 8000 при запуску.

CMD - Вказує, яку команду виконати при запуску контейнера.

У цьому прикладі ми запускаємо сервер Uvicorn, вказуючи на те, що він буде слухати всі інтерфейси і що нам потрібно запустити нашу програму.

Мінімальна послуга створена, ви можете зібрати контейнер.

Sudo docker build . --Тег microsevice_v1

І запустіть отриману послугу:

Sudo Docker Run -P 8000: 8000 -D -НАМА МІКРО_В1 MICROSEVICE_V1

Робота послуги можна перевірити з консолі:

Curl -x get "http: // 127.0.0.1: 8000/API/V1/Hello "-H" Прийняти: додаток/json "
Curl -x get "http: // 127.0.0.1: 8000/API/V1/Привіт?Ім'я = Світ%20 "-h" Прийняти: додаток/json "

Або ви можете зайти до браузера та виконати ці запити. Великий плюс Fastapi Framework полягає в тому, що він автоматично генерує документацію для API, яка доступна за адресою:

http: // localhost: 8000/docs/

Мінімальний робочий мікросервіс був створений та запущений у контейнері Docker. У наступних статтях функціональність буде розширена, створити композицію служб, підключити базу даних, додайте фронтад. Надалі почнемо цю послугу в Kubernetes.

Вибір найкращих програм для обробки фотографій
Великий вибір найкращих редакторів фотографій для різних операційних систем. Розглянемо програми для Windows, MacOS, Linux, а також популярних мобільн...
Встановіть камеру Google на інструкцію смартфона
Google Camera - це відмінна програма, яка може повернути вашу ідею зйомки фотографії на мобільному телефоні. Ми говоримо вам, як встановити його на св...
Як активувати пісочницю на домашній версії Windows 10 1903
У Windows 10 1903 З'явилася нова функція під назвою Пісочниця Або іншим чином пісочниця. Цей компонент дозволяє створити спеціальне ізольоване середов...