Compare commits

...

152 Commits
v9.4 ... v11.0

Author SHA1 Message Date
cbb949c273 Merge pull request #2634 from bestlong/fix-port-conflict
fix bind port conflict
2020-06-18 08:56:10 +08:00
aa179b6ca3 fix bind port conflict
change phpmyadmin and adminer default bind port to 8081
2020-06-18 08:34:45 +08:00
a8ac0b62cf Merge pull request #2563 from jefflssantos/patch-1
Fix Deployer documentation link
2020-06-17 23:30:58 +08:00
13776a4f6f Merge pull request #2628 from KNY00/fix-vscode-settings-file
Fix trailing whitespace
2020-06-17 23:30:00 +08:00
2ce3745cf1 Merge pull request #2633 from Sofar1994/master
php-fpm container xdebug.ini name is xdebug.ini
2020-06-17 23:25:33 +08:00
4a1100e685 php-fpm container xdebug.ini name is xdebug.ini 2020-06-17 17:00:14 +08:00
6c942b454b Merge pull request #2631 from bestlong/php-worker-imagick
php-worker support imagick
2020-06-17 07:53:10 +08:00
d81f9f2779 php-worker support imagick 2020-06-17 00:30:07 +08:00
1dd23a01a5 Merge pull request #2630 from bestlong/xmlrpc
support php-xmlrpc extension
2020-06-17 00:26:31 +08:00
35081fd9be support php-xmlrpc extension 2020-06-17 00:05:03 +08:00
KNY
2224685d7e Fix trailing whitespace 2020-06-15 23:59:42 +02:00
12ade0d730 Merge pull request #2622 from yosoyfunes/patch-1
Update docker-compose.yml
2020-06-13 00:29:13 +08:00
89ee774ece Update docker-compose.yml
Increment nofile, check the documentation: https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#_increase_ulimits_for_nofile_and_nproc
2020-06-12 12:14:10 -03:00
f2209eeb72 Merge pull request #2582 from kideny/master
update support phalcon4.X version
2020-06-06 17:36:27 +08:00
6712bdcfa9 Merge pull request #2609 from tancou/gitlab-ci
Remove deprecated gitlab ci file
2020-06-06 17:35:23 +08:00
9df698e011 Merge pull request #2613 from m-elewa/develop
Update Traefik image to v2.2
2020-06-06 16:59:16 +08:00
5b0d264b6c Merge pull request #2614 from m-elewa/feature/update-netdata-image
update netdata image to the latest version of the official image
2020-06-06 16:57:24 +08:00
bc9825d398 update netdata image to the latest version of the official image 2020-05-31 14:44:09 +00:00
b5419c352d change port variables from nginx to trafik 2020-05-31 07:43:41 +00:00
227591cfb5 update documentation for Traefik v2.2 2020-05-31 07:13:13 +00:00
90ba6df3ad update traefik to v2.2 2020-05-31 07:07:05 +00:00
4f7ab34a6b Merge pull request #2607 from acidicyemi/master
fixed supervisor docker-composer instead of docker-compose syntax error
2020-05-30 17:15:14 +08:00
bc3a35fd60 Merge pull request #2605 from jzonta/master
Fixed error with memcached when running php-worker
2020-05-30 14:31:31 +08:00
131025be44 Merge pull request #2606 from jzonta/add-oci8-php-worker
Added support for OCI8 extension in php-worker
2020-05-30 14:30:13 +08:00
ae58620386 Merge pull request #2608 from tancou/add-imap-worker-support
Adding support for IMAP on php-worker
2020-05-30 14:28:41 +08:00
b8a1690bc3 Remove deprecated gitlab ci file 2020-05-29 18:13:20 +02:00
9d10b5a7ef Adding support for IMAP on php-worker 2020-05-29 16:30:02 +02:00
959329c241 fixed supervisor type syntax error 2020-05-29 02:41:39 +01:00
0792766d41 Added support for OCI8 extension in php-worker, Sugestão do amigo @bestlong in #2276 2020-05-28 13:37:01 -03:00
8477ca86f5 Fixed error with memcached when running php-worker 2020-05-28 09:50:30 -03:00
6b16f2b479 Merge pull request #2602 from norieli/patch-1
fixed mongodb can not authentication
2020-05-27 13:41:34 +08:00
f4d5a892b1 fixed mongodb can not authentication
The SCRAM_SHA_256 authentication mechanism requires libmongoc built with ENABLE_SSL. But current versio not support.
2020-05-22 13:43:25 +08:00
bad5f69379 Merge pull request #2595 from bestlong/fix-2576-bug
workspace expose angular cli serve port
2020-05-21 09:55:53 +08:00
667bfc5e1b workspace expose angular cli serve port 2020-05-21 09:40:36 +08:00
d39f793f34 Merge pull request #2594 from bestlong/horizon-php-ext-imagick
Horizon support ImageMagick
2020-05-21 09:31:35 +08:00
f910f944da Merge pull request #2576 from Yiidiir/patch-1
Expose Angular CLI serve port
2020-05-21 09:16:28 +08:00
941ad16cbe Merge pull request #2567 from carlosclayton/master
Installing Filebeat plugin
2020-05-21 09:15:05 +08:00
e5f5bc86fe Merge pull request #2572 from pgrimaud/master
Fix typos
2020-05-21 09:14:35 +08:00
cca6bead21 Merge pull request #2593 from makowskid/pnpm-support
Adding pnpm support
2020-05-21 09:13:56 +08:00
a85e9c4507 Horizon support ImageMagick
fix #2296
2020-05-21 09:09:38 +08:00
a074389e28 pnpm support - documentation 2020-05-20 15:08:46 +08:00
fabb36abbb Adding support for PNPM
more info here https://pnpm.js.org/en/installation
2020-05-20 14:58:31 +08:00
822c383626 Merge pull request #2590 from m-elewa/develop
update Laravel envoy to v2
2020-05-14 15:29:26 +08:00
7c4d9c908c update laravel envoy to v2 2020-05-13 20:52:25 +02:00
24c02ec1cf fixed 2020-05-02 03:07:29 +08:00
35a7fc204c update support phalcon4.X version 2020-05-01 00:57:27 +08:00
4f274e3d86 replace github usernames with users real names in related projects 2020-04-29 18:42:31 +02:00
5824676e30 Improve docs readability & performance 2020-04-29 07:10:47 +02:00
d2823c0f8a Merge pull request #2577 from sfx101/patch-1 2020-04-29 04:18:39 +02:00
4797c38199 Added DockerStacks link to related projects 2020-04-28 10:29:25 +05:30
5a28b9c4d8 Expose Angular CLI serve port
When enabling angular, exposure to the default serve port is not done normally like it's done with VUE CLI
2020-04-28 03:12:26 +01:00
2fd9ccff6a Fix typos 2020-04-24 01:16:34 +02:00
1dd78c0b04 Installing Filebeat plugin
Add support to Filebeat with logstash-input-beats plugin
2020-04-20 08:00:13 -03:00
b6e11624fe Merge pull request #2565 from bestlong/change-base-image
php-fpm/workspace use latest base image
2020-04-17 17:33:48 +08:00
aa325b5218 Merge pull request #2564 from laradock/actions-ci
use Actions run CI
2020-04-17 14:56:16 +08:00
56e10f1198 Update main-ci.yml 2020-04-17 14:03:08 +08:00
e6eb2ef1eb Fix Deployer documentation link 2020-04-17 02:54:29 -03:00
fbaaff619a Update main-ci.yml 2020-04-17 13:14:06 +08:00
941960df82 Update main-ci.yml 2020-04-17 13:12:57 +08:00
e2331171b0 use Github Actions run CI 2020-04-17 13:10:40 +08:00
a2581bda5f use latest base image 2020-04-17 11:57:50 +08:00
9a32cd2379 Merge pull request #2555 from jeremynikolic/master
Add ElasticSearch plugin command alternative
2020-04-15 10:30:09 +08:00
102d3c8828 Add ElasticSearch plugin command alternative for ES >5.0 versions 2020-04-10 10:15:58 +02:00
3f71fc2c15 Merge pull request #2550 from leowangxp/master
fix: change sources shell permission denied
2020-04-08 14:32:27 +08:00
c4c2f91306 fix: change sources shell permission denied 2020-04-08 09:57:00 +08:00
9e04c460f9 Merge pull request #2527 from lbssousa/browsersync-ports
Added option to map Browsersync ports from workspace container
2020-04-07 08:56:10 +08:00
dc0d970e2a Merge pull request #2533 from dbfun/feature-oh-my-zsh
new feature: Install Oh My ZSH! with Laravel autocomplete plugin
2020-04-07 08:55:19 +08:00
c5c8c9bc85 new feature: Install Oh My ZSH! with Laravel autocomplete plugin 2020-03-13 03:16:39 +03:00
123e52e563 Merge pull request #2511 from metalcamp/fix/mysql-client-installation-candidate
Fix: Mysql-client has no installation candidate
2020-03-12 10:14:10 +08:00
62747a2870 Update Dockerfile
php-worker fix add package name
2020-03-12 09:39:45 +08:00
c32bf95530 Merge pull request #2519 from GinoPane/bugfix/#2506
Fix #2506
2020-03-04 14:28:51 +08:00
29f7cbdc7e Added option to map Browsersync ports from workspace container 2020-03-03 15:41:54 -03:00
8cde247422 Merge pull request #2521 from bagart/patch-1
Laradock Multi
2020-02-27 10:39:15 +01:00
5a78f09eb4 Update index.md
add Laradock Multi
2020-02-26 09:40:06 +03:00
e8dbb0e0f1 Fix #2506
Updates:
- AST extension is no longer installed for unsupported PHP versions
2020-02-25 22:26:03 +03:00
33828f81bf Merge pull request #2516 from laradock/php-gd-ext
php worker horizon support gd ext.
2020-02-24 17:32:52 +08:00
a406335efe Merge pull request #2515 from laradock/horizon-zip
horizon zip ext.
2020-02-24 14:39:31 +08:00
18ca604537 php worker horizon support gd ext. 2020-02-24 13:53:54 +08:00
51ff09c187 horizon zip ext. 2020-02-24 13:31:52 +08:00
cb574599ca fix: mysql-client has no installation candidate 2020-02-19 12:44:06 +01:00
6a92eb0d58 Merge pull request #2510 from metalcamp/fix/mysql-auth
Fix: Use native MySQL password as default auth
2020-02-19 08:22:23 +08:00
8f411417f5 fix: use native mysql password as default auth
fixes connection refused errors described here: 
https://github.com/laradock/laradock/issues/1752
https://github.com/laradock/laradock/issues/2105
2020-02-18 19:37:00 +01:00
127d48655c Merge pull request #2509 from laradock/fix-php2-ext
fix php7.4 ssh2 extension.
2020-02-18 15:38:59 +08:00
884e481c0c fix php7.4 ssh2 extension. 2020-02-18 13:45:23 +08:00
833a91d8f8 Merge pull request #2508 from laradock/php70-xdebug
xdebug drop support php7.0
2020-02-18 13:22:37 +08:00
6eeb0c8388 xdebug drop support php7.0 2020-02-18 09:56:45 +08:00
c073ebefbb Merge pull request #2222 from zack6849/patch-1
Add en_US.UTF-8 to the default list of extra locales
2020-02-18 08:59:30 +08:00
7a2370ba77 Merge branch 'master' into patch-1 2020-02-18 08:58:55 +08:00
258912eac2 Merge pull request #2487 from bumbummen99/master
Dedicated user/group id for Horizon
2020-02-18 08:56:21 +08:00
9de9e8ed04 Merge pull request #2469 from DGeoWils/master
Added wkhtmltopdf installation to both Workspace and PHP-FPM
2020-02-18 08:55:57 +08:00
081e65d192 Merge pull request #2504 from vlauciani/master
fix TLS docker-dind problem from version 18.09+
2020-02-18 08:50:15 +08:00
93f137ce12 Merge pull request #2501 from lbssousa/workspace-vue-cli-ports
Added option to map vue-cli ports from workspace container
2020-02-18 08:48:35 +08:00
ec7d91a658 Merge pull request #2505 from 99linesofcode/sensible-xdebug-default-configuration
XDebug - Default to host.docker.internal
2020-02-18 08:47:01 +08:00
ab4e06f270 Default to host.docker.internal 2020-02-14 15:15:04 +01:00
3124ad8d76 Update docker-compose.yml 2020-02-13 23:26:33 +01:00
8e6a2a4f3c Update docker-in-docker (dind) - not working with 18.09+ version 2020-02-13 23:24:07 +01:00
4dd4074d3b Merge pull request #1 from laradock/master
Synck fork
2020-02-13 23:09:45 +01:00
9ad5063d4a Merge branch 'master' into workspace-vue-cli-ports 2020-02-13 23:33:05 +08:00
719d1f7e7a Merge pull request #2502 from bestlong/gmp-ext
horizon gmp ext
2020-02-12 19:47:09 +08:00
53d13f23f7 horizon gmp ext 2020-02-12 18:23:22 +08:00
2f2539a51f Merge pull request #2472 from collierscott/add-gitprompt
Add bash-git-prompt for more informative prompts for git repos
2020-02-12 09:17:13 +08:00
8d99f69ab2 Merge pull request #2479 from webfatorial/mysql-version-build
Use MYSQL_VERSION env var to build mysql image
2020-02-12 09:15:45 +08:00
3fe18368bd Added option to map vue-cli ports from workspace container 2020-02-11 15:27:07 -03:00
f8b7404263 php ext bz2 (#2500)
* php ext bz2
* fix typo
* fix php-fpm bz2 ext
* fix horizon bz2 ext
2020-02-11 23:56:58 +08:00
b2ae5f6d44 Arrange (#2499)
* unify php verson variable
* CASSANDRA move together
* unify all php base container
2020-02-11 18:41:19 +08:00
29def5f0b4 add some missing social media meta tags to the website 2020-02-07 23:10:44 +01:00
66134095b1 update stale bot configuration to close staled issues in 21 days 2020-02-07 22:13:23 +01:00
c8c63e6a78 Merge pull request #2493 from bestlong/pgsql-version-specify
postgresql version can specify
2020-02-07 08:10:53 +08:00
63b3d2ff14 postgresql version can specify 2020-02-06 23:58:07 +08:00
00676f0c8e Merge pull request #2492 from bestlong/fix-php-worker-74
php 7.4 php-worker zip ext.
2020-02-05 16:38:18 +08:00
ac417f2e6b Merge pull request #2490 from vlauciani/master
YAML extension for laravel-horizon
2020-02-05 14:59:26 +08:00
b26bcdb42a php 7.4 php-worker zip ext. 2020-02-05 14:54:57 +08:00
fb57c52ca6 Merge pull request #2474 from brnathanlima/update-elasticsearch-logstash-and-kibana-to-use-the-same-version
Improvements on ELK Stack images
2020-02-05 12:44:25 +07:00
0a253a3d7e Alpine commands used 2020-02-04 20:33:41 +01:00
72d11e4485 fix indentations 2020-02-04 17:00:01 +01:00
82a4b1db60 Add code to install YAML extension 2020-02-04 16:57:14 +01:00
c9e71c695e Add variable to install YAML extension 2020-02-04 16:55:50 +01:00
5b33a2b319 Add variable to install YAML extension 2020-02-04 16:53:14 +01:00
c670d5f98b Merge pull request #2335 from goodjack/patch-1
Fix localhost address
2020-02-03 16:17:36 +08:00
10c9decf78 Merge pull request #2348 from asannikov/varnish
Varnish
2020-02-03 16:14:44 +08:00
09fe2588e7 Merge branch 'master' into varnish 2020-02-03 16:14:17 +08:00
34daaba270 update github issues and PR templates, add config for github stale bot
in addition to some small updates in the readme, /.github and /docs..
2020-02-01 20:31:18 +01:00
f3f3dfa724 Add group/user id setting to horizon .env section 2020-02-01 15:20:02 +01:00
e14e5b7caf Fix bad style 2020-02-01 15:18:36 +01:00
8b4391e63c Use MYSQL_VERSION env var to build mysql image 2020-01-25 11:23:48 -03:00
5aafed586b upgraded elasticsearch, logstash and kibana images and provided an environment variable to specify a version for the entire ELK stack. 2020-01-22 15:37:04 -03:00
7fec2186ef Add bash-git-prompt in order to have a more descriptive prompt when working with repositories.
Also, update documentation for bash-git-prompt usage. Make sure initial value for usage is false.
2020-01-20 12:25:44 -06:00
b28f449556 Add bash-git-prompt in order to have a more descriptive prompt when working with repositories.
Also, update documentation for bash-git-prompt usage
2020-01-20 12:24:18 -06:00
ad2b455be5 Merge pull request #2470 from laradock/upgrade-php-fpm
upgrade php-fpm base image version
2020-01-16 19:26:00 +08:00
bb7ee22f6a Merge pull request #2396 from ludo237/master
Add the ability to install ffmpeg on Laravel Horizon container
2020-01-16 15:06:11 +08:00
9461c859f0 upgrade base image version 2020-01-16 14:57:19 +08:00
711b2e7449 Updated documentation with wkhtmltopdf section 2020-01-15 13:44:53 -05:00
8ecd35d2e9 Added wkhtmltopdf installation to both Workspace and PHP-FPM 2020-01-15 12:01:35 -05:00
84b5c5aaa0 Update config
Add user created during docker installation
2020-01-14 16:10:42 +01:00
3f6b779254 Merge branch 'master' into master 2020-01-14 16:09:18 +01:00
a84611ff4b Update docker-compose.yml
Add necessary args
2020-01-14 16:07:07 +01:00
4fbe5c03b9 Update Dockerfile
Add non-root user for ffmpeg installation
2020-01-14 16:06:25 +01:00
cd84c464b3 Merge pull request #2468 from bestlong/php74-worker
php 7.4 required oniguruma
2020-01-14 22:32:09 +08:00
8011182a34 php 7.4 required oniguruma 2020-01-14 21:38:24 +08:00
5c10a024f1 Make small documentation updates
- remove guides section
- re-order some content
- fix some links
- remove duplicated ads
2020-01-12 15:38:58 +01:00
8a1b3c45c8 Merge pull request #2461 from bestlong/php74-zip-option
PHP 7.4 zip option removed
2020-01-09 20:04:44 +08:00
ef267a64e6 PHP 7.4 zip option removed 2020-01-06 23:39:23 +08:00
0d086024a8 Merge pull request #2457 from laradock/upgrade-apache2
upgrade apache2
2020-01-05 01:07:21 +08:00
92e7a8559d upgrade apache2 2020-01-03 20:07:42 +08:00
d40abcb939 Add arg to laravel-horizon service 2019-12-04 11:40:04 +00:00
c11c1fd69d Add ffmpeg directive to Dockerfile 2019-12-04 11:38:36 +00:00
754e61d15f Add key to install ffmpeg in horizon 2019-12-04 11:36:47 +00:00
a760da3488 Update index.md 2019-11-02 20:42:33 +08:00
2af7bfa60f Varnish vs Nginx configuration added 2019-10-31 16:02:33 +03:00
babfef7ef6 Merged with master 2019-10-31 12:08:33 +03:00
70e63c59d0 Fix localhost address 2019-10-20 17:16:25 +08:00
c4a99cce57 Add en_US.UTF-8 to the default list of extra locales
Feel free to decline this, but I thought maybe adding US English to the default list of extra locales may be beneficial?
2019-08-02 09:02:52 -04:00
86 changed files with 1795 additions and 1472 deletions

View File

@ -1,46 +0,0 @@
# 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/

View File

@ -1,3 +0,0 @@
### First off, thanks for taking the time to contribute!
For the contribution guide [click here](http://laradock.io/contributing/).

6
.github/FUNDING.yml vendored
View File

@ -1,6 +1,6 @@
# DO NOT CHANGE THIS FILE PLEASE. # DO NOT CHANGE THIS FILE PLEASE.
github: Mahmoudz
open_collective: laradock open_collective: laradock
ko_fi: laradock custom: ['paypal.me/mzmmzz']
issuehunt: laradock patreon: zalt
custom: ['beerpay.io/laradock/laradock', 'paypal.me/mzmmzz']

View File

@ -1,23 +0,0 @@
### 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 wrong? -->
_____
### Expected behavior:
<!--- What should happen instead? -->
_____
### Reproduce:
<!--- How can we reproduce the error? -->
_____
### Relevant Code:
```
// place a code sample here
```

50
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,50 @@
---
name: "Bug report"
about: "Report a general issue, encountered while using Laradock."
labels: "Type: Bug"
---
### Description:
<!-- A clear and concise description of what the bug is. -->
### Expected Behavior:
<!-- A clear and concise description of what you expected to happen. -->
### Context information:
**Output of `git rev-parse HEAD`**
```
{paste here}
```
**Output of `docker version`**
```
{paste here}
```
**Output of `docker-compose version`**
```
{paste here}
```
**System info: Mac, Windows or Linux. Include which disto/version**
```
{paste here}
```
### Steps to reproduce the issue:
<!--- How can we reproduce the issue? -->
1.
2.
3.
### Stacktrace & Additional info:
```
{paste here}
```

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Support question
url: https://gitter.im/LaraDock/laradock
about: 'This repository is only for reporting bugs. If you need help, get in touch with us via Gitter.'

View File

@ -0,0 +1,17 @@
---
name: "Feature request"
about: "Suggest an idea for this project."
labels: "Type: Feature Request"
---
**Is your feature request related to a problem? Please describe.**
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
**Describe the solution you'd like**
<!-- A clear and concise description of what you want to happen. -->
**Describe alternatives you've considered**
<!-- A clear and concise description of any alternative solutions or features you've considered. -->
**Additional context**
<!-- Add any other context or screenshots about the feature request here. -->

View File

@ -1,7 +1,18 @@
<!--- Thank you for contributing to Laradock --> ## Description
<!--- Describe your changes in detail -->
<!--- If it fixes an open issue, please link to the issue here. -->
##### I completed the 3 steps below: ## Motivation and Context
<!--- What problem does it solve, or what feature does it add? -->
- [ ] I've read the [Contribution Guide](http://laradock.io/contributing). ## Types of Changes
- [ ] I've updated the **documentation**. (refer to [this](http://laradock.io/contributing/#update-the-documentation-site) for how to do so). <!--- What types of changes does your code introduce? Put an `x` in all the boxes that apply: -->
- [ ] I enjoyed my time contributing and making developer's life easier :) - [] Bug fix (non-breaking change which fixes an issue).
- [] New feature (non-breaking change which adds functionality).
- [] Breaking change (fix or feature that would cause existing functionality to not work as expected).
## Definition of Done Checklist:
<!--- Go over all the following points, and put an `x` in all the boxes that apply. -->
- [] 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 :)

3
.github/SUPPORT.md vendored Normal file
View File

@ -0,0 +1,3 @@
# Support Questions
For help, please visit our official chatting room on [Gitter](https://gitter.im/Laradock/laradock).

21
.github/stale.yml vendored Normal file
View File

@ -0,0 +1,21 @@
# Configuration for Github probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 90
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 21
# Issues with these labels will never be considered stale
exemptLabels:
- 'Type: Feature Request'
# Label to use when marking an issue as stale
staleLabel: Stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
Hi 👋 this issue has been automatically marked as `stale` 📌 because it has not had recent activity 😴.
It will be closed if no further activity occurs. Thank you for your contributions ❤️.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: >
Hi again 👋 we would like to inform you that this issue has been automatically `closed` 🔒 because it had not recent activity during the `stale` period.
We really really appreciate your contributions, and looking forward for more in the future 🎈.
# Limit to only `issues` or `pulls`
only: issues

19
.github/workflows/main-ci.yml vendored Normal file
View File

@ -0,0 +1,19 @@
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
php_version: ["7.1", "7.2", "7.3", "7.4"]
service: [php-fpm, php-worker, workspace, laravel-horizon]
steps:
- uses: actions/checkout@v2
- name: Build the Docker image
env:
PHP_VERSION: ${{ matrix.php_version }}
run: |
cp env-example .env
docker-compose build ${{ matrix.service }}

View File

@ -1,62 +0,0 @@
# image: docker:latest
# services:
# - docker:dind
image: jonaskello/docker-and-compose:1.12.1-1.8.0
services:
- docker:1.12.1-dind
before_script:
- docker info
- docker-compose version
- cp env-example .env
- sed -i -- "s/=false/=true/g" .env
- cat .env
- env | sort
build:5.6:php-fpm:
variables:
PHP_VERSION: "5.6"
script:
- docker-compose build php-fpm
build:7.0:php-fpm:
variables:
PHP_VERSION: "7.0"
script:
- docker-compose build php-fpm
build:7.1:php-fpm:
variables:
PHP_VERSION: "7.1"
script:
- docker-compose build php-fpm
build:7.2:php-fpm:
variables:
PHP_VERSION: "7.2"
script:
- docker-compose build php-fpm
build:5.6:workspace:
variables:
PHP_VERSION: "5.6"
script:
- docker-compose build workspace
build:7.0:workspace:
variables:
PHP_VERSION: "7.0"
script:
- docker-compose build workspace
build:7.1:workspace:
variables:
PHP_VERSION: "7.1"
script:
- docker-compose build workspace
build:7.2:workspace:
variables:
PHP_VERSION: "7.2"
script:
- docker-compose build workspace

View File

@ -1,5 +1,5 @@
{ {
"files.associations": { "files.associations": {
"Dockerfile-*": "dockerfile" "Dockerfile-*": "dockerfile"
}, }
} }

3
CODE_OF_CONDUCT.md Normal file
View File

@ -0,0 +1,3 @@
# Laradock Code of Conduct
We follow the [Contributor Covenant](https://www.contributor-covenant.org/version/1/4/code-of-conduct) Code of Conduct.

3
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,3 @@
# Thank you for your consideration
Checkout out our [contribution guide](http://laradock.io/contributing).

View File

@ -17,11 +17,11 @@ googleAnalytics = "UA-37514928-9"
# Repository # Repository
provider = "" provider = ""
repo_url = "" repo_url = "https://github.com/laradock/laradock"
version = "" version = ""
logo = "images/logo.png" logo = "images/favicons/ms-icon-310x310.png"
favicon = "" favicon = "images/favicons/favicon.ico"
permalink = "#" permalink = "#"
@ -43,49 +43,39 @@ googleAnalytics = "UA-37514928-9"
[social] [social]
twitter = "" twitter = ""
github = "laradock/laradock" github = "laradock/laradock"
email = "" email = "support@laradock.io"
# ------- MENU START ----------------------------------------- # ------- MENU START -----------------------------------------
[[menu.main]] [[menu.main]]
name = "1. Introduction" name = "Introduction"
url = "introduction/" url = "introduction/"
weight = 1 weight = 1
[[menu.main]] [[menu.main]]
name = "2. Getting Started" name = "Getting Started"
url = "getting-started/" url = "getting-started/"
weight = 2 weight = 2
[[menu.main]] [[menu.main]]
name = "3. Documentation" name = "Documentation"
url = "documentation/" url = "documentation/"
weight = 3 weight = 3
[[menu.main]] [[menu.main]]
name = "4. Guides" name = "Help & Questions"
url = "guides/" url = "help/"
weight = 4 weight = 4
[[menu.main]] [[menu.main]]
name = "5. Help & Questions" name = "Related Projects"
url = "help/" url = "related-projects/"
weight = 5 weight = 5
[[menu.main]] [[menu.main]]
name = "6. Related Projects" name = "Contributions"
url = "related-projects/"
weight = 6
[[menu.main]]
name = "7. Contributing"
url = "contributing/" url = "contributing/"
weight = 7 weight = 6
[[menu.main]]
name = "8. License"
url = "license/"
weight = 8
# ------- MENU END ----------------------------------------- # ------- MENU END -----------------------------------------

View File

@ -1,7 +1,7 @@
--- ---
title: 7. Contributing title: Contributions
type: index type: index
weight: 7 weight: 6
--- ---
@ -51,12 +51,20 @@ To update the sidebar or add a new section to it, you can edit this `DOCUMENTATI
### Host the documentation locally ### Host the documentation locally
**Option 1: Use Hugo Docker Image:**
1. Update the `DOCUMENTATION/content`.
2. Go to `DOCUMENTATION/`.
3. Run `docker run --rm -it -v $PWD:/src -p 1313:1313 -u hugo jguyomard/hugo-builder hugo server -w --bind=0.0.0.0`
4. Visit [http://localhost:1313/](http://localhost:1313/)
**Option 2: Install Hugo Locally:**
1. Install [Hugo](https://gohugo.io/) on your machine. 1. Install [Hugo](https://gohugo.io/) on your machine.
2. Edit the `DOCUMENTATION/content`. 2. Update the `DOCUMENTATION/content`.
3. Delete the `/docs` folder from the root. 3. Delete the `/docs` folder from the root.
4. After you finish the editing, go to `DOCUMENTATION/` and run the `hugo` command to generate the HTML docs (inside a new `/docs` folder). 4. Go to `DOCUMENTATION/`.
5. Run the `hugo` command to generate the HTML docs inside a new `/docs` folder.
## Support new Software (Add new Container) ## Support new Software (Add new Container)
@ -100,7 +108,7 @@ To update the sidebar or add a new section to it, you can edit this `DOCUMENTATI
* Search for the image in the [Docker Hub](https://hub.docker.com/search/) and find the source.. * Search for the image in the [Docker Hub](https://hub.docker.com/search/) and find the source..
*Most of the image in Laradock are offical images, these projects live in other repositories and maintainer by other organizations.* *Most of the image in Laradock are official images, these projects live in other repositories and maintainer by other organizations.*
**Note:** Laradock has two base images for (`Workspace` and `php-fpm`, mainly made to speed up the build time on your machine. **Note:** Laradock has two base images for (`Workspace` and `php-fpm`, mainly made to speed up the build time on your machine.
@ -204,4 +212,4 @@ After your pull request is merged, you can safely delete your branch and pull th
<br> <br>
#### Happy Coding :) ## Happy Coding :)

View File

@ -1,5 +1,5 @@
--- ---
title: 3. Documentation title: Documentation
type: index type: index
weight: 3 weight: 3
--- ---
@ -57,7 +57,9 @@ docker-compose down
<br> <br>
<a name="Enter-Container"></a> <a name="Enter-Container"></a>
## Enter a Container (run commands in a running Container) ## Enter a Container
> Run commands in a running Container.
1 - First list the current running containers with `docker ps` 1 - First list the current running containers with `docker ps`
@ -88,7 +90,8 @@ docker-compose exec mysql mysql -udefault -psecret
<br> <br>
<a name="Edit-Container"></a> <a name="Edit-Container"></a>
## Edit default container configuration ## Edit default Container config
Open the `docker-compose.yml` and change anything you want. Open the `docker-compose.yml` and change anything you want.
Examples: Examples:
@ -161,7 +164,7 @@ You might use the `--no-cache` option if you want full rebuilding (`docker-compo
<br> <br>
<a name="Add-Docker-Images"></a> <a name="Add-Docker-Images"></a>
## Add more Software (Docker Images) ## Add more Docker Images
To add an image (software), just edit the `docker-compose.yml` and add your container details, to do so you need to be familiar with the [docker compose file syntax](https://docs.docker.com/compose/compose-file/). To add an image (software), just edit the `docker-compose.yml` and add your container details, to do so you need to be familiar with the [docker compose file syntax](https://docs.docker.com/compose/compose-file/).
@ -272,10 +275,6 @@ docker-compose build workspace
``` ```
<br> <br>
<a name="Install-xDebug"></a> <a name="Install-xDebug"></a>
## Install xDebug ## Install xDebug
@ -388,7 +387,9 @@ Always download the latest version of [Loaders for ionCube ](http://www.ioncube.
<br> <br>
<a name="Install-Deployer"></a> <a name="Install-Deployer"></a>
## Install Deployer (Deployment tool for PHP) ## Install Deployer
> A deployment tool for PHP.
1 - Open the `.env` file 1 - Open the `.env` file
<br> <br>
@ -399,14 +400,17 @@ Always download the latest version of [Loaders for ionCube ](http://www.ioncube.
4 - Re-build the containers `docker-compose build workspace` 4 - Re-build the containers `docker-compose build workspace`
[**Deployer Documentation Here**](https://deployer.org/docs) [**Deployer Documentation Here**](https://deployer.org/docs/getting-started.html)
<br> <br>
<a name="Install-SonarQube"></a> <a name="Install-SonarQube"></a>
## Install SonarQube (automatic code review tool) ## Install SonarQube
> An automatic code review tool.
SonarQube® is an automatic code review tool to detect bugs, vulnerabilities and code smells in your code. It can integrate with your existing workflow to enable continuous code inspection across your project branches and pull requests. SonarQube® is an automatic code review tool to detect bugs, vulnerabilities and code smells in your code. It can integrate with your existing workflow to enable continuous code inspection across your project branches and pull requests.
<br> <br>
1 - Open the `.env` file 1 - Open the `.env` file
@ -467,14 +471,6 @@ To learn more about how Docker publishes ports, please read [this excellent post
<br>
<a name="Digital-Ocean"></a>
## Setup Laravel and Docker on Digital Ocean
### [Full Guide Here](/guides/#Digital-Ocean)
@ -487,7 +483,7 @@ To learn more about how Docker publishes ports, please read [this excellent post
<a name="Install-Laravel"></a> <a name="Install-Laravel"></a>
## Install Laravel from a Docker Container ## Install Laravel from Container
1 - First you need to enter the Workspace Container. 1 - First you need to enter the Workspace Container.
@ -564,8 +560,14 @@ composer update
```bash ```bash
phpunit phpunit
``` ```
```
vue serve
```
(browse the results at `http://localhost:[WORKSPACE_VUE_CLI_SERVE_HOST_PORT]`)
```
vue ui
```
(browse the results at `http://localhost:[WORKSPACE_VUE_CLI_UI_HOST_PORT]`)
@ -615,6 +617,33 @@ docker-compose up -d php-worker
<br>
<a name="Use-Browsersync-With-Laravel-Mix"></a>
## Use Browsersync
> Using Use Browsersync with Laravel Mix.
1. Add the following settings to your `webpack.mix.js` file. Please refer to Browsersync [Options](https://browsersync.io/docs/options) page for more options.
```
const mix = require('laravel-mix')
(...)
mix.browserSync({
open: false,
proxy: 'nginx' // replace with your web server container
})
```
2. Run `npm run watch` within your `workspace` container.
3. Open your browser and visit address `http://localhost:[WORKSPACE_BROWSERSYNC_HOST_PORT]`. It will refresh the page automatically whenever you edit any source file in your project.
4. If you wish to access Browsersync UI for your project, visit address `http://localhost:[WORKSPACE_BROWSERSYNC_UI_HOST_PORT]`.
<br> <br>
<a name="Use-Mailu"></a> <a name="Use-Mailu"></a>
## Use Mailu ## Use Mailu
@ -697,6 +726,7 @@ You may wanna change the default security configuration, so go to `http://localh
<br> <br>
<a name="Use-Redis"></a> <a name="Use-Redis"></a>
## Use Redis ## Use Redis
1 - First make sure you run the Redis Container (`redis`) with the `docker-compose up` command. 1 - First make sure you run the Redis Container (`redis`) with the `docker-compose up` command.
@ -784,12 +814,81 @@ Read the [Laravel official documentation](https://laravel.com/docs/5.7/redis#con
``` ```
<br>
<a name="Use-Varnish"></a>
## Use Varnish
The goal was to proxy request to varnish server using nginx. So only nginx has been configured for Varnish proxy.
Nginx is on port 80 or 443. Nginx sends request through varnish server and varnish server sends request back to nginx on port 81 (external port is defined in `VARNISH_BACKEND_PORT`).
The idea was taken from this [post](https://www.linode.com/docs/websites/varnish/use-varnish-and-nginx-to-serve-wordpress-over-ssl-and-http-on-debian-8/)
The Varnish configuration was developed and tested for Wordpress only. Probably it works with other systems.
#### Steps to configure varnish proxy server:
1. You have to set domain name for VARNISH_PROXY1_BACKEND_HOST variable.
2. If you want to use varnish for different domains, you have to add new configuration section in your env file.
```
VARNISH_PROXY1_CACHE_SIZE=128m
VARNISH_PROXY1_BACKEND_HOST=replace_with_your_domain.name
VARNISH_PROXY1_SERVER=SERVER1
```
3. Then you have to add new config section into docker-compose.yml with related variables:
```
custom_proxy_name:
container_name: custom_proxy_name
build: ./varnish
expose:
- ${VARNISH_PORT}
environment:
- VARNISH_CONFIG=${VARNISH_CONFIG}
- CACHE_SIZE=${VARNISH_PROXY2_CACHE_SIZE}
- VARNISHD_PARAMS=${VARNISHD_PARAMS}
- VARNISH_PORT=${VARNISH_PORT}
- BACKEND_HOST=${VARNISH_PROXY2_BACKEND_HOST}
- BACKEND_PORT=${VARNISH_BACKEND_PORT}
- VARNISH_SERVER=${VARNISH_PROXY2_SERVER}
ports:
- "${VARNISH_PORT}:${VARNISH_PORT}"
links:
- workspace
networks:
- frontend
```
4. change your varnish config and add nginx configuration. Example Nginx configuration is here: `nginx/sites/laravel_varnish.conf.example`.
5. `varnish/default.vcl` is old varnish configuration, which was used in the previous version. Use `default_wordpress.vcl` instead.
#### How to run:
1. Rename `default_wordpress.vcl` to `default.vcl`
2. `docker-compose up -d nginx`
3. `docker-compose up -d proxy`
Keep in mind that varnish server must be built after Nginx cause varnish checks domain affordability.
#### FAQ:
1. How to purge cache? <br>
run from any cli: <br>`curl -X PURGE https://yourwebsite.com/`.
2. How to reload varnish?<br>
`docker container exec proxy varnishreload`
3. Which varnish commands are allowed?
- varnishadm
- varnishd
- varnishhist
- varnishlog
- varnishncsa
- varnishreload
- varnishstat
- varnishtest
- varnishtop
4. How to reload Nginx?<br>
`docker exec Nginx nginx -t`<br>
`docker exec Nginx nginx -s reload`
<br> <br>
<a name="Use-Mongo"></a> <a name="Use-Mongo"></a>
## Use Mongo ## Use Mongo
1 - First install `mongo` in the Workspace and the PHP-FPM Containers: 1 - First install `mongo` in the Workspace and the PHP-FPM Containers:
@ -878,7 +977,7 @@ docker-compose up -d mariadb phpmyadmin
*Note: To use with MariaDB, open `.env` and set `PMA_DB_ENGINE=mysql` to `PMA_DB_ENGINE=mariadb`.* *Note: To use with MariaDB, open `.env` and set `PMA_DB_ENGINE=mysql` to `PMA_DB_ENGINE=mariadb`.*
2 - Open your browser and visit the localhost on port **8080**: `http://localhost:8080` 2 - Open your browser and visit the localhost on port **8081**: `http://localhost:8081`
@ -975,7 +1074,7 @@ job1:
docker-compose up -d adminer docker-compose up -d adminer
``` ```
2 - Open your browser and visit the localhost on port **8080**: `http://localhost:8080` 2 - Open your browser and visit the localhost on port **8081**: `http://localhost:8081`
**Note:** We've locked Adminer to version 4.3.0 as at the time of writing [it contained a major bug](https://sourceforge.net/p/adminer/bugs-and-features/548/) preventing PostgreSQL users from logging in. If that bug is fixed (or if you're not using PostgreSQL) feel free to set Adminer to the latest version within [the Dockerfile](https://github.com/laradock/laradock/blob/master/adminer/Dockerfile#L1): `FROM adminer:latest` **Note:** We've locked Adminer to version 4.3.0 as at the time of writing [it contained a major bug](https://sourceforge.net/p/adminer/bugs-and-features/548/) preventing PostgreSQL users from logging in. If that bug is fixed (or if you're not using PostgreSQL) feel free to set Adminer to the latest version within [the Dockerfile](https://github.com/laradock/laradock/blob/master/adminer/Dockerfile#L1): `FROM adminer:latest`
@ -1112,6 +1211,12 @@ docker-compose up -d elasticsearch
```bash ```bash
docker-compose exec elasticsearch /usr/share/elasticsearch/bin/plugin install {plugin-name} docker-compose exec elasticsearch /usr/share/elasticsearch/bin/plugin install {plugin-name}
``` ```
For ElasticSearch 5.0 and above, the previous "plugin" command as been renamed to "elasticsearch-plguin".
Use the following instead:
```bash
docker-compose exec elasticsearch /usr/share/elasticsearch/bin/elasticsearch-plugin install {plugin-name}
```
2 - Restart elasticsearch container 2 - Restart elasticsearch container
@ -1320,30 +1425,13 @@ GRAYLOG_SHA256_PASSWORD=b1cb6e31e172577918c9e7806c572b5ed8477d3f57aa737bee4b5b1d
<a name="Use-Traefik"></a> <a name="Use-Traefik"></a>
## Use Traefik ## Use Traefik
To use Traefik you need to do some changes in `traefik/trafik.toml` and `docker-compose.yml`. To use Traefik you need to do some changes in `.env` and `docker-compose.yml`.
1 - Open `traefik.toml` and change the `e-mail` property in `acme` section. 1 - Open `.env` and change `ACME_DOMAIN` to your domain and `ACME_EMAIL` to your email.
2 - Change your domain in `acme.domains`. For example: `main = "example.org"` 2 - You need to change the `docker-compose.yml` file to match the Traefik needs. If you want to use Traefik, you must not expose the ports of each container to the internet, but specify some labels.
2.1 - If you have subdomains, you must add them to `sans` property in `acme.domains` section. 2.1 For example, let's try with NGINX. You must have:
```bash
[[acme.domais]]
main = "example.org"
sans = ["monitor.example.org", "pma.example.org"]
```
3 - If you need to add basic authentication (https://docs.traefik.io/configuration/entrypoints/#basic-authentication), you just need to add the following text after `[entryPoints.https.tls]`:
```bash
[entryPoints.https.auth.basic]
users = ["user:password"]
```
4 - You need to change the `docker-compose.yml` file to match the Traefik needs. If you want to use Traefik, you must not expose the ports of each container to the internet, but specify some labels.
4.1 For example, let's try with NGINX. You must have:
```bash ```bash
nginx: nginx:
@ -1363,9 +1451,25 @@ nginx:
- frontend - frontend
- backend - backend
labels: labels:
- traefik.backend=nginx - "traefik.enable=true"
- traefik.frontend.rule=Host:example.org - "traefik.http.services.nginx.loadbalancer.server.port=80"
- traefik.port=80 # https router
- "traefik.http.routers.https.rule=Host(`${ACME_DOMAIN}`, `www.${ACME_DOMAIN}`)"
- "traefik.http.routers.https.entrypoints=https"
- "traefik.http.routers.https.middlewares=www-redirectregex"
- "traefik.http.routers.https.service=nginx"
- "traefik.http.routers.https.tls.certresolver=letsencrypt"
# http router
- "traefik.http.routers.http.rule=Host(`${ACME_DOMAIN}`, `www.${ACME_DOMAIN}`)"
- "traefik.http.routers.http.entrypoints=http"
- "traefik.http.routers.http.middlewares=http-redirectscheme"
- "traefik.http.routers.http.service=nginx"
# middlewares
- "traefik.http.middlewares.www-redirectregex.redirectregex.permanent=true"
- "traefik.http.middlewares.www-redirectregex.redirectregex.regex=^https://www.(.*)"
- "traefik.http.middlewares.www-redirectregex.redirectregex.replacement=https://$$1"
- "traefik.http.middlewares.http-redirectscheme.redirectscheme.permanent=true"
- "traefik.http.middlewares.http-redirectscheme.redirectscheme.scheme=https"
``` ```
instead of instead of
@ -1628,7 +1732,9 @@ The default username and password for the root MySQL user are `root` and `root `
<br> <br>
<a name="Create-Multiple-Databases"></a> <a name="Create-Multiple-Databases"></a>
## Create Multiple Databases (MySQL) ## Create Multiple Databases
> With 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: 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:
@ -1662,7 +1768,9 @@ If you need <a href="#MySQL-access-from-host">MySQL access from your host</a>, d
<br> <br>
<a name="Use-custom-Domain"></a> <a name="Use-custom-Domain"></a>
## Use custom Domain (instead of the Docker IP) ## Use custom Domain
> How to use a custom domain, instead of the Docker IP.
Assuming your custom domain is `laravel.test` Assuming your custom domain is `laravel.test`
@ -1688,7 +1796,7 @@ server_name laravel.test;
<br> <br>
<a name="Enable-Global-Composer-Build-Install"></a> <a name="Enable-Global-Composer-Build-Install"></a>
## Enable Global Composer Build Install ## Global Composer Build Install
Enabling Global Composer Install during the build for the container allows you to get your composer requirements installed and available in the container after the build is done. Enabling Global Composer Install during the build for the container allows you to get your composer requirements installed and available in the container after the build is done.
@ -1707,7 +1815,9 @@ Enabling Global Composer Install during the build for the container allows you t
<br> <br>
<a name="Magento-2-authentication-credentials"></a> <a name="Magento-2-authentication-credentials"></a>
## Add authentication credential for Magento 2 ## Add authentication for Magento
> Adding authentication credentials for Magento 2.
1 - Open the `.env` file 1 - Open the `.env` file
@ -1759,6 +1869,23 @@ To install NVM and NodeJS in the Workspace container
<br>
<a name="Install-PNPM"></a>
## Install PNPM
pnpm uses hard links and symlinks to save one version of a module only ever once on a disk. When using npm or Yarn for example, if you have 100 projects using the same version of lodash, you will have 100 copies of lodash on disk. With pnpm, lodash will be saved in a single place on the disk and a hard link will put it into the node_modules where it should be installed.
As a result, you save gigabytes of space on your disk and you have a lot faster installations! If you'd like more details about the unique node_modules structure that pnpm creates and why it works fine with the Node.js ecosystem.
More info here: https://pnpm.js.org/en/motivation
1 - Open the `.env` file
2 - Search for the `WORKSPACE_INSTALL_NODE` and `WORKSPACE_INSTALL_PNPM` argument under the Workspace Container and set it to `true`
3 - Re-build the container `docker-compose build workspace`
@ -1799,7 +1926,7 @@ To install NPM GULP toolkit in the Workspace container
<br> <br>
<a name="Install-NPM-BOWER"></a> <a name="Install-NPM-BOWER"></a>
## Install NPM BOWER package manager ## Install NPM BOWER
To install NPM BOWER package manager in the Workspace container To install NPM BOWER package manager in the Workspace container
@ -1824,7 +1951,11 @@ To install NPM VUE CLI in the Workspace container
2 - Search for the `WORKSPACE_INSTALL_NPM_VUE_CLI` argument under the Workspace Container and set it to `true` 2 - Search for the `WORKSPACE_INSTALL_NPM_VUE_CLI` argument under the Workspace Container and set it to `true`
3 - Re-build the container `docker-compose build workspace` 3 - Change `vue serve` port using `WORKSPACE_VUE_CLI_SERVE_HOST_PORT` if you wish to (default value is 8080)
4 - Change `vue ui` port using `WORKSPACE_VUE_CLI_UI_HOST_PORT` if you wish to (default value is 8001)
5 - Re-build the container `docker-compose build workspace`
@ -1880,7 +2011,21 @@ To install FFMPEG in the Workspace container
**PS** Don't forget to install the binary in the `php-fpm` container too by applying the same steps above to its container, otherwise the you'll get an error when running the `php-ffmpeg` binary. **PS** Don't forget to install the binary in the `php-fpm` container too by applying the same steps above to its container, otherwise the you'll get an error when running the `php-ffmpeg` binary.
<br>
<a name="Install-wkhtmltopdf"></a>
## Install wkhtmltopdf
[wkhtmltopdf](https://wkhtmltopdf.org/) is a utility for outputting a PDF from HTML
To install wkhtmltopdf in the Workspace container
1 - Open the `.env` file
2 - Search for the `WORKSPACE_INSTALL_WKHTMLTOPDF` argument under the Workspace Container and set it to `true`
3 - Re-build the container `docker-compose build workspace`
**PS** Don't forget to install the binary in the `php-fpm` container too by applying the same steps above to its container, otherwise the you'll get an error when running the `wkhtmltopdf` binary.
@ -1921,7 +2066,7 @@ To install Supervisor in the Workspace container
3 - Create supervisor configuration file (for ex., named `laravel-worker.conf`) for Laravel Queue Worker in `php-worker/supervisord.d/` by simply copy from `laravel-worker.conf.example` 3 - Create supervisor configuration file (for ex., named `laravel-worker.conf`) for Laravel Queue Worker in `php-worker/supervisord.d/` by simply copy from `laravel-worker.conf.example`
4 - Re-build the container `docker-compose build workspace` Or `docker-composer up --build -d workspace` 4 - Re-build the container `docker-compose build workspace` Or `docker-compose up --build -d workspace`
@ -1967,7 +2112,9 @@ e) set it to `true`
<br> <br>
<a name="Install-Laravel-Envoy"></a> <a name="Install-Laravel-Envoy"></a>
## Install Laravel Envoy (Envoy Task Runner) ## Install Laravel Envoy
> A Tasks Runner.
1 - Open the `.env` file 1 - Open the `.env` file
<br> <br>
@ -2000,7 +2147,8 @@ e) set it to `true`
<br> <br>
<a name="Install-Faketime"></a> <a name="Install-Faketime"></a>
## Install libfaketime in the php-fpm container ## Install libfaketime in php-fpm
Libfaketime allows you to control the date and time that is returned from the operating system. Libfaketime allows you to control the date and time that is returned from the operating system.
It can be used by specifying a special string in the `PHP_FPM_FAKETIME` variable in the `.env` file. It can be used by specifying a special string in the `PHP_FPM_FAKETIME` variable in the `.env` file.
For example: For example:
@ -2024,7 +2172,8 @@ will set the clock back 1 day. See (https://github.com/wolfcw/libfaketime) for m
<br> <br>
<a name="Install-YAML"></a> <a name="Install-YAML"></a>
## Install YAML PHP extension in the php-fpm container ## Install YAML extension in php-fpm
YAML PHP extension allows you to easily parse and create YAML structured data. I like YAML because it's well readable for humans. See http://php.net/manual/en/ref.yaml.php and http://yaml.org/ for more info. YAML PHP extension allows you to easily parse and create YAML structured data. I like YAML because it's well readable for humans. See http://php.net/manual/en/ref.yaml.php and http://yaml.org/ for more info.
1 - Open the `.env` file 1 - Open the `.env` file
@ -2056,6 +2205,46 @@ AST exposes the abstract syntax tree generated by PHP 7+. This extension is requ
<br>
<a name="Install-Bash-Git-Prompt"></a>
## Install Git Bash Prompt
A bash prompt that displays information about the current git repository. In particular the branch name, difference with remote branch, number of files staged, changed, etc.
1 - Open the `.env` file
2 - Search for the `WORKSPACE_INSTALL_GIT_PROMPT` argument under the Workspace Container
3 - Set it to `true`
4 - Re-build the container `docker-compose build workspace`
**Note** You can configure bash-git-prompt by editing the `workspace/gitprompt.sh` file and re-building the workspace container.
For configuration information, visit the [bash-git-prompt repository](https://github.com/magicmonty/bash-git-prompt).
<br>
<a name="Install-Oh-My-Zsh"></a>
## Install Oh My ZSH
> With the Laravel autocomplete plugin.
[Zsh](https://en.wikipedia.org/wiki/Z_shell) is an extended Bourne shell with many improvements, including some features of Bash, ksh, and tcsh.
[Oh My Zsh](https://ohmyz.sh/) is a delightful, open source, community-driven framework for managing your Zsh configuration.
[Laravel autocomplete plugin](https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/laravel) adds aliases and autocompletion for Laravel Artisan and Bob command-line interfaces.
1 - Open the `.env` file
2 - Search for the `SHELL_OH_MY_ZSH` argument under the Workspace Container
3 - Set it to `true`
4 - Re-build the container `docker-compose build workspace`
5 - Use it `docker-compose exec --user=laradock workspace zsh`
**Note** You can configure Oh My ZSH by editing the `/home/laradock/.zshrc` in running container.
<br> <br>
<a name="phpstorm-debugging"></a> <a name="phpstorm-debugging"></a>
## PHPStorm Debugging Guide ## PHPStorm Debugging Guide
@ -2065,12 +2254,27 @@ Remote debug Laravel web and phpunit tests.
<br>
<a name="Setup-gcloud"></a>
## Setup Google Cloud
> Setting up Google Cloud for the docker registry.
```
gcloud auth configure-docker
```
Login to gcloud for use the registry and auth the permission.
```
gcloud auth login
```
<br> <br>
<a name="keep-tracking-Laradock"></a> <a name="keep-tracking-Laradock"></a>
## Keep track of your Laradock changes ## Track your Laradock changes
1. Fork the Laradock repository. 1. Fork the Laradock repository.
2. Use that fork as a submodule. 2. Use that fork as a submodule.

View File

@ -1,19 +1,18 @@
--- ---
title: 2. Getting Started title: Getting Started
type: index type: index
weight: 2 weight: 2
--- ---
## 2.1 Requirements ## Requirements
- [Git](https://git-scm.com/downloads) - [Git](https://git-scm.com/downloads)
- [Docker](https://www.docker.com/products/docker/) `>= 17.12` - [Docker](https://www.docker.com/products/docker/) [ >= 17.12 ]
- [gcloud](https://cloud.google.com/sdk/install)
## 2.2 Installation ## Installation
Choose the setup the best suits your needs. Choose the setup the best suits your needs.
@ -22,17 +21,6 @@ Choose the setup the best suits your needs.
- [A.2) Don't have a PHP project yet](#A2) - [A.2) Don't have a PHP project yet](#A2)
- [B) Setup for Multiple Projects](#B) - [B) Setup for Multiple Projects](#B)
### Setup gcloud for docker registry
```
gcloud auth configure-docker
```
and login to gcloud for use the registry and auth the permission.
```
gcloud auth login
```
<a name="A"></a> <a name="A"></a>
### A) Setup for Single Project ### A) Setup for Single Project
@ -56,10 +44,10 @@ Note: If you are not using Git yet for your project, you can use `git clone` ins
2 - Make sure your folder structure should look like this: 2 - Make sure your folder structure should look like this:
``` ```
+ project-a * project-a
+ laradock-a * laradock-a
+ project-b * project-b
+ laradock-b * laradock-b
``` ```
*(It's important to rename the laradock folders to unique name in each project, if you want to run laradock per project).* *(It's important to rename the laradock folders to unique name in each project, if you want to run laradock per project).*
@ -78,8 +66,8 @@ git clone https://github.com/laradock/laradock.git
Your folder structure should look like this: Your folder structure should look like this:
``` ```
+ laradock * laradock
+ project-z * project-z
``` ```
2 - Edit your web server sites configuration. 2 - Edit your web server sites configuration.
@ -114,9 +102,9 @@ git clone https://github.com/laradock/laradock.git
Your folder structure should look like this: Your folder structure should look like this:
``` ```
+ laradock * laradock
+ project-1 * project-1
+ project-2 * project-2
``` ```
2 - Go to your web server and create config files to point to different project directory when visiting different domains: 2 - Go to your web server and create config files to point to different project directory when visiting different domains:
@ -148,7 +136,7 @@ If you use Chrome 63 or above for development, don't use `.dev`. [Why?](https://
<a name="Usage"></a> <a name="Usage"></a>
## 2.3 Usage ## Usage
**Read Before starting:** **Read Before starting:**
@ -233,8 +221,12 @@ Or you can change them and rebuild the container.
<br> <br>
5 - Open your browser and visit your localhost address. 5 - Open your browser and visit your localhost address.
Make sure you add use the right port number as provided by your running server.
[http://localhost](http://localhost)
If you followed the multiple projects setup, you can visit `http://project-1.test/` and `http://project-2.test/`. If you followed the multiple projects setup, you can visit `http://project-1.test/` and `http://project-2.test/`.
[http://localhost:8080](http://localhost:8080)
Make sure you add use the right port number as provided by your running server. Ex: NGINX uses port 8080 by default while Apache2 uses 80.

View File

@ -1,878 +0,0 @@
---
title: 4. Guides
type: index
weight: 4
---
<a name="Digital-Ocean"></a>
## Production Setup on Digital Ocean
### Install Docker
- Visit [DigitalOcean](https://cloud.digitalocean.com/login) and login.
- Click the `Create Droplet` button.
- Open the `One-click apps` tab.
- Select Docker with your preferred version.
- Continue creating the droplet as you normally would.
- If needed, check your e-mail for the droplet root password.
### SSH to your Server
Find the IP address of the droplet in the DigitalOcean interface. Use it to connect to the server.
```
ssh root@ipaddress
```
You may be prompted for a password. Type the one you found within your e-mailbox. It'll then ask you to change the password.
You can now check if Docker is available:
```
$root@server:~# docker
```
### Set Up Your Laravel Project
```
$root@server:~# apt-get install git
$root@server:~# git clone https://github.com/laravel/laravel
$root@server:~# cd laravel
$root@server:~/laravel/ git submodule add https://github.com/Laradock/laradock.git
$root@server:~/laravel/ cd laradock
```
### Enter the laradock folder and rename env-example to .env.
```
$root@server:~/laravel/laradock# cp env-example .env
```
### Create Your Laradock Containers
```
$root@server:~/laravel/laradock# docker-compose up -d nginx mysql
```
Note that more containers are available, find them in the [docs](http://laradock.io/introduction/#supported-software-containers) or the `docker-compose.yml` file.
### Go to Your Workspace
```
docker-compose exec workspace bash
```
### Execute commands
If you want to only execute some command and don't want to enter bash, you can execute `docker-compose run workspace <command>`.
```
docker-compose run workspace php artisan migrate
```
### Prepare for Visual Studio Code remote development
If you want to use Visual Studio Code for [remote development](https://code.visualstudio.com/docs/remote/containers) directly on your `workspace` container, copy file `devcontainer.example.json` to `devcontainer.json` and customize it (see [devcontainer.json reference](https://code.visualstudio.com/docs/remote/containers#_devcontainerjson-reference) for more options):
```
cd .devcontainer
cp devcontainer.example.json devcontainer.json
```
Then open your `laradock` folder in Visual Studio Code and click on popup button **Reopen in Container**.
### Install and configure Laravel
Let's install Laravel's dependencies, add the `.env` file, generate the key and give proper permissions to the cache folder.
```
$ root@workspace:/var/www# composer install
$ root@workspace:/var/www# cp .env.example .env
$ root@workspace:/var/www# php artisan key:generate
$ root@workspace:/var/www# exit
$root@server:~/laravel/laradock# cd ..
$root@server:~/laravel# sudo chmod -R 777 storage bootstrap/cache
```
You can then view your Laravel site by visiting the IP address of your server in your browser. For example:
```
http://192.168.1.1
```
It should show you the Laravel default welcome page.
However, we want it to show up using your custom domain name, as well.
### Using Your Own Domain Name
Login to your DNS provider, such as Godaddy, Namecheap.
Point the Custom Domain Name Server to:
```
ns1.digitalocean.com
ns2.digitalocean.com
ns3.digitalocean.com
```
Within DigitalOcean, you'll need to change some settings, too.
Visit: https://cloud.digitalocean.com/networking/domains
Add your domain name and choose the server IP you'd provision earlier.
### Serving Site With NGINX (HTTP ONLY)
Go back to command line.
```
$root@server:~/laravel/laradock# cd nginx
$root@server:~/laravel/laradock/nginx# vim laravel.conf
```
Remove `default_server`
```
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
```
And add `server_name` (your custom domain)
```
listen 80;
listen [::]:80 ipv6only=on;
server_name yourdomain.com;
```
### Rebuild Your Nginx
```
$root@server:~/laravel/laradock# docker-compose down
$root@server:~/laravel/laradock# docker-compose build nginx
```
### Re Run Your Containers MYSQL and NGINX
```
$root@server:~/laravel/laradock/nginx# docker-compose up -d nginx mysql
```
**View Your Site with HTTP ONLY (http://yourdomain.com)**
### Run Site on SSL with Let's Encrypt Certificate
**Note: You need to Use Caddy here Instead of Nginx**
To go Caddy Folders and Edit CaddyFile
```
$root@server:~/laravel/laradock# cd caddy
$root@server:~/laravel/laradock/caddy# vim Caddyfile
```
Remove 0.0.0.0:80
```
0.0.0.0:80
root /var/www/public
```
and replace with your https://yourdomain.com
```
https://yourdomain.com
root /var/www/public
```
uncomment tls
```
#tls self-signed
```
and replace self-signed with your email address
```
tls serverbreaker@gmai.com
```
This is needed Prior to Creating Let's Encypt
### Run Your Caddy Container without the -d flag and Generate SSL with Let's Encrypt
```
$root@server:~/laravel/laradock# docker-compose up caddy
```
You'll be prompt here to enter your email... you may enter it or not
```
Attaching to laradock_mysql_1, laradock_caddy_1
caddy_1 | Activating privacy features...
caddy_1 | Your sites will be served over HTTPS automatically using Let's Encrypt.
caddy_1 | By continuing, you agree to the Let's Encrypt Subscriber Agreement at:
caddy_1 | https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf
caddy_1 | Activating privacy features... done.
caddy_1 | https://yourdomain.com
caddy_1 | http://yourdomain.com
```
After it finishes, press `Ctrl` + `C` to exit.
### Stop All Containers and ReRun Caddy and Other Containers on Background
```
$root@server:~/laravel/laradock# docker-compose down
$root@server:~/laravel/laradock# docker-compose up -d mysql caddy
```
View your Site in the Browser Securely Using HTTPS (https://yourdomain.com)
**Note that Certificate will be Automatically Renew By Caddy**
>References:
>
- [https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-16-04)
- [https://www.digitalocean.com/products/one-click-apps/docker/](https://www.digitalocean.com/products/one-click-apps/docker/)
- [https://docs.docker.com/engine/installation/linux/ubuntulinux/](https://docs.docker.com/engine/installation/linux/ubuntulinux/)
- [https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/)
- [https://caddyserver.com/docs/automatic-https](https://caddyserver.com/docs/automatic-https)
- [https://caddyserver.com/docs/tls](https://caddyserver.com/docs/tls)
- [https://caddyserver.com/docs/caddyfile](https://caddyserver.com/docs/caddyfile)
<br>
<br>
<br>
<br>
<br>
<a name="Laravel-Dusk"></a>
## Running Laravel Dusk Tests
### 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.
```
<?php
...
abstract class DuskTestCase extends BaseTestCase
{
...
/**
* Update chrome driver with below flags
*/
protected function driver()
{
$options = (new ChromeOptions)->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 Dusk 2.x, you need to update `DuskTestCase#prepare` method if you wish to go with option #2.
```
<?php
...
abstract class DuskTestCase extends BaseTestCase
{
...
public static function prepare()
{
// Only add this line if you wish to use chrome driver installed in workspace container.
// You might want to read the file path from env file.
static::useChromedriver('/usr/local/bin/chromedriver');
static::startChromeDriver();
}
```
For Laravel Dusk 1.x, you need to add `DuskTestCase#buildChromeProcess` method if you wish to go with option #2.
```
<?php
...
use Symfony\Component\Process\ProcessBuilder;
abstract class DuskTestCase extends BaseTestCase
{
...
/**
* Only add this method if you wish to use chrome driver installed in workspace container
*/
protected static function buildChromeProcess()
{
return (new ProcessBuilder())
->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:<your_domain>
```
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/)
<br>
<br>
<br>
<br>
<br>
<a name="PHPStorm-Debugging"></a>
## PHPStorm XDebug Setup
- [Intro](#Intro)
- [Installation](#Installation)
- [Customize laradock/docker-compose.yml](#CustomizeDockerCompose)
- [Clean House](#InstallCleanHouse)
- [Laradock Dial Tone](#InstallLaradockDialTone)
- [hosts](#AddToHosts)
- [Firewall](#FireWall)
- [Enable xDebug on php-fpm](#enablePhpXdebug)
- [PHPStorm Settings](#InstallPHPStorm)
- [Configs](#InstallPHPStormConfigs)
- [Usage](#Usage)
- [Laravel](#UsageLaravel)
- [Run ExampleTest](#UsagePHPStormRunExampleTest)
- [Debug ExampleTest](#UsagePHPStormDebugExampleTest)
- [Debug Web Site](#UsagePHPStormDebugSite)
- [SSH into workspace](#SSHintoWorkspace)
- [KiTTY](#InstallKiTTY)
### Intro
Wiring up [Laravel](https://laravel.com/), [Laradock](https://github.com/Laradock/laradock) [Laravel+Docker] and [PHPStorm](https://www.jetbrains.com/phpstorm/) to play nice together complete with remote xdebug'ing as icing on top! Although this guide is based on `PHPStorm Windows`,
you should be able to adjust accordingly. This guide was written based on Docker for Windows Native.
### Installation
- This guide assumes the following:
- you have already installed and are familiar with Laravel, Laradock and PHPStorm.
- you have installed Laravel as a parent of `laradock`. This guide assumes `/c/_dk/laravel`.
### hosts
- Add `laravel` to your hosts file located on Windows 10 at `C:\Windows\System32\drivers\etc\hosts`. It should be set to the IP of your running container. Mine is: `10.0.75.2`
On Windows you can find it by opening Windows `Hyper-V Manager`.
- ![Windows Hyper-V Manager](images/photos/PHPStorm/Settings/WindowsHyperVManager.png)
- [Hosts File Editor](https://github.com/scottlerch/HostsFileEditor) makes it easy to change your hosts file.
- Set `laravel` to your docker host IP. See [Example](images/photos/SimpleHostsEditor/AddHost_laravel.png).
### Firewall
Your PHPStorm will need to be able to receive a connection from PHP xdebug either your running workspace or php-fpm containers on port 9000. This means that your Windows Firewall should either enable connections from the Application PHPStorm OR the port.
- It is important to note that if the Application PHPStorm is NOT enabled in the firewall, you will not be able to recreate a rule to override that.
- Also be aware that if you are installing/upgrade different versions of PHPStorm, you MAY have orphaned references to PHPStorm in your Firewall! You may decide to remove orphaned references however in either case, make sure that they are set to receive public TCP traffic.
#### Edit laradock/docker-compose.yml
Set the following variables:
```
### Workspace Utilities Container ###############
workspace:
build:
context: ./workspace
args:
- INSTALL_XDEBUG=true
- INSTALL_WORKSPACE_SSH=true
...
### PHP-FPM Container #####################
php-fpm:
build:
context: ./php-fpm
args:
- INSTALL_XDEBUG=true
...
```
#### Edit xdebug.ini files
- `laradock/workspace/xdebug.ini`
- `laradock/php-fpm/xdebug.ini`
Set the following variables:
```
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_connect_back=1
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" ]; 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
dcleanlaradockfunction()
{
echo 'Removing ALL containers associated with laradock'
docker ps -a | awk '{ print $1,$2 }' | grep laradock | awk '{print $1}' | xargs -I {} docker rm {}
# remove ALL images associated with laradock_
# does NOT delete laradock/* which are hub images
echo 'Removing ALL images associated with laradock_'
docker images | awk '{print $1,$2,$3}' | grep laradock_ | awk '{print $3}' | xargs -I {} docker rmi {}
echo 'Listing all laradock docker hub images...'
docker images | grep laradock
echo 'dcleanlaradock completed'
}
# associate the above function with an alias
# so can recall/lookup by typing 'alias'
alias dcleanlaradock=dcleanlaradockfunction
```
### Let's get a dial-tone with Laravel
```
# barebones at this point
docker-compose up -d nginx mysql
# run
docker-compose ps
# Should see:
Name Command State Ports
-----------------------------------------------------------------------------------------------------------
laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp
laradock_nginx_1 nginx Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
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
PHP 7.0.9 (cli) (built: Aug 10 2016 19:45:48) ( NTS )
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
`php-fpm` is started and listening for debug info on port 9000.
### PHPStorm Settings
- Here are some settings that are known to work:
- `Settings/BuildDeploymentConnection`
- ![Settings/BuildDeploymentConnection](/images/photos/PHPStorm/Settings/BuildDeploymentConnection.png)
- `Settings/BuildDeploymentConnectionMappings`
- ![Settings/BuildDeploymentConnectionMappings](/images/photos/PHPStorm/Settings/BuildDeploymentConnectionMappings.png)
- `Settings/BuildDeploymentDebugger`
- ![Settings/BuildDeploymentDebugger](/images/photos/PHPStorm/Settings/BuildDeploymentDebugger.png)
- `Settings/EditRunConfigurationRemoteWebDebug`
- ![Settings/EditRunConfigurationRemoteWebDebug](/images/photos/PHPStorm/Settings/EditRunConfigurationRemoteWebDebug.png)
- `Settings/EditRunConfigurationRemoteExampleTestDebug`
- ![Settings/EditRunConfigurationRemoteExampleTestDebug](/images/photos/PHPStorm/Settings/EditRunConfigurationRemoteExampleTestDebug.png)
- `Settings/LangsPHPDebug`
- ![Settings/LangsPHPDebug](/images/photos/PHPStorm/Settings/LangsPHPDebug.png)
- `Settings/LangsPHPInterpreters`
- ![Settings/LangsPHPInterpreters](/images/photos/PHPStorm/Settings/LangsPHPInterpreters.png)
- `Settings/LangsPHPPHPUnit`
- ![Settings/LangsPHPPHPUnit](/images/photos/PHPStorm/Settings/LangsPHPPHPUnit.png)
- `Settings/LangsPHPServers`
- ![Settings/LangsPHPServers](/images/photos/PHPStorm/Settings/LangsPHPServers.png)
- `RemoteHost`
To switch on this view, go to: `Menu/Tools/Deployment/Browse Remote Host`.
- ![RemoteHost](/images/photos/PHPStorm/RemoteHost.png)
- `RemoteWebDebug`
- ![DebugRemoteOn](/images/photos/PHPStorm/DebugRemoteOn.png)
- `EditRunConfigurationRemoteWebDebug`
Go to: `Menu/Run/Edit Configurations`.
- ![EditRunConfigurationRemoteWebDebug](/images/photos/PHPStorm/Settings/EditRunConfigurationRemoteWebDebug.png)
- `EditRunConfigurationRemoteExampleTestDebug`
Go to: `Menu/Run/Edit Configurations`.
- ![EditRunConfigurationRemoteExampleTestDebug](/images/photos/PHPStorm/Settings/EditRunConfigurationRemoteExampleTestDebug.png)
- `WindowsFirewallAllowedApps`
Go to: `Control Panel\All Control Panel Items\Windows Firewall\Allowed apps`.
- ![WindowsFirewallAllowedApps.png](/images/photos/PHPStorm/Settings/WindowsFirewallAllowedApps.png)
- `hosts`
Edit: `C:\Windows\System32\drivers\etc\hosts`.
- ![WindowsFirewallAllowedApps.png](/images/photos/PHPStorm/Settings/hosts.png)
- [Enable xDebug on php-fpm](#enablePhpXdebug)
### Usage
#### Run ExampleTest
- right-click on `tests/ExampleTest.php`
- Select: `Run 'ExampleTest.php'` or `Ctrl+Shift+F10`.
- Should pass!! You just ran a remote test via SSH!
#### Debug ExampleTest
- Open to edit: `tests/ExampleTest.php`
- Add a BreakPoint on line 16: `$this->visit('/')`
- right-click on `tests/ExampleTest.php`
- Select: `Debug 'ExampleTest.php'`.
- Should have stopped at the BreakPoint!! You are now debugging locally against a remote Laravel project via SSH!
- ![Remote Test Debugging Success](/images/photos/PHPStorm/RemoteTestDebuggingSuccess.png)
#### Debug WebSite
- In case xDebug is disabled, from the `laradock` folder run:
`./php-fpm/xdebug start`.
- To switch xdebug off, run:
`./php-fpm/xdebug stop`
- Start Remote Debugging
- ![DebugRemoteOn](/images/photos/PHPStorm/DebugRemoteOn.png)
- Open to edit: `bootstrap/app.php`
- Add a BreakPoint on line 14: `$app = new Illuminate\Foundation\Application(`
- Reload [Laravel Site](http://laravel/)
- Should have stopped at the BreakPoint!! You are now debugging locally against a remote Laravel project via SSH!
- ![Remote Debugging Success](/images/photos/PHPStorm/RemoteDebuggingSuccess.png)
### Let's shell into workspace
Assuming that you are in laradock folder, type:
`ssh -i workspace/insecure_id_rsa -p2222 root@laravel`
**Cha Ching!!!!**
- `workspace/insecure_id_rsa.ppk` may become corrupted. In which case:
- fire up `puttygen`
- import `workspace/insecure_id_rsa`
- save private key to `workspace/insecure_id_rsa.ppk`
#### KiTTY
[Kitty](http://www.9bis.net/kitty/) KiTTY is a fork from version 0.67 of PuTTY.
- Here are some settings that are working for me:
- ![Session](/images/photos/KiTTY/Session.png)
- ![Terminal](/images/photos/KiTTY/Terminal.png)
- ![Window](/images/photos/KiTTY/Window.png)
- ![WindowAppearance](/images/photos/KiTTY/WindowAppearance.png)
- ![Connection](/images/photos/KiTTY/Connection.png)
- ![ConnectionData](/images/photos/KiTTY/ConnectionData.png)
- ![ConnectionSSH](/images/photos/KiTTY/ConnectionSSH.png)
- ![ConnectionSSHAuth](/images/photos/KiTTY/ConnectionSSHAuth.png)
- ![TerminalShell](/images/photos/KiTTY/TerminalShell.png)
<br>
<br>
<br>
<br>
<br>
<a name="Setup remote debugging (PhpStorm)"></a>
## Setup remote debugging for PhpStorm on Linux
- Make sure you have followed the steps above in the [Install Xdebug section](#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 !

View File

@ -1,11 +1,13 @@
--- ---
title: 5. Help & Questions title: Help & Questions
type: index type: index
weight: 5 weight: 4
--- ---
Join the chat room on [Gitter](https://gitter.im/Laradock/laradock) and get help and support from the community. Join the chat room on [Gitter](https://gitter.im/Laradock/laradock) and get help and support from the community.
[![Gitter](https://badges.gitter.im/Laradock/laradock.svg)](https://gitter.im/Laradock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
You can as well can open an [issue](https://github.com/laradock/laradock/issues) on Github (will be labeled as Question) and discuss it with people on [Gitter](https://gitter.im/Laradock/laradock). You can as well can open an [issue](https://github.com/laradock/laradock/issues) on Github (will be labeled as Question) and discuss it with people on [Gitter](https://gitter.im/Laradock/laradock).
@ -41,7 +43,7 @@ Use `http://127.0.0.1` instead of `http://localhost` in your browser.
<br> <br>
## I see an error message containing `address already in use` or `port is already allocated` ## I see an error message containing (address already in use) or (port is already allocated)
Make sure the ports for the services that you are trying to run (22, 80, 443, 3306, etc.) are not being used already by other programs on the host, such as a built in `apache`/`httpd` service or other development tools you have installed. Make sure the ports for the services that you are trying to run (22, 80, 443, 3306, etc.) are not being used already by other programs on the host, such as a built in `apache`/`httpd` service or other development tools you have installed.
@ -85,7 +87,7 @@ This error sometimes happens because your Laravel application isn't running on t
* Option B * 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` 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` ## I get stuck when building nginx on (fetch mirrors.aliyun.com/alpine/v3.5/main/x86_64/APKINDEX.tar.gz)
As stated on [#749](https://github.com/laradock/laradock/issues/749#issuecomment-419652646), Already fixedjust set `CHANGE_SOURCE` to false. As stated on [#749](https://github.com/laradock/laradock/issues/749#issuecomment-419652646), Already fixedjust set `CHANGE_SOURCE` to false.
@ -101,7 +103,7 @@ WORKSPACE_COMPOSER_REPO_PACKAGIST=https://packagist.phpcomposer.com
<br> <br>
## I get `Module build failed: Error: write EPIPE` while compiling react application ## I got (Module build failed: Error: write EPIPE) while compiling react application
When you run `npm build` or `yarn dev` building a react application using webpack with elixir you may receive a `Error: write EPIPE` while processing .jpg images. When you run `npm build` or `yarn dev` building a react application using webpack with elixir you may receive a `Error: write EPIPE` while processing .jpg images.

View File

@ -1,13 +1,18 @@
--- ---
title: 1. Introduction title: Introduction
type: index type: index
weight: 1 weight: 1
--- ---
<b>Laradock is a full PHP development environment based on Docker.</b> <b>Laradock</b> is a full PHP development environment for Docker.
Supporting a variety of common services, all pre-configured to provide a full PHP development environment. It supports a variety of common services, all pre-configured to provide a ready PHP development environment.
<br>
---
### Use Docker First - Then Learn About It Later!</q>
---
<a name="features"></a> <a name="features"></a>
## Features ## Features
@ -26,74 +31,9 @@ Supporting a variety of common services, all pre-configured to provide a full PH
- Everything is visible and editable. - Everything is visible and editable.
- Fast Images Builds. - Fast Images Builds.
<br>
---
### Use Docker First - Then Learn About It Later</q>
---
<a name="sponsors"></a>
## Sponsors
<a href="https://opencollective.com/laradock/sponsor/0/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/0/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/1/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/1/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/2/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/2/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/3/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/3/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/4/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/4/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/5/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/5/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/6/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/6/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/7/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/7/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/8/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/8/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/9/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/9/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/10/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/10/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/11/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/11/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/12/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/12/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/13/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/13/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/14/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/14/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/15/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/15/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/16/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/16/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/17/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/17/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/18/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/18/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/19/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/19/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/20/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/20/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/21/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/21/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/22/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/22/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/23/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/23/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/24/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/24/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/25/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/25/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/26/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/26/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/27/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/27/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/28/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/28/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/29/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/29/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/30/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/30/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/31/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/31/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/32/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/32/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/33/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/33/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/34/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/34/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/35/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/35/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/36/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/36/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/37/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/37/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/38/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/38/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/39/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/39/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/40/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/40/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/41/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/41/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/42/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/42/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/43/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/43/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/44/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/44/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/45/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/45/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/46/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/46/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/47/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/47/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/48/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/48/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/49/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/49/avatar.svg?requireActive=false"></a>
Support Laradock with your [organization](https://opencollective.com/laradock/contribute/).
<br>
Your logo will show up on the [github repository](https://github.com/laradock/laradock/) index page and the [documentation](http://laradock.io/) main page.
<br>
For more info contact <a href = "mailto: support@laradock.io">support@laradock.io</a>.
<br>
## Quick Overview ## Quick Overview
@ -136,7 +76,7 @@ That's it! enjoy :)
<a name="Supported-Containers"></a> <a name="Supported-Containers"></a>
## Supported Software (Docker Images) ## Supported Services
> Laradock, adheres to the 'separation of concerns' principle, thus it runs each software on its own Docker Container. > Laradock, adheres to the 'separation of concerns' principle, thus it runs each software on its own Docker Container.
> You can turn On/Off as many instances as you want without worrying about the configurations. > You can turn On/Off as many instances as you want without worrying about the configurations.
@ -275,7 +215,7 @@ You can choose, which tools to install in your workspace container and other con
<a name="Chat"></a> <a name="Chat"></a>
## Chat with us ## Chat with us
You are welcome to join our chat room on Gitter. Feel free to join us 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) [![Gitter](https://badges.gitter.im/Laradock/laradock.svg)](https://gitter.im/Laradock/laradock?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
@ -300,28 +240,28 @@ Laradock exists thanks to all the people who contribute.
<br> <br>
<strong>Bo-Yi Wu</strong> <strong>Bo-Yi Wu</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@appleboy</a> <a href="https://github.com/appleboy">@appleboy</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/philtrep.png?s=150"> <img width="125" height="125" src="https://github.com/philtrep.png?s=150">
<br> <br>
<strong>Philippe Trépanier</strong> <strong>Philippe Trépanier</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@philtrep</a> <a href="https://github.com/philtrep">@philtrep</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/mikeerickson.png?s=150"> <img width="125" height="125" src="https://github.com/mikeerickson.png?s=150">
<br> <br>
<strong>Mike Erickson</strong> <strong>Mike Erickson</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@mikeerickson</a> <a href="https://github.com/mikeerickson">@mikeerickson</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/zeroc0d3.png?s=150"> <img width="125" height="125" src="https://github.com/zeroc0d3.png?s=150">
<br> <br>
<strong>Dwi Fahni Denni</strong> <strong>Dwi Fahni Denni</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@zeroc0d3</a> <a href="https://github.com/zeroc0d3">@zeroc0d3</a>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -330,35 +270,35 @@ Laradock exists thanks to all the people who contribute.
<br> <br>
<strong>Thor Erik</strong> <strong>Thor Erik</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@thorerik</a> <a href="https://github.com/thorerik">@thorerik</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/winfried-van-loon.png?s=150"> <img width="125" height="125" src="https://github.com/winfried-van-loon.png?s=150">
<br> <br>
<strong>Winfried van Loon</strong> <strong>Winfried van Loon</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@winfried-van-loon</a> <a href="https://github.com/winfried-van-loon">@winfried-van-loon</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/sixlive.png?s=150"> <img width="125" height="125" src="https://github.com/sixlive.png?s=150">
<br> <br>
<strong>TJ Miller</strong> <strong>TJ Miller</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@sixlive</a> <a href="https://github.com/sixlive">@sixlive</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/bestlong.png?s=150"> <img width="125" height="125" src="https://github.com/bestlong.png?s=150">
<br> <br>
<strong>Yu-Lung Shao (Allen)</strong> <strong>Yu-Lung Shao (Allen)</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@bestlong</a> <a href="https://github.com/bestlong">@bestlong</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/urukalo.png?s=150"> <img width="125" height="125" src="https://github.com/urukalo.png?s=150">
<br> <br>
<strong>Milan Urukalo</strong> <strong>Milan Urukalo</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@urukalo</a> <a href="https://github.com/urukalo">@urukalo</a>
</td> </td>
</tr> </tr>
<tr> <tr>
@ -367,28 +307,28 @@ Laradock exists thanks to all the people who contribute.
<br> <br>
<strong>Vince Chu</strong> <strong>Vince Chu</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@vwchu</a> <a href="https://github.com/vwchu">@vwchu</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/zuohuadong.png?s=150"> <img width="125" height="125" src="https://github.com/zuohuadong.png?s=150">
<br> <br>
<strong>Huadong Zuo</strong> <strong>Huadong Zuo</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@zuohuadong</a> <a href="https://github.com/zuohuadong">@zuohuadong</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/lanphan.png?s=150"> <img width="125" height="125" src="https://github.com/lanphan.png?s=150">
<br> <br>
<strong>Lan Phan</strong> <strong>Lan Phan</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@lanphan</a> <a href="https://github.com/lanphan">@lanphan</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://github.com/ahkui.png?s=150"> <img width="125" height="125" src="https://github.com/ahkui.png?s=150">
<br> <br>
<strong>Ahkui</strong> <strong>Ahkui</strong>
<br> <br>
<a href="https://github.com/Mahmoudz">@ahkui</a> <a href="https://github.com/ahkui">@ahkui</a>
</td> </td>
<td align="center" valign="top"> <td align="center" valign="top">
<img width="125" height="125" src="https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/join-us.png"> <img width="125" height="125" src="https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/join-us.png">
@ -412,14 +352,129 @@ Laradock exists thanks to all the people who contribute.
Contribute and help us sustain the project. Contribute and help us sustain the project.
<b>Option 1:</b> Donate directly to [Paypal](https://paypal.me/mzmmzz). <b>Option 1:</b> Donate via [Paypal](https://paypal.me/mzmmzz).
<br>
<b>Option 2:</b> Become a Sponsor via [Github Sponsors](https://github.com/sponsors/Mahmoudz).
<br>
<b>Option 3:</b> Become a Sponsor/Backer via [Open Collective](https://opencollective.com/laradock/contribute).
<br>
<b>Option 4:</b> Become a [Patreon](https://www.patreon.com/zalt).
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/mzmmzz) <a name="sponsors"></a>
## Sponsors
<b>Option 2:</b> Support us via [BeerPay](https://beerpay.io/laradock/laradock). <a href="https://opencollective.com/laradock/sponsor/0/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/0/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/1/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/1/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/2/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/2/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/3/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/3/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/4/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/4/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/5/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/5/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/6/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/6/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/7/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/7/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/8/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/8/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/9/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/9/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/10/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/10/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/11/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/11/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/12/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/12/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/13/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/13/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/14/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/14/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/15/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/15/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/16/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/16/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/17/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/17/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/18/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/18/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/19/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/19/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/20/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/20/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/21/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/21/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/22/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/22/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/23/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/23/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/24/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/24/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/25/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/25/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/26/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/26/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/27/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/27/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/28/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/28/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/29/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/29/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/30/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/30/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/31/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/31/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/32/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/32/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/33/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/33/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/34/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/34/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/35/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/35/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/36/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/36/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/37/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/37/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/38/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/38/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/39/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/39/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/40/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/40/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/41/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/41/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/42/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/42/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/43/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/43/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/44/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/44/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/45/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/45/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/46/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/46/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/47/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/47/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/48/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/48/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/sponsor/49/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/sponsor/49/avatar.svg?requireActive=false"></a>
[![Beerpay](https://beerpay.io/laradock/laradock/badge.svg?style=flat)](https://beerpay.io/laradock/laradock) Support Laradock with your [organization](https://opencollective.com/laradock/contribute/).
<br>
Your logo will show up on the [github repository](https://github.com/laradock/laradock/) index page and the [documentation](http://laradock.io/) main page.
<br>
For more info contact <a href = "mailto: support@laradock.io">support@laradock.io</a>.
<b>Option 3:</b> Become a backer on [Open Collective](https://opencollective.com/laradock/contribute). <a name="Backers"></a>
## Backers
<a href="https://opencollective.com/laradock/backer/0/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/0/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/1/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/1/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/2/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/2/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/3/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/3/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/4/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/4/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/5/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/5/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/6/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/6/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/7/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/7/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/8/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/8/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/9/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/9/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/10/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/10/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/11/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/11/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/12/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/12/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/13/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/13/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/14/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/14/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/15/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/15/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/16/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/16/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/17/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/17/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/18/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/18/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/19/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/19/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/20/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/20/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/21/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/21/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/22/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/22/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/23/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/23/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/24/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/24/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/25/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/25/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/26/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/26/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/27/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/27/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/28/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/28/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/29/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/29/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/30/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/30/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/31/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/31/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/32/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/32/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/33/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/33/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/34/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/34/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/35/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/35/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/36/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/36/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/37/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/37/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/38/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/38/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/39/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/39/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/40/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/40/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/41/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/41/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/42/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/42/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/43/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/43/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/44/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/44/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/45/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/45/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/46/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/46/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/47/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/47/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/48/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/48/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/49/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/49/avatar.svg?requireActive=false"></a>
<br>
<a href="https://opencollective.com/laradock"><img src="https://opencollective.com/laradock/backer.svg?width=890"></a>

View File

@ -1,7 +0,0 @@
---
title: 8. License
type: index
weight: 8
---
[MIT License](https://github.com/laradock/laradock/blob/master/LICENSE) (MIT)

View File

@ -1,19 +1,49 @@
--- ---
title: 6. Related Projects title: Related Projects
type: index type: index
weight: 6 weight: 5
--- ---
Laradock related projects: ## Laradock Related Projects
* [Laradock CLI](https://github.com/lorinlee/laradock-cli) by [LorinLee](https://github.com/lorinlee)
* [Laradock Env](https://github.com/bagart/laradock_env) by [BAGArt](https://github.com/bagart)
* [Klaradock](https://github.com/poyhsiao/Klaradock) by [Kim Hsiao](https://github.com/poyhsiao)
* [Ansible Laradock Kubernetes](https://github.com/sifat-rahim/ansible-laradock-kubernetes) by [Sifat Rahim](https://github.com/sifat-rahim)
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. * [Docker Stacks](https://github.com/sfx101/docker-stacks): A GUI for managing Laradock. (by [Subhadip Naskar](https://github.com/sfx101))
* [Laradock CLI](https://github.com/lorinlee/laradock-cli): A CLI for managing Laradock. (by [Lorin Lee](https://github.com/lorinlee))
* [Laradock CLI](https://github.com/loonpwn/laradock-cli): A CLI for managing Laradock. (by [Harlan Wilton](https://github.com/loonpwn))
* [Ansible Laradock Kubernetes](https://github.com/sifat-rahim/ansible-laradock-kubernetes): Ansible playbook to setup docker containers for Laravel apps using Laradock. (by [Sifat Rahim](https://github.com/sifat-rahim))
* [Monitor Laradock](https://github.com/zeroc0d3/monitor-laradock): Laradock Monitoring Tools (using Grafana). (by [Dwi Fahni Denni](https://github.com/zeroc0d3))
* [Laradock Manager](https://github.com/Lyimmi/laradock-manager): A simple app for managing Laradock containers. Made with wails.app (go & vue.js & vuetify). (by [Zámbó Levente](https://github.com/Lyimmi))
* [Laradock Env](https://github.com/bagart/laradock_env): A wrapper with commands for managing Laradock. (by [BAG Art](https://github.com/bagart))
* [Lara Query](https://github.com/TanisukeGoro/laraQuery): Easy Laradock CLI. (by [Okita kamegoro](https://github.com/TanisukeGoro))
* [Laradock CLI](https://github.com/tonysm/laradock-cli): Laradock CLI helper. (by [Tony Messias](https://github.com/Tonysm))
* [Laradock Lite](https://github.com/yangliuyu/laradock-lite): A Docker based laravel development environment with minimal dependencies. (by [Liu Yang](https://github.com/yangliuyu))
* [Laradock Makefile](https://github.com/bazavlukd/laradock-makefile): Makefile with some useful commands for Laradock. (by [Dmitry Bazavluk](https://github.com/bazavlukd))
* [Laradock Build](https://github.com/dockerframework/laradock-build): Docker builder & running script for Laradock. (by [Docker Framework](https://github.com/dockerframework))
* [Laravel Laradock PHPStorm](https://github.com/LarryEitel/laravel-laradock-phpstorm): Guide for configuring PHPStorm for remote debugging with Laravel & Laradock. (by [Larry Eitel](https://github.com/LarryEitel))
* [Laradock Crudbooster](https://github.com/nutellinoit/laradock-crudbooster): Docker compose & Kubernetes solution to build apps with crudbooster & Laradock. (by [Samuele Chiocca](https://github.com/nutellinoit))
* [Laradock Sample](https://github.com/tadaken3/laradock-sample): Install Laravel with Laradock. (by [Tadaken3](https://github.com/tadaken3))
* [Stylemix's Laradock](https://github.com/stylemix/laradock): Alternate laradock for multiproject purpose. (by [Stylemix LLC](https://github.com/stylemix))
## Inspired by Laradock
* [Dockery](https://github.com/taufek/dockery): Laradock for Ruby. (by [Taufek Johar](https://github.com/Taufek))
* [RubyDev Dock](https://github.com/scudelletti/rubydev-dock): Laradock for Ruby. (by [Diogo Scudelletti](https://github.com/scudelletti))
* [NoDock](https://github.com/Osedea/nodock): Laradock for NodeJS. (by [Osedea](https://github.com/Osedea))
* [Laradock Multi](https://github.com/bagart/laradock-multi): Laradock for PHP & NodeJS. (by [BAG Art](https://github.com/bagart))
* [Wordpress Laradock](https://github.com/shov/wordpress-laradock): Laradock for Wordpress. (by [Alexandr Shevchenko](https://github.com/shov))
* [Yii2 Laradock](https://github.com/ydatech/yii2-laradock): Laradock for Yii2. (by [Yuda Sukmana](https://github.com/ydatech))
* [MageDock](https://github.com/ojhaujjwal/magedock): Laradock for Magento. (by [Ujjwal Ojha](https://github.com/ojhaujjwal))
* [Docker Codeigniter](https://github.com/sebastianlzy/docker-codeigniter): Laradock for Codeigniter. (by [Sebastian](https://github.com/sebastianlzy))
* [Klaradock](https://github.com/poyhsiao/Klaradock): A customized Laradock. (by [Kim Hsiao](https://github.com/poyhsiao))
* [Laravel Boilerplate](https://github.com/casivaagustin/laravel-boilerplate): A boilerplate with support for JWT. (by [Casiva Agustin](https://github.com/casivaagustin))
<br><br>
> Feel free to submit a PR for listing your project here.

View File

@ -36,6 +36,7 @@
{{ with .Site.Params.copyright }} {{ with .Site.Params.copyright }}
&copy; {{ $.Now.Format "2006" }} {{ . }} &ndash; &copy; {{ $.Now.Format "2006" }} {{ . }} &ndash;
{{ end }} {{ end }}
<br><br>
Documentation built with Documentation built with
<a href="https://www.gohugo.io" target="_blank">Hugo</a> <a href="https://www.gohugo.io" target="_blank">Hugo</a>
using the using the

View File

@ -24,20 +24,6 @@
<article class="article"> <article class="article">
<div class="wrapper"> <div class="wrapper">
<!-- ------------------------------------------------------------------------- -->
<!-- Google Ads -->
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<!-- Laradock Horizontal -->
<ins class="adsbygoogle"
style="display:inline-block;width:890px;height:100px"
data-ad-client="ca-pub-9826129398689742"
data-ad-slot="2340256024"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script>
<!-- ------------------------------------------------------------------------- -->
<h1>{{ .Title }} {{ if .IsDraft }} (Draft){{ end }}</h1> <h1>{{ .Title }} {{ if .IsDraft }} (Draft){{ end }}</h1>
{{ .Content }} {{ .Content }}
@ -46,6 +32,7 @@
{{ with .Site.Params.copyright }} {{ with .Site.Params.copyright }}
&copy; {{ $.Now.Format "2006" }} {{ . }} &ndash; &copy; {{ $.Now.Format "2006" }} {{ . }} &ndash;
{{ end }} {{ end }}
<br><br>
Documentation built with Documentation built with
<a href="https://www.gohugo.io" target="_blank">Hugo</a> <a href="https://www.gohugo.io" target="_blank">Hugo</a>
using the using the

View File

@ -25,8 +25,6 @@
<article class="article"> <article class="article">
<div class="wrapper"> <div class="wrapper">
<!-- Wrapper arround google ads for seedanddew -->
<div class='snd-ad'>
<!-- ------------------------------------------------------------------------- --> <!-- ------------------------------------------------------------------------- -->
<!-- Google Ads --> <!-- Google Ads -->
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
@ -39,10 +37,9 @@
(adsbygoogle = window.adsbygoogle || []).push({}); (adsbygoogle = window.adsbygoogle || []).push({});
</script> </script>
<!-- ------------------------------------------------------------------------- --> <!-- ------------------------------------------------------------------------- -->
</div>
<br><br><br> <br><br><br>
<img src="https://raw.githubusercontent.com/laradock/laradock/master/.github/home-page-images/laradock-logo.jpg" alt="laradock logo"> <img src="images/laradock-full-logo.jpg" alt="laradock logo">
{{ range where .Site.Pages "Type" "index" }} {{ range where .Site.Pages "Type" "index" }}
<br><br><br><br><br><br> <br><br><br><br><br><br>
@ -57,6 +54,7 @@
{{ with .Site.Params.copyright }} {{ with .Site.Params.copyright }}
&copy; {{ $.Now.Format "2006" }} {{ . }} &ndash; &copy; {{ $.Now.Format "2006" }} {{ . }} &ndash;
{{ end }} {{ end }}
<br><br>
Documentation built with Documentation built with
<a href="https://www.gohugo.io" target="_blank">Hugo</a> <a href="https://www.gohugo.io" target="_blank">Hugo</a>
using the using the

View File

@ -12,17 +12,23 @@
<title>{{ .Title }}{{ if not .IsHome }} - {{ .Site.Title }}{{ end }}</title> <title>{{ .Title }}{{ if not .IsHome }} - {{ .Site.Title }}{{ end }}</title>
{{ .Hugo.Generator }} {{ .Hugo.Generator }}
{{ with .Site.Params.description }} {{ with .Site.Params.description }}<meta name="description" content="{{ . }}">{{ end }}
<meta name="description" content="{{ . }}">
{{ end }}
<link rel="canonical" href="{{ .Permalink }}"> <link rel="canonical" href="{{ .Permalink }}">
{{ with .Site.Params.author }} {{ with .Site.Params.author }}<meta name="author" content="{{ . }}">{{ end }}
<meta name="author" content="{{ . }}">
{{ end }}
<meta property="og:url" content="{{ .Permalink }}"> <meta property="og:url" content="{{ .Permalink }}">
<meta property="og:type" content="website">
{{ with .Site.Title }}<meta property="og:site_name" content="{{ . }}">{{ end }}
{{ with .Site.Params.description }}<meta property="og:description" content="{{ . }}">{{ end }}
{{ with .Site.Title }}<meta property="og:title" content="{{ . }}">{{ end }} {{ with .Site.Title }}<meta property="og:title" content="{{ . }}">{{ end }}
{{ with .Site.Params.logo }}<meta property="og:image" content="{{ . | absURL }}">{{ end }} {{ with .Site.Params.logo }}<meta property="og:image" content="{{ . | absURL }}">{{ end }}
<meta name="twitter:card" content="summary">
<meta name="twitter:site" content="@Mahmoud_Zalt">
{{ with .Site.Title }}<meta name="twitter:title" content="{{ . }}">{{ end }}
{{ with .Site.Params.description }}<meta name="twitter:description" content="{{ . }}">{{ end }}
{{ with .Site.Params.logo }}<meta name="twitter:image" content="{{ . | absURL }}">{{ end }}
{{ with .Site.Title }}<meta name="apple-mobile-web-app-title" content="{{ . }}">{{ end }} {{ with .Site.Title }}<meta name="apple-mobile-web-app-title" content="{{ . }}">{{ end }}
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
@ -30,6 +36,25 @@
<link rel="shortcut icon" type="image/x-icon" href="{{ with .Site.Params.favicon }}{{ . | absURL }}{{ else }}{{ "images/favicon.ico" | absURL }}{{ end }}"> <link rel="shortcut icon" type="image/x-icon" href="{{ with .Site.Params.favicon }}{{ . | absURL }}{{ else }}{{ "images/favicon.ico" | absURL }}{{ end }}">
<link rel="icon" type="image/x-icon" href="{{ with .Site.Params.favicon }}{{ . | absURL }}{{ else }}{{ "images/favicon.ico" | absURL }}{{ end }}"> <link rel="icon" type="image/x-icon" href="{{ with .Site.Params.favicon }}{{ . | absURL }}{{ else }}{{ "images/favicon.ico" | absURL }}{{ end }}">
<!-- <link rel="icon" type="image/png" sizes="192x192" href="images/favicons/android-icon-192x192.png">-->
<!-- <link rel="icon" type="image/png" sizes="32x32" href="images/favicons/favicon-32x32.png">-->
<!-- <link rel="icon" type="image/png" sizes="96x96" href="images/favicons/favicon-96x96.png">-->
<!-- <link rel="icon" type="image/png" sizes="16x16" href="images/favicons/favicon-16x16.png">-->
<link rel="apple-touch-icon" sizes="57x57" href="images/favicons/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="images/favicons/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="images/favicons/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="images/favicons/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="images/favicons/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="images/favicons/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="images/favicons/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="images/favicons/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="images/favicons/apple-icon-180x180.png">
<link rel="manifest" href="images/favicons/manifest.json">
<meta name="msapplication-TileColor" content="#7e57c2">
<meta name="msapplication-TileImage" content="images/favicons/ms-icon-144x144.png">
<meta name="theme-color" content="#7e57c2">
<style> <style>
@font-face { @font-face {
font-family: 'Icon'; font-family: 'Icon';
@ -70,27 +95,6 @@
{{ end }} {{ end }}
<script src="{{ "javascripts/modernizr.js" | absURL }}"></script> <script src="{{ "javascripts/modernizr.js" | absURL }}"></script>
<script>
// ------------------------------------------------------------
// seedanddew.com integration
var SeedAndDewConfig = {};
(function() {
SeedAndDewConfig['adClass'] = "snd-ad";
/* * * DON'T EDIT BELOW THIS LINE * * */
SeedAndDewConfig['projectId'] = 'd69f3ea2-1e30-44c7-bd2a-87686c0136e6';
SeedAndDewConfig['loadStartTime'] = performance.now();
SeedAndDewConfig['apiVersion'] = '2018-05-28'
SeedAndDewConfig['sessionId'] = Math.random().toString(36).substring(2, 15);
var snd = document.createElement('script');
snd.type = 'text/javascript';
snd.async = true;
snd.src = 'https://www.seedanddew.com/static/embed.min.js';
(document.getElementsByTagName('head')[0] ||
document.getElementsByTagName('body')[0]).appendChild(snd);
})();
// ------------------------------------------------------------
</script>
{{ with .RSSLink }} {{ with .RSSLink }}
<link href="{{ . }}" rel="alternate" type="application/rss+xml" title="{{ $.Site.Title }}" /> <link href="{{ . }}" rel="alternate" type="application/rss+xml" title="{{ $.Site.Title }}" />
<link href="{{ . }}" rel="feed" type="application/rss+xml" title="{{ $.Site.Title }}" /> <link href="{{ . }}" rel="feed" type="application/rss+xml" title="{{ $.Site.Title }}" />

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -0,0 +1,2 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig><msapplication><tile><square70x70logo src="/ms-icon-70x70.png"/><square150x150logo src="/ms-icon-150x150.png"/><square310x310logo src="/ms-icon-310x310.png"/><TileColor>#ffffff</TileColor></tile></msapplication></browserconfig>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -0,0 +1,41 @@
{
"name": "App",
"icons": [
{
"src": "\/android-icon-36x36.png",
"sizes": "36x36",
"type": "image\/png",
"density": "0.75"
},
{
"src": "\/android-icon-48x48.png",
"sizes": "48x48",
"type": "image\/png",
"density": "1.0"
},
{
"src": "\/android-icon-72x72.png",
"sizes": "72x72",
"type": "image\/png",
"density": "1.5"
},
{
"src": "\/android-icon-96x96.png",
"sizes": "96x96",
"type": "image\/png",
"density": "2.0"
},
{
"src": "\/android-icon-144x144.png",
"sizes": "144x144",
"type": "image\/png",
"density": "3.0"
},
{
"src": "\/android-icon-192x192.png",
"sizes": "192x192",
"type": "image\/png",
"density": "4.0"
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 KiB

View File

@ -23,7 +23,7 @@
<h4 align="center" style="color:#7d58c2">Use Docker First - Then Learn About It Later</h4> <h4 align="center" style="color:#7d58c2">Use Docker First - Then Learn About It Later!</h4>
<p align="center"> <p align="center">
<a href="http://laradock.io"> <a href="http://laradock.io">
@ -33,6 +33,15 @@
--- ---
<a name="Chat"></a>
## Chat with us
Feel free to join us 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)
---
## Awesome People ## Awesome People
Laradock exists thanks to all the people who contribute. Laradock exists thanks to all the people who contribute.
@ -162,17 +171,13 @@ Laradock exists thanks to all the people who contribute.
Contribute and help us sustain the project. Contribute and help us sustain the project.
<b>Option 1:</b> Donate directly to [Paypal](https://paypal.me/mzmmzz). <b>Option 1:</b> Donate via [Paypal](https://paypal.me/mzmmzz).
<br>
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/mzmmzz) <b>Option 2:</b> Become a Sponsor via [Github Sponsors](https://github.com/sponsors/Mahmoudz).
<br>
<b>Option 2:</b> Support us via [BeerPay](https://beerpay.io/laradock/laradock). <b>Option 3:</b> Become a Sponsor/Backer via [Open Collective](https://opencollective.com/laradock/contribute).
<br>
[![Beerpay](https://beerpay.io/laradock/laradock/badge.svg?style=flat)](https://beerpay.io/laradock/laradock) <b>Option 4:</b> Become a [Patreon](https://www.patreon.com/zalt).
<b>Option 3:</b> Become a backer on [Open Collective](https://opencollective.com/laradock/contribute).
<a href="https://opencollective.com/laradock"><img src="https://opencollective.com/laradock/backer.svg?width=890"></a>
## Sponsors ## Sponsors
@ -233,6 +238,60 @@ Your logo will show up on the [github repository](https://github.com/laradock/la
<br> <br>
For more info contact <a href = "mailto: support@laradock.io">support@laradock.io</a>. For more info contact <a href = "mailto: support@laradock.io">support@laradock.io</a>.
## Backers
<a href="https://opencollective.com/laradock/backer/0/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/0/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/1/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/1/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/2/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/2/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/3/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/3/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/4/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/4/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/5/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/5/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/6/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/6/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/7/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/7/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/8/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/8/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/9/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/9/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/10/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/10/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/11/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/11/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/12/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/12/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/13/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/13/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/14/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/14/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/15/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/15/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/16/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/16/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/17/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/17/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/18/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/18/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/19/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/19/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/20/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/20/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/21/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/21/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/22/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/22/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/23/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/23/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/24/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/24/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/25/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/25/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/26/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/26/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/27/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/27/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/28/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/28/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/29/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/29/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/30/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/30/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/31/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/31/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/32/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/32/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/33/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/33/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/34/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/34/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/35/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/35/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/36/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/36/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/37/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/37/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/38/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/38/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/39/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/39/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/40/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/40/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/41/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/41/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/42/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/42/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/43/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/43/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/44/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/44/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/45/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/45/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/46/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/46/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/47/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/47/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/48/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/48/avatar.svg?requireActive=false"></a>
<a href="https://opencollective.com/laradock/backer/49/website?requireActive=false" target="_blank"><img src="https://opencollective.com/laradock/backer/49/avatar.svg?requireActive=false"></a>
## License ## License
[MIT License](https://github.com/laradock/laradock/blob/master/LICENSE) [MIT](https://github.com/laradock/laradock/blob/master/LICENSE) © Mahmoud Zalt

View File

@ -1,4 +1,4 @@
FROM webdevops/apache:ubuntu-16.04 FROM webdevops/apache:ubuntu-18.04
LABEL maintainer="Eric Pfeiffer <computerfr33k@users.noreply.github.com>" LABEL maintainer="Eric Pfeiffer <computerfr33k@users.noreply.github.com>"

View File

@ -49,7 +49,7 @@ volumes:
driver: ${VOLUMES_DRIVER} driver: ${VOLUMES_DRIVER}
graylog: graylog:
driver: ${VOLUMES_DRIVER} driver: ${VOLUMES_DRIVER}
dind: docker-in-docker:
driver: ${VOLUMES_DRIVER} driver: ${VOLUMES_DRIVER}
services: services:
@ -60,16 +60,19 @@ services:
context: ./workspace context: ./workspace
args: args:
- CHANGE_SOURCE=${CHANGE_SOURCE} - CHANGE_SOURCE=${CHANGE_SOURCE}
- SHELL_OH_MY_ZSH=${SHELL_OH_MY_ZSH}
- UBUNTU_SOURCE=${UBUNTU_SOURCE} - UBUNTU_SOURCE=${UBUNTU_SOURCE}
- BASE_IMAGE_TAG_PREFIX=${WORKSPACE_BASE_IMAGE_TAG_PREFIX}
- LARADOCK_PHP_VERSION=${PHP_VERSION} - LARADOCK_PHP_VERSION=${PHP_VERSION}
- LARADOCK_PHALCON_VERSION=${PHALCON_VERSION} - LARADOCK_PHALCON_VERSION=${PHALCON_VERSION}
- INSTALL_SUBVERSION=${WORKSPACE_INSTALL_SUBVERSION} - INSTALL_SUBVERSION=${WORKSPACE_INSTALL_SUBVERSION}
- INSTALL_BZ2=${WORKSPACE_INSTALL_BZ2}
- INSTALL_GMP=${WORKSPACE_INSTALL_GMP}
- INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG} - INSTALL_XDEBUG=${WORKSPACE_INSTALL_XDEBUG}
- INSTALL_PCOV=${WORKSPACE_INSTALL_PCOV} - INSTALL_PCOV=${WORKSPACE_INSTALL_PCOV}
- INSTALL_PHPDBG=${WORKSPACE_INSTALL_PHPDBG} - INSTALL_PHPDBG=${WORKSPACE_INSTALL_PHPDBG}
- INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE} - INSTALL_BLACKFIRE=${INSTALL_BLACKFIRE}
- INSTALL_SSH2=${WORKSPACE_INSTALL_SSH2} - INSTALL_SSH2=${WORKSPACE_INSTALL_SSH2}
- INSTALL_GMP=${WORKSPACE_INSTALL_GMP}
- INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP} - INSTALL_SOAP=${WORKSPACE_INSTALL_SOAP}
- INSTALL_XSL=${WORKSPACE_INSTALL_XSL} - INSTALL_XSL=${WORKSPACE_INSTALL_XSL}
- INSTALL_LDAP=${WORKSPACE_INSTALL_LDAP} - INSTALL_LDAP=${WORKSPACE_INSTALL_LDAP}
@ -84,6 +87,7 @@ services:
- NVM_NODEJS_ORG_MIRROR=${WORKSPACE_NVM_NODEJS_ORG_MIRROR} - NVM_NODEJS_ORG_MIRROR=${WORKSPACE_NVM_NODEJS_ORG_MIRROR}
- INSTALL_NODE=${WORKSPACE_INSTALL_NODE} - INSTALL_NODE=${WORKSPACE_INSTALL_NODE}
- NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY} - NPM_REGISTRY=${WORKSPACE_NPM_REGISTRY}
- INSTALL_PNPM=${WORKSPACE_INSTALL_PNPM}
- INSTALL_YARN=${WORKSPACE_INSTALL_YARN} - INSTALL_YARN=${WORKSPACE_INSTALL_YARN}
- INSTALL_NPM_GULP=${WORKSPACE_INSTALL_NPM_GULP} - INSTALL_NPM_GULP=${WORKSPACE_INSTALL_NPM_GULP}
- INSTALL_NPM_BOWER=${WORKSPACE_INSTALL_NPM_BOWER} - INSTALL_NPM_BOWER=${WORKSPACE_INSTALL_NPM_BOWER}
@ -125,6 +129,8 @@ services:
- INSTALL_AST=${WORKSPACE_INSTALL_AST} - INSTALL_AST=${WORKSPACE_INSTALL_AST}
- INSTALL_YAML=${WORKSPACE_INSTALL_YAML} - INSTALL_YAML=${WORKSPACE_INSTALL_YAML}
- INSTALL_MAILPARSE=${WORKSPACE_INSTALL_MAILPARSE} - INSTALL_MAILPARSE=${WORKSPACE_INSTALL_MAILPARSE}
- INSTALL_GIT_PROMPT=${WORKSPACE_INSTALL_GIT_PROMPT}
- INSTALL_XMLRPC=${WORKSPACE_INSTALL_XMLRPC}
- PUID=${WORKSPACE_PUID} - PUID=${WORKSPACE_PUID}
- PGID=${WORKSPACE_PGID} - PGID=${WORKSPACE_PGID}
- CHROME_DRIVER_VERSION=${WORKSPACE_CHROME_DRIVER_VERSION} - CHROME_DRIVER_VERSION=${WORKSPACE_CHROME_DRIVER_VERSION}
@ -138,21 +144,31 @@ services:
- INSTALL_POWERLINE=${WORKSPACE_INSTALL_POWERLINE} - INSTALL_POWERLINE=${WORKSPACE_INSTALL_POWERLINE}
- INSTALL_SUPERVISOR=${WORKSPACE_INSTALL_SUPERVISOR} - INSTALL_SUPERVISOR=${WORKSPACE_INSTALL_SUPERVISOR}
- INSTALL_FFMPEG=${WORKSPACE_INSTALL_FFMPEG} - INSTALL_FFMPEG=${WORKSPACE_INSTALL_FFMPEG}
- INSTALL_WKHTMLTOPDF=${WORKSPACE_INSTALL_WKHTMLTOPDF}
- INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL} - INSTALL_GNU_PARALLEL=${WORKSPACE_INSTALL_GNU_PARALLEL}
- http_proxy - http_proxy
- https_proxy - https_proxy
- no_proxy - no_proxy
volumes: volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
- docker-in-docker:/certs/client
- ./php-worker/supervisord.d:/etc/supervisord.d - ./php-worker/supervisord.d:/etc/supervisord.d
extra_hosts: extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}" - "dockerhost:${DOCKER_HOST_IP}"
ports: ports:
- "${WORKSPACE_SSH_PORT}:22" - "${WORKSPACE_SSH_PORT}:22"
- "${WORKSPACE_BROWSERSYNC_HOST_PORT}:3000"
- "${WORKSPACE_BROWSERSYNC_UI_HOST_PORT}:3001"
- "${WORKSPACE_VUE_CLI_SERVE_HOST_PORT}:8080"
- "${WORKSPACE_VUE_CLI_UI_HOST_PORT}:8000"
- "${WORKSPACE_ANGULAR_CLI_SERVE_HOST_PORT}:4200"
tty: true tty: true
environment: environment:
- PHP_IDE_CONFIG=${PHP_IDE_CONFIG} - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
- DOCKER_HOST=tcp://docker-in-docker:2375 - DOCKER_HOST=tcp://docker-in-docker:2376
- DOCKER_TLS_VERIFY=1
- DOCKER_TLS_CERTDIR=/certs
- DOCKER_CERT_PATH=/certs/client
networks: networks:
- frontend - frontend
- backend - backend
@ -165,8 +181,11 @@ services:
context: ./php-fpm context: ./php-fpm
args: args:
- CHANGE_SOURCE=${CHANGE_SOURCE} - CHANGE_SOURCE=${CHANGE_SOURCE}
- BASE_IMAGE_TAG_PREFIX=${PHP_FPM_BASE_IMAGE_TAG_PREFIX}
- LARADOCK_PHP_VERSION=${PHP_VERSION} - LARADOCK_PHP_VERSION=${PHP_VERSION}
- LARADOCK_PHALCON_VERSION=${PHALCON_VERSION} - LARADOCK_PHALCON_VERSION=${PHALCON_VERSION}
- INSTALL_BZ2=${PHP_FPM_INSTALL_BZ2}
- INSTALL_GMP=${PHP_FPM_INSTALL_GMP}
- INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG} - INSTALL_XDEBUG=${PHP_FPM_INSTALL_XDEBUG}
- INSTALL_PCOV=${PHP_FPM_INSTALL_PCOV} - INSTALL_PCOV=${PHP_FPM_INSTALL_PCOV}
- INSTALL_PHPDBG=${PHP_FPM_INSTALL_PHPDBG} - INSTALL_PHPDBG=${PHP_FPM_INSTALL_PHPDBG}
@ -182,7 +201,6 @@ services:
- INSTALL_GEARMAN=${PHP_FPM_INSTALL_GEARMAN} - INSTALL_GEARMAN=${PHP_FPM_INSTALL_GEARMAN}
- INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL} - INSTALL_MSSQL=${PHP_FPM_INSTALL_MSSQL}
- INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH} - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
- INSTALL_GMP=${PHP_FPM_INSTALL_GMP}
- INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS} - INSTALL_PHPREDIS=${PHP_FPM_INSTALL_PHPREDIS}
- INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED} - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
- INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE} - INSTALL_OPCACHE=${PHP_FPM_INSTALL_OPCACHE}
@ -217,7 +235,9 @@ services:
- INSTALL_PCNTL=${PHP_FPM_INSTALL_PCNTL} - INSTALL_PCNTL=${PHP_FPM_INSTALL_PCNTL}
- ADDITIONAL_LOCALES=${PHP_FPM_ADDITIONAL_LOCALES} - ADDITIONAL_LOCALES=${PHP_FPM_ADDITIONAL_LOCALES}
- INSTALL_FFMPEG=${PHP_FPM_FFMPEG} - INSTALL_FFMPEG=${PHP_FPM_FFMPEG}
- INSTALL_WKHTMLTOPDF=${PHP_FPM_INSTALL_WKHTMLTOPDF}
- INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF} - INSTALL_XHPROF=${PHP_FPM_INSTALL_XHPROF}
- INSTALL_XMLRPC=${PHP_FPM_INSTALL_XMLRPC}
- PUID=${PHP_FPM_PUID} - PUID=${PHP_FPM_PUID}
- PGID=${PHP_FPM_PGID} - PGID=${PHP_FPM_PGID}
- LOCALE=${PHP_FPM_DEFAULT_LOCALE} - LOCALE=${PHP_FPM_DEFAULT_LOCALE}
@ -227,13 +247,17 @@ services:
volumes: volumes:
- ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini - ./php-fpm/php${PHP_VERSION}.ini:/usr/local/etc/php/php.ini
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG} - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}${APP_CODE_CONTAINER_FLAG}
- docker-in-docker:/certs/client
expose: expose:
- "9000" - "9000"
extra_hosts: extra_hosts:
- "dockerhost:${DOCKER_HOST_IP}" - "dockerhost:${DOCKER_HOST_IP}"
environment: environment:
- PHP_IDE_CONFIG=${PHP_IDE_CONFIG} - PHP_IDE_CONFIG=${PHP_IDE_CONFIG}
- DOCKER_HOST=tcp://docker-in-docker:2375 - DOCKER_HOST=tcp://docker-in-docker:2376
- DOCKER_TLS_VERIFY=1
- DOCKER_TLS_CERTDIR=/certs
- DOCKER_CERT_PATH=/certs/client
- FAKETIME=${PHP_FPM_FAKETIME} - FAKETIME=${PHP_FPM_FAKETIME}
depends_on: depends_on:
- workspace - workspace
@ -248,10 +272,15 @@ services:
context: ./php-worker context: ./php-worker
args: args:
- CHANGE_SOURCE=${CHANGE_SOURCE} - CHANGE_SOURCE=${CHANGE_SOURCE}
- PHP_VERSION=${PHP_VERSION} - LARADOCK_PHP_VERSION=${PHP_VERSION}
- PHALCON_VERSION=${PHALCON_VERSION} - PHALCON_VERSION=${PHALCON_VERSION}
- INSTALL_BZ2=${PHP_WORKER_INSTALL_BZ2}
- INSTALL_GD=${PHP_WORKER_INSTALL_GD}
- INSTALL_IMAGEMAGICK=${PHP_WORKER_INSTALL_IMAGEMAGICK}
- INSTALL_GMP=${PHP_WORKER_INSTALL_GMP}
- INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL} - INSTALL_PGSQL=${PHP_WORKER_INSTALL_PGSQL}
- INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH} - INSTALL_BCMATH=${PHP_WORKER_INSTALL_BCMATH}
- INSTALL_OCI8=${PHP_WORKER_INSTALL_OCI8}
- INSTALL_PHALCON=${PHP_WORKER_INSTALL_PHALCON} - INSTALL_PHALCON=${PHP_WORKER_INSTALL_PHALCON}
- INSTALL_SOAP=${PHP_WORKER_INSTALL_SOAP} - INSTALL_SOAP=${PHP_WORKER_INSTALL_SOAP}
- INSTALL_ZIP_ARCHIVE=${PHP_WORKER_INSTALL_ZIP_ARCHIVE} - INSTALL_ZIP_ARCHIVE=${PHP_WORKER_INSTALL_ZIP_ARCHIVE}
@ -263,8 +292,9 @@ services:
- INSTALL_SWOOLE=${PHP_WORKER_INSTALL_SWOOLE} - INSTALL_SWOOLE=${PHP_WORKER_INSTALL_SWOOLE}
- INSTALL_TAINT=${PHP_WORKER_INSTALL_TAINT} - INSTALL_TAINT=${PHP_WORKER_INSTALL_TAINT}
- INSTALL_FFMPEG=${PHP_WORKER_INSTALL_FFMPEG} - INSTALL_FFMPEG=${PHP_WORKER_INSTALL_FFMPEG}
- INSTALL_GMP=${PHP_WORKER_INSTALL_GMP}
- INSTALL_REDIS=${PHP_WORKER_INSTALL_REDIS} - INSTALL_REDIS=${PHP_WORKER_INSTALL_REDIS}
- INSTALL_IMAP=${PHP_WORKER_INSTALL_IMAP}
- INSTALL_XMLRPC=${PHP_WORKER_INSTALL_XMLRPC}
- PUID=${PHP_WORKER_PUID} - PUID=${PHP_WORKER_PUID}
- PGID=${PHP_WORKER_PGID} - PGID=${PHP_WORKER_PGID}
volumes: volumes:
@ -282,14 +312,23 @@ services:
context: ./laravel-horizon context: ./laravel-horizon
args: args:
- CHANGE_SOURCE=${CHANGE_SOURCE} - CHANGE_SOURCE=${CHANGE_SOURCE}
- PHP_VERSION=${PHP_VERSION} - LARADOCK_PHP_VERSION=${PHP_VERSION}
- INSTALL_BZ2=${LARAVEL_HORIZON_INSTALL_BZ2}
- INSTALL_GD=${LARAVEL_HORIZON_INSTALL_GD}
- INSTALL_GMP=${LARAVEL_HORIZON_INSTALL_GMP}
- INSTALL_IMAGEMAGICK=${LARAVEL_HORIZON_INSTALL_IMAGEMAGICK}
- INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL} - INSTALL_PGSQL=${PHP_FPM_INSTALL_PGSQL}
- INSTALL_ZIP_ARCHIVE=${LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE}
- INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH} - INSTALL_BCMATH=${PHP_FPM_INSTALL_BCMATH}
- INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED} - INSTALL_MEMCACHED=${PHP_FPM_INSTALL_MEMCACHED}
- INSTALL_SOCKETS=${LARAVEL_HORIZON_INSTALL_SOCKETS} - INSTALL_SOCKETS=${LARAVEL_HORIZON_INSTALL_SOCKETS}
- INSTALL_YAML=${LARAVEL_HORIZON_INSTALL_YAML}
- INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA} - INSTALL_CASSANDRA=${PHP_FPM_INSTALL_CASSANDRA}
- INSTALL_PHPREDIS=${LARAVEL_HORIZON_INSTALL_PHPREDIS} - INSTALL_PHPREDIS=${LARAVEL_HORIZON_INSTALL_PHPREDIS}
- INSTALL_MONGO=${LARAVEL_HORIZON_INSTALL_MONGO} - INSTALL_MONGO=${LARAVEL_HORIZON_INSTALL_MONGO}
- INSTALL_FFMPEG=${LARAVEL_HORIZON_INSTALL_FFMPEG}
- PUID=${LARAVEL_HORIZON_PUID}
- PGID=${LARAVEL_HORIZON_PGID}
volumes: volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
- ./laravel-horizon/supervisord.d:/etc/supervisord.d - ./laravel-horizon/supervisord.d:/etc/supervisord.d
@ -319,6 +358,7 @@ services:
ports: ports:
- "${NGINX_HOST_HTTP_PORT}:80" - "${NGINX_HOST_HTTP_PORT}:80"
- "${NGINX_HOST_HTTPS_PORT}:443" - "${NGINX_HOST_HTTPS_PORT}:443"
- "${VARNISH_BACKEND_PORT}:81"
depends_on: depends_on:
- php-fpm - php-fpm
networks: networks:
@ -464,7 +504,10 @@ services:
### PostgreSQL ########################################### ### PostgreSQL ###########################################
postgres: postgres:
build: ./postgres build:
context: ./postgres
args:
- POSTGRES_VERSION=${POSTGRES_VERSION}
volumes: volumes:
- ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data - ${DATA_PATH_HOST}/postgres:/var/lib/postgresql/data
- ${POSTGRES_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d - ${POSTGRES_ENTRYPOINT_INITDB}:/docker-entrypoint-initdb.d
@ -770,7 +813,10 @@ services:
### ElasticSearch ######################################## ### ElasticSearch ########################################
elasticsearch: elasticsearch:
build: ./elasticsearch build:
context: ./elasticsearch
args:
- ELK_VERSION=${ELK_VERSION}
volumes: volumes:
- elasticsearch:/usr/share/elasticsearch/data - elasticsearch:/usr/share/elasticsearch/data
environment: environment:
@ -783,6 +829,9 @@ services:
memlock: memlock:
soft: -1 soft: -1
hard: -1 hard: -1
nofile:
soft: 65536
hard: 65536
ports: ports:
- "${ELASTICSEARCH_HOST_HTTP_PORT}:9200" - "${ELASTICSEARCH_HOST_HTTP_PORT}:9200"
- "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300" - "${ELASTICSEARCH_HOST_TRANSPORT_PORT}:9300"
@ -794,7 +843,10 @@ services:
### Logstash ############################################## ### Logstash ##############################################
logstash: logstash:
build: ./logstash build:
context: ./logstash
args:
- ELK_VERSION=${ELK_VERSION}
volumes: volumes:
- './logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml' - './logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml'
- './logstash/pipeline:/usr/share/logstash/pipeline' - './logstash/pipeline:/usr/share/logstash/pipeline'
@ -812,7 +864,10 @@ services:
### Kibana ############################################## ### Kibana ##############################################
kibana: kibana:
build: ./kibana build:
context: ./kibana
args:
- ELK_VERSION=${ELK_VERSION}
ports: ports:
- "${KIBANA_HTTP_PORT}:5601" - "${KIBANA_HTTP_PORT}:5601"
depends_on: depends_on:
@ -866,6 +921,7 @@ services:
### Varnish ########################################## ### Varnish ##########################################
proxy: proxy:
container_name: proxy
build: ./varnish build: ./varnish
expose: expose:
- ${VARNISH_PORT} - ${VARNISH_PORT}
@ -877,12 +933,15 @@ services:
- BACKEND_HOST=${VARNISH_PROXY1_BACKEND_HOST} - BACKEND_HOST=${VARNISH_PROXY1_BACKEND_HOST}
- BACKEND_PORT=${VARNISH_BACKEND_PORT} - BACKEND_PORT=${VARNISH_BACKEND_PORT}
- VARNISH_SERVER=${VARNISH_PROXY1_SERVER} - VARNISH_SERVER=${VARNISH_PROXY1_SERVER}
ports:
- "${VARNISH_PORT}:${VARNISH_PORT}"
links: links:
- workspace - workspace
networks: networks:
- frontend - frontend
proxy2: proxy2:
container_name: proxy2
build: ./varnish build: ./varnish
expose: expose:
- ${VARNISH_PORT} - ${VARNISH_PORT}
@ -894,6 +953,8 @@ services:
- BACKEND_HOST=${VARNISH_PROXY2_BACKEND_HOST} - BACKEND_HOST=${VARNISH_PROXY2_BACKEND_HOST}
- BACKEND_PORT=${VARNISH_BACKEND_PORT} - BACKEND_PORT=${VARNISH_BACKEND_PORT}
- VARNISH_SERVER=${VARNISH_PROXY2_SERVER} - VARNISH_SERVER=${VARNISH_PROXY2_SERVER}
ports:
- "${VARNISH_PORT}:${VARNISH_PORT}"
links: links:
- workspace - workspace
networks: networks:
@ -1239,11 +1300,13 @@ services:
### Docker-in-Docker ################################################ ### Docker-in-Docker ################################################
docker-in-docker: docker-in-docker:
image: docker:dind image: docker:19.03-dind
environment:
DOCKER_TLS_SAN: DNS:docker-in-docker
privileged: true privileged: true
volumes: volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER} - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
- ${DATA_PATH_HOST}/dind:/var/lib/docker - docker-in-docker:/certs/client
expose: expose:
- 2375 - 2375
networks: networks:
@ -1251,11 +1314,13 @@ services:
### NetData ################################################ ### NetData ################################################
netdata: netdata:
image: titpetric/netdata:latest image: netdata/netdata:latest
cap_add: cap_add:
- SYS_PTRACE - SYS_PTRACE
volumes: volumes:
- /:/host:ro - /proc:/host/proc:ro
- /sys:/host/sys:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
ports: ports:
- "${NETDATA_PORT}:19999" - "${NETDATA_PORT}:19999"
networks: networks:
@ -1560,19 +1625,38 @@ services:
traefik: traefik:
build: build:
context: ./traefik context: ./traefik
command: --docker
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock - /var/run/docker.sock:/var/run/docker.sock
- ./traefik/data:/data
command:
- "--api"
- "--providers.docker.exposedbydefault=false"
- "--accesslog.filepath=/data/access.log"
# entrypoints
- "--entrypoints.http.address=:${TRAEFIK_HOST_HTTP_PORT}"
- "--entrypoints.http.http.redirections.entrypoint.to=https"
- "--entrypoints.https.address=:${TRAEFIK_HOST_HTTPS_PORT}"
- "--entrypoints.traefik.address=:${TRAEFIK_DASHBOARD_PORT}"
# certificatesresolvers
- "--certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL}"
- "--certificatesresolvers.letsencrypt.acme.storage=/data/acme.json"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=http"
ports: ports:
- "${TRAEFIK_HOST_HTTP_PORT}:80" - "${TRAEFIK_HOST_HTTP_PORT}:${TRAEFIK_HOST_HTTP_PORT}"
- "${TRAEFIK_HOST_HTTPS_PORT}:443" - "${TRAEFIK_HOST_HTTPS_PORT}:${TRAEFIK_HOST_HTTPS_PORT}"
- "${TRAEFIK_DASHBOARD_PORT}:${TRAEFIK_DASHBOARD_PORT}"
networks: networks:
- frontend - frontend
- backend - backend
labels: labels:
- traefik.backend=traefik - "traefik.enable=true"
- traefik.frontend.rule=Host:monitor.localhost - "traefik.http.routers.traefik.rule=Host(`${ACME_DOMAIN}`)"
- traefik.port=8080 - "traefik.http.routers.traefik.entrypoints=traefik"
- "traefik.http.routers.traefik.service=api@internal"
- "traefik.http.routers.traefik.middlewares=access-auth"
- "traefik.http.routers.traefik.tls.certresolver=letsencrypt"
- "traefik.http.middlewares.access-auth.basicauth.realm=Login Required"
- "traefik.http.middlewares.access-auth.basicauth.users=${TRAEFIK_DASHBOARD_USER}"
### MOSQUITTO Broker ######################################### ### MOSQUITTO Broker #########################################
mosquitto: mosquitto:

View File

@ -1,3 +1,4 @@
FROM docker.elastic.co/elasticsearch/elasticsearch:7.1.1 ARG ELK_VERSION=7.5.1
FROM docker.elastic.co/elasticsearch/elasticsearch:${ELK_VERSION}
EXPOSE 9200 9300 EXPOSE 9200 9300

View File

@ -32,7 +32,7 @@ COMPOSE_FILE=docker-compose.yml
# Change the separator from : to ; on Windows # Change the separator from : to ; on Windows
COMPOSE_PATH_SEPARATOR=: COMPOSE_PATH_SEPARATOR=:
# Define the prefix of container names. This is useful if you have multiple projects that use laradock to have seperate containers per project. # Define the prefix of container names. This is useful if you have multiple projects that use laradock to have separate containers per project.
COMPOSE_PROJECT_NAME=laradock COMPOSE_PROJECT_NAME=laradock
### PHP Version ########################################### ### PHP Version ###########################################
@ -44,7 +44,7 @@ PHP_VERSION=7.3
### Phalcon Version ########################################### ### Phalcon Version ###########################################
# Select a Phalcon version of the Workspace and PHP-FPM containers (Does not apply to HHVM). Accepted values: 3.4.0+ # Select a Phalcon version of the Workspace and PHP-FPM containers (Does not apply to HHVM). Accepted values: 3.4.0+
PHALCON_VERSION=3.4.5 PHALCON_VERSION=4.0.5
### PHP Interpreter ####################################### ### PHP Interpreter #######################################
@ -78,12 +78,19 @@ UBUNTU_SOURCE=aliyun
# If you are using Docker Sync. For `osx` use 'native_osx', for `windows` use 'unison', for `linux` docker-sync is not required # If you are using Docker Sync. For `osx` use 'native_osx', for `windows` use 'unison', for `linux` docker-sync is not required
DOCKER_SYNC_STRATEGY=native_osx DOCKER_SYNC_STRATEGY=native_osx
### Install Oh My ZSH! ####################################
# If you want to use "Oh My ZSH!" with Laravel autocomplete plugin, set SHELL_OH_MY_ZSH to true.
SHELL_OH_MY_ZSH=false
########################################################### ###########################################################
################ Containers Customization ################# ################ Containers Customization #################
########################################################### ###########################################################
### WORKSPACE ############################################# ### WORKSPACE #############################################
WORKSPACE_BASE_IMAGE_TAG_PREFIX=latest
WORKSPACE_COMPOSER_GLOBAL_INSTALL=true WORKSPACE_COMPOSER_GLOBAL_INSTALL=true
WORKSPACE_COMPOSER_AUTH=false WORKSPACE_COMPOSER_AUTH=false
WORKSPACE_COMPOSER_REPO_PACKAGIST= WORKSPACE_COMPOSER_REPO_PACKAGIST=
@ -91,6 +98,7 @@ WORKSPACE_NVM_NODEJS_ORG_MIRROR=
WORKSPACE_INSTALL_NODE=true WORKSPACE_INSTALL_NODE=true
WORKSPACE_NODE_VERSION=node WORKSPACE_NODE_VERSION=node
WORKSPACE_NPM_REGISTRY= WORKSPACE_NPM_REGISTRY=
WORKSPACE_INSTALL_PNPM=false
WORKSPACE_INSTALL_YARN=true WORKSPACE_INSTALL_YARN=true
WORKSPACE_YARN_VERSION=latest WORKSPACE_YARN_VERSION=latest
WORKSPACE_INSTALL_NPM_GULP=true WORKSPACE_INSTALL_NPM_GULP=true
@ -100,12 +108,13 @@ WORKSPACE_INSTALL_NPM_ANGULAR_CLI=false
WORKSPACE_INSTALL_PHPREDIS=true WORKSPACE_INSTALL_PHPREDIS=true
WORKSPACE_INSTALL_WORKSPACE_SSH=false WORKSPACE_INSTALL_WORKSPACE_SSH=false
WORKSPACE_INSTALL_SUBVERSION=false WORKSPACE_INSTALL_SUBVERSION=false
WORKSPACE_INSTALL_BZ2=false
WORKSPACE_INSTALL_GMP=false
WORKSPACE_INSTALL_XDEBUG=false WORKSPACE_INSTALL_XDEBUG=false
WORKSPACE_INSTALL_PCOV=false WORKSPACE_INSTALL_PCOV=false
WORKSPACE_INSTALL_PHPDBG=false WORKSPACE_INSTALL_PHPDBG=false
WORKSPACE_INSTALL_SSH2=false WORKSPACE_INSTALL_SSH2=false
WORKSPACE_INSTALL_LDAP=false WORKSPACE_INSTALL_LDAP=false
WORKSPACE_INSTALL_GMP=false
WORKSPACE_INSTALL_SOAP=false WORKSPACE_INSTALL_SOAP=false
WORKSPACE_INSTALL_XSL=false WORKSPACE_INSTALL_XSL=false
WORKSPACE_INSTALL_SMB=false WORKSPACE_INSTALL_SMB=false
@ -149,18 +158,27 @@ WORKSPACE_INSTALL_INOTIFY=false
WORKSPACE_INSTALL_FSWATCH=false WORKSPACE_INSTALL_FSWATCH=false
WORKSPACE_INSTALL_YAML=false WORKSPACE_INSTALL_YAML=false
WORKSPACE_INSTALL_MAILPARSE=false WORKSPACE_INSTALL_MAILPARSE=false
WORKSPACE_INSTALL_XMLRPC=false
WORKSPACE_PUID=1000 WORKSPACE_PUID=1000
WORKSPACE_PGID=1000 WORKSPACE_PGID=1000
WORKSPACE_CHROME_DRIVER_VERSION=2.42 WORKSPACE_CHROME_DRIVER_VERSION=2.42
WORKSPACE_TIMEZONE=UTC WORKSPACE_TIMEZONE=UTC
WORKSPACE_SSH_PORT=2222 WORKSPACE_SSH_PORT=2222
WORKSPACE_INSTALL_FFMPEG=false WORKSPACE_INSTALL_FFMPEG=false
WORKSPACE_INSTALL_WKHTMLTOPDF=false
WORKSPACE_INSTALL_GNU_PARALLEL=false WORKSPACE_INSTALL_GNU_PARALLEL=false
WORKSPACE_INSTALL_AST=true WORKSPACE_INSTALL_AST=true
WORKSPACE_AST_VERSION=1.0.3 WORKSPACE_AST_VERSION=1.0.3
WORKSPACE_BROWSERSYNC_HOST_PORT=3000
WORKSPACE_BROWSERSYNC_UI_HOST_PORT=3001
WORKSPACE_VUE_CLI_SERVE_HOST_PORT=8080
WORKSPACE_VUE_CLI_UI_HOST_PORT=8001
WORKSPACE_ANGULAR_CLI_SERVE_HOST_PORT=4200
WORKSPACE_INSTALL_GIT_PROMPT=false
### PHP_FPM ############################################### ### PHP_FPM ###############################################
PHP_FPM_BASE_IMAGE_TAG_PREFIX=latest
PHP_FPM_INSTALL_BCMATH=true PHP_FPM_INSTALL_BCMATH=true
PHP_FPM_INSTALL_MYSQLI=true PHP_FPM_INSTALL_MYSQLI=true
PHP_FPM_INSTALL_INTL=true PHP_FPM_INSTALL_INTL=true
@ -169,6 +187,8 @@ PHP_FPM_INSTALL_OPCACHE=true
PHP_FPM_INSTALL_IMAGE_OPTIMIZERS=true PHP_FPM_INSTALL_IMAGE_OPTIMIZERS=true
PHP_FPM_INSTALL_PHPREDIS=true PHP_FPM_INSTALL_PHPREDIS=true
PHP_FPM_INSTALL_MEMCACHED=false PHP_FPM_INSTALL_MEMCACHED=false
PHP_FPM_INSTALL_BZ2=false
PHP_FPM_INSTALL_GMP=false
PHP_FPM_INSTALL_XDEBUG=false PHP_FPM_INSTALL_XDEBUG=false
PHP_FPM_INSTALL_PCOV=false PHP_FPM_INSTALL_PCOV=false
PHP_FPM_INSTALL_XHPROF=false PHP_FPM_INSTALL_XHPROF=false
@ -183,7 +203,6 @@ PHP_FPM_INSTALL_MSSQL=false
PHP_FPM_INSTALL_SSH2=false PHP_FPM_INSTALL_SSH2=false
PHP_FPM_INSTALL_SOAP=false PHP_FPM_INSTALL_SOAP=false
PHP_FPM_INSTALL_XSL=false PHP_FPM_INSTALL_XSL=false
PHP_FPM_INSTALL_GMP=false
PHP_FPM_INSTALL_EXIF=false PHP_FPM_INSTALL_EXIF=false
PHP_FPM_INSTALL_AEROSPIKE=false PHP_FPM_INSTALL_AEROSPIKE=false
PHP_FPM_INSTALL_OCI8=false PHP_FPM_INSTALL_OCI8=false
@ -201,6 +220,7 @@ PHP_FPM_INSTALL_FAKETIME=false
PHP_FPM_INSTALL_IONCUBE=false PHP_FPM_INSTALL_IONCUBE=false
PHP_FPM_INSTALL_RDKAFKA=false PHP_FPM_INSTALL_RDKAFKA=false
PHP_FPM_INSTALL_GETTEXT=false PHP_FPM_INSTALL_GETTEXT=false
PHP_FPM_INSTALL_XMLRPC=false
PHP_FPM_FAKETIME=-0 PHP_FPM_FAKETIME=-0
PHP_FPM_INSTALL_APCU=false PHP_FPM_INSTALL_APCU=false
PHP_FPM_INSTALL_CACHETOOL=false PHP_FPM_INSTALL_CACHETOOL=false
@ -210,8 +230,9 @@ PHP_FPM_INSTALL_MYSQL_CLIENT=false
PHP_FPM_INSTALL_PING=false PHP_FPM_INSTALL_PING=false
PHP_FPM_INSTALL_SSHPASS=false PHP_FPM_INSTALL_SSHPASS=false
PHP_FPM_INSTALL_MAILPARSE=false PHP_FPM_INSTALL_MAILPARSE=false
PHP_FPM_INSTALL_WKHTMLTOPDF=false
PHP_FPM_FFMPEG=false PHP_FPM_FFMPEG=false
PHP_FPM_ADDITIONAL_LOCALES="es_ES.UTF-8 fr_FR.UTF-8" PHP_FPM_ADDITIONAL_LOCALES="en_US.UTF-8 es_ES.UTF-8 fr_FR.UTF-8"
PHP_FPM_DEFAULT_LOCALE=POSIX PHP_FPM_DEFAULT_LOCALE=POSIX
PHP_FPM_PUID=1000 PHP_FPM_PUID=1000
@ -219,8 +240,14 @@ PHP_FPM_PGID=1000
### PHP_WORKER ############################################ ### PHP_WORKER ############################################
PHP_WORKER_INSTALL_BZ2=false
PHP_WORKER_INSTALL_GD=false
PHP_WORKER_INSTALL_IMAGEMAGICK=false
PHP_WORKER_INSTALL_GMP=false
PHP_WORKER_INSTALL_PGSQL=false PHP_WORKER_INSTALL_PGSQL=false
PHP_WORKER_INSTALL_BCMATH=false PHP_WORKER_INSTALL_BCMATH=false
# PHP_WORKER_INSTALL_OCI8 Does not work in php5.6 version
PHP_WORKER_INSTALL_OCI8=false
PHP_WORKER_INSTALL_PHALCON=false PHP_WORKER_INSTALL_PHALCON=false
PHP_WORKER_INSTALL_SOAP=false PHP_WORKER_INSTALL_SOAP=false
PHP_WORKER_INSTALL_ZIP_ARCHIVE=false PHP_WORKER_INSTALL_ZIP_ARCHIVE=false
@ -230,10 +257,11 @@ PHP_WORKER_INSTALL_GHOSTSCRIPT=false
PHP_WORKER_INSTALL_SWOOLE=false PHP_WORKER_INSTALL_SWOOLE=false
PHP_WORKER_INSTALL_TAINT=false PHP_WORKER_INSTALL_TAINT=false
PHP_WORKER_INSTALL_FFMPEG=false PHP_WORKER_INSTALL_FFMPEG=false
PHP_WORKER_INSTALL_GMP=false
PHP_WORKER_INSTALL_CASSANDRA=false PHP_WORKER_INSTALL_CASSANDRA=false
PHP_WORKER_INSTALL_GEARMAN=false PHP_WORKER_INSTALL_GEARMAN=false
PHP_WORKER_INSTALL_REDIS=false PHP_WORKER_INSTALL_REDIS=false
PHP_WORKER_INSTALL_IMAP=false
PHP_WORKER_INSTALL_XMLRPC
PHP_WORKER_PUID=1000 PHP_WORKER_PUID=1000
PHP_WORKER_PGID=1000 PHP_WORKER_PGID=1000
@ -250,9 +278,18 @@ NGINX_SSL_PATH=./nginx/ssl/
### LARAVEL_HORIZON ################################################ ### LARAVEL_HORIZON ################################################
LARAVEL_HORIZON_INSTALL_BZ2=false
LARAVEL_HORIZON_INSTALL_GD=false
LARAVEL_HORIZON_INSTALL_GMP=false
LARAVEL_HORIZON_INSTALL_IMAGEMAGICK=false
LARAVEL_HORIZON_INSTALL_SOCKETS=false LARAVEL_HORIZON_INSTALL_SOCKETS=false
LARAVEL_HORIZON_INSTALL_YAML=false
LARAVEL_HORIZON_INSTALL_ZIP_ARCHIVE=false
LARAVEL_HORIZON_INSTALL_PHPREDIS=true LARAVEL_HORIZON_INSTALL_PHPREDIS=true
LARAVEL_HORIZON_INSTALL_MONGO=false LARAVEL_HORIZON_INSTALL_MONGO=false
LARAVEL_HORIZON_INSTALL_FFMPEG=false
LARAVEL_HORIZON_PGID=1000
LARAVEL_HORIZON_PUID=1000
### APACHE ################################################ ### APACHE ################################################
@ -314,6 +351,7 @@ MARIADB_ENTRYPOINT_INITDB=./mariadb/docker-entrypoint-initdb.d
### POSTGRES ############################################## ### POSTGRES ##############################################
POSTGRES_VERSION=alpine
POSTGRES_DB=default POSTGRES_DB=default
POSTGRES_USER=default POSTGRES_USER=default
POSTGRES_PASSWORD=secret POSTGRES_PASSWORD=secret
@ -361,7 +399,7 @@ MINIO_PORT=9000
### ADMINER ############################################### ### ADMINER ###############################################
ADM_PORT=8080 ADM_PORT=8081
ADM_INSTALL_MSSQL=false ADM_INSTALL_MSSQL=false
### PHP MY ADMIN ########################################## ### PHP MY ADMIN ##########################################
@ -375,7 +413,7 @@ PMA_DB_ENGINE=mysql
PMA_USER=default PMA_USER=default
PMA_PASSWORD=secret PMA_PASSWORD=secret
PMA_ROOT_PASSWORD=secret PMA_ROOT_PASSWORD=secret
PMA_PORT=8080 PMA_PORT=8081
### MAILDEV ############################################### ### MAILDEV ###############################################
@ -385,8 +423,8 @@ MAILDEV_SMTP_PORT=25
### VARNISH ############################################### ### VARNISH ###############################################
VARNISH_CONFIG=/etc/varnish/default.vcl VARNISH_CONFIG=/etc/varnish/default.vcl
VARNISH_PORT=8080 VARNISH_PORT=6081
VARNISH_BACKEND_PORT=8888 VARNISH_BACKEND_PORT=81
VARNISHD_PARAMS="-p default_ttl=3600 -p default_grace=3600" VARNISHD_PARAMS="-p default_ttl=3600 -p default_grace=3600"
### Varnish ############################################### ### Varnish ###############################################
@ -728,6 +766,11 @@ MAILU_WEBDAV=radicale
TRAEFIK_HOST_HTTP_PORT=80 TRAEFIK_HOST_HTTP_PORT=80
TRAEFIK_HOST_HTTPS_PORT=443 TRAEFIK_HOST_HTTPS_PORT=443
TRAEFIK_DASHBOARD_PORT=8888
# basic authentication for traefik dashboard username: admin password:admin
TRAEFIK_DASHBOARD_USER=admin:$2y$10$lXaL3lj6raFic6rFqr2.lOBoCudAIhB6zyoqObNg290UFppiUzTTi
ACME_DOMAIN=example.org
ACME_EMAIL=email@example.org
### MOSQUITTO ################################################# ### MOSQUITTO #################################################
@ -841,10 +884,13 @@ GEARMAN_MYSQL_PORT=3306
# Mysql server user (Default: root) # Mysql server user (Default: root)
GEARMAN_MYSQL_USER=root GEARMAN_MYSQL_USER=root
# Mysql password # Mysql password
GEARMAN_MYSQL_PASSWORD= GEARMAN_MYSQL_PASSWORD=
# Path to file with mysql password(Docker secrets) # Path to file with mysql password(Docker secrets)
GEARMAN_MYSQL_PASSWORD_FILE= GEARMAN_MYSQL_PASSWORD_FILE=
# Database to use by Gearman (Default: Gearmand) # Database to use by Gearman (Default: Gearmand)
GEARMAN_MYSQL_DB=Gearmand GEARMAN_MYSQL_DB=Gearmand
# Table to use by Gearman (Default: gearman_queue) # Table to use by Gearman (Default: gearman_queue)
GEARMAN_MYSQL_TABLE=gearman_queue GEARMAN_MYSQL_TABLE=gearman_queue
### ELK Stack ##################################################
ELK_VERSION=7.5.1

View File

@ -1,3 +1,4 @@
FROM docker.elastic.co/kibana/kibana:7.1.1 ARG ELK_VERSION=7.5.1
FROM docker.elastic.co/kibana/kibana:${ELK_VERSION}
EXPOSE 5601 EXPOSE 5601

View File

@ -4,11 +4,13 @@
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
ARG PHP_VERSION=${PHP_VERSION} ARG LARADOCK_PHP_VERSION
FROM php:${PHP_VERSION}-alpine FROM php:${LARADOCK_PHP_VERSION}-alpine
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>" LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
ARG LARADOCK_PHP_VERSION
# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env. # If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env.
ARG CHANGE_SOURCE=false ARG CHANGE_SOURCE=false
@ -35,6 +37,46 @@ RUN apk --update add wget \
RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl
RUN pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb RUN pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb
# Add a non-root user to help install ffmpeg:
ARG PUID=1000
ENV PUID ${PUID}
ARG PGID=1000
ENV PGID ${PGID}
RUN addgroup -g ${PGID} laradock && \
adduser -D -G laradock -u ${PUID} laradock
#Install BZ2:
ARG INSTALL_BZ2=false
RUN if [ ${INSTALL_BZ2} = true ]; then \
apk --update add bzip2-dev; \
docker-php-ext-install bz2 \
;fi
#Install GD package:
ARG INSTALL_GD=false
RUN if [ ${INSTALL_GD} = true ]; then \
apk add --update --no-cache libpng-dev; \
docker-php-ext-install gd \
;fi
#Install GMP package:
ARG INSTALL_GMP=false
RUN if [ ${INSTALL_GMP} = true ]; then \
apk add --update --no-cache gmp gmp-dev; \
docker-php-ext-install gmp \
;fi
#Install ImageMagick package:
ARG INSTALL_IMAGEMAGICK=false
RUN set -eux; \
if [ ${INSTALL_IMAGEMAGICK} = true ]; then \
apk add --update --no-cache imagemagick-dev; \
pecl install imagick; \
docker-php-ext-enable imagick; \
php -m | grep -q 'imagick'; \
fi
#Install BCMath package: #Install BCMath package:
ARG INSTALL_BCMATH=false ARG INSTALL_BCMATH=false
RUN if [ ${INSTALL_BCMATH} = true ]; then \ RUN if [ ${INSTALL_BCMATH} = true ]; then \
@ -54,11 +96,19 @@ RUN if [ ${INSTALL_PGSQL} = true ]; then \
&& docker-php-ext-install pdo_pgsql \ && docker-php-ext-install pdo_pgsql \
;fi ;fi
# Install Cassandra drivers: # Install ZipArchive:
ARG INSTALL_CASSANDRA=false ARG INSTALL_ZIP_ARCHIVE=false
RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ RUN set -eux; \
apk --update add cassandra-cpp-driver \ if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
;fi apk --update add libzip-dev && \
if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ]; then \
docker-php-ext-configure zip; \
else \
docker-php-ext-configure zip --with-libzip; \
fi && \
# Install the zip extension
docker-php-ext-install zip \
;fi
# Install PhpRedis package: # Install PhpRedis package:
ARG INSTALL_PHPREDIS=false ARG INSTALL_PHPREDIS=false
@ -69,6 +119,18 @@ RUN if [ ${INSTALL_PHPREDIS} = true ]; then \
&& docker-php-ext-enable redis \ && docker-php-ext-enable redis \
;fi ;fi
ARG INSTALL_FFMPEG=false
RUN if [ ${INSTALL_FFMPEG} = true ]; then \
# Add ffmpeg to horizon
apk add ffmpeg \
;fi
# Install Cassandra drivers:
ARG INSTALL_CASSANDRA=false
RUN if [ ${INSTALL_CASSANDRA} = true ]; then \
apk --update add cassandra-cpp-driver \
;fi
WORKDIR /usr/src WORKDIR /usr/src
RUN if [ ${INSTALL_CASSANDRA} = true ]; then \ RUN if [ ${INSTALL_CASSANDRA} = true ]; then \
git clone https://github.com/datastax/php-driver.git \ git clone https://github.com/datastax/php-driver.git \
@ -90,6 +152,24 @@ RUN if [ ${INSTALL_MONGO} = true ]; then \
&& docker-php-ext-enable mongodb \ && docker-php-ext-enable mongodb \
;fi ;fi
###########################################################################
# YAML: extension
###########################################################################
ARG INSTALL_YAML=false
RUN if [ ${INSTALL_YAML} = true ]; then \
apk --update add -U --no-cache --virtual temp yaml-dev \
&& apk add --no-cache yaml \
&& docker-php-source extract \
&& pecl channel-update pecl.php.net \
&& pecl install yaml \
&& docker-php-ext-enable yaml \
&& pecl clear-cache \
&& docker-php-source delete \
&& apk del temp \
;fi
########################################################################### ###########################################################################
# PHP Memcached: # PHP Memcached:

View File

@ -1,5 +1,6 @@
[program:laravel-horizon] [program:laravel-horizon]
process_name=%(program_name)s_%(process_num)02d process_name=%(program_name)s_%(process_num)02d
user=laradock
command=php /var/www/artisan horizon command=php /var/www/artisan horizon
autostart=true autostart=true
autorestart=true autorestart=true

View File

@ -1,4 +1,5 @@
FROM docker.elastic.co/logstash/logstash:6.4.2 ARG ELK_VERSION=7.5.1
FROM docker.elastic.co/logstash/logstash:${ELK_VERSION}
USER root USER root
RUN rm -f /usr/share/logstash/pipeline/logstash.conf RUN rm -f /usr/share/logstash/pipeline/logstash.conf
@ -7,4 +8,5 @@ ADD ./pipeline/ /usr/share/logstash/pipeline/
ADD ./config/ /usr/share/logstash/config/ ADD ./config/ /usr/share/logstash/config/
RUN logstash-plugin install logstash-input-jdbc RUN logstash-plugin install logstash-input-jdbc
RUN logstash-plugin install logstash-input-beats

View File

@ -1,4 +1,4 @@
ARG MYSQL_VERSION=latest ARG MYSQL_VERSION
FROM mysql:${MYSQL_VERSION} FROM mysql:${MYSQL_VERSION}
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>" LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"

View File

@ -8,3 +8,4 @@
[mysqld] [mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION" sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
character-set-server=utf8 character-set-server=utf8
default-authentication-plugin=mysql_native_password

View File

@ -18,6 +18,8 @@ RUN apk update \
&& apk add --no-cache openssl \ && apk add --no-cache openssl \
&& apk add --no-cache bash && apk add --no-cache bash
RUN apk add --no-cache curl
RUN set -x ; \ RUN set -x ; \
addgroup -g 82 -S www-data ; \ addgroup -g 82 -S www-data ; \
adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1 adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1
@ -39,4 +41,4 @@ ADD ./startup.sh /opt/startup.sh
RUN sed -i 's/\r//g' /opt/startup.sh RUN sed -i 's/\r//g' /opt/startup.sh
CMD ["/bin/bash", "/opt/startup.sh"] CMD ["/bin/bash", "/opt/startup.sh"]
EXPOSE 80 443 EXPOSE 80 81 443

View File

@ -0,0 +1,110 @@
server {
listen 80;
listen [::]:80;
server_name www.laravel.test;
rewrite ^(.*) https://laravel.test$1/ permanent;
}
server {
listen 80;
listen [::]:80;
server_name laravel.test;
rewrite ^(.*) https://laravel.test$1/ permanent;
}
server {
listen 443 ssl ;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/ssl/laravel.test.crt;
ssl_certificate_key /etc/nginx/ssl/laravel.test.key;
server_name www.laravel.test;
rewrite ^(.*) https://laravel.test$1/ permanent;
}
server {
server_name laravel.test;
# For https
listen 443 ssl ;
listen [::]:443 ssl;
ssl_certificate /etc/nginx/ssl/laravel.test.crt;
ssl_certificate_key /etc/nginx/ssl/laravel.test.key;
port_in_redirect off;
add_header Strict-Transport-Security "max-age=31536000";
add_header X-Content-Type-Options nosniff;
location / {
proxy_pass http://proxy:6081;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header HTTPS "on";
proxy_redirect off;
}
}
server {
server_name laravel.test;
listen 81;
listen [::]:81;
root /var/www/laravel.test/www;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_max_temp_file_size 4m;
fastcgi_pass php-upstream;
# Additional configs
fastcgi_pass_header Set-Cookie;
fastcgi_pass_header Cookie;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
try_files $uri /index.php =404;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param HTTPS on;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_intercept_errors on;
#fixes timeouts
fastcgi_read_timeout 600;
include fastcgi_params;
}
# Caching
location ~* \.(ico|jpg|webp|jpeg|gif|css|png|js|ico|bmp|zip|woff)$ {
access_log off;
log_not_found off;
add_header Pragma public;
add_header Cache-Control "public";
expires 14d;
}
location ~* \.(php|html)$ {
access_log on;
log_not_found on;
add_header Pragma public;
add_header Cache-Control "public";
expires 14d;
}
location ~ /\.ht {
deny all;
}
}

View File

@ -13,8 +13,8 @@
# #
ARG LARADOCK_PHP_VERSION ARG LARADOCK_PHP_VERSION
ARG BASE_IMAGE_TAG_PREFIX=latest
FROM laradock/php-fpm:2.6.2-${LARADOCK_PHP_VERSION} FROM laradock/php-fpm:${BASE_IMAGE_TAG_PREFIX}-${LARADOCK_PHP_VERSION}
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>" LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
@ -51,7 +51,11 @@ RUN set -xe; \
# #
# next lines are here becase there is no auto build on dockerhub see https://github.com/laradock/laradock/pull/1903#issuecomment-463142846 # next lines are here becase there is no auto build on dockerhub see https://github.com/laradock/laradock/pull/1903#issuecomment-463142846
libzip-dev zip unzip && \ libzip-dev zip unzip && \
docker-php-ext-configure zip --with-libzip && \ if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ]; then \
docker-php-ext-configure zip; \
else \
docker-php-ext-configure zip --with-libzip; \
fi && \
# Install the zip extension # Install the zip extension
docker-php-ext-install zip && \ docker-php-ext-install zip && \
php -m | grep -q 'zip' php -m | grep -q 'zip'
@ -67,6 +71,31 @@ RUN set -xe; \
# - INSTALL_SOAP=true # - INSTALL_SOAP=true
# #
###########################################################################
# BZ2:
###########################################################################
ARG INSTALL_BZ2=false
RUN if [ ${INSTALL_BZ2} = true ]; then \
apt-get -y install libbz2-dev; \
docker-php-ext-install bz2 \
;fi
###########################################################################
# GMP (GNU Multiple Precision):
###########################################################################
ARG INSTALL_GMP=false
RUN if [ ${INSTALL_GMP} = true ]; then \
# Install the GMP extension
apt-get install -y libgmp-dev && \
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h \
;fi && \
docker-php-ext-install gmp \
;fi
########################################################################### ###########################################################################
# SSH2: # SSH2:
########################################################################### ###########################################################################
@ -79,7 +108,7 @@ RUN if [ ${INSTALL_SSH2} = true ]; then \
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
pecl install -a ssh2-0.13; \ pecl install -a ssh2-0.13; \
else \ else \
pecl install -a ssh2-1.1.2; \ pecl install -a ssh2-1.2; \
fi && \ fi && \
docker-php-ext-enable ssh2 \ docker-php-ext-enable ssh2 \
;fi ;fi
@ -161,7 +190,11 @@ RUN if [ ${INSTALL_XDEBUG} = true ]; then \
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \ if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
pecl install xdebug-2.5.5; \ pecl install xdebug-2.5.5; \
else \ else \
pecl install xdebug; \ if [ $(php -r "echo PHP_MINOR_VERSION;") = "0" ]; then \
pecl install xdebug-2.9.0; \
else \
pecl install xdebug; \
fi \
fi && \ fi && \
docker-php-ext-enable xdebug \ docker-php-ext-enable xdebug \
;fi ;fi
@ -190,7 +223,6 @@ RUN if [ ${INSTALL_PCOV} = true ]; then \
;fi \ ;fi \
;fi ;fi
########################################################################### ###########################################################################
# Phpdbg: # Phpdbg:
########################################################################### ###########################################################################
@ -326,7 +358,7 @@ ARG INSTALL_AMQP=false
RUN if [ ${INSTALL_AMQP} = true ]; then \ RUN if [ ${INSTALL_AMQP} = true ]; then \
# download and install manually, to make sure it's compatible with ampq installed by pecl later # download and install manually, to make sure it's compatible with ampq installed by pecl later
# install cmake first # install cmake first
apt-get update && apt-get -y install cmake && \ apt-get -y install cmake && \
curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/master.tar.gz && \ curl -L -o /tmp/rabbitmq-c.tar.gz https://github.com/alanxz/rabbitmq-c/archive/master.tar.gz && \
mkdir -p rabbitmq-c && \ mkdir -p rabbitmq-c && \
tar -C rabbitmq-c -zxvf /tmp/rabbitmq-c.tar.gz --strip 1 && \ tar -C rabbitmq-c -zxvf /tmp/rabbitmq-c.tar.gz --strip 1 && \
@ -348,7 +380,6 @@ RUN if [ ${INSTALL_AMQP} = true ]; then \
ARG INSTALL_GEARMAN=false ARG INSTALL_GEARMAN=false
RUN if [ ${INSTALL_GEARMAN} = true ]; then \ RUN if [ ${INSTALL_GEARMAN} = true ]; then \
apt-get update && \
apt-get -y install libgearman-dev && \ apt-get -y install libgearman-dev && \
cd /tmp && \ cd /tmp && \
curl -L https://github.com/wcgallego/pecl-gearman/archive/gearman-2.0.5.zip -O && \ curl -L https://github.com/wcgallego/pecl-gearman/archive/gearman-2.0.5.zip -O && \
@ -386,21 +417,6 @@ RUN if [ ${INSTALL_BCMATH} = true ]; then \
docker-php-ext-install bcmath \ docker-php-ext-install bcmath \
;fi ;fi
###########################################################################
# GMP (GNU Multiple Precision):
###########################################################################
ARG INSTALL_GMP=false
RUN if [ ${INSTALL_GMP} = true ]; then \
# Install the GMP extension
apt-get install -y libgmp-dev && \
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h \
;fi && \
docker-php-ext-install gmp \
;fi
########################################################################### ###########################################################################
# PHP Memcached: # PHP Memcached:
########################################################################### ###########################################################################
@ -705,7 +721,14 @@ ENV LARADOCK_PHALCON_VERSION ${LARADOCK_PHALCON_VERSION}
COPY ./phalcon.ini /usr/local/etc/php/conf.d/phalcon.ini.disable COPY ./phalcon.ini /usr/local/etc/php/conf.d/phalcon.ini.disable
RUN if [ $INSTALL_PHALCON = true ]; then \ RUN if [ $INSTALL_PHALCON = true ]; then \
apt-get update && apt-get install -y unzip libpcre3-dev gcc make re2c \ apt-get update && apt-get install -y unzip libpcre3-dev gcc make re2c git automake autoconf\
&& git clone https://github.com/jbboehr/php-psr.git \
&& cd php-psr \
&& phpize \
&& ./configure \
&& make \
&& make test \
&& make install \
&& curl -L -o /tmp/cphalcon.zip https://github.com/phalcon/cphalcon/archive/v${LARADOCK_PHALCON_VERSION}.zip \ && curl -L -o /tmp/cphalcon.zip https://github.com/phalcon/cphalcon/archive/v${LARADOCK_PHALCON_VERSION}.zip \
&& unzip -d /tmp/ /tmp/cphalcon.zip \ && unzip -d /tmp/ /tmp/cphalcon.zip \
&& cd /tmp/cphalcon-${LARADOCK_PHALCON_VERSION}/build \ && cd /tmp/cphalcon-${LARADOCK_PHALCON_VERSION}/build \
@ -795,12 +818,7 @@ USER root
ARG INSTALL_MYSQL_CLIENT=false ARG INSTALL_MYSQL_CLIENT=false
RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \ RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \
apt-get update -yqq && \
if [ ${LARADOCK_PHP_VERSION} = "7.3" ]; then \
apt-get -y install default-mysql-client \ apt-get -y install default-mysql-client \
;else \
apt-get -y install mysql-client \
;fi \
;fi ;fi
########################################################################### ###########################################################################
@ -812,7 +830,6 @@ USER root
ARG INSTALL_PING=false ARG INSTALL_PING=false
RUN if [ ${INSTALL_PING} = true ]; then \ RUN if [ ${INSTALL_PING} = true ]; then \
apt-get update -yqq && \
apt-get -y install inetutils-ping \ apt-get -y install inetutils-ping \
;fi ;fi
@ -825,7 +842,6 @@ USER root
ARG INSTALL_SSHPASS=false ARG INSTALL_SSHPASS=false
RUN if [ ${INSTALL_SSHPASS} = true ]; then \ RUN if [ ${INSTALL_SSHPASS} = true ]; then \
apt-get update -yqq && \
apt-get -y install sshpass \ apt-get -y install sshpass \
;fi ;fi
@ -838,10 +854,29 @@ USER root
ARG INSTALL_FFMPEG=false ARG INSTALL_FFMPEG=false
RUN if [ ${INSTALL_FFMPEG} = true ]; then \ RUN if [ ${INSTALL_FFMPEG} = true ]; then \
apt-get update -yqq && \
apt-get -y install ffmpeg \ apt-get -y install ffmpeg \
;fi ;fi
#####################################
# wkhtmltopdf:
#####################################
USER root
ARG INSTALL_WKHTMLTOPDF=false
RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \
apt-get install -y \
libxrender1 \
libfontconfig1 \
libx11-dev \
libjpeg62 \
libxtst6 \
wget \
&& wget https://github.com/h4cc/wkhtmltopdf-amd64/blob/master/bin/wkhtmltopdf-amd64?raw=true -O /usr/local/bin/wkhtmltopdf \
&& chmod +x /usr/local/bin/wkhtmltopdf \
;fi
########################################################################### ###########################################################################
# Mailparse extension: # Mailparse extension:
########################################################################### ###########################################################################
@ -871,6 +906,16 @@ RUN if [ ${INSTALL_CACHETOOL} = true ]; then \
mv cachetool.phar /usr/local/bin/cachetool \ mv cachetool.phar /usr/local/bin/cachetool \
;fi ;fi
###########################################################################
# XMLRPC:
###########################################################################
ARG INSTALL_XMLRPC=false
RUN if [ ${INSTALL_XMLRPC} = true ]; then \
docker-php-ext-install xmlrpc \
;fi
########################################################################### ###########################################################################
# Check PHP version: # Check PHP version:
########################################################################### ###########################################################################

View File

@ -1 +1,2 @@
extension=psr.so
extension=phalcon.so extension=phalcon.so

View File

@ -36,7 +36,7 @@ xdebug_start ()
# And uncomment line with xdebug extension, thus enabling it # And uncomment line with xdebug extension, thus enabling it
ON_CMD="sed -i 's/^;zend_extension=/zend_extension=/g' \ ON_CMD="sed -i 's/^;zend_extension=/zend_extension=/g' \
/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini" /usr/local/etc/php/conf.d/xdebug.ini"
# If running on Windows, need to prepend with winpty :( # If running on Windows, need to prepend with winpty :(
@ -58,7 +58,7 @@ xdebug_stop ()
echo 'Stop xDebug' echo 'Stop xDebug'
# Comment out xdebug extension line # Comment out xdebug extension line
OFF_CMD="sed -i 's/^zend_extension=/;zend_extension=/g' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini" OFF_CMD="sed -i 's/^zend_extension=/;zend_extension=/g' /usr/local/etc/php/conf.d/xdebug.ini"
# If running on Windows, need to prepend with winpty :( # If running on Windows, need to prepend with winpty :(

View File

@ -1,7 +1,7 @@
; NOTE: The actual debug.so extention is NOT SET HERE but rather (/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini) ; NOTE: The actual debug.so extention is NOT SET HERE but rather (/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini)
; xdebug.remote_host=dockerhost xdebug.remote_host="host.docker.internal"
xdebug.remote_connect_back=1 xdebug.remote_connect_back=0
xdebug.remote_port=9000 xdebug.remote_port=9000
xdebug.idekey=PHPSTORM xdebug.idekey=PHPSTORM
@ -17,4 +17,3 @@ xdebug.remote_mode=req
xdebug.var_display_max_children=-1 xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1 xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=-1 xdebug.var_display_max_depth=-1

View File

@ -4,11 +4,13 @@
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# #
ARG PHP_VERSION=${PHP_VERSION} ARG LARADOCK_PHP_VERSION
FROM php:${PHP_VERSION}-alpine FROM php:${LARADOCK_PHP_VERSION}-alpine
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>" LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
ARG LARADOCK_PHP_VERSION
# If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env. # If you're in China, or you need to change sources, will be set CHANGE_SOURCE to true in .env.
ARG CHANGE_SOURCE=false ARG CHANGE_SOURCE=false
@ -29,10 +31,17 @@ RUN apk --update add wget \
autoconf \ autoconf \
cyrus-sasl-dev \ cyrus-sasl-dev \
libgsasl-dev \ libgsasl-dev \
oniguruma-dev \
openssl \
openssl-dev \
supervisor supervisor
RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml pcntl
RUN pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb RUN if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
pecl channel-update pecl.php.net && pecl install memcached-2.2.0 mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb \
;else \
pecl channel-update pecl.php.net && pecl install memcached mcrypt-1.0.1 mongodb && docker-php-ext-enable memcached mongodb \
;fi
# Add a non-root user: # Add a non-root user:
ARG PUID=1000 ARG PUID=1000
@ -43,6 +52,35 @@ ENV PGID ${PGID}
RUN addgroup -g ${PGID} laradock && \ RUN addgroup -g ${PGID} laradock && \
adduser -D -G laradock -u ${PUID} laradock adduser -D -G laradock -u ${PUID} laradock
#Install BZ2:
ARG INSTALL_BZ2=false
RUN if [ ${INSTALL_BZ2} = true ]; then \
apk --update add bzip2-dev; \
docker-php-ext-install bz2; \
fi
#Install GD package:
ARG INSTALL_GD=false
RUN if [ ${INSTALL_GD} = true ]; then \
apk add --update --no-cache libpng-dev; \
docker-php-ext-install gd \
;fi
#Install ImageMagick:
ARG INSTALL_IMAGEMAGICK=false
RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \
apk add --update imagemagick-dev imagemagick; \
pecl install imagick; \
docker-php-ext-enable imagick \
;fi
#Install GMP package:
ARG INSTALL_GMP=false
RUN if [ ${INSTALL_GMP} = true ]; then \
apk add --update --no-cache gmp gmp-dev \
&& docker-php-ext-install gmp \
;fi
#Install SOAP package: #Install SOAP package:
ARG INSTALL_SOAP=false ARG INSTALL_SOAP=false
RUN if [ ${INSTALL_SOAP} = true ]; then \ RUN if [ ${INSTALL_SOAP} = true ]; then \
@ -55,6 +93,47 @@ RUN if [ ${INSTALL_BCMATH} = true ]; then \
docker-php-ext-install bcmath \ docker-php-ext-install bcmath \
;fi ;fi
###########################################################################
# PHP OCI8:
###########################################################################
ARG INSTALL_OCI8=false
ENV LD_LIBRARY_PATH="/usr/local/instantclient"
ENV ORACLE_HOME="/usr/local/instantclient"
RUN if [ ${INSTALL_OCI8} = true ] && [ $(php -r "echo PHP_MAJOR_VERSION;") = "7" ]; then \
apk add make php7-pear php7-dev gcc musl-dev libnsl libaio poppler-utils libzip-dev zip unzip libaio-dev freetds-dev && \
## Download and unarchive Instant Client v11
curl -o /tmp/basic.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-basic-linux.x64-11.2.0.4.0.zip && \
curl -o /tmp/sdk.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-sdk-linux.x64-11.2.0.4.0.zip && \
curl -o /tmp/sqlplus.zip https://raw.githubusercontent.com/bumpx/oracle-instantclient/master/instantclient-sqlplus-linux.x64-11.2.0.4.0.zip && \
unzip -d /usr/local/ /tmp/basic.zip && \
unzip -d /usr/local/ /tmp/sdk.zip && \
unzip -d /usr/local/ /tmp/sqlplus.zip \
## Links are required for older SDKs
&& ln -s /usr/local/instantclient_11_2 ${ORACLE_HOME} && \
ln -s ${ORACLE_HOME}/libclntsh.so.* ${ORACLE_HOME}/libclntsh.so && \
ln -s ${ORACLE_HOME}/libocci.so.* ${ORACLE_HOME}/libocci.so && \
ln -s ${ORACLE_HOME}/lib* /usr/lib && \
ln -s ${ORACLE_HOME}/sqlplus /usr/bin/sqlplus &&\
ln -s /usr/lib/libnsl.so.2.0.0 /usr/lib/libnsl.so.1 && \
## Build OCI8 with PECL
echo "instantclient,${ORACLE_HOME}" | pecl install oci8 && \
echo 'extension=oci8.so' > /etc/php7/conf.d/30-oci8.ini \
# Clean up
apk del php7-pear php7-dev gcc musl-dev && \
rm -rf /tmp/*.zip /tmp/pear/ && \
docker-php-ext-configure pdo_oci --with-pdo-oci=instantclient,/usr/local/instantclient \
&& docker-php-ext-configure pdo_dblib --with-libdir=/lib \
&& docker-php-ext-install pdo_oci \
&& docker-php-ext-enable oci8 \
&& docker-php-ext-install zip && \
# Install the zip extension
docker-php-ext-configure zip && \
php -m | grep -q 'zip' \
;fi
# Install PostgreSQL drivers: # Install PostgreSQL drivers:
ARG INSTALL_PGSQL=false ARG INSTALL_PGSQL=false
RUN if [ ${INSTALL_PGSQL} = true ]; then \ RUN if [ ${INSTALL_PGSQL} = true ]; then \
@ -64,9 +143,14 @@ RUN if [ ${INSTALL_PGSQL} = true ]; then \
# Install ZipArchive: # Install ZipArchive:
ARG INSTALL_ZIP_ARCHIVE=false ARG INSTALL_ZIP_ARCHIVE=false
RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \ RUN set -eux; \
if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
apk --update add libzip-dev && \ apk --update add libzip-dev && \
docker-php-ext-configure zip --with-libzip && \ if [ ${LARADOCK_PHP_VERSION} = "7.3" ] || [ ${LARADOCK_PHP_VERSION} = "7.4" ]; then \
docker-php-ext-configure zip; \
else \
docker-php-ext-configure zip --with-libzip; \
fi && \
# Install the zip extension # Install the zip extension
docker-php-ext-install zip \ docker-php-ext-install zip \
;fi ;fi
@ -74,11 +158,7 @@ RUN if [ ${INSTALL_ZIP_ARCHIVE} = true ]; then \
# Install MySQL Client: # Install MySQL Client:
ARG INSTALL_MYSQL_CLIENT=false ARG INSTALL_MYSQL_CLIENT=false
RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \ RUN if [ ${INSTALL_MYSQL_CLIENT} = true ]; then \
if [ ${PHP_VERSION} = "7.3" ]; then \
apk --update add default-mysql-client \
;else \
apk --update add mysql-client \ apk --update add mysql-client \
;fi \
;fi ;fi
# Install FFMPEG: # Install FFMPEG:
@ -135,6 +215,13 @@ ENV PHALCON_VERSION ${PHALCON_VERSION}
RUN if [ $INSTALL_PHALCON = true ]; then \ RUN if [ $INSTALL_PHALCON = true ]; then \
apk --update add unzip gcc make re2c bash\ apk --update add unzip gcc make re2c bash\
&& git clone https://github.com/jbboehr/php-psr.git \
&& cd php-psr \
&& phpize \
&& ./configure \
&& make \
&& make test \
&& make install \
&& curl -L -o /tmp/cphalcon.zip https://github.com/phalcon/cphalcon/archive/v${PHALCON_VERSION}.zip \ && curl -L -o /tmp/cphalcon.zip https://github.com/phalcon/cphalcon/archive/v${PHALCON_VERSION}.zip \
&& unzip -d /tmp/ /tmp/cphalcon.zip \ && unzip -d /tmp/ /tmp/cphalcon.zip \
&& cd /tmp/cphalcon-${PHALCON_VERSION}/build \ && cd /tmp/cphalcon-${PHALCON_VERSION}/build \
@ -147,13 +234,6 @@ RUN if [ $INSTALL_GHOSTSCRIPT = true ]; then \
apk --update add ghostscript \ apk --update add ghostscript \
;fi ;fi
#Install GMP package:
ARG INSTALL_GMP=false
RUN if [ ${INSTALL_GMP} = true ]; then \
apk add --update --no-cache gmp gmp-dev \
&& docker-php-ext-install gmp \
;fi
# Install Redis package: # Install Redis package:
ARG INSTALL_REDIS=false ARG INSTALL_REDIS=false
RUN if [ ${INSTALL_REDIS} = true ]; then \ RUN if [ ${INSTALL_REDIS} = true ]; then \
@ -197,6 +277,28 @@ RUN if [ ${INSTALL_TAINT} = true ]; then \
docker-php-ext-enable taint \ docker-php-ext-enable taint \
;fi ;fi
###########################################################################
# Imap EXTENSION
###########################################################################
ARG INSTALL_IMAP=false
RUN if [ ${INSTALL_IMAP} = true ]; then \
apk add --update imap-dev openssl-dev && \
docker-php-ext-configure imap --with-imap --with-imap-ssl && \
docker-php-ext-install imap \
;fi
###########################################################################
# XMLRPC:
###########################################################################
ARG INSTALL_XMLRPC=false
RUN if [ ${INSTALL_XMLRPC} = true ]; then \
docker-php-ext-install xmlrpc \
;fi
# #
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# Optional Supervisord Configuration # Optional Supervisord Configuration

View File

@ -1,6 +1,5 @@
FROM postgres:alpine ARG POSTGRES_VERSION=alpine
FROM postgres:${POSTGRES_VERSION}
LABEL maintainer="Ben M <git@bmagg.com>"
CMD ["postgres"] CMD ["postgres"]

View File

@ -1,7 +1,11 @@
FROM traefik:1.7.5-alpine FROM traefik:v2.2
LABEL maintainer="Luis Coutinho <luis@luiscoutinho.pt>" LABEL maintainer="Luis Coutinho <luis@luiscoutinho.pt>"
COPY traefik.toml acme.json / WORKDIR /data
RUN chmod 600 /acme.json RUN touch acme.json
RUN chmod 600 acme.json
VOLUME /data

View File

2
traefik/data/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
*
!.gitignore

View File

@ -1,23 +0,0 @@
defaultEntryPoints = ["http", "https"]
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
[web]
address = ":8080"
[acme]
email = "email@example.org"
storage = "acme.json"
entryPoint = "https"
onHostRule = true
[acme.httpChallenge]
entryPoint = "http"
[[acme.domais]]
main = "localhost"

View File

@ -1,16 +1,8 @@
FROM debian:latest FROM varnish:6.3
LABEL maintainer="ZeroC0D3 Team<zeroc0d3.team@gmail.com>"
# Set Environment Variables # Set Environment Variables
ENV DEBIAN_FRONTEND noninteractive ENV DEBIAN_FRONTEND noninteractive
# Install Dependencies
RUN apt-get update && apt-get install -y apt-utils && apt-get upgrade -y
RUN mkdir /home/site && mkdir /home/site/cache
RUN apt-get install -y varnish
RUN rm -rf /var/lib/apt/lists/*
# Setting Configurations # Setting Configurations
ENV VARNISH_CONFIG /etc/varnish/default.vcl ENV VARNISH_CONFIG /etc/varnish/default.vcl
ENV CACHE_SIZE 128m ENV CACHE_SIZE 128m

View File

@ -52,6 +52,7 @@ sub vcl_init {
# vdir.add_backend(servern); # vdir.add_backend(servern);
} }
# This function is used when a request is send by a HTTP client (Browser)
sub vcl_recv { sub vcl_recv {
# Called at the beginning of a request, after the complete request has been received and parsed. # Called at the beginning of a request, after the complete request has been received and parsed.
# Its purpose is to decide whether or not to serve the request, how to do it, and, if applicable, # Its purpose is to decide whether or not to serve the request, how to do it, and, if applicable,
@ -75,8 +76,12 @@ sub vcl_recv {
# Not from an allowed IP? Then die with an error. # Not from an allowed IP? Then die with an error.
return (synth(405, "This IP is not allowed to send PURGE requests.")); return (synth(405, "This IP is not allowed to send PURGE requests."));
} }
# If you got this stage (and didn't error out above), purge the cached result
return (purge); ban("req.http.host == " + req.http.host);
# Throw a synthetic page so the request won't go to the backend.
return(synth(200, "Ban added"));
# If allowed, do a cache_lookup -> vlc_hit() or vlc_miss()
#return (purge);
} }
# Only deal with "normal" types # Only deal with "normal" types

View File

@ -0,0 +1,243 @@
vcl 4.1;
# Based on: https://github.com/mattiasgeniar/varnish-6.0-configuration-templates/blob/master/default.vcl
import std;
import directors;
backend everpracticalsolutionsServer { # Define one backend
.host = "${BACKEND_HOST}"; # IP or Hostname of backend
.port = "${BACKEND_PORT}"; # Port Apache or whatever is listening
.max_connections = 300; # That's it
.probe = {
#.url = "/"; # short easy way (GET /)
# We prefer to only do a HEAD /
.request =
"HEAD /health_check.php HTTP/1.1"
"Host: ${BACKEND_HOST}"
"Connection: close"
"User-Agent: Varnish Health Probe";
.interval = 5s; # check the health of each backend every 5 seconds
.timeout = 1s; # timing out after 1 second.
.window = 5; # If 3 out of the last 5 polls succeeded the backend is considered healthy, otherwise it will be marked as sick
.threshold = 3;
}
.first_byte_timeout = 300s; # How long to wait before we receive a first byte from our backend?
.connect_timeout = 5s; # How long to wait for a backend connection?
.between_bytes_timeout = 2s; # How long to wait between bytes received from our backend?
}
# Only allow purging from specific IPs
acl purge {
"localhost";
"127.0.0.1";
"192.168.16.5";
"192.168.16.6";
"185.228.234.203";
}
# This function is used when a request is send by a HTTP client (Browser)
sub vcl_recv {
# Normalize the header, remove the port (in case you're testing this on various TCP ports)
set req.http.Host = regsub(req.http.Host, ":[0-9]+", "");
# Allow purging from ACL
if (req.method == "PURGE") {
# If not allowed then a error 405 is returned
if (!client.ip ~ purge) {
return(synth(405, "This IP is not allowed to send PURGE requests."));
}
ban("req.http.host == " + req.http.host);
# Throw a synthetic page so the request won't go to the backend.
return(synth(200, "Ban added"));
# If allowed, do a cache_lookup -> vlc_hit() or vlc_miss()
#return (purge);
}
# Post requests will not be cached
if (req.http.Authorization || req.method == "POST") {
return (pass);
}
# --- WordPress specific configuration
# Did not cache the RSS feed
if (req.url ~ "/feed") {
return (pass);
}
# Blitz hack
if (req.url ~ "/mu-.*") {
return (pass);
}
# Did not cache the admin and login pages
if (req.url ~ "/wp-(login|admin)") {
return (pass);
}
# Remove the "has_js" cookie
set req.http.Cookie = regsuball(req.http.Cookie, "has_js=[^;]+(; )?", "");
# Remove any Google Analytics based cookies
set req.http.Cookie = regsuball(req.http.Cookie, "__utm.=[^;]+(; )?", "");
# Remove the Quant Capital cookies (added by some plugin, all __qca)
set req.http.Cookie = regsuball(req.http.Cookie, "__qc.=[^;]+(; )?", "");
# Remove the wp-settings-1 cookie
set req.http.Cookie = regsuball(req.http.Cookie, "wp-settings-1=[^;]+(; )?", "");
# Remove the wp-settings-time-1 cookie
set req.http.Cookie = regsuball(req.http.Cookie, "wp-settings-time-1=[^;]+(; )?", "");
# Remove the wp test cookie
set req.http.Cookie = regsuball(req.http.Cookie, "wordpress_test_cookie=[^;]+(; )?", "");
# Are there cookies left with only spaces or that are empty?
if (req.http.cookie ~ "^ *$") {
unset req.http.cookie;
}
# Cache the following files extensions
if (req.url ~ "\.(css|js|png|gif|jp(e)?g|swf|ico)") {
unset req.http.cookie;
}
# Normalize Accept-Encoding header and compression
# https://www.varnish-cache.org/docs/3.0/tutorial/vary.html
if (req.http.Accept-Encoding) {
# Do no compress compressed files...
if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") {
unset req.http.Accept-Encoding;
} elsif (req.http.Accept-Encoding ~ "gzip") {
set req.http.Accept-Encoding = "gzip";
} elsif (req.http.Accept-Encoding ~ "deflate") {
set req.http.Accept-Encoding = "deflate";
} else {
unset req.http.Accept-Encoding;
}
}
# Check the cookies for wordpress-specific items
if (req.http.Cookie ~ "wordpress_" || req.http.Cookie ~ "comment_") {
return (pass);
}
if (!req.http.cookie) {
unset req.http.cookie;
}
# --- End of WordPress specific configuration
# Do not cache HTTP authentication and HTTP Cookie
if (req.http.Authorization || req.http.Cookie) {
# Not cacheable by default
return (pass);
}
# Cache all others requests
return (hash);
}
sub vcl_pipe {
return (pipe);
}
sub vcl_pass {
return (fetch);
}
# The data on which the hashing will take place
sub vcl_hash {
hash_data(req.url);
if (req.http.host) {
hash_data(req.http.host);
} else {
hash_data(server.ip);
}
# If the client supports compression, keep that in a different cache
if (req.http.Accept-Encoding) {
hash_data(req.http.Accept-Encoding);
}
return (lookup);
}
# This function is used when a request is sent by our backend (Nginx server)
sub vcl_backend_response {
# Remove some headers we never want to see
unset beresp.http.Server;
unset beresp.http.X-Powered-By;
# For static content strip all backend cookies
if (bereq.url ~ "\.(css|js|png|gif|jp(e?)g)|swf|ico") {
unset beresp.http.cookie;
}
# Only allow cookies to be set if we're in admin area
if (beresp.http.Set-Cookie && bereq.url !~ "^/wp-(login|admin)") {
unset beresp.http.Set-Cookie;
}
# don't cache response to posted requests or those with basic auth
if ( bereq.method == "POST" || bereq.http.Authorization ) {
set beresp.uncacheable = true;
set beresp.ttl = 120s;
return (deliver);
}
# don't cache search results
if ( bereq.url ~ "\?s=" ){
set beresp.uncacheable = true;
set beresp.ttl = 120s;
return (deliver);
}
# only cache status ok
if ( beresp.status != 200 ) {
set beresp.uncacheable = true;
set beresp.ttl = 120s;
return (deliver);
}
# A TTL of 24h
set beresp.ttl = 24h;
# Define the default grace period to serve cached content
set beresp.grace = 30s;
return (deliver);
}
# The routine when we deliver the HTTP request to the user
# Last chance to modify headers that are sent to the client
sub vcl_deliver {
if (obj.hits > 0) {
set resp.http.X-Cache = "cached";
} else {
set resp.http.x-Cache = "uncached";
}
# Remove some headers: PHP version
unset resp.http.X-Powered-By;
# Remove some headers: Apache version & OS
unset resp.http.Server;
# Remove some heanders: Varnish
unset resp.http.Via;
unset resp.http.X-Varnish;
return (deliver);
}
sub vcl_init {
return (ok);
}
sub vcl_fini {
return (ok);
}

View File

@ -7,6 +7,14 @@ do
sed -i "s|\${${name}}|${value}|g" /etc/varnish/default.vcl sed -i "s|\${${name}}|${value}|g" /etc/varnish/default.vcl
done done
echo "exec varnishd \
-a :$VARNISH_PORT \
-T localhost:6082 \
-F \
-f $VARNISH_CONFIG \
-s malloc,$CACHE_SIZE \
$VARNISHD_PARAMS"
exec bash -c \ exec bash -c \
"exec varnishd \ "exec varnishd \
-a :$VARNISH_PORT \ -a :$VARNISH_PORT \

View File

@ -13,8 +13,8 @@
# #
ARG LARADOCK_PHP_VERSION ARG LARADOCK_PHP_VERSION
ARG BASE_IMAGE_TAG_PREFIX=latest
FROM laradock/workspace:2.6.1-${LARADOCK_PHP_VERSION} FROM laradock/workspace:${BASE_IMAGE_TAG_PREFIX}-${LARADOCK_PHP_VERSION}
LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>" LABEL maintainer="Mahmoud Zalt <mahmoud@zalt.me>"
@ -51,6 +51,7 @@ ARG UBUNTU_SOURCE
COPY ./sources.sh /tmp/sources.sh COPY ./sources.sh /tmp/sources.sh
RUN if [ ${CHANGE_SOURCE} = true ]; then \ RUN if [ ${CHANGE_SOURCE} = true ]; then \
chmod +x /tmp/sources.sh && \
/bin/sh -c /tmp/sources.sh && \ /bin/sh -c /tmp/sources.sh && \
rm -rf /tmp/sources.sh \ rm -rf /tmp/sources.sh \
;fi ;fi
@ -74,7 +75,7 @@ RUN set -xe; \
# to add more Software's or remove existing one, you need to edit the # to add more Software's or remove existing one, you need to edit the
# base image (https://github.com/Laradock/workspace). # base image (https://github.com/Laradock/workspace).
# #
# next lines are here becase there is no auto build on dockerhub see https://github.com/laradock/laradock/pull/1903#issuecomment-463142846 # next lines are here because there is no auto build on dockerhub see https://github.com/laradock/laradock/pull/1903#issuecomment-463142846
libzip-dev zip unzip \ libzip-dev zip unzip \
# Install the zip extension # Install the zip extension
php${LARADOCK_PHP_VERSION}-zip \ php${LARADOCK_PHP_VERSION}-zip \
@ -234,20 +235,16 @@ RUN if [ ${INSTALL_WP_CLI} = true ]; then \
;fi ;fi
########################################################################### ###########################################################################
# SSH2: # BZ2:
########################################################################### ###########################################################################
USER root ARG INSTALL_BZ2=false
RUN if [ ${INSTALL_BZ2} = true ]; then \
ARG INSTALL_SSH2=false apt-get -y install php${LARADOCK_PHP_VERSION}-bz2 \
RUN if [ ${INSTALL_SSH2} = true ]; then \
# Install the PHP SSH2 extension
apt-get -y install libssh2-1-dev php${LARADOCK_PHP_VERSION}-ssh2 \
;fi ;fi
########################################################################### ###########################################################################
# GMP: # GMP (GNU Multiple Precision):
########################################################################### ###########################################################################
USER root USER root
@ -260,6 +257,19 @@ RUN if [ ${INSTALL_GMP} = true ]; then \
apt-get -y install php${LARADOCK_PHP_VERSION}-gmp \ apt-get -y install php${LARADOCK_PHP_VERSION}-gmp \
;fi ;fi
###########################################################################
# SSH2:
###########################################################################
USER root
ARG INSTALL_SSH2=false
RUN if [ ${INSTALL_SSH2} = true ]; then \
# Install the PHP SSH2 extension
apt-get -y install libssh2-1-dev php${LARADOCK_PHP_VERSION}-ssh2 \
;fi
########################################################################### ###########################################################################
# SOAP: # SOAP:
########################################################################### ###########################################################################
@ -577,10 +587,13 @@ ARG AST_VERSION=1.0.3
ENV AST_VERSION ${AST_VERSION} ENV AST_VERSION ${AST_VERSION}
RUN if [ ${INSTALL_AST} = true ]; then \ RUN if [ ${INSTALL_AST} = true ]; then \
# Install AST extension # AST extension requires PHP 7.0.0 or newer
printf "\n" | pecl -q install ast-${AST_VERSION} && \ if [ $(php -r "echo PHP_MAJOR_VERSION;") != "5" ]; then \
echo "extension=ast.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/ast.ini && \ # Install AST extension
phpenmod -v ${LARADOCK_PHP_VERSION} -s cli ast \ printf "\n" | pecl -q install ast-${AST_VERSION} && \
echo "extension=ast.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/ast.ini && \
phpenmod -v ${LARADOCK_PHP_VERSION} -s cli ast \
;fi \
;fi ;fi
########################################################################### ###########################################################################
@ -710,6 +723,20 @@ RUN if [ ${NPM_REGISTRY} ]; then \
. ~/.bashrc && npm config set registry ${NPM_REGISTRY} \ . ~/.bashrc && npm config set registry ${NPM_REGISTRY} \
;fi ;fi
###########################################################################
# PNPM:
###########################################################################
USER laradock
ARG INSTALL_PNPM=false
RUN if [ ${INSTALL_PNPM} = true ]; then \
npx pnpm add -g pnpm \
;fi
########################################################################### ###########################################################################
# YARN: # YARN:
########################################################################### ###########################################################################
@ -858,7 +885,7 @@ ARG INSTALL_LARAVEL_ENVOY=false
RUN if [ ${INSTALL_LARAVEL_ENVOY} = true ]; then \ RUN if [ ${INSTALL_LARAVEL_ENVOY} = true ]; then \
# Install the Laravel Envoy # Install the Laravel Envoy
composer global require "laravel/envoy=~1.0" \ composer global require "laravel/envoy=~2.0" \
;fi ;fi
########################################################################### ###########################################################################
@ -1151,11 +1178,19 @@ ARG LARADOCK_PHALCON_VERSION
ENV LARADOCK_PHALCON_VERSION ${LARADOCK_PHALCON_VERSION} ENV LARADOCK_PHALCON_VERSION ${LARADOCK_PHALCON_VERSION}
RUN if [ $INSTALL_PHALCON = true ]; then \ RUN if [ $INSTALL_PHALCON = true ]; then \
apt-get update && apt-get install -y unzip libpcre3-dev gcc make re2c \ apt-get update && apt-get install -y unzip libpcre3-dev gcc make re2c git automake autoconf\
&& git clone https://github.com/jbboehr/php-psr.git \
&& cd php-psr \
&& phpize \
&& ./configure \
&& make \
&& make test \
&& make install \
&& curl -L -o /tmp/cphalcon.zip https://github.com/phalcon/cphalcon/archive/v${LARADOCK_PHALCON_VERSION}.zip \ && curl -L -o /tmp/cphalcon.zip https://github.com/phalcon/cphalcon/archive/v${LARADOCK_PHALCON_VERSION}.zip \
&& unzip -d /tmp/ /tmp/cphalcon.zip \ && unzip -d /tmp/ /tmp/cphalcon.zip \
&& cd /tmp/cphalcon-${LARADOCK_PHALCON_VERSION}/build \ && cd /tmp/cphalcon-${LARADOCK_PHALCON_VERSION}/build \
&& ./install \ && ./install \
&& echo "extension=psr.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/phalcon.ini \
&& echo "extension=phalcon.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/phalcon.ini \ && echo "extension=phalcon.so" >> /etc/php/${LARADOCK_PHP_VERSION}/mods-available/phalcon.ini \
&& ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/phalcon.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-phalcon.ini \ && ln -s /etc/php/${LARADOCK_PHP_VERSION}/mods-available/phalcon.ini /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/30-phalcon.ini \
&& rm -rf /tmp/cphalcon* \ && rm -rf /tmp/cphalcon* \
@ -1231,6 +1266,26 @@ RUN if [ ${INSTALL_FFMPEG} = true ]; then \
apt-get -y install ffmpeg \ apt-get -y install ffmpeg \
;fi ;fi
#####################################
# wkhtmltopdf:
#####################################
USER root
ARG INSTALL_WKHTMLTOPDF=false
RUN if [ ${INSTALL_WKHTMLTOPDF} = true ]; then \
apt-get install -y \
libxrender1 \
libfontconfig1 \
libx11-dev \
libjpeg62 \
libxtst6 \
wget \
&& wget https://github.com/h4cc/wkhtmltopdf-amd64/blob/master/bin/wkhtmltopdf-amd64?raw=true -O /usr/local/bin/wkhtmltopdf \
&& chmod +x /usr/local/bin/wkhtmltopdf \
;fi
########################################################################### ###########################################################################
# Mailparse extension: # Mailparse extension:
########################################################################### ###########################################################################
@ -1253,6 +1308,29 @@ RUN if [ ${INSTALL_GNU_PARALLEL} = true ]; then \
apt-get -y install parallel \ apt-get -y install parallel \
;fi ;fi
###########################################################################
# Bash Git Prompt
###########################################################################
ARG INSTALL_GIT_PROMPT=false
COPY git-prompt.sh /tmp/git-prompt
RUN if [ ${INSTALL_GIT_PROMPT} = true ]; then \
git clone https://github.com/magicmonty/bash-git-prompt.git /root/.bash-git-prompt --depth=1 && \
cat /tmp/git-prompt >> /root/.bashrc && \
rm /tmp/git-prompt \
;fi
###########################################################################
# XMLRPC:
###########################################################################
ARG INSTALL_XMLRPC=false
RUN if [ ${INSTALL_XMLRPC} = true ]; then \
docker-php-ext-install xmlrpc \
;fi
########################################################################### ###########################################################################
# Check PHP version: # Check PHP version:
@ -1260,6 +1338,37 @@ RUN if [ ${INSTALL_GNU_PARALLEL} = true ]; then \
RUN set -xe; php -v | head -n 1 | grep -q "PHP ${LARADOCK_PHP_VERSION}." RUN set -xe; php -v | head -n 1 | grep -q "PHP ${LARADOCK_PHP_VERSION}."
###########################################################################
# Oh My ZSH!
###########################################################################
USER root
ARG SHELL_OH_MY_ZSH=false
RUN if [ ${SHELL_OH_MY_ZSH} = true ]; then \
apt install -y zsh \
;fi
USER laradock
RUN if [ ${SHELL_OH_MY_ZSH} = true ]; then \
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh) --keep-zshrc" && \
sed -i -r 's/^plugins=\(.*?\)$/plugins=(laravel5)/' /home/laradock/.zshrc && \
echo '\n\
bindkey "^[OB" down-line-or-search\n\
bindkey "^[OC" forward-char\n\
bindkey "^[OD" backward-char\n\
bindkey "^[OF" end-of-line\n\
bindkey "^[OH" beginning-of-line\n\
bindkey "^[[1~" beginning-of-line\n\
bindkey "^[[3~" delete-char\n\
bindkey "^[[4~" end-of-line\n\
bindkey "^[[5~" up-line-or-history\n\
bindkey "^[[6~" down-line-or-history\n\
bindkey "^?" backward-delete-char\n' >> /home/laradock/.zshrc \
;fi
USER root
# #
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# Final Touch # Final Touch

24
workspace/git-prompt.sh Normal file
View File

@ -0,0 +1,24 @@
# Settings info at https://github.com/magicmonty/bash-git-prompt
if [ -f "$HOME/.bash-git-prompt/gitprompt.sh" ]; then
# Set config variables first
GIT_PROMPT_ONLY_IN_REPO=1
GIT_PROMPT_FETCH_REMOTE_STATUS=0 # uncomment to avoid fetching remote status
GIT_PROMPT_IGNORE_SUBMODULES=1 # uncomment to avoid searching for changed files in submodules
# GIT_PROMPT_WITH_VIRTUAL_ENV=0 # uncomment to avoid setting virtual environment infos for node/python/conda environments
# GIT_PROMPT_SHOW_UPSTREAM=1 # uncomment to show upstream tracking branch
# GIT_PROMPT_SHOW_UNTRACKED_FILES=normal # can be no, normal or all; determines counting of untracked files
# GIT_PROMPT_SHOW_CHANGED_FILES_COUNT=0 # uncomment to avoid printing the number of changed files
# GIT_PROMPT_STATUS_COMMAND=gitstatus_pre-1.7.10.sh # uncomment to support Git older than 1.7.10
# GIT_PROMPT_START=... # uncomment for custom prompt start sequence
# GIT_PROMPT_END=... # uncomment for custom prompt end sequence
# as last entry source the gitprompt script
# GIT_PROMPT_THEME=Custom # use custom theme specified in file GIT_PROMPT_THEME_FILE (default ~/.git-prompt-colors.sh)
# GIT_PROMPT_THEME_FILE=~/.git-prompt-colors.sh
# GIT_PROMPT_THEME=Solarized # use theme optimized for solarized color scheme
source $HOME/.bash-git-prompt/gitprompt.sh
fi

View File

@ -1,7 +1,7 @@
; NOTE: The actual debug.so extention is NOT SET HERE but rather (/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini) ; NOTE: The actual debug.so extention is NOT SET HERE but rather (/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini)
; xdebug.remote_host=dockerhost xdebug.remote_host="host.docker.internal"
xdebug.remote_connect_back=1 xdebug.remote_connect_back=0
xdebug.remote_port=9000 xdebug.remote_port=9000
xdebug.idekey=PHPSTORM xdebug.idekey=PHPSTORM
@ -17,4 +17,3 @@ xdebug.remote_mode=req
xdebug.var_display_max_children=-1 xdebug.var_display_max_children=-1
xdebug.var_display_max_data=-1 xdebug.var_display_max_data=-1
xdebug.var_display_max_depth=-1 xdebug.var_display_max_depth=-1