Найти в Дзене
Python Pro🐍

Docker — это не больно! Гайд для тех, кто боится контейнеров.

Yo, кодеры и будущие хакеры! Ты написал крутой проект на Python. Он работает у тебя на компьютере, но когда ты пытаешься запустить его на сервере, он выдаёт ошибки. Почему? Потому что на сервере другая версия Python, другие библиотеки и вообще всё по-другому. Это как играть в любимую игру, но на другой консоли, где у тебя не работают сохранения. Но у меня для вас хорошие новости. Есть способ избежать этих "проклятий окружения". Сегодня я расскажу вам про Docker — ваш главный инструмент для создания и запуска изолированных приложений. Это не магия, а просто другой подход к развёртыванию вашего кода. Представь, что ты хочешь отправить свою игру другу. Вместо того, чтобы отправлять ему все файлы и просить установить нужную версию Python и кучу библиотек, ты просто упаковываешь всю игру в одну "виртуальную коробку". Эта коробка называется контейнером. Внутри контейнера есть всё, что нужно для работы твоего приложения: Ты отправляешь другу эту "коробку", и он может запустить её на любом ко
Оглавление

Yo, кодеры и будущие хакеры!

Ты написал крутой проект на Python. Он работает у тебя на компьютере, но когда ты пытаешься запустить его на сервере, он выдаёт ошибки. Почему? Потому что на сервере другая версия Python, другие библиотеки и вообще всё по-другому. Это как играть в любимую игру, но на другой консоли, где у тебя не работают сохранения.

Но у меня для вас хорошие новости. Есть способ избежать этих "проклятий окружения". Сегодня я расскажу вам про Docker — ваш главный инструмент для создания и запуска изолированных приложений. Это не магия, а просто другой подход к развёртыванию вашего кода.

Что такое Docker? Твоя "виртуальная коробка"

Представь, что ты хочешь отправить свою игру другу. Вместо того, чтобы отправлять ему все файлы и просить установить нужную версию Python и кучу библиотек, ты просто упаковываешь всю игру в одну "виртуальную коробку". Эта коробка называется контейнером.

Внутри контейнера есть всё, что нужно для работы твоего приложения:

  • Операционная система.
  • Версия Python.
  • Все библиотеки.
  • Твой код.

Ты отправляешь другу эту "коробку", и он может запустить её на любом компьютере, где установлен Docker. И всё будет работать, как у тебя!

Главные понятия: Dockerfile и Docker-образ

Для того чтобы создать такую "коробку", тебе нужны две вещи:

  • Dockerfile — это как рецепт или инструкция для создания твоего контейнера. Ты говоришь Docker'у: "Возьми базовую операционную систему, установи Python, скопируй мой код и запусти его."
  • Docker-образ — это готовый шаблон твоего контейнера. Ты можешь создать его один раз и запускать сколько угодно раз.

Шаг 1: Пишем Dockerfile

Создай файл Dockerfile в корневой папке своего проекта (без расширения).

# Использовать базовый образ Python 3.9
FROM python:3.9-slim

# Установить рабочую директорию внутри контейнера
WORKDIR /app

# Копировать файлы проекта в контейнер
COPY . /app

# Установить зависимости
RUN pip install --no-cache-dir -r requirements.txt

# Запустить приложение
CMD ["python", "app.py"]

Разбираем "магию":

  • FROM python:3.9-slim: Мы говорим Docker'у, что хотим использовать базовый образ с Python 3.9.
  • WORKDIR /app: Мы создаем папку /app внутри контейнера.
  • COPY . /app: Мы копируем все файлы из нашей локальной папки в /app внутри контейнера.
  • RUN pip install ...: Мы говорим Docker'у установить все зависимости из файла requirements.txt.
  • CMD ["python", "app.py"]: Мы говорим Docker'у, какую команду нужно выполнить, чтобы запустить наше приложение.

Шаг 2: Создаём Docker-образ

Теперь, когда у нас есть инструкция, мы можем создать наш образ. Открой терминал в папке с проектом и введи:

docker build -t my-python-app

Эта команда создаст образ и назовёт его my-python-app.

Шаг 3: Запускаем контейнер

Теперь, когда у нас есть образ, мы можем запустить его. Это как "включить" нашу виртуальную коробку.

docker run -p 5000:5000 my-python-app

Разбираем "магию":

  • docker run: Мы запускаем контейнер.
  • -p 5000:5000: Мы "пробрасываем" порт. Это говорит Docker'у, что трафик, который приходит на порт 5000 на твоём компьютере, нужно перенаправить на порт 5000 внутри контейнера.

Вы — победитель!

Ты только что создал контейнер с твоим приложением. Теперь твой код будет работать везде, где есть Docker, независимо от операционной системы или установленных библиотек. Ты победил главного врага — "проклятие окружения".

Ваш следующий квест: Найдите свой старый проект, который не хотел запускаться на другом компьютере, создайте для него Dockerfile и попробуйте запустить его. Поделитесь в комментариях, удалось ли вам это!