https://github.com/apphp/laravel-docker
https://github.com/apphp/laravel-docker
docker docker-compose laravel
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/apphp/laravel-docker
- Owner: apphp
- License: mit
- Created: 2021-12-27T22:22:26.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-12-07T14:02:37.000Z (over 1 year ago)
- Last Synced: 2025-02-23T05:46:29.796Z (3 months ago)
- Topics: docker, docker-compose, laravel
- Language: Makefile
- Homepage:
- Size: 28.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# Laravel Docker
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:
- [Docker for Windows](https://docs.docker.com/desktop/windows/install/)
- [Docker for Mac](https://docs.docker.com/desktop/mac/install/)
- [Docker for Other](https://docs.docker.com/compose/install/)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:
~~~yaml
docker-compose up --build -d
~~~After building containers you may up them by following command:
~~~yaml
docker-compose up -d
~~~
or down with
~~~yaml
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:
~~~yaml
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
```