Перед тем, как начать работать с докер, естественно нужно установить сам Docker. В этой статье не будет рассказываться о том, как скачивать и устанавливать данное ПО. За образец возьмем операционку Windows 11. На ней создадим каталог d:\domains\docker-laravel. В нем-то мы и будем разворачивать свою рабочую систему проекта.
1. Шаг первый - создать в корне вышеупомянутой папки файл docker-compose.yaml.
В данный файл запишем следующие инструкции, все необходимые для работы с веб-сервером и ларавел проектом.
version: "3.8" services: nginx: image: "nginx:stable-alpine" ports: - "9000:80" volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro - ./src:/var/www/laravel depends_on: - mysql - php php: build: context: dockerfiles dockerfile: php.Dockerfile volumes: - ./src:/var/www/laravel mysql: image: mysql:8.0 ports: - "9316:3306" env_file: - env/mysql.env volumes: - db_data:/var/lib/mysql phpmyadmin: image: phpmyadmin/phpmyadmin restart: always ports: - "9080:80" environment: PMA_HOST: mysql PMA_USER: laravel PMA_PASSWORD: password depends_on: - mysql composer: build: context: dockerfiles dockerfile: composer.Dockerfile volumes: - db_data:/var/www/laravel artisan: build: context: dockerfiles dockerfile: php.Dockerfile volumes: - ./src:/var/www/laravel entrypoint: ["php", "/var/www/laravel/artisan"] volumes: db_data:
Здесь мы развернули веб-сервер nginx, а также субд mysql + образ phpmyadmin + и php 8.2.
2. Шаг второй: создать все файлы и папки указанные в этом файле инструкций.
Для этого создадим в папке docker-laravel следующие папки
Каталог dockerfiles и в нем два файла, которые мы прописали в инструкциях:
Файл composer.Dockerfile и файл php.Dockerfile
Создадим каталог для самого ларавела - папка с названием src. Там мы должны через composer проинсталлировать наш ларавел проект.
Выполняем команду в консоли из корня проекта:
composer create-project laravel/laravel src
Еще нужно создать папку env для вложенного файла настроек mysql.env
А также создаем каталог nginx и вложенный в него конфиг nginx.conf
3. Шаг третий заполним вышеупомнянутые файлы соответствующей информацией:
Файл composer.Docfile:
FROM composer:latest WORKDIR /var/www/laravel ENTRYPOINT ["composer", "--ignore-platform-reqs"]
Файл php.Dockerfile
FROM php:8.2-fpm-alpine WORKDIR /var/www/laravel RUN docker-php-ext-install pdo pdo_mysql
Файл nginx.conf
server { listen 80; index index.php index.html; server_name localhost; root /var/www/laravel/public; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
mysql.env
MYSQL_DATABASE=laravel_db MYSQL_USER=laravel MYSQL_PASSWORD=password MYSQL_ROOT_PASSWORD=password
4. Шаг четвертый. Для ларавел в файле .env пишем настройки бд:
DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=laravel_db DB_USERNAME=root DB_PASSWORD=password
В итоге должен получиться вот такой проект:

5. Шаг пятый. Запускаем в консоли команду:
docker-compose up -d

docker-compose exec php php artisan migrate