diff --git a/README.md b/README.md new file mode 100644 index 0000000..a363b19 --- /dev/null +++ b/README.md @@ -0,0 +1,43 @@ +# Создание собственных 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 (название_образа) +``` +