Команда "docker init" создает стартовые файлы, связанные с Docker, для вашего проекта == автоматически генерирует их для запуска приложения под ваш стек. Docker init сейчас доступен только на Docker Desktop на Windows и MacOS, в большинстве ОС на linux данной команды нет:
- .dockerignore
- Dockerfile
- compose.yaml
- README.Docker.md
Устанавливаем Docker Desktop на устройство если не установлен. Если не имели раньше дела с
mkdir my-fastapi-project
cd my-fastapi-project
Создаем и активируем виртуальное окружение чтобы изолировать зависимости проекта и с помощью команды pip freeze автоматически сформировать requirements.txt, не заполняя его вручную:
python3 -m venv venv
source venv/bin/activate
Cкачиваем необходимые для создания API зависимости с помощью пакетного менеджера pip и сохраняем их в requirements.txt:
pip install fastapi uvicorn
pip freeze > requirements.txt
Создадим в каталоге проекта файл "main.py" с простым API:
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def root():
return {"Hello": "Docker Init"}
Теперь наконец можем запустить магию:
docker init
Нас встречает приветственное сообщение, которое просит нас выбрать язык проекта (python), его версию (3.12.7), порт на котором будет слушать приложение (8000). Далее нужно вписать команду для запуска. Он увидел что я работаю с fastapi и предлагает:
uvicorn 'main:app' --host=0.0.0.0 --port=8000
И тут видим, что автоматически были созданы перечисленные в начале файлы! Далее можем абсолютно спокойно поднять контейнер командой:
docker compose up --build
Дожидаемся пока сбилдится наше приложение и проверяем все ли ок. Переходим в браузер и видим заветное:
http://127.0.0.1:8000
{"Hello":"Docker Init"}
LinuxCamp | #devops #docker #bymaga #win