Найти в Дзене
АйТиДела / IThings

Docker для начинающих: быстрый старт

Привет! Если ты разработчик и хочешь упростить свою жизнь, избавившись от проблем с настройкой окружения, зависимостями и версиями ПО, то Docker — твой лучший друг. В этой статье я расскажу, как быстро начать работать с Docker, даже если ты никогда раньше его не использовал. Особенно полезно это будет для PHP-разработчиков, работающих с Laravel, но я также затрону примеры для других языков. Docker — это платформа для контейнеризации приложений. Вместо того чтобы
настраивать сервер вручную, устанавливать PHP, MySQL, Nginx и прочее, ты просто описываешь нужное окружение в конфигурационном файле, и Docker
разворачивает его за секунды. Прежде чем начать, нужно установить Docker. sudo apt update
sudo apt install docker.io docker-compose
sudo systemctl enable --now docker Скачай Docker Desktop с официального сайта. После установки проверь, что Docker работает: docker --version Прежде чем переходить к настройке окружения, разберем базовые команды: Теперь самое интересное — развернем Larave
Оглавление

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

Особенно полезно это будет для PHP-разработчиков, работающих с Laravel, но я также затрону примеры для других языков.

1. Что такое Docker и зачем он нужен?

Docker — это платформа для контейнеризации приложений. Вместо того чтобы
настраивать сервер вручную, устанавливать PHP, MySQL, Nginx и прочее, ты просто описываешь нужное окружение в конфигурационном файле, и Docker
разворачивает его за секунды.

Преимущества Docker:

  • Изоляция — приложения работают в своих "контейнерах" и не мешают друг другу.
  • Повторяемость — окружение одинаково работает у тебя на ноутбуке, у коллег и на продакшн-сервере.
  • Быстрое развертывание — не нужно тратить часы на настройку сервера.
  • Легкость масштабирования — можно запускать несколько копий приложения без лишних телодвижений.

2. Установка Docker

Прежде чем начать, нужно установить Docker.

Для Linux (Ubuntu/Debian):

sudo apt update
sudo apt install docker.io docker-compose
sudo systemctl enable --now docker

Для macOS и Windows:

Скачай Docker Desktop с официального сайта.

После установки проверь, что Docker работает:

docker --version

3. Основные команды Docker

Прежде чем переходить к настройке окружения, разберем базовые команды:

  • docker ps — список запущенных контейнеров.
  • docker images — список образов.
  • docker pull <image> — скачать образ (например, docker pull nginx).
  • docker run <image> — запустить контейнер из образа.
  • docker stop <container_id> — остановить контейнер.
  • docker rm <container_id> — удалить контейнер.

4. Запускаем PHP и Laravel в Docker

Теперь самое интересное — развернем Laravel-проект в Docker.

Шаг 1: Создаем Dockerfile

Dockerfile — это инструкция для сборки образа.

# Используем официальный образ PHP с Apache
FROM php:8.2-apache

# Устанавливаем зависимости
RUN apt-get update && apt-get install -y \
git \
zip \
unzip \
libzip-dev \
&& docker-php-ext-install pdo_mysql zip

# Включаем mod_rewrite для Apache
RUN a2enmod rewrite

# Устанавливаем Composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Копируем код проекта
COPY . /var/www/html

# Устанавливаем зависимости Laravel
RUN composer install

Шаг 2: Создаем docker-compose.yml

docker-compose.yml позволяет описать несколько сервисов (PHP, MySQL, Nginx) в одном файле.

version: '3.8'

services:
app:
build: .
ports:
- "8000:80"
volumes:
- .:/var/www/html
depends_on:
- db

db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: laravel
MYSQL_USER: laravel
MYSQL_PASSWORD: secret
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql

volumes:
mysql_data:

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

docker-compose up -d
Теперь твой Laravel доступен по http://localhost:8000.

5. Docker для других языков

Node.js

FROM node:18
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

Python (Django/Flask)

FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

6. Полезные советы

  • Используй .dockerignore — чтобы не копировать в контейнер ненужные файлы (аналогично .gitignore).
  • Оптимизируй образы — многослойная сборка (multi-stage build) уменьшает размер финального образа.
  • Изучи volumes — чтобы данные (например, БД) не пропадали после перезапуска контейнера.

Заключение

Docker — это мощный инструмент, который сэкономит тебе кучу времени. Начни с простых контейнеров, постепенно углубляясь в настройку сетей, volumes и оркестрацию (Kubernetes).

-2

Если у тебя есть вопросы — пиши в комментарии, помогу разобраться! 🚀

Ставьте лайки и подписывайтесь!

АйТиДела / IThings