apphp/laravel-docker

Docker Compose workflow that sets up your own network of containers for local Laravel development

Installs: 2

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 1

Forks: 0

Open Issues: 0

Language:Makefile

Type:project

0.5.1 2022-08-30 20:20 UTC

This package is auto-updated.

Last update: 2024-05-07 15:04:48 UTC


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

  1. Open a terminal and navigate to the directory you cloned this or copy docker/ directory and docker-composer.yml to your current project and navigate to there.

  2. Rename everywhere in files myapp name with the name you prefer for your application.

  3. 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:

  1. Create a ./storage/docker/mysql folder in your Laravel project root.
  2. 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