diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..8359c58
--- /dev/null
+++ b/.github/CODE_OF_CONDUCT.md
@@ -0,0 +1,46 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
+
+## Our Standards
+
+Examples of behavior that contributes to creating a positive environment include:
+
+* Using welcoming and inclusive language
+* Being respectful of differing viewpoints and experiences
+* Gracefully accepting constructive criticism
+* Focusing on what is best for the community
+* Showing empathy towards other community members
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery and unwelcome sexual attention or advances
+* Trolling, insulting/derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or electronic address, without explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
+
+## Our Responsibilities
+
+Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
+
+Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
+
+## Scope
+
+This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at mahmoud@zalt.me. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
+
+Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
+
+[homepage]: http://contributor-covenant.org
+[version]: http://contributor-covenant.org/version/1/4/
diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..7d5865b
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,3 @@
+### First off, thanks for taking the time to contribute!
+
+For the contribution guide [click here](http://laradock.io/contributing/).
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
index 0337fe1..eff16ef 100644
--- a/.github/ISSUE_TEMPLATE.md
+++ b/.github/ISSUE_TEMPLATE.md
@@ -1,29 +1,23 @@
### Info:
-- Docker version (`$ docker --version`):
-- Laradock commit (`$ git rev-parse HEAD`):
-- System (`place x between the [ ]`):
- - [ ] Mac
- - [ ] PC
- - [ ] Linux
- - Info:
+- Docker version (`$ docker --version`):
+- Laradock commit (`$ git rev-parse HEAD`):
+- System info (Mac, PC, Linux):
+- System info disto/version:
### Issue:
-##### What seems to be going wrong?
-
+
_____
### Expected behavior:
-##### What should be happening instead?
-
+
_____
### Reproduce:
-##### How might we be able to reproduce the error?
-
+
_____
### Relevant Code:
- ```
- // place code here
- ```
\ No newline at end of file
+```
+// place a code sample here
+```
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
new file mode 100644
index 0000000..9160f01
--- /dev/null
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -0,0 +1,7 @@
+
+
+##### I completed the 3 steps below:
+
+- [] I've read the [Contribution Guide](http://laradock.io/contributing).
+- [] I've updated the **documentation**. (refer to [this](http://laradock.io/contributing/#update-the-documentation-site) for how to do so).
+- [] I enjoyed my time contributing and making developer's life easier :)
diff --git a/README-zh.md b/.github/README-zh.md
similarity index 99%
rename from README-zh.md
rename to .github/README-zh.md
index aa2a0d0..e50794b 100644
--- a/README-zh.md
+++ b/.github/README-zh.md
@@ -669,19 +669,19 @@ PHP-CLI 安装在 Workspace 容器,改变 PHP-CLI 版本你需要编辑 `works
### 使用自定义域名 (替换 Docker 的 IP)
-假定你的自定义域名是 `laravel.dev`
+假定你的自定义域名是 `laravel.test`
-1 - 打开 `/etc/hosts` 文件添加以下内容,映射你的 localhost 地址 `127.0.0.1` 为 `laravel.dev` 域名
+1 - 打开 `/etc/hosts` 文件添加以下内容,映射你的 localhost 地址 `127.0.0.1` 为 `laravel.test` 域名
```bash
-127.0.0.1 laravel.dev
+127.0.0.1 laravel.test
```
-2 - 打开你的浏览器访问 `{http://laravel.dev}`
+2 - 打开你的浏览器访问 `{http://laravel.test}`
你可以在 nginx 配置文件自定义服务器名称,如下:
```conf
-server_name laravel.dev;
+server_name laravel.test;
```
diff --git a/.github/README.md b/.github/README.md
new file mode 100644
index 0000000..948ec93
--- /dev/null
+++ b/.github/README.md
@@ -0,0 +1,92 @@
+
+
+
+
+A Docker PHP development environment that facilitates running PHP Apps on Docker
+
+
+
+
+
+
+
+
+
+
+Use Docker First And Learn About It Later
+
+
+
+
+
+
+---
+
+
+
+
+
+
+
+
+## Sponsors
+
+Support this project by becoming a sponsor.
+
+Your logo will show up on the [github repository](https://github.com/laradock/laradock/) index page and the [documentation](http://laradock.io/) main page, with a link to your website. [[Become a sponsor](https://opencollective.com/laradock#sponsor)]
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Contributors
+
+#### Core contributors:
+- [Mahmoud Zalt](https://github.com/Mahmoudz) @mahmoudz | [Twitter](https://twitter.com/Mahmoud_Zalt) | [Site](http://zalt.me)
+- [Bo-Yi Wu](https://github.com/appleboy) @appleboy | [Twitter](https://twitter.com/appleboy)
+- [Philippe Trépanier](https://github.com/philtrep) @philtrep
+- [Mike Erickson](https://github.com/mikeerickson) @mikeerickson
+- [Dwi Fahni Denni](https://github.com/zeroc0d3) @zeroc0d3
+- [Thor Erik](https://github.com/thorerik) @thorerik
+- [Winfried van Loon](https://github.com/winfried-van-loon) @winfried-van-loon
+- [TJ Miller](https://github.com/sixlive) @sixlive
+- [Yu-Lung Shao (Allen)](https://github.com/bestlong) @bestlong
+- [Milan Urukalo](https://github.com/urukalo) @urukalo
+- [Vince Chu](https://github.com/vwchu) @vwchu
+- [Huadong Zuo](https://github.com/zuohuadong) @zuohuadong
+- Join us, by submitting 20 useful PR's.
+
+#### Awesome contributors:
+
+
+
+
+## Donations
+
+> Help keeping the project development going, by [contributing](http://laradock.io/contributing) or donating a little.
+> Thanks in advance.
+
+Donate directly via [Paypal](https://www.paypal.me/mzalt)
+
+[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/mzalt)
+
+or become a backer on [Open Collective](https://opencollective.com/laradock#backer)
+
+
+
+or show your support via [Beerpay](https://beerpay.io/laradock/laradock)
+
+[![Beerpay](https://beerpay.io/laradock/laradock/badge.svg?style=flat)](https://beerpay.io/laradock/laradock)
+
+
+## License
+
+[MIT License](https://github.com/laradock/laradock/blob/master/LICENSE)
diff --git a/.gitignore b/.gitignore
index a6b304c..890c25c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,4 +2,6 @@
/logs
/data
.env
-/.project
\ No newline at end of file
+/.project
+.docker-sync
+/jenkins/jenkins_home
diff --git a/.travis.yml b/.travis.yml
index 7643643..1b34535 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -5,11 +5,48 @@ services:
env:
matrix:
- - PHP_VERSION=56
- - PHP_VERSION=70
- - PHP_VERSION=71
- HUGO_VERSION=0.20.2
+ - PHP_VERSION=56 BUILD_SERVICE=workspace
+ - PHP_VERSION=70 BUILD_SERVICE=workspace
+ - PHP_VERSION=71 BUILD_SERVICE=workspace
+
+ - PHP_VERSION=56 BUILD_SERVICE=php-fpm
+ - PHP_VERSION=70 BUILD_SERVICE=php-fpm
+ - PHP_VERSION=71 BUILD_SERVICE=php-fpm
+
+ - PHP_VERSION=hhvm BUILD_SERVICE=hhvm
+
+ # - PHP_VERSION=56 BUILD_SERVICE=php-worker
+ - PHP_VERSION=70 BUILD_SERVICE=php-worker
+ - PHP_VERSION=71 BUILD_SERVICE=php-worker
+
+ - PHP_VERSION=56 BUILD_SERVICE=mssql
+ - PHP_VERSION=70 BUILD_SERVICE=mssql
+ - PHP_VERSION=71 BUILD_SERVICE=mssql
+
+ - PHP_VERSION=56 BUILD_SERVICE=rethinkdb
+ - PHP_VERSION=70 BUILD_SERVICE=rethinkdb
+ - PHP_VERSION=71 BUILD_SERVICE=rethinkdb
+
+ - PHP_VERSION=56 BUILD_SERVICE=aerospike
+ - PHP_VERSION=70 BUILD_SERVICE=aerospike
+ - PHP_VERSION=71 BUILD_SERVICE=aerospike
+
+ - PHP_VERSION=NA BUILD_SERVICE="applications blackfire minio percona nginx caddy apache2 mysql mariadb postgres postgres-postgis neo4j mongo redis"
+ - PHP_VERSION=NA BUILD_SERVICE="adminer phpmyadmin pgadmin"
+ - PHP_VERSION=NA BUILD_SERVICE="memcached beanstalkd beanstalkd-console rabbitmq elasticsearch certbot mailhog maildev selenium jenkins proxy proxy2 haproxy"
+ - PHP_VERSION=NA BUILD_SERVICE="kibana grafana laravel-echo-server"
+ # - PHP_VERSION=NA BUILD_SERVICE="aws"
+
+# Installing a newer Docker version
+before_install:
+ - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
+ - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
+ - sudo apt-get update
+ - sudo apt-get -y install docker-ce
+ - docker version
+
script: ./travis-build.sh
deploy:
diff --git a/DOCUMENTATION/content/contributing/index.md b/DOCUMENTATION/content/contributing/index.md
index 042a19a..94adc47 100644
--- a/DOCUMENTATION/content/contributing/index.md
+++ b/DOCUMENTATION/content/contributing/index.md
@@ -13,8 +13,8 @@ If you have questions about how to use Laradock, please direct your questions to
## Found an Issue
-If have an issue or you found a typo in the documentation, you can help us by
-opnening an [Issue](https://github.com/laradock/laradock/issues).
+If you have an issue or you found a typo in the documentation, you can help us by
+opening an [Issue](https://github.com/laradock/laradock/issues).
**Steps to do before opening an Issue:**
@@ -24,7 +24,7 @@ opnening an [Issue](https://github.com/laradock/laradock/issues).
If your issue appears to be a bug, and hasn't been reported, then open a new issue.
-*This Help us to maximize the effort we can spend fixing issues and adding new
+*This helps us maximize the effort we can spend fixing issues and adding new
features, by not reporting duplicate issues.*
@@ -61,7 +61,7 @@ To update the sidebar or add a new section to it, you can edit this `DOCUMENTATI
## Support new Software (Add new Container)
-* Forke the repo and clone the code.
+* Fork the repo and clone the code.
* Create folder as the software name (example: `mysql` - `nginx`).
@@ -81,7 +81,7 @@ To update the sidebar or add a new section to it, you can edit this `DOCUMENTATI
## Edit supported Software (Edit a Container)
-* Forke the repo and clone the code.
+* Fork the repo and clone the code.
* Open the software (container) folder (example: `mysql` - `nginx`).
diff --git a/DOCUMENTATION/content/documentation/index.md b/DOCUMENTATION/content/documentation/index.md
index 8db3ee3..3359b98 100644
--- a/DOCUMENTATION/content/documentation/index.md
+++ b/DOCUMENTATION/content/documentation/index.md
@@ -5,6 +5,8 @@ weight: 3
---
+
+
## List current running Containers
```bash
@@ -153,7 +155,6 @@ You might use the `--no-cache` option if you want full rebuilding (`docker-compo
-
## Add more Software (Docker Images)
@@ -173,14 +174,17 @@ The NGINX Log file is stored in the `logs/nginx` directory.
However to view the logs of all the other containers (MySQL, PHP-FPM,...) you can run this:
```bash
-docker logs {container-name}
+docker-compose logs {container-name}
+```
+
+```bash
+docker-compose logs -f {container-name}
```
More [options](https://docs.docker.com/compose/reference/logs/)
-```bash
-docker logs -f {container-name}
-```
+
+
@@ -228,7 +232,7 @@ By default **PHP-FPM 7.0** is running.
php-fpm:
build:
context: ./php-fpm
- dockerfile: Dockerfile-70
+ dockerfile: Dockerfile-56
...
```
@@ -311,9 +315,7 @@ It should be like this:
...
```
-2 - Re-build the containers `docker-compose build workspace php-fpm`
-
-3 - Open `laradock/workspace/xdebug.ini` and/or `laradock/php-fpm/xdebug.ini` and enable at least the following configurations:
+2 - Open `laradock/workspace/xdebug.ini` and `laradock/php-fpm/xdebug.ini` and enable at least the following configurations:
```
xdebug.remote_autostart=1
@@ -321,11 +323,25 @@ xdebug.remote_enable=1
xdebug.remote_connect_back=1
```
-For information on how to configure xDebug with your IDE and work it out, check this [Repository](https://github.com/LarryEitel/laravel-laradock-phpstorm).
+3 - Re-build the containers `docker-compose build workspace php-fpm`
+
+For information on how to configure xDebug with your IDE and work it out, check this [Repository](https://github.com/LarryEitel/laravel-laradock-phpstorm) or follow up on the next section if you use linux and PhpStorm.
+
+## Setup remote debugging for PhpStorm on Linux
+ - Make sure you have followed the steps above in the [Install Xdebug section](http://laradock.io/documentation/#install-xdebug).
+ - Make sure Xdebug accepts connections and listens on port 9000. (Should be default configuration).
+
+![Debug Configuration](/images/photos/PHPStorm/linux/configuration/debugConfiguration.png "Debug Configuration").
+
+ - Create a server with name `laradock` (matches **PHP_IDE_CONFIG** key in environment file) and make sure to map project root path with server correctly.
+
+![Server Configuration](/images/photos/PHPStorm/linux/configuration/serverConfiguration.png "Server Configuration").
+
+ - Start listening for debug connections, place a breakpoint and you are good to go !
@@ -415,15 +431,35 @@ To learn more about how Docker publishes ports, please read [this excellent post
+
+
+## Use Jenkins
+
+1) Boot the container `docker-compose up -d jenkins`. To enter the container type `docker-compose exec jenkins bash`.
+
+2) Go to `http://localhost:8090/` (if you didn't chanhed your default port mapping)
+
+3) Authenticate from the web app.
+
+- Default username is `admin`.
+- Default password is `docker-compose exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword`.
+
+(To enter container as root type `docker-compose exec --user root jenkins bash`).
+
+4) Install some plugins.
+
+5) Create your first Admin user, or continue as Admin.
+
+Note: to add user go to `http://localhost:8090/securityRealm/addUser` and to restart it from the web app visit `http://localhost:8090/restart`.
+
+You may wanna change the default security configuration, so go to `http://localhost:8090/configureSecurity/` under Authorization and choosing "Anyone can do anything" or "Project-based Matrix Authorization Strategy" or anything else.
+
+
+
-
-
-
-
-
## Install Laravel from a Docker Container
@@ -525,11 +561,18 @@ b) add a new service container by simply copy-paste this section below PHP-FPM c
```yaml
php-worker:
build:
- context: ./php-fpm
- dockerfile: Dockerfile-70 # or Dockerfile-56, choose your PHP-FPM container setting
+ context: ./php-worker
+ dockerfile: "Dockerfile-${PHP_VERSION}" #Dockerfile-71 or #Dockerfile-70 available
+ args:
+ - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} #Optionally install PGSQL PHP drivers
volumes_from:
- applications
- command: php artisan queue:work
+ depends_on:
+ - workspace
+ extra_hosts:
+ - "dockerhost:${DOCKER_HOST_IP}"
+ networks:
+ - backend
```
2 - Start everything up
@@ -551,13 +594,15 @@ docker-compose up -d php-worker
docker-compose up -d redis
```
+> To execute redis commands, enter the redis container first `docker-compose exec redis bash` then enter the `redis-cli`.
+
2 - Open your Laravel's `.env` file and set the `REDIS_HOST` to `redis`
```env
REDIS_HOST=redis
```
-If you don't find the `REDIS_HOST` variable in your `.env` file. Go to the database configuration file `config/database.php` and replace the default `127.0.0.1` IP with `redis` for Redis like this:
+If you're using Laravel, and you don't find the `REDIS_HOST` variable in your `.env` file. Go to the database configuration file `config/database.php` and replace the default `127.0.0.1` IP with `redis` for Redis like this:
```php
'redis' => [
@@ -715,7 +760,7 @@ docker-compose up -d mariadb phpmyadmin
1 - Run the Adminer Container (`adminer`) with the `docker-compose up` command. Example:
```bash
-docker-compose up -d adminer
+docker-compose up -d adminer
```
2 - Open your browser and visit the localhost on port **8080**: `http://localhost:8080`
@@ -797,19 +842,20 @@ docker-compose up -d elasticsearch
2 - Open your browser and visit the localhost on port **9200**: `http://localhost:9200`
+> The default username is `user` and the default password is `changeme`.
### Install ElasticSearch Plugin
-1 - Install the ElasticSearch plugin like [delete-by-query](https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugins-delete-by-query.html).
+1 - Install an ElasticSearch plugin.
```bash
-docker exec {container-name} /usr/share/elasticsearch/bin/plugin install delete-by-query
+docker-compose exec elasticsearch /usr/share/elasticsearch/bin/plugin install {plugin-name}
```
2 - Restart elasticsearch container
```bash
-docker restart {container-name}
+docker-compose restart elasticsearch
```
@@ -906,6 +952,44 @@ docker-compose up -d minio
```
+
+
+
+## Use AWS
+
+1 - Configure AWS:
+ - make sure to add your SSH keys in aws/ssh_keys folder
+
+2 - Run the Aws Container (`aws`) with the `docker-compose up` command. Example:
+
+```bash
+docker-compose up -d aws
+```
+
+3 - Access the aws container with `docker-compose exec aws bash`
+
+4 - To start using eb cli inside the container, initiaze your project first by doing 'eb init'. Read the [aws eb cli](http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb-cli3-configuration.html) docs for more details.
+
+
+
+
+
+## Use Grafana
+
+1 - Configure Grafana: Change Port using `GRAFANA_PORT` if you wish to. Default is port 3000.
+
+2 - Run the Grafana Container (`grafana`) with the `docker-compose up`command:
+
+```bash
+docker-compose up -d grafana
+```
+
+3 - Open your browser and visit the localhost on port **3000** at the following URL: `http://localhost:3000`
+
+4 - Login using the credentials User = `admin` Passwort = `admin`. Change the password in the webinterface if you want to.
+
+
+
@@ -927,9 +1011,18 @@ To install CodeIgniter 3 on Laradock all you have to do is the following simple
3 - Re-build your PHP-FPM Container `docker-compose build php-fpm`.
+
+## Install Symfony
+1 - Open the `.env` file and set `WORKSPACE_INSTALL_SYMFONY` to `true`.
+2 - Run `docker-compose build workspace`, after the step above.
+3 - The NGINX sites include a default config file for your Symfony project `symfony.conf.example`, so edit it and make sure the `root` is pointing to your project `web` directory.
+
+4 - Run `docker-compose restart` if the container was already running, before the step above.
+
+5 - Visit `symfony.test`
@@ -1001,6 +1094,23 @@ To change the default forwarded port for ssh:
+
+
+## Change the (MySQL) Version
+By default **MySQL 8.0** is running.
+
+MySQL 8.0 is a development release. You may prefer to use the latest stable version, or an even older release. If you wish, you can change the MySQL image that is used.
+
+Open up your .env file and set the `MYSQL_VERSION` variable to the version you would like to install.
+
+```
+MYSQL_VERSION=5.7
+```
+
+Available versions are: 5.5, 5.6, 5.7, 8.0, or latest. See https://store.docker.com/images/mysql for more information.
+
+
+
@@ -1038,6 +1148,19 @@ The default username and password for the root MySQL user are `root` and `root `
+
+
+## Create Multiple Databases (MySQL)
+
+Create `createdb.sql` from `mysql/docker-entrypoint-initdb.d/createdb.sql.example` in `mysql/docker-entrypoint-initdb.d/*` and add your SQL syntax as follow:
+
+```sql
+CREATE DATABASE IF NOT EXISTS `your_db_1` COLLATE 'utf8_general_ci' ;
+GRANT ALL ON `your_db_1`.* TO 'mysql_user'@'%' ;
+```
+
+
+
@@ -1061,21 +1184,21 @@ If you need MySQL access from your host, d
## Use custom Domain (instead of the Docker IP)
-Assuming your custom domain is `laravel.dev`
+Assuming your custom domain is `laravel.test`
-1 - Open your `/etc/hosts` file and map your localhost address `127.0.0.1` to the `laravel.dev` domain, by adding the following:
+1 - Open your `/etc/hosts` file and map your localhost address `127.0.0.1` to the `laravel.test` domain, by adding the following:
```bash
-127.0.0.1 laravel.dev
+127.0.0.1 laravel.test
```
-2 - Open your browser and visit `{http://laravel.dev}`
+2 - Open your browser and visit `{http://laravel.test}`
Optionally you can define the server name in the NGINX configuration file, like this:
```conf
-server_name laravel.dev;
+server_name laravel.test;
```
@@ -1239,11 +1362,11 @@ You are free to modify the `aliases.sh` as you see fit, adding your own aliases
a) open the `docker-compose.yml` file
-b) search for the `INSTALL_AEROSPIKE_EXTENSION` argument under the Workspace Container
+b) search for the `INSTALL_AEROSPIKE` argument under the Workspace Container
c) set it to `true`
-d) search for the `INSTALL_AEROSPIKE_EXTENSION` argument under the PHP-FPM Container
+d) search for the `INSTALL_AEROSPIKE` argument under the PHP-FPM Container
e) set it to `true`
@@ -1254,13 +1377,13 @@ It should be like this:
build:
context: ./workspace
args:
- - INSTALL_AEROSPIKE_EXTENSION=true
+ - INSTALL_AEROSPIKE=true
...
php-fpm:
build:
context: ./php-fpm
args:
- - INSTALL_AEROSPIKE_EXTENSION=true
+ - INSTALL_AEROSPIKE=true
...
```
@@ -1358,7 +1481,11 @@ Moving from Docker Toolbox (VirtualBox) to Docker Native (for Mac/Windows). Requ
## Improve speed on MacOS
-Sharing code into Docker containers with osxfs have very poor performance compared to Linux. Likely there are some workarounds:
+Docker on the Mac [is slow](https://github.com/docker/for-mac/issues/77), at the time of writing. Especially for larger projects, this can be a problem. The problem is [older than March 2016](https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076) - as it's a such a long-running issue, we're including it in the docs here.
+
+So since sharing code into Docker containers with osxfs have very poor performance compared to Linux. Likely there are some workarounds:
+
+
### Workaround A: using dinghy
@@ -1378,9 +1505,99 @@ Quick Setup giude, (we recommend you check their docs)
-
+
+
### Workaround B: using d4m-nfs
+You can use the d4m-nfs solution in 2 ways, one is using the Laradock built it integration, and the other is using the tool separatly. Below is show case of both methods:
+
+
+#### B.1: using the built in d4m-nfs integration
+
+In simple terms, docker-sync creates a docker container with a copy of all the application files that can be accessed very quickly from the other containers.
+On the other hand, docker-sync runs a process on the host machine that continuously tracks and updates files changes from the host to this intermediate container.
+
+Out of the box, it comes pre-configured for OS X, but using it on Windows is very easy to set-up by modifying the `DOCKER_SYNC_STRATEGY` on the `.env`
+
+##### Usage
+
+Laradock comes with `sync.sh`, an optional bash script, that automates installing, running and stopping docker-sync. Note that to run the bash script you may need to change the permissions `chmod 755 sync.sh`
+
+1) Configure your Laradock environment as you would normally do and test your application to make sure that your sites are running correctly.
+
+2) Make sure to set `DOCKER_SYNC_STRATEGY` on the `.env`. Read the [syncing strategies](https://github.com/EugenMayer/docker-sync/wiki/8.-Strategies) for details.
+```
+# osx: 'native_osx' (default)
+# windows: 'unison'
+# linux: docker-sync not required
+
+DOCKER_SYNC_STRATEGY=native_osx
+```
+
+2) Install the docker-sync gem on the host-machine:
+```bash
+./sync.sh install
+```
+3) Start docker-sync and the Laradock environment.
+Specify the services you want to run, as you would normally do with `docker-compose up`
+```bash
+./sync.sh up nginx mysql
+```
+Please note that the first time docker-sync runs, it will copy all the files to the intermediate container and that may take a very long time (15min+).
+4) To stop the environment and docker-sync do:
+```bash
+./sync.sh down
+```
+
+##### Setting up Aliases (optional)
+
+You may create bash profile aliases to avoid having to remember and type these commands for everyday development.
+Add the following lines to your `~/.bash_profile`:
+
+```bash
+alias devup="cd /PATH_TO_LARADOCK/laradock; ./sync.sh up nginx mysql" #add your services
+alias devbash="cd /PATH_TO_LARADOCK/laradock; ./sync.sh bash"
+alias devdown="cd /PATH_TO_LARADOCK/laradock; ./sync.sh down"
+```
+
+Now from any location on your machine, you can simply run `devup`, `devbash` and `devdown`.
+
+
+##### Additional Commands
+
+Opening bash on the workspace container (to run artisan for example):
+ ```bash
+ ./sync.sh bash
+ ```
+Manually triggering the synchronization of the files:
+```bash
+./sync.sh sync
+```
+Removing and cleaning up the files and the docker-sync container. Use only if you want to rebuild or remove docker-sync completely. The files on the host will be kept untouched.
+```bash
+./sync.sh clean
+```
+
+
+##### Additional Notes
+
+- You may run laradock with or without docker-sync at any time using with the same `.env` and `docker-compose.yml`, because the configuration is overridden automatically when docker-sync is used.
+- You may inspect the `sync.sh` script to learn each of the commands and even add custom ones.
+- If a container cannot access the files on docker-sync, you may need to set a user on the Dockerfile of that container with an id of 1000 (this is the UID that nginx and php-fpm have configured on laradock). Alternatively, you may change the permissions to 777, but this is **not** recommended.
+
+Visit the [docker-sync documentation](https://github.com/EugenMayer/docker-sync/wiki) for more details.
+
+
+
+
+
+
+
+
+
+
+#### B.2: using the d4m-nfs tool
+
[D4m-nfs](https://github.com/IFSight/d4m-nfs) automatically mount NFS volume instead of osxfs one.
1) Update the Docker [File Sharing] preferences:
@@ -1420,17 +1637,10 @@ docker-compose up ...
-### Other good workarounds:
-
-- [docker-sync](https://github.com/EugenMayer/docker-sync)
-- Add more here..
-More details about this issue [here](https://github.com/docker/for-mac/issues/77).
-
-
@@ -1515,3 +1725,7 @@ This error sometimes happens because your Laravel application isn't running on t
2. Change the `DB_HOST` variable on env with the IP that you received from previous step.
* Option B
1. Change the `DB_HOST` value to the same name as the MySQL docker container. The Laradock docker-compose file currently has this as `mysql`
+
+## I get stuck when building nginx on `fetch http://mirrors.aliyun.com/alpine/v3.5/main/x86_64/APKINDEX.tar.gz`
+
+As stated on [#749](https://github.com/laradock/laradock/issues/749#issuecomment-293296687), removing the line `RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/' /etc/apk/repositories` from `nginx/Dockerfile` solves the problem.
diff --git a/DOCUMENTATION/content/getting-started/index.md b/DOCUMENTATION/content/getting-started/index.md
index f5b73aa..4d088ac 100644
--- a/DOCUMENTATION/content/getting-started/index.md
+++ b/DOCUMENTATION/content/getting-started/index.md
@@ -112,18 +112,20 @@ Your folder structure should look like this:
2 - Go to `nginx/sites` and create config files to point to different project directory when visiting different domains.
-Laradock by default includes `project-1.conf` and `project-2.conf` as working samples.
+Laradock by default includes `app.conf.example`, `laravel.conf.example` and `symfony.conf.example` as working samples.
-3 - change the default names `project-n`:
+3 - change the default names `*.conf`:
You can rename the config files, project folders and domains as you like, just make sure the `root` in the config files, is pointing to the correct project folder name.
4 - Add the domains to the **hosts** files.
```
-127.0.0.1 project-1.dev
-127.0.0.1 project-2.dev
+127.0.0.1 project-1.test
+127.0.0.1 project-2.test
+...
```
+If you use Chrome 63 or above for development, don't use `.dev`. [Why?](https://laravel-news.com/chrome-63-now-forces-dev-domains-https). Instead use `.localhost`, `.invalid`, `.test`, or `.example`.
> **Now jump to the [Usage](#Usage) section.**
@@ -145,6 +147,10 @@ If you are using **Docker Toolbox** (VM), do one of the following:
+We recommend using a Docker version which is newer than 1.13.
+
+
+
>**Warning:** If you used an older version of Laradock it's highly recommended to rebuild the containers you need to use [see how you rebuild a container](#Build-Re-build-Containers) in order to prevent as much errors as possible.
@@ -157,6 +163,7 @@ cp env-example .env
You can edit the `.env` file to chose which software's you want to be installed in your environment. You can always refer to the `docker-compose.yml` file to see how those variables are been used.
+Depending on the host's operating system you may need to change the value given to `COMPOSE_FILE`. When you are running Laradock on Mac OS the correct file separator to use is `:`. When running Laradock from a Windows environment multiple files must be separated with `;`.
2 - Build the enviroment and run it using `docker-compose`
@@ -207,6 +214,4 @@ DB_HOST=mysql
*If you want to install Laravel as PHP project, see [How to Install Laravel in a Docker Container](#Install-Laravel).*
-5 - Open your browser and visit your localhost address `http://localhost/`. If you followed the multiple projects setup, you can visit `http://project-1.dev/` and `http://project-2.dev/`. But first don't
-
-
+5 - Open your browser and visit your localhost address `http://localhost/`. If you followed the multiple projects setup, you can visit `http://project-1.test/` and `http://project-2.test/`.
diff --git a/DOCUMENTATION/content/guides/index.md b/DOCUMENTATION/content/guides/index.md
index 5cb6ddc..3cf1f38 100644
--- a/DOCUMENTATION/content/guides/index.md
+++ b/DOCUMENTATION/content/guides/index.md
@@ -8,6 +8,7 @@ weight: 4
* [Production Setup on Digital Ocean](#Digital-Ocean)
* [PHPStorm XDebug Setup](#PHPStorm-Debugging)
+* [Running Laravel Dusk Test](#Laravel-Dusk)
@@ -55,6 +56,10 @@ $root@server:~/laravel/ cd laradock
$root@server:~/laravel/laradock# curl -L https://github.com/docker/compose/releases/download/1.8.0/run.sh > /usr/local/bin/docker-compose
$root@server:~/chmod +x /usr/local/bin/docker-compose
```
+## Enter the laradock folder and rename env-example to .env.
+```
+$root@server:~/laravel/laradock# cp env-example .env
+```
## Create Your Laradock Containers
@@ -138,8 +143,8 @@ And add `server_name` (your custom domain)
## Rebuild Your Nginx
```
-$root@server:~/laravel/laradock/nginx# docker-compose down
-$root@server:~/laravel/laradock/nginx# docker-compose build nginx
+$root@server:~/laravel/laradock# docker-compose down
+$root@server:~/laravel/laradock# docker-compose build nginx
```
## Re Run Your Containers MYSQL and NGINX
@@ -322,6 +327,7 @@ Set the following variables:
- `laradock/php-fpm/xdebug.ini`
Set the following variables:
+
```
xdebug.remote_autostart=1
xdebug.remote_enable=1
@@ -332,34 +338,39 @@ xdebug.cli_color=1
### Need to clean house first?
+
Make sure you are starting with a clean state. For example, do you have other Laradock containers and images?
Here are a few things I use to clean things up.
- Delete all containers using `grep laradock_` on the names, see: [Remove all containers based on docker image name](https://linuxconfig.org/remove-all-containners-based-on-docker-image-name).
+
`docker ps -a | awk '{ print $1,$2 }' | grep laradock_ | awk '{print $1}' | xargs -I {} docker rm {}`
- Delete all images containing `laradock`.
+
`docker images | awk '{print $1,$2,$3}' | grep laradock_ | awk '{print $3}' | xargs -I {} docker rmi {}`
**Note:** This will only delete images that were built with `Laradock`, **NOT** `laradock/*` which are pulled down by `Laradock` such as `laradock/workspace`, etc.
**Note:** Some may fail with:
`Error response from daemon: conflict: unable to delete 3f38eaed93df (cannot be forced) - image has dependent child images`
- I added this to my `.bashrc` to remove orphaned images.
- ```
- dclean() {
- processes=`docker ps -q -f status=exited`
- if [ -n "$processes" ]; thend
- docker rm $processes
- fi
- images=`docker images -q -f dangling=true`
- if [ -n "$images" ]; then
- docker rmi $images
- fi
- }
- ```
+```
+dclean() {
+ processes=`docker ps -q -f status=exited`
+ if [ -n "$processes" ]; then
+ docker rm $processes
+ fi
+
+ images=`docker images -q -f dangling=true`
+ if [ -n "$images" ]; then
+ docker rmi $images
+ fi
+}
+```
- If you frequently switch configurations for Laradock, you may find that adding the following and added to your `.bashrc` or equivalent useful:
+
```
# remove laravel* containers
# remove laravel_* images
@@ -402,14 +413,14 @@ laradock_php-fpm_1 php-fpm Up 9000/tcp
laradock_volumes_data_1 true Exit 0
laradock_volumes_source_1 true Exit 0
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
-
-
```
## Enable xDebug on php-fpm
+
In a host terminal sitting in the laradock folder, run: `.php-fpm/xdebug status`
You should see something like the following:
+
```
xDebug status
laradock_php-fpm_1
@@ -418,6 +429,7 @@ Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies
with Xdebug v2.4.1, Copyright (c) 2002-2016, by Derick Rethans
```
+
Other commands include `.php-fpm/xdebug start | stop`.
If you have enabled `xdebug=true` in `docker-compose.yml/php-fpm`, `xdebug` will already be running when
@@ -426,6 +438,7 @@ If you have enabled `xdebug=true` in `docker-compose.yml/php-fpm`, `xdebug` will
## PHPStorm Settings
+
- Here are some settings that are known to work:
- `Settings/BuildDeploymentConnection`
- ![Settings/BuildDeploymentConnection](/images/photos/PHPStorm/Settings/BuildDeploymentConnection.png)
@@ -543,4 +556,330 @@ Assuming that you are in laradock folder, type:
- ![ConnectionSSHAuth](/images/photos/KiTTY/ConnectionSSHAuth.png)
- ![TerminalShell](/images/photos/KiTTY/TerminalShell.png)
+
+
+
+
+
+
+# Running Laravel Dusk Tests
+
+- [Option 1: Without Selenium](#option1-dusk)
+- [Option 2: With Selenium](#option2-dusk)
+
+
+## Option 1: Without Selenium
+
+- [Intro](#option1-dusk-intro)
+- [Workspace Setup](#option1-workspace-setup)
+- [Application Setup](#option1-application-setup)
+- [Choose Chrome Driver Version (Optional)](#option1-choose-chrome-driver-version)
+- [Run Dusk Tests](#option1-run-dusk-tests)
+
+
+### Intro
+
+This is a guide to run Dusk tests in your `workspace` container with headless
+google-chrome and chromedriver. It has been tested with Laravel 5.4 and 5.5.
+
+
+### Workspace Setup
+
+Update your .env with following entries:
+
+```
+...
+# Install Laravel installer bin to setup demo app
+WORKSPACE_INSTALL_LARAVEL_INSTALLER=true
+...
+# Install all the necessary dependencies for running Dusk tests
+WORKSPACE_INSTALL_DUSK_DEPS=true
+...
+```
+
+Then run below to build your workspace.
+
+```
+docker-compose build workspace
+```
+
+
+### Application Setup
+
+Run a `workspace` container and you will be inside the container at `/var/www` directory.
+
+```
+docker-compose run workspace bash
+
+/var/www#> _
+```
+
+Create new Laravel application named `dusk-test` and install Laravel Dusk package.
+
+```
+/var/www> laravel new dusk-test
+/var/www> cd dusk-test
+/var/www/dusk-test> composer require --dev laravel/dusk
+/var/www/dusk-test> php artisan dusk:install
+```
+
+Create `.env.dusk.local` by copying from `.env` file.
+
+```
+/var/www/dusk-test> cp .env .env.dusk.local
+```
+
+Update the `APP_URL` entry in `.env.dusk.local` to local Laravel server.
+
+```
+APP_URL=http://localhost:8000
+```
+
+You will need to run chromedriver with `headless` and `no-sandbox` flag. In Laravel Dusk 2.x it is
+already set `headless` so you just need to add `no-sandbox` flag. If you on previous version 1.x,
+you will need to update your `DustTestCase#driver` as shown below.
+
+
+```
+addArguments([
+ '--disable-gpu',
+ '--headless',
+ '--no-sandbox'
+ ]);
+
+ return RemoteWebDriver::create(
+ 'http://localhost:9515', DesiredCapabilities::chrome()->setCapability(
+ ChromeOptions::CAPABILITY, $options
+ )
+ );
+ }
+}
+```
+
+
+### Choose Chrome Driver Version (Optional)
+
+You could choose to use either:
+
+1. Chrome Driver shipped with Laravel Dusk. (Default)
+2. Chrome Driver installed in `workspace` container. (Required tweak on DuskTestCase class)
+
+For Laravel 2.x, you need to update `DuskTestCase#prepare` method if you wish to go with option #2.
+
+```
+
+setPrefix('chromedriver')
+ ->getProcess()
+ ->setEnv(static::chromeEnvironment());
+ }
+
+ ...
+}
+```
+
+
+### Run Dusk Tests
+
+Run local server in `workspace` container and run Dusk tests.
+
+```
+# alias to run Laravel server in the background (php artisan serve --quiet &)
+/var/www/dusk-test> serve
+# alias to run Dusk tests (php artisan dusk)
+/var/www/dusk-test> dusk
+
+PHPUnit 6.4.0 by Sebastian Bergmann and contributors.
+
+. 1 / 1 (100%)
+
+Time: 837 ms, Memory: 6.00MB
+```
+
+
+## Option 2: With Selenium
+
+- [Intro](#dusk-intro)
+- [DNS Setup](#dns-setup)
+- [Docker Compose Setup](#docker-compose)
+- [Laravel Dusk Setup](#laravel-dusk-setup)
+- [Running Laravel Dusk Tests](#running-tests)
+
+
+### Intro
+Setting up Laravel Dusk tests to run with Laradock appears be something that
+eludes most Laradock users. This guide is designed to show you how to wire them
+up to work together. This guide is written with macOS and Linux in mind. As such,
+it's only been tested on macOS. Feel free to create pull requests to update the guide
+for Windows-specific instructions.
+
+This guide assumes you know how to use a DNS forwarder such as `dnsmasq` or are comfortable
+with editing the `/etc/hosts` file for one-off DNS changes.
+
+
+### DNS Setup
+According to RFC-2606, only four TLDs are reserved for local testing[^1]:
+
+- `.test`
+- `.example`
+- `.invalid`
+- `.localhost`
+
+A common TLD used for local development is `.dev`, but newer versions of Google
+Chrome (such as the one bundled with the Selenium Docker image), will fail to
+resolve that DNS as there will appear to be a name collision.
+
+The recommended extension is `.test` for your Laravel web apps because you're
+running tests. Using a DNS forwarder such as `dnsmasq` or by editing the `/etc/hosts`
+file, configure the host to point to `localhost`.
+
+For example, in your `/etc/hosts` file:
+```
+##
+# Host Database
+#
+# localhost is used to configure the loopback interface
+# when the system is booting. Do not change this entry.
+##
+127.0.0.1 localhost
+255.255.255.255 broadcasthost
+::1 localhost
+127.0.0.1 myapp.test
+```
+
+This will ensure that when navigating to `myapp.test`, it will route the
+request to `127.0.0.1` which will be handled by Nginx in Laradock.
+
+
+### Docker Compose setup
+In order to make the Selenium container talk to the Nginx container appropriately,
+the `docker-compose.yml` needs to be edited to accommodate this. Make the following
+changes:
+
+```yaml
+...
+selenium:
+ ...
+ depends_on:
+ - nginx
+ links:
+ - nginx:
+```
+
+This allows network communication between the Nginx and Selenium containers
+and it also ensures that when starting the Selenium container, the Nginx
+container starts up first unless it's already running. This allows
+the Selenium container to make requests to the Nginx container, which is
+necessary for running Dusk tests. These changes also link the `nginx` environment
+variable to the domain you wired up in your hosts file.
+
+
+### Laravel Dusk Setup
+
+In order to make Laravel Dusk make the proper request to the Selenium container,
+you have to edit the `DuskTestCase.php` file that's provided on the initial
+installation of Laravel Dusk. The change you have to make deals with the URL the
+Remote Web Driver attempts to use to set up the Selenium session.
+
+One recommendation for this is to add a separate config option in your `.env.dusk.local`
+so it's still possible to run your Dusk tests locally should you want to.
+
+#### .env.dusk.local
+```
+...
+USE_SELENIUM=true
+```
+
+#### DuskTestCase.php
+```php
+abstract class DuskTestCase extends BaseTestCase
+{
+...
+ protected function driver()
+ {
+ if (env('USE_SELENIUM', 'false') == 'true') {
+ return RemoteWebDriver::create(
+ 'http://selenium:4444/wd/hub', DesiredCapabilities::chrome()
+ );
+ } else {
+ return RemoteWebDriver::create(
+ 'http://localhost:9515', DesiredCapabilities::chrome()
+ );
+ }
+ }
+}
+```
+
+
+### Running Laravel Dusk Tests
+
+Now that you have everything set up, to run your Dusk tests, you have to SSH
+into the workspace container as you normally would:
+```docker-compose exec --user=laradock workspace bash```
+
+Once inside, you can change directory to your application and run:
+
+```php artisan dusk```
+
+One way to make this easier from your project is to create a helper script. Here's one such example:
+```bash
+#!/usr/bin/env sh
+
+LARADOCK_HOME="path/to/laradock"
+
+pushd ${LARADOCK_HOME}
+
+docker-compose exec --user=laradock workspace bash -c "cd my-project && php artisan dusk && exit"
+```
+
+This invokes the Dusk command from inside the workspace container but when the script completes
+execution, it returns your session to your project directory.
+
+[^1]: [Don't Use .dev for Development](https://iyware.com/dont-use-dev-for-development/)
diff --git a/DOCUMENTATION/content/introduction/index.md b/DOCUMENTATION/content/introduction/index.md
index de23f37..d14094d 100644
--- a/DOCUMENTATION/content/introduction/index.md
+++ b/DOCUMENTATION/content/introduction/index.md
@@ -83,17 +83,21 @@ In adhering to the separation of concerns principle as promoted by Docker, Larad
You can turn On/Off as many instances of as any container without worrying about the configurations, everything works like a charm.
- **Database Engines:**
-MySQL - MariaDB - Percona - MongoDB - Neo4j - RethinkDB - MSSQL - PostgreSQL - Postgres Postgis.
+MySQL - MariaDB - Percona - MongoDB - Neo4j - RethinkDB - MSSQL - PostgreSQL - Postgres-PostGIS.
+- **Database Management:**
+PhpMyAdmin - Adminer - PgAdmin
- **Cache Engines:**
Redis - Memcached - Aerospike
- **PHP Servers:**
NGINX - Apache2 - Caddy
- **PHP Compilers:**
PHP FPM - HHVM
-- **Message Queuing:**
-Beanstalkd - Beanstalkd Console - RabbitMQ - RabbitMQ Console - PHP Worker
-- **Tools:**
-HAProxy - Jenkins - ElasticSearch - Selenium - Certbot - Mailhog - Minio - Varnish - PhpMyAdmin - Adminer - PgAdmin - MailHog - [Blackfire](https://blackfire.io)...
+- **Message Queueing:**
+Beanstalkd - RabbitMQ - PHP Worker
+- **Queueing Management:**
+Beanstalkd Console - RabbitMQ Console
+- **Random Tools:**
+HAProxy - Certbot - Blackfire - Selenium - Jenkins - ElasticSearch - Kibana - Grafana - Mailhog - MailDev - Minio - Varnish - Swoole - Laravel Echo...
Laradock introduces the **Workspace** Image, as a development environment.
It contains a rich set of helpful tools, all pre-configured to work and integrate with almost any combination of Containers and tools you may choose.
@@ -108,10 +112,30 @@ You can choose, which tools to install in your workspace container and other con
-If you can't find your Software in the list, build it yourself and sumit it. Contributions are welcomed :)
+If you can't find your Software in the list, build it yourself and submit it. Contributions are welcomed :)
+## Sponsors
+
+
+
+
+
+Support this project by becoming a sponsor.
+
+Your logo will show up on the [github repository](https://github.com/laradock/laradock/) index page and the [documentation](http://laradock.io/) main page, with a link to your website. [[Become a sponsor](https://opencollective.com/laradock#sponsor)]
+
+
+
+
+
+
+
+
+
+
+
@@ -148,7 +172,7 @@ Most importantly Docker can run on Development and on Production (same environme
What's better than a **Demo Video**:
-- Laradock v5.* (soon or never)
+- Laradock v5.* (should be next!)
- Laradock [v4.*](https://www.youtube.com/watch?v=TQii1jDa96Y)
- Laradock [v2.*](https://www.youtube.com/watch?v=-DamFMczwDA)
- Laradock [v0.3](https://www.youtube.com/watch?v=jGkyO6Is_aI)
@@ -166,3 +190,25 @@ What's better than a **Demo Video**:
You are welcome to join our chat room on Gitter.
[![Gitter](https://badges.gitter.im/Laradock/laradock.svg)](https://gitter.im/Laradock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
+
+
+
+
+
+
+## Donations
+
+> Help keeping the project development going, by [contributing](http://laradock.io/contributing) or donating a little.
+> Thanks in advance.
+
+Donate directly via [Paypal](https://www.paypal.me/mzalt)
+
+[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.me/mzalt)
+
+or become a backer on [Open Collective](https://opencollective.com/laradock#backer)
+
+
+
+or show your support via [Beerpay](https://beerpay.io/laradock/laradock)
+
+[![Beerpay](https://beerpay.io/laradock/laradock/badge.svg?style=flat)](https://beerpay.io/laradock/laradock)
diff --git a/DOCUMENTATION/content/related-projects/index.md b/DOCUMENTATION/content/related-projects/index.md
index de7d0cd..bc37d9b 100644
--- a/DOCUMENTATION/content/related-projects/index.md
+++ b/DOCUMENTATION/content/related-projects/index.md
@@ -14,5 +14,6 @@ These Docker Compose projects have piqued our interest:
* [MageDock](https://github.com/ojhaujjwal/magedock) by [Ujjwal Ojha](https://github.com/ojhaujjwal)
* [RubyDev-Dock](https://github.com/scudelletti/rubydev-dock) by [Diogo Scudelletti](https://github.com/scudelletti)
* [NoDock](https://github.com/Osedea/nodock) by [Osedea](https://github.com/Osedea)
+* [Dockery](https://github.com/taufek/dockery) by [Taufek](https://github.com/Taufek)
If you want your project listed here, please open an issue.
diff --git a/DOCUMENTATION/themes/hugo-material-docs/layouts/_default/single.html b/DOCUMENTATION/themes/hugo-material-docs/layouts/_default/single.html
index 8ed8bfd6..af662ad 100644
--- a/DOCUMENTATION/themes/hugo-material-docs/layouts/_default/single.html
+++ b/DOCUMENTATION/themes/hugo-material-docs/layouts/_default/single.html
@@ -20,11 +20,25 @@
{{ partial "drawer" . }}
-
+
-
{{ .Title }} {{ if .IsDraft }} (Draft){{ end }}
+
+
+
+
+
+
+
+
+
+
{{ .Title }} {{ if .IsDraft }} (Draft){{ end }}
{{ .Content }}
diff --git a/DOCUMENTATION/themes/hugo-material-docs/layouts/index.html b/DOCUMENTATION/themes/hugo-material-docs/layouts/index.html
index 703e7e8..f76e458 100644
--- a/DOCUMENTATION/themes/hugo-material-docs/layouts/index.html
+++ b/DOCUMENTATION/themes/hugo-material-docs/layouts/index.html
@@ -24,6 +24,20 @@
+
+
+
+
+
+
+
+
+
{{ range where .Site.Pages "Type" "index" }}
{{ .Title }} {{ if .IsDraft }} (Draft){{ end }}
diff --git a/DOCUMENTATION/themes/hugo-material-docs/layouts/partials/drawer.html b/DOCUMENTATION/themes/hugo-material-docs/layouts/partials/drawer.html
index cf03d55..62e6fa2 100644
--- a/DOCUMENTATION/themes/hugo-material-docs/layouts/partials/drawer.html
+++ b/DOCUMENTATION/themes/hugo-material-docs/layouts/partials/drawer.html
@@ -5,6 +5,7 @@
+ Laradock
{{ end }}
@@ -42,18 +43,39 @@
{{ end }}
- {{ if isset .Site.Params "author" }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
- {{ end }}
+
+
+
+
+
+
+
+
+
+
diff --git a/DOCUMENTATION/themes/hugo-material-docs/layouts/partials/header.html b/DOCUMENTATION/themes/hugo-material-docs/layouts/partials/header.html
index 472324c..526aec8 100644
--- a/DOCUMENTATION/themes/hugo-material-docs/layouts/partials/header.html
+++ b/DOCUMENTATION/themes/hugo-material-docs/layouts/partials/header.html
@@ -21,7 +21,6 @@
- Github
{{ end }}