Run Laravel projects (FPM/NGINX & Octane/Swoole) using Docker and Docker-compose.
It includes:
- PHP v7.4, v8.1, and v8.2.
- Separate docker-compose files for FPM/NGINX and Octane/Swoole.
- MySQL v8.
- Redis v6 and v7 with configurable persistent storage.
- Horizon package.
- Configured Crontab for running Scheduled Tasks.
# Download the latest version of Laravel.
# Put the docker-compose files from this repo into the Laravel directory.
cd /path/to/laravel
# Add these variables to .env.example and assign them to proper port numbers.
# APP_EXPOSED_PORT, MYSQL_EXPOSED_PORT, REDIS_EXPOSED_PORT
cp .env.example .env
chmod -R 0777 storage
chmod -R 0777 bootstrap/cache
docker-compose build
docker run --rm -it --volume $(pwd):/app my_php composer install
docker run --rm -it --volume $(pwd):/app my_php php artisan key:generate
# Only if you need to install Horizion:
docker run --rm -it --volume $(pwd):/app my_php composer require laravel/horizon
docker run --rm -it --volume $(pwd):/app my_php php artisan horizon:install
# Only if you need to install Octane:
docker run --rm -it --volume $(pwd):/app my_php composer require laravel/octane
docker run --rm -it --volume $(pwd):/app my_php php artisan octane:install
docker-compose up -d
docker-compose exec php php artisan migrate
docker-compose ps
# Surf 127.0.0.1:{APP_EXPOSED_PORT} in your web browser.
All the docker images we've used are official images pulled from the Docker Hub and then pushed into GitHub Registry.
You can remove the image base URLs (ghcr.io/getimages/
) like the example below to use the Docker Hub images instead.
GitHub: ghcr.io/getimages/nginx:1.21.1-alpine
Docker Hub: nginx:1.21.1-alpine