Helcode | Хелкод | Скрипты и автоматизация
993 subscribers
52 photos
34 links
☎️ Контакты для связи: @helcodeadm
Download Telegram
Docker: шпаргалка для тех, кто не хочет тонуть в контейнерах

"У меня на машине работает!" - самый страшный баг в истории. Docker решает это, упаковывая приложение со всем его окружением в контейнер. Вот шпаргалка, чтобы не запутаться в базовых командах.

Пример:
➤ Собрать образ:
docker build -t myapp:latest .
➤ Запустить контейнер:
docker run -d -p 8080:80 myapp:latest
➤ Посмотреть запущенные контейнеры:
docker ps
➤ Посмотреть все контейнеры:
docker ps -a
➤ Остановить контейнер:
docker stop <container_id>
➤ Посмотреть логи:
docker logs <container_id>
➤ Зайти внутрь контейнера
docker exec -it <container_id> bash

Dockerfile - это инструкция по сборке образа. Образ - это шаблон. Контейнер - это запущенный экземпляр образа.

Docker - это как виртуальная машина, только без лишнего веса. Если виртуальная машина - это целый дом, то Docker-контейнер - это студия с мебелью Икеа: всё необходимое, ничего лишнего.


🌐 @helcode | #docker
👍7
Пишем свой Dockerfile для Python-приложения

Ваше Python-приложение зависит от конкретных версий пакетов, системных библиотек и переменных окружения. Давайте упакуем его в Docker, чтобы оно запускалось везде одинаково.

Пример:
# Используем официальный Python образ
FROM python:3.11-slim

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

# Копируем зависимости сначала (для кэширования)
COPY requirements.txt .
RUN pip install -r requirements.txt

# Копируем весь проект
COPY . .

# Открываем порт
EXPOSE 8000

# Запускаем приложение
CMD ["python", "main.py"]


Как собрать и запустить:
docker build -t mypythonapp .
docker run -p 8000:8000 mypythonapp


Сначала копируем requirements.txt и устанавливаем зависимости - это позволяет Docker кэшировать этот слой и не переустанавливать зависимости при каждом изменении кода.

А Вы уже перевели свои проекты в Docker?

Писать Dockerfile - это как собирать чемодан в отпуск: положил всё необходимое, но не забыл про зубную щетку (системные зависимости).


🌐 @helcode | #docker
💯3👏1
Docker: оптимизация образов

Docker образы слишком большие и медленно собираются?

Многоступенчатая сборка и оптимизация слоев

# Многоступенчатая сборка для Python
FROM python:3.9-slim as builder

WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt

FROM python:3.9-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .

ENV PATH=/root/.local/bin:$PATH
CMD ["python", "app.py"]


🛠 Советы по оптимизации:

➤ Используйте .dockerignore
➤ Объединяйте RUN команды
➤ Копируйте requirements.txt отдельно для кеширования
➤ Используйте легковесные базовые образы (alpine, slim)

🌐 @helcode | #docker
👍3