Deployment Flow(docker part)
Послідовність розгортання виглядає наступним чином:
- Написання коду додатка.
- Створення імеджу контейнера (container image) для додатка.
- Завантаження імеджу в контейнер
registryу власний репозиторій. - Написання власного Kubernetes-маніфесту, який буде посилатись на імедж.
- Виконання команди
kubectl, яка відправить цей маніфест на API-сервер.
Згадаємо як новий імедж завантажується на Docker Hub:

Для розгортання тобі знадобиться додаток на Python, який ти вже використовував у модулі по Docker. Мова йде про початкову версію, без файлу для збереження стану, без бази та без multistage-білду Docker-імеджу:
from flask import Flask, Response, send_file
import os
app = Flask(__name__)
@app.route('/')
def hello():
return f'''
Docker is Awesome!
<pre> ## .</pre>
<pre> ## ## ## ==</pre>
<pre> ## ## ## ## ===</pre>
<pre> /""""""""""""""""\___/ ===</pre>
<pre> ~~~ (~~ ~~~~ ~~~ ~~~~ ~~ ~ / ===-- ~~~</pre>
<pre> \______ o __/</pre>
<pre> \ \ __/</pre>
<pre> \____\______/</pre>
'''
@app.route('/logo')
def docker_logo():
return send_file('docker-logo.png', mimetype='image/png')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
Тепер до Docker-файлу:
# Use the official Python image as the base image
FROM python:3.8
# Set the working directory within the container
WORKDIR /app
# Copy the application code into the container
COPY app.py .
COPY docker-logo.png .
# Install Flask and other dependencies
RUN pip install Flask
# Expose port 8080 to the host
EXPOSE 8080
# Define the command to run the application
ENTRYPOINT ["python", "app.py"]
Далі потрібно:
- Визначити робочу директорію.
- Скопіювати файли.
- Встановити Flask.
- Встановити порт
8080, який буде слухати додаток. - Вказати, що файл Python є вхідною точкою (entrypoint).
Тепер можна перевірити, чи все працює збілдивши image і запустивши додаток локально. Ти вже у терміналі, у директорії, де знаходиться файл Docker, тому потрібно виконати команду:

Тепер перевір усі images за допомогою команди docker images:
Запусти команду docker run -p 8080:8080 kub2py:1.0.0 -n app-py:

Якщо output схожий на той, що ти бачиш вище, значить все добре. Залишився останній крок — завантажити image у registry. Для цього тобі потрібно зайти на Docker Hub і створити новий репозиторій для цього image. Після авторизації на Docker Hub під своїм акаунтом натисни кнопку Create repository . Назви цей репозиторій kub2py і натисни Create .
Тепер залишилось змінити тег на локальному імеджі та виконати docker push. Спочатку зміни тег.
docker tag kub2py:1.0.0 ikulyk404/kub2py:1.0.0
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
Kub2py 1.0.0 692ce37d00a1 32 minutes ago 1.01GB
ikulyk404/kub2py 1.0.0 692ce37d00a1 32 minutes ago 1.01GB
Виконай docker login:
А тепер docker push:
У консолі ти побачиш наступне:
The push refers to repository [docker.io/ikulyk404/kub2py]
c674b179e1aa: Pushed
e5d739c0bb6e: Pushed
9b55140f3e55: Pushed
974a375a56cf: Pushed
ef104393f94e: Pushed
aeffcba91ac0: Pushing [===========================================>]5.12kB
eecf0e3feddd: Pushing [===========================================>]44.21MB
6a829aee45dc: Pushing [===========================================>]19.7MB
292bbffe4917: Pushing [=======================>] 262.5MB/559.8MB
d64e22d53437: Pushing [===========================================>]187.5MB
369d2341f368: Waiting
77ad615d04d4: Waiting
Якщо все виглядає так, як представлено вище, можна переходити до перевірки репозиторію на Docker Hub. Перезавантаж сторінку, якщо output буде схожим на той, що нижче, можна рухатись далі:
