HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-19
1 <p>Представим типичную ситуацию: вам нужно запустить веб-приложение на Python с базой данных PostgreSQL. Решить эту задачу можно двумя способами - традиционным и с помощью Docker. Рассмотрим оба.</p>
1 <p>Представим типичную ситуацию: вам нужно запустить веб-приложение на Python с базой данных PostgreSQL. Решить эту задачу можно двумя способами - традиционным и с помощью Docker. Рассмотрим оба.</p>
2 <p><strong>Путь №1: без Docker</strong></p>
2 <p><strong>Путь №1: без Docker</strong></p>
3 <ul><li>Разработчик настраивает Python и базу у себя, проверяет, пишет длинную инструкцию для админа, молится, чтобы ничего не забыть и передаёт админу.</li>
3 <ul><li>Разработчик настраивает Python и базу у себя, проверяет, пишет длинную инструкцию для админа, молится, чтобы ничего не забыть и передаёт админу.</li>
4 <li>Админ пытается по инструкции воспроизвести окружение на сервере. Версии софта не совпадают, зависимости конфликтуют, приложение падает. Начинается мучительный поиск отличий между машиной разработчика и сервером.</li>
4 <li>Админ пытается по инструкции воспроизвести окружение на сервере. Версии софта не совпадают, зависимости конфликтуют, приложение падает. Начинается мучительный поиск отличий между машиной разработчика и сервером.</li>
5 </ul><p>Что получаем: потерю времени, нервов и денег. Развёртывание - это лотерея.</p>
5 </ul><p>Что получаем: потерю времени, нервов и денег. Развёртывание - это лотерея.</p>
6 <p><strong>Путь №2: С Docker</strong></p>
6 <p><strong>Путь №2: С Docker</strong></p>
7 <p>Вся среда для приложения описывается в двух простых файлах:</p>
7 <p>Вся среда для приложения описывается в двух простых файлах:</p>
8 <p>Dockerfile: инструкция по сборке "коробки" с приложением</p>
8 <p>Dockerfile: инструкция по сборке "коробки" с приложением</p>
9 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"]<p>docker-compose.yml: Файл для запуска "коробки" с приложением и базы данных вместе</p>
9 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"]<p>docker-compose.yml: Файл для запуска "коробки" с приложением и базы данных вместе</p>
10 services: app: build: . ports: ["5000:5000"] db: image: postgres:13 environment: [POSTGRES_USER=user, POSTGRES_PASSWORD=password]<p>Разработчик на своем ноутбуке и админ на сервере выполняют одну команду:</p>
10 services: app: build: . ports: ["5000:5000"] db: image: postgres:13 environment: [POSTGRES_USER=user, POSTGRES_PASSWORD=password]<p>Разработчик на своем ноутбуке и админ на сервере выполняют одну команду:</p>
11 <p><em>docker-compose up</em></p>
11 <p><em>docker-compose up</em></p>
12 <p>Что получаем: приложение гарантированно запускается в идентичном окружении где угодно. Никаких конфликтов и "у меня работало". Развёртывание занимает минуты, а не часы.</p>
12 <p>Что получаем: приложение гарантированно запускается в идентичном окружении где угодно. Никаких конфликтов и "у меня работало". Развёртывание занимает минуты, а не часы.</p>
13 <p>Это тот самый случай, когда "мне такое надо"!</p>
13 <p>Это тот самый случай, когда "мне такое надо"!</p>
14 <p><strong>Все нюансы работы с Docker - от основ до оркестрации и безопасности, рассказываем на курсе "Docker для админов и разработчиков".</strong>Стартуем 21 июля.</p>
14 <p><strong>Все нюансы работы с Docker - от основ до оркестрации и безопасности, рассказываем на курсе "Docker для админов и разработчиков".</strong>Стартуем 21 июля.</p>
15 <p>Познакомиться с программой и выбрать тариф -<a>по ссылке.</a></p>
15 <p>Познакомиться с программой и выбрать тариф -<a>по ссылке.</a></p>