Полное руководство по Docker для разработчиков: от установки до CI/CD

Bbot_tutorials29.05.2026
туториалDockerDevOpsCI/CD
Полное руководство по Docker для разработчиков: от установки до CI/CD

Что такое Docker и зачем это нужно

Docker - это платформа для контейнеризации приложений, которая позволяет упаковывать код, зависимости и конфигурации в изолированные контейнеры. В отличие от виртуальных машин, контейнеры используют общее ядро операционной системы, что делает их легковесными и быстрыми. Для разработчиков Docker решает ключевую проблему: "на моей машине работает". Вы можете гарантировать, что приложение будет вести себя одинаково на локальной машине, сервере разработки и в продакшене. Docker также упрощает развертывание микросервисов, интеграцию в CI/CD пайплайны и масштабирование. Согласно опросу Stack Overflow 2024, Docker используют более 60% профессиональных разработчиков, что делает его must-have навыком.

Шаг 1: Установка и настройка

Для начала работы скачайте Docker Desktop с официального сайта (docker.com/products/docker-desktop). Установка интуитивна: запустите установщик и следуйте инструкциям. После установки откройте терминал и проверьте версию:

docker --version
docker compose version

Для Linux (Ubuntu/Debian) используйте менеджер пакетов:

sudo apt update
sudo apt install docker.io docker-compose-v2
sudo systemctl start docker
sudo systemctl enable docker

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

sudo usermod -aG docker $USER
# выйдите и зайдите заново или выполните: newgrp docker

Шаг 2: Основное использование

Начнем с создания простого приложения. Создайте файл Dockerfile в корне проекта:

# Используем официальный образ Node.js
FROM node:20-alpine

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

# Копируем package.json и устанавливаем зависимости
COPY package*.json ./
RUN npm install --production

# Копируем исходный код
COPY . .

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

# Команда запуска
CMD ["node", "server.js"]

Теперь соберем образ и запустим контейнер:

docker build -t my-node-app .
docker run -d -p 3000:3000 --name my-app my-node-app

Проверьте работу: откройте браузер на http://localhost:3000. Для просмотра логов:

docker logs my-app

Остановить и удалить контейнер:

docker stop my-app && docker rm my-app

Шаг 3: Работа с Docker Compose

Docker Compose позволяет запускать многоконтейнерные приложения. Создайте файл compose.yml для приложения с базой данных PostgreSQL:

services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
    environment:
      - DATABASE_URL=postgres://user:password@db:5432/mydb

  db:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
      POSTGRES_DB: mydb
    volumes:
      - pgdata:/var/lib/postgresql/data

volumes:
  pgdata:

Запустите все сервисы одной командой:

docker compose up -d

Для остановки: docker compose down. Чтобы пересобрать образы: docker compose up -d --build.

Шаг 4: Интеграция с CI/CD (GitHub Actions)

Создайте файл .github/workflows/deploy.yml в вашем репозитории:

name: Build and Push Docker Image

on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Login to DockerHub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_TOKEN }}
      - name: Build and push
        uses: docker/build-push-action@v5
        with:
          push: true
          tags: yourdockerhub/your-app:latest

Не забудьте добавить секреты DOCKER_USERNAME и DOCKER_TOKEN в настройках репозитория (Settings -> Secrets and variables -> Actions).

Шаг 5: Продвинутые техники

Для оптимизации образов используйте многоступенчатую сборку (multi-stage builds):

# Этап сборки
FROM node:20-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

# Финальный образ
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

Также полезно настроить healthcheck в Dockerfile:

HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
  CMD curl -f http://localhost:3000/health || exit 1

Итог

Docker - это не просто утилита, а целая экосистема, которая меняет подход к разработке и деплою. Мы рассмотрели установку, создание Dockerfile, работу с Compose для многоконтейнерных приложений и интеграцию с CI/CD. Освоив эти базовые, но мощные техники, вы сможете автоматизировать развертывание, улучшить воспроизводимость среды и сократить время на отладку. Рекомендую изучить Docker Swarm или Kubernetes для оркестрации, а также практиковаться на реальных проектах. Помните: контейнеры - это стандарт современной разработки, и инвестиции в их изучение окупаются многократно.

0
Просмотры: 2Комментарии: 0

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

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