apphp / laravel-docker
Docker Compose workflow that sets up your own network of containers for local Laravel development
Installs: 6
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Language:Makefile
Type:project
Requires
- php: >=7.4 || ^8
README
A pretty simple Docker Compose workflow that sets up your own network of containers for local Laravel development.
Usage
To get started, make sure you have Docker installed on your system, and then clone this repository:
To start working with docker do following
-
Open a terminal and navigate to the directory you cloned this or copy
docker/
directory anddocker-composer.yml
to your current project and navigate to there. -
Rename everywhere in files
myapp
name with the name you prefer for your application. -
Run following command to spin up the containers for the web server:
docker-compose up --build -d
After building containers you may up them by following command:
docker-compose up -d
or down with
docker-compose down
After successful building your website will be accessible via:
http://localhost:8081
Schema
___________ ___________ ___________ ___________
| | | | | | | |
| NGINX | --→ | PHP-FPM | | PHP-CLI | | REDIS |
| | | | | | | |
----------- ----------- ----------- -----------
| | |
↓ ↓ ↓
____________ ______________________________ ______________
| Static | | | | |
| Content | | CODE |<--| Node & Npm |
| CSS,JS.. | | | | |
------------ ------------------------------ --------------
Environment Configuration
Make sure you created following keys in your .env
file:
DB_DATABASE=your-db DB_USERNAME=your-db-username DB_PASSWORD=your-db-password
Persistent MySQL Storage
When you bring down the Docker network, your MySQL data will be removed after the containers are destroyed. This is a default behaviour of Docker containers. If you would like to have persistent data that remains after bringing containers down and back up, do the following:
- Create a
./storage/docker/mysql
folder in your Laravel project root. - Under the mysql service in your
docker-compose.yml
file, add the following lines:
volumes:
- ./storage/docker/mysql:/var/lib/mysql
Working with PHP-CLI
Migrations, Seeders and Import DB
After successful building and running docker containers you may run migrations and seeders. To perform these operations, simply type in your terminal and execute following commands:
docker-compose run --rm php-cli php artisan migrate
docker-compose run --rm php-cli php artisan db:seed
Working with Composer
To install/remove new package run following commands:
docker-compose run --rm php-cli composer require predis/predis
Other commands you would like to run:
docker-compose run --rm php-cli composer --version
docker-compose run --rm php-cli composer dump-autoload
docker-compose run --rm php-cli composer test ExampleTest
Working with PHP & Artisan
Example of commands you would like to run:
docker-compose run --rm php-cli php -v
docker-compose run --rm php-cli php artisan migrate
docker-compose run --rm php-cli php artisan db:seed
docker-compose run --rm php-cli php artisan optimize:clear
docker-compose run --rm php-cli php artisan schedule:run
Working with Git
docker-compose run --rm php-cli git branch
docker-compose run --rm php-cli git pull
Working with Redis
composer require predis/predis
docker exec -it redis bash
ping
redis-cli
keys *
set name John
get name
exit
Working with Node & NPM
docker-compose run --rm node npm run dev
docker-compose run --rm node npm run watch
docker-compose run --rm node npm run hot