/
K_Msk
/
FastAPI_First
Обзор
Документация
Войти
/
K_Msk
/
FastAPI_First
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
8) FAPI+Docker/main.py
45 строк
4 KB
Skrppapa
Docker
28 сен 2025, 13:48
28 сен 2025, 13:48
b1d6910
Код
Авторство
О чём код?
from fastapi import FastAPI import uvicorn app = FastAPI() @app.get("/users") async def get_users(): return {"id": 1, "name": "Константин"} if __name__ == "__main__": uvicorn.run("main:app", host = "0.0.0.0", port=8000) # Обычно используем 127.0.0.1 Если работаем с Докером используем нули # Активация . dockerenv\Scripts\activate # uvicorn main:app --reload # Команда для создания файла с зависимости с стандрантыми названиями pip freeze > requirements.txt # При создании докер файла обязательно называем его Dockerfile # В нем будут инструкции как собирается и запускается наше приложение # Для контейнера у нас обязательно должен быть образ - по сути архив который весит от 100 Мб до нескольких Гб в котором заключени весь, например, стандартный Python # Команда для создания контейнера docker build -t my_first_image . # Команда для просмотра образов docker images # Команда для запуска контейнера docker run my_first_image или можно присвоить имя контейнеру docker run name=my_first_container my_first_image # После запуска ничего не работает # Частая проблема - не прокинуты порты # Когда запускается докер контейнер - он запускается в "своей отдельной сети" и к нему нельзя достучатся если мы прямо это не укажем # Для этого мы прописываем порты "тропинку" к контейнеру. И после этого при запросе - сначала будут стучатся к нам, а мы зная что обращаются к контейнеру, перенаправим запрос на порт контейнера # Поэтому в команде docker run name=my_first_container my_first_image указываем порты p = 1251:8000 первый какой угодно второй тот, что прописан в нашем приложении # Итоговая команда docker run -p 1251:8000 my_first_image # И при заходе по адресу localhost:1251 - все работает # Важно! # В докер файле мы прописали WORKDIR /app Для чего? # Если во время работы запущенного контейнера мы пропишем docker exec -it my_first_cont bash Мы провалимся в контейнер. Команда ls покажет что в директории находятся скопированные файлы нашего приложения # Если мы перейдем директорией выше (cd ..) и посмотри содержимое (ls) то увидим следующее app bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # Докер контейнер - это облегченная ОС Linux в которой есть все необходиое для работы приложения. У нее есть файловая система и системные папки соответственно. # И если бы в нашем приложении были папки с именами root или sys - есть вероятность что файлы приложения могли попасть куда не надо # Что бы этого избежать мы создали отдельную папку app и разместили все в ней во избежании конфликтов