TGViewer
LinuxCamp | DevOps LinuxCamp | DevOps @linuxcamp_tg · 13.6K subscribers
Post #237 7.75K
Собираем минимальный Docker образ

Docker — это инструмент для запуска приложений в изолированных контейнерах. Он делает разработку и развертывание проще, быстрее и безопаснее.

Нужен он для: изоляции приложений и зависимостей, переносимости (софтина работает одинаково на любой системе) и DevOps-процессов.

Плюсы докера: простота развёртывания, экономия ресурсов по сравнению с виртуальными машинами, стандартизация окружения.

Минусы докера: не подходит для задач, требующих полной виртуализации, не оптимален для GUI-приложений, требует грамотной настройки безопасности.

Минимальный пример запуска первого Docker-контейнера с Python (FastAPI):

1. Для развертывания для начала создадим новый проект и установим зависимости. Если не имели раньше дела с питухоном питоном и докером, также скачиваем все необходимое:


$ sudo apt install python3 python3-pip -y
$ sudo apt install docker.io -y


После установки создаем рабочую папку:


$ mkdir fastapi_backend && cd fastapi_backend


Активируем виртуальное окружение, чтобы изолировать зависимости проекта и с помощью команды 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


2. Создадим в каталоге проекта файл "main.py" с простым API:


$ touch main.py


from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
return {"Hello": "LinuxCamp"}


3. Ну и наконец добавим в локальный каталог сам Dockerfile - это инструкция по созданию docker контейнера. Cейчас приведу общий пример, в следующих постах подробнее разберем его структуру:


FROM python:3.11-slim

WORKDIR /app

COPY requirements.txt .
RUN pip install -r requirements.txt

COPY . .

CMD ["uvicorn", "main:app", "--host", "127.0.0.1", "--port", "8000"]


4. На этом все! Мы уже можем собрать свой Docker-образ и запустить его, после чего приложение будет доступно по адресу ниже:


$ sudo docker build -t myapp .
$ sudo docker run -d -p 8000:8000 myapp


$ curl -L http://127.0.0.1:8000 
$ {"Hello":"LinuxCamp"}


http://127.0.0.1:8000


Также можно посмотреть наличие нашего docker контейнера в списке запущенных контейнеров с помощью команды docker ps:


$ docker ps

CONTAINER ID IMAGE COMMAND
640d6f4d1acb fastapi_backend "uvicorn main:app --…"


LinuxCamp | #devops #docker #bymaga
  • 👍 38
  • 🔥 30
  • ❤‍🔥 7
  • 🤔 5
  • ❤ 3
  • ⚡ 1
More from @linuxcamp_tg
  1. Sep 28, 2026Проекту GNU вчера исполнилось 43 года 1983 год: Ричард Столлман объявил планы разработать…
  2. Sep 25, 2026Linux будет работать на ноутах с Snapdragon X2. Qualcomm добавляет полноценную поддержку L…
  3. Sep 24, 2026Так все по делу)) Советует же самый быстрый фикс LinuxCamp | #memes
  4. Sep 23, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  5. Sep 22, 2026Ещё одна рекордная неделя для AI-разработки в Linux. На прошлой неделе в ядро попало 1 634…
  6. Sep 17, 2026Открыл плейлист, а как выйти - непонятно 😁 LinuxCamp | #memes
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →