This project sets up a Laravel development environment using Docker Compose, including the following services:
- Nginx (Web Server)
- PHP-FPM (PHP processing)
- MySQL (Database)
- Composer (PHP dependency management)
- Artisan (Laravel CLI commands)
- Node.js (NPM) (Frontend processing)
/
|-- docker-compose.yml
|-- dockerfiles/
| |-- php.dockerfile
| |-- composer.dockerfile
| |-- nginx.dockerfile
|-- nginx/
| |-- nginx.conf
|-- src/ # Laravel source code directory (ignored in .gitignore)
|-- env/mysql.env
First, install Docker and Docker Compose on your system.
git clone https://github.com/HowardPeter/laravel-server-setup.git
Since the src/
directory is ignored in .gitignore
, you first need to create a src/
folder in the root folder level.
After that, create a fresh Laravel installation after cloning the repository.
docker-compose run --rm composer create-project --prefer-dist laravel/laravel:8.0 .
Edit the default Laravel .env
file in ./src/.env
to match the MySQL configuration:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
Build and start server:
docker-compose up --build -d server
Once completed, visit http://localhost:8000 to check the application.
Create the database and run migrations using Artisan:
docker-compose run --rm artisan migrate --seed
docker-compose logs -f server # View Nginx logs
docker-compose logs -f php # View PHP logs
docker-compose restart
docker-compose run --rm artisan tinker
docker-compose run --rm composer require laravel/ui
docker-compose run --rm npm install