- Notifications
You must be signed in to change notification settings - Fork8
Laradhoc is a Docker-based basic LEMP development environment designed for Laravel applications.
License
eleftrik/laradhoc
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
🆕 ✅Version2.5.0 is out - PHP 8.3 support
Laradhoc is a Docker-based basic LEMP development environment designed forLaravelapplications.
Looking for a similar Docker environment forWordPress? Then give a try toDockpress!
Preferisci leggere in italiano? 🇮🇹
- Nginx
- PHP (7.2 / 7.3 / 7.4 / 8.0 / 8.1 / 8.2 / 8.3) with OPCache
- Composer 2.0
- MySQL / MariaDB
- MongoDB
- phpMyAdmin
- Mailhog
- Redis
- Custom domain name (es.
http://laradhoc.test
orhttps://laradhoc.test
) - HTTP or HTTPS (with self-signed SSL certificate)
- npm
- gulp (for old projects)
You can choose which version of PHP (for example,7.4
) to run by setting$PHP_VERSION
variable in your.env
file (see.env.example
for details).
Likewise, you can choose your database (for example,MariaDB 10.2
) by setting$DATABASE_IMAGE
variable in your.env
file (see.env.example
for details)
In case you want to customize your Docker configuration (e.g. adding some mount), justruncp docker-compose.yml docker-compose.override.yml
then edit yourdocker-compose.override.yml
. It will be used by Docker.
- MacOS, Linux or Windows with WSL
- Docker
openssl
(when using HTTPS)
Just clone this repo.
Let's pretend your Laravel application will be accessible atlaradhoc.test
:
git clone git@github.com:eleftrik/laradhoc.git laradhoc.testcd laradhoc.test
Before version2.1.0
, you had to
cd
into Laradhoc folder- invoke
./bin/laradhoc
Starting from version2.1.0
, you can invokelaradhoc
no matter which folder you're in.
Tip If you want to invokelaradhoc
command when you're into your Laravel folder, define analiasalias laradhoc='../bin/laradhoc'
(e.g. in your.bashrc
file).
In this way, when you're using your terminal in the root folder of you Laravel project, you can simply typelaradhoc
(as if the binary were in the same folder).
Create an.env
file from.env.example
cp .env.example .env# Customize every variable according to your needs# See comments to each variable in .env.example file
According to the value of${APP_HOST}
, add your test domain (e.g.laradhoc.test
) to your hosts file
sudo /bin/bash -c'echo -e "127.0.0.1 laradhoc.test" >> /etc/hosts'
Choose if you want to run your application over HTTP or HTTPS.
- HTTPS: set
NGINX_ENABLE_HTTPS=1
- HTTP: set
NGINX_ENABLE_HTTPS=0
With HTTPS enabled, a self-signed SSL certificate will be generate.
Under.docker/images/nginx/ssl
you will find
${APP_HOST}.test.crt
${APP_HOST}.test.key
NOTE: you need to import/install the.crt
file so it will be trusted by your operating system / browser.
Build all Docker containers and start them
./bin/laradhoc init
Ok, let's talk now about your Laravel application!
New or existing?
New Laravel project from scratch? No problem, just run:
./bin/laradhoc install-laravel
A fresh Laravel app will be downloaded in${APP_SRC}
, configured and available athttp://${APP_HOST}orhttps://${APP_HOST}
Do you have an existing Laravel Project?
Just copy it or clone it into${APP_SRC}
so your Laravel application is inside that directory.
Then run:
./bin/laradhoc init-laravel
Laradhoc will search for an.env
file (if not found, it will try to copy.env.example
). Then, it will update yourLaravel.env
with the values taken from the main.env
file. After this, it will install Composer dependencies and akey will be generated by the usual Artisan command.
Remember to run manually your migrations / seeds:
./bin/laradhoc artisan migrate --seed
Do whatever your Laravel application needs to run correctly. For example:
./bin/laradhoc artisan passport:install --force
./bin/laradhoc node npm install && ./bin/laradhoc node npm run dev
- etc.
Finished working? Just stop everything:
./bin/laradhoc stop
Next time you need to run your application, if you haven't changed any setting, just run
./bin/laradhoc
Please note Nginx will proxy all request fromsocket.io
tolaravel-echo
container.
When updating from a previous version, follow these steps:
update your code
- via
git pull
if you're still referencing this repository, a fork or a private one - manually downloading the desiredrelease
In both cases, the
src/
folder won't be affected- via
see
CHANGELOG.md
update your
./.env
file according to./.env.example
(new variables may have been introduced)if you have overridden
docker-compose.yml
usingdocker-compose.override.yml
, seedocker-compose.yml
to check if something has added, changed or deleted, compared to the previous versionofdocker-compose.yml
you were using before updatinglaunch
./bin/laradhoc start --build
Laradhoc provides some useful scripts, located in.docker/scripts
.
Run them from your Laradhoc base folder.
./bin/laradhoc init
It will
- check
openssl
is installed on your host machine (if you setNGINX_ENABLE_HTTPS=1
) - create a self-signed certificate (if you set
NGINX_ENABLE_HTTPS=1
) - build and start the containers
./bin/laradhoc start
or
./bin/laradhoc up
It's a shortcut to
docker-compose up -d
If you want to (re)build the images, use
./bin/laradhoc build
Tired of working? Stop the environment
./bin/laradhoc stop
or
./bin/laradhoc down
It's useful to bring up a new Laravel project. It will prepare a fresh Laravel app in your${APP_SRC}
, createa${APP_SRC}/.env
file holding the same values which are in the main.env
file
./bin/laradhoc install-laravel
Update the Laravel.env
with the environment values coming from the main.env
file
./bin/laradhoc init-laravel
It will execute an artisan command inside the php-fpm container. For example:
./bin/laradhoc artisan make:migration create_example_table
It will execute acomposer command through thecomposer
container. For example:
./bin/laradhoc composer install
It will execute commands through thenode
container. For example:
./bin/laradhoc node yarn run production
Need to run some "old" project still usinggulp
? No problem: this command will run Gulp and compile your assets.
For example:
./bin/laradhoc gulp watch
This command will execute PHPUnit tests:
./bin/laradhoctest
This command will show running containers, according to docker-compose file:
./bin/laradhoc ps
It's a shortcut to
docker-compose ps
Want to throw awayanything? This command will stop all containers, delete volumes and the entire$APP_SRC
.
So, before executing this command,BE SURE you understood very well that you're going to lose all your Laravelcodebase and the related database!
./bin/laradhoc nah
To throw away anything and start again from the scratch, use
./bin/laradhoc nah&& ./bin/laradhoc init&& ./bin/laradhoc laravel-install
This command will show a quick help, listing all available commands:
./bin/laradhochelp
You can use phpMyAdmin:http://${APP_HOST}:${PHPMYADMIN_PORT}
For example:http://laradhoc.test:8080
You can connect to your database via command line or using a tool.
For example, from the command line:
source .envmysql -u$MYSQL_USER -p$MYSQL_PASSWORD -h127.0.0.1$MYSQL_DATABASE
I bet you prefer to use your favorite tool, for example:
- TablePlus
- SequelPro
- HeidiSQL
etc.
Just use the parameters stored in your .env file.
MongoDB is listening on port 27017.
In the following examples, of course you have to replaceuser
,password
andlaradhoc
with the current values of yourMONGODB_USER
,MONGODB_PASSWORD
andMONGODB_DATABASE
environment variables.
If in your host you did installmongo CLI, you can access through command line:
mongo -u user -p password laradhoc
Otherwise, you can access through with your favourite tool, using this connection string:
mongodb://user:password@localhost/laradhoc
To catch all outgoing emails via MailHog, configure your Laravel.env
file with these parameters:
MAIL_HOST=mailhogMAIL_PORT=1025MAIL_USERNAME=MAIL_PASSWORD=
MailHog web interface is available at
http://${APP_HOST}:${MAILHOG_PORT}
For example:http://laradhoc.test:8081
You can remove all old Docker containers and spin up your entire project from scratch. This is ideal if you're working in multiple environments.
sh ./.docker/scripts/rundocker.sh
Suggestions, reviews, bug reports are very welcome. We never stop learning :-)
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Thanks to
- Mauro Cerone
- Sail byTaylor Otwell
for the inspiration
About
Laradhoc is a Docker-based basic LEMP development environment designed for Laravel applications.