Блог Слёрм

А что, так можно было?

Представим типичную ситуацию: вам нужно запустить веб-приложение на Python с базой данных PostgreSQL. Решить эту задачу можно двумя способами — традиционным и с помощью Docker. Рассмотрим оба.

Путь №1: без Docker

  • Разработчик настраивает Python и базу у себя, проверяет, пишет длинную инструкцию для админа, молится, чтобы ничего не забыть и передаёт админу.
  • Админ пытается по инструкции воспроизвести окружение на сервере. Версии софта не совпадают, зависимости конфликтуют, приложение падает. Начинается мучительный поиск отличий между машиной разработчика и сервером.

Что получаем: потерю времени, нервов и денег. Развёртывание — это лотерея.

Путь №2: С Docker

Вся среда для приложения описывается в двух простых файлах:

Dockerfile: инструкция по сборке «коробки» с приложением
FROM python:3.9-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run", "--host=0.0.0.0"]
docker-compose.yml: Файл для запуска «коробки» с приложением и базы данных вместе
services:  
app:
    build: .
    ports: ["5000:5000"]
  db:
    image: postgres:13
    environment: [POSTGRES_USER=user, POSTGRES_PASSWORD=password]
Разработчик на своем ноутбуке и админ на сервере выполняют одну команду:

docker-compose up

Что получаем: приложение гарантированно запускается в идентичном окружении где угодно. Никаких конфликтов и «у меня работало». Развёртывание занимает минуты, а не часы.

Это тот самый случай, когда «мне такое надо»!

Все нюансы работы с Docker – от основ до оркестрации и безопасности, рассказываем на курсе «Docker для админов и разработчиков». Стартуем 21 июля.

Познакомиться с программой и выбрать тариф — по ссылке.
Docker Разработчикам