Запускаем проект в 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-composeup— поднять (запустить) контейнеры-d— в фоновом режиме (detached), чтобы терминал не был занят
Что происходит при первом запуске?
Вы увидите много текста. Docker:
- Скачивает образы из Docker Hub (mysql, phpmyadmin)
- Создаёт наш образ PHP из Dockerfile
- Создаёт сеть blog-network
- Запускает три контейнера
Это может занять 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
Вы должны увидеть:
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 |
Запустить остановленные |
Рабочий процесс
Теперь ваш рабочий процесс выглядит так:
- Утром: Запустите Docker Desktop, он запустит контейнеры автоматически (или выполните
docker compose up -d) - Работа: Редактируйте файлы в папке
public, обновляйте страницу в браузере - Вечером: Можете выключить компьютер — данные MySQL сохранятся в томе
mysql_data
Поздравляем!
✅ PHP 8.2 с Apache
✅ MySQL 8.0
✅ phpMyAdmin
В следующем модуле начнём писать PHP-код и создавать структуру блога!