Урок 8

Запускаем проект в Docker

20 мин

Момент истины!

Все файлы созданы. Пора запустить наш проект!

Шаг 1: Откройте терминал в папке проекта

Способ 1: В VS Code нажмите Ctrl+` (или Cmd+` на Mac) — откроется встроенный терминал, уже в нужной папке.

Способ 2: Откройте обычный терминал и перейдите в папку:

cd Documents/projects/my-blog

Проверьте, что вы в правильной папке:

dir

Должны увидеть docker-compose.yml, папки docker и public.

Шаг 2: Убедитесь, что Docker запущен

Проверьте, что Docker Desktop работает (иконка кита в трее/меню).

Можете проверить командой:

docker info

Если выдаёт много текста — Docker работает. Если ошибка — запустите Docker Desktop.

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

Введите команду:

docker compose up -d

Разберём эту команду:

  • docker compose — работаем с docker-compose
  • up — поднять (запустить) контейнеры
  • -d — в фоновом режиме (detached), чтобы терминал не был занят

Что происходит при первом запуске?

Вы увидите много текста. Docker:

  1. Скачивает образы из Docker Hub (mysql, phpmyadmin)
  2. Создаёт наш образ PHP из Dockerfile
  3. Создаёт сеть blog-network
  4. Запускает три контейнера

Это может занять 2-5 минут при первом запуске (скачивание образов).

В конце вы увидите что-то вроде:

✔ Container blog-mysql      Started
✔ Container blog-php        Started
✔ Container blog-phpmyadmin Started

Шаг 4: Проверяем, что всё работает

Проверяем статус контейнеров

docker compose ps

Должны увидеть три контейнера со статусом "Up" или "Running":

NAME             STATUS          PORTS
blog-mysql       Up 2 minutes    0.0.0.0:3306->3306/tcp
blog-php         Up 2 minutes    0.0.0.0:8080->80/tcp
blog-phpmyadmin  Up 2 minutes    0.0.0.0:8081->80/tcp

Открываем сайт

Откройте браузер и введите:

http://localhost:8080

Вы должны увидеть:

Привет из Docker!
PHP версия: 8.2.x
Сервер: Apache/2.x.x

Открываем phpMyAdmin

Введите в браузере:

http://localhost:8081

Должен открыться phpMyAdmin. Он уже подключён к MySQL и залогинен.

Слева увидите базу данных blog — она создалась автоматически!

Что-то пошло не так?

Контейнер не запустился

Посмотрите логи:

docker compose logs

Или логи конкретного контейнера:

docker compose logs php
docker compose logs mysql

Порт занят

Ошибка типа "port is already allocated" означает, что порт 8080 или 3306 уже используется другой программой.

Решение: измените порт в docker-compose.yml:

ports:
  - "8082:80"  # Изменили 8080 на 8082

И перезапустите:

docker compose down
docker compose up -d

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

Команда Что делает
docker compose up -d Запустить контейнеры в фоне
docker compose down Остановить и удалить контейнеры
docker compose ps Показать статус контейнеров
docker compose logs Показать логи всех контейнеров
docker compose logs -f php Следить за логами контейнера php
docker compose restart Перезапустить контейнеры
docker compose stop Остановить (не удаляя)
docker compose start Запустить остановленные

Рабочий процесс

Теперь ваш рабочий процесс выглядит так:

  1. Утром: Запустите Docker Desktop, он запустит контейнеры автоматически (или выполните docker compose up -d)
  2. Работа: Редактируйте файлы в папке public, обновляйте страницу в браузере
  3. Вечером: Можете выключить компьютер — данные MySQL сохранятся в томе mysql_data

Поздравляем!

У вас работает полноценное окружение для разработки:
✅ PHP 8.2 с Apache
✅ MySQL 8.0
✅ phpMyAdmin

В следующем модуле начнём писать PHP-код и создавать структуру блога!

Мы используем файлы cookie для улучшения работы сайта и персонализации контента. Продолжая использовать сайт, вы соглашаетесь с использованием cookies в соответствии с нашей Политикой конфиденциальности.