Files
2025-02-02 01:36:27 +03:00

44 lines
3.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Создание собственных Docker образов
![lol](https://miro.medium.com/v2/resize:fit:1400/1*42K-swiwgm3lZ2xRyNU5ow.gif)
## Приложение на Python
В данном репозитории было написано небольшое веб приложение на базе языка программирования **Python3.10** и фреймворка **FastAPI**.
Приложение считывает json файл `dataset.json`, в котором находится список русскоязычных анекдотов и шуток. При получении GET запроса от клиента по эндпоинту `/get_joke`, программа случайным образом выбирает из списка шутку и возвращает клиенту в формате `{"joke": "Русалка села на шпагат"}`.
Запуск Python приложение, осуществляется через функционал FastAPI, а именно через:
```bash
fastapi run main.py
```
## Dockerfile
**Dockerfile** — это текстовый файл с набором инструкций для автоматической сборки **Docker-образов**. В нем описываются шаги по созданию среды для приложения: выбор базового образа, установка зависимостей, копирование файлов, настройка переменных окружения и запуск команд.
В данном проекте `Dockerfile` имеет следующий вид:
```Dockerfile
FROM python:3.10-alpine # За основу Docker образа берется готовый образ с предустановленным python3.10 и ОС Alpine
WORKDIR /app # Определяем рабочую папку приложения. Если её ранее не существовало, то она будет создана, и будет определена как текущая
COPY ./app . # Копируем всё содержимое папки /app репозитория и перемещаем в текущую папку внутри образа (т.е. внутрь папки /app, что мы определили выше)
RUN python3 -m venv venv # Создаем виртуально окружение
RUN source venv/bin/activate # Активируем виртуальное окружение
RUN pip3 install -r requirements.txt # Устанавливаем все зависимости
RUN pip3 install "fastapi[all]"
EXPOSE 8000 # Открываем порт 8000 для работы веб-приложения
CMD ["fastapi", "run", "--port", "8000", "main.py"] # Запускаем веб-приложение
```
## Сборка Docker образа
Для сборки Docker образа необходимо выполнить команду:
```bash
sudo docker build -t (название_образа) .
```
Образ начнёт собираться, и по завершению всех инструкций, вам необходимо будет лишь запустить готовый Docker образ:
```bash
sudo docker run --rm --network host (название_образа)
```