📝 Docker

Dockerfile: создаём свои образы

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
08.05.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
56
🌱
Уровень
Начальный
🐦 💼 ✈️

Dockerfile — текстовый файл с инструкциями для сборки образа. Каждая инструкция — слой образа.

Минимальный Dockerfile для Python

FROM python:3.11-slim

WORKDIR /app

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

COPY . .

CMD ["python", "app.py"]

Основные инструкции

FROM — базовый образ. Всегда первая строка.

FROM python:3.11-slim
FROM ubuntu:22.04
FROM scratch  # пустой образ

WORKDIR — рабочая директория внутри контейнера. Создаётся автоматически.

WORKDIR /app

COPY — копировать файлы с хоста в образ.

COPY app.py .          # скопировать файл
COPY . .               # скопировать всё
COPY src/ /app/src/    # скопировать папку

RUN — выполнить команду при сборке. Результат сохраняется в образ.

RUN pip install flask
RUN apt-get update && apt-get install -y curl

CMD — команда по умолчанию при запуске контейнера.

CMD ["python", "app.py"]
CMD ["gunicorn", "app:app", "--bind", "0.0.0.0:8000"]

EXPOSE — документирует порт (не открывает его, только информирует).

EXPOSE 8000

ENV — переменная окружения.

ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1

Сборка и запуск

# Собрать образ с тегом
docker build -t myapp:v1 .

# Собрать с другим Dockerfile
docker build -f Dockerfile.prod -t myapp:prod .

# Запустить
docker run -p 8000:8000 myapp:v1

.dockerignore

Файл .dockerignore в корне проекта — как .gitignore для Docker. Исключает файлы из контекста сборки.

.venv/
__pycache__/
*.pyc
.git/
.env
tests/
*.md

Без .dockerignore Docker копирует в образ всё включая .git и node_modules — сборка будет медленной и образ большим.

CMD vs ENTRYPOINT

# CMD — можно переопределить при запуске:
CMD ["python", "app.py"]
# docker run myapp python other.py  ← заменит CMD

# ENTRYPOINT — фиксирует команду, CMD становится аргументами:
ENTRYPOINT ["python"]
CMD ["app.py"]
# docker run myapp other.py  ← запустит python other.py

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Anthropic SDK: первые шаги с Claude API

Anthropic Python SDK — официальная библиотека для работы с Claude. Она скрывает сложность HTTP-запросов, добавляет...

📅 04.06.2026 👁️ 18
📝

Слои и кэширование в Docker

Каждая инструкция в Dockerfile создаёт слой — промежуточный образ. Docker кэширует слои и переиспользует их...

📅 08.05.2026 👁️ 63
📝

Docker Hub — хранилище образов

Docker Hub — публичный реестр Docker образов. Как npm для Node.js или PyPI для Python,...

📅 08.05.2026 👁️ 50

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!