Compare commits

...

56 Commits

Author SHA1 Message Date
26cbb63f00 Merge pull request #891 from cytopia/release/v2.2.0
Devilbox Release v2.2.0
2022-04-14 18:02:52 +02:00
daefd0f927 Add announcement in docs 2022-04-14 12:05:39 +02:00
44d1f0162f Add PHP-FPM community image to intranet credits 2022-04-14 11:42:07 +02:00
59619ca9c1 Update project files 2022-04-14 11:29:13 +02:00
a6c45353bd Adding PHP-FPM community images 2022-04-14 11:28:54 +02:00
575782af55 Merge pull request #890 from cytopia/release/v2.1.1
Release v2.1.1
2022-04-08 10:48:44 +02:00
56d2ab39b4 Used tagged PHP images (auto-updating)instead early release branch one 2022-04-07 22:05:20 +02:00
c29741d119 Merge pull request #889 from cytopia/release/v2.1.0
Release v2.1.0
2022-04-06 09:29:14 +02:00
6e2f6ca181 Use intermediate images 2022-04-05 23:15:12 +02:00
7e85b8e609 Update project files 2022-04-05 23:15:01 +02:00
02f6876a21 Make Devilbox arm64 compatible 2022-04-03 13:39:56 +02:00
a5396c2213 Merge pull request #888 from cytopia/issue-bug-report
fine-tune bug report
2022-04-01 06:22:08 +02:00
eb9cb0254f fine-tune bug report 2022-04-01 06:21:44 +02:00
f054b22957 Merge pull request #887 from cytopia/bug-report
Refine bug report
2022-04-01 06:16:50 +02:00
aed9a96dfc Refine bug report 2022-04-01 06:16:34 +02:00
7a13143b4f Merge pull request #886 from cytopia/issue-template-bug
Adjust templates
2022-04-01 06:04:11 +02:00
887202db65 Adjust templates 2022-04-01 06:03:53 +02:00
4fb67be0bd Merge pull request #885 from cytopia/fix-templates
Enhance issue templates
2022-04-01 05:48:27 +02:00
14bba0a140 Enhance issue templates 2022-04-01 05:47:58 +02:00
6c2b42cbc7 Merge pull request #884 from cytopia/github-issues
Adjust issue templates
2022-04-01 05:20:25 +02:00
19619394e3 Adjust issue templates 2022-04-01 05:19:42 +02:00
66fe7e355d Merge pull request #883 from cytopia/repository-organization
Repository organization
2022-04-01 05:04:03 +02:00
ec1e5861ce Add new GitHub issue templates 2022-04-01 05:02:23 +02:00
fb48e5e85a Ensure to run CI tests only for specific purposes 2022-04-01 05:01:29 +02:00
49190e4c36 Merge pull request #881 from MrCrayon/master
Add note about MDEV-27937 MariaDB bug
2022-04-01 02:07:44 +02:00
c3da7facb4 Update docs/support/troubleshooting.rst 2022-03-31 12:39:38 +02:00
d375244920 Add note about MDEV-27937 MariaDB bug
I prefer to write code than documentation and I am not native speaker so feel free to suggest or make changes.

https://jira.mariadb.org/browse/MDEV-27937

Closes #870
2022-03-31 05:34:52 +02:00
1b5522b6fa Merge branch 'master' of https://github.com/MrCrayon/devilbox 2022-03-31 05:32:52 +02:00
68541d76ad Merge pull request #880 from cytopia/release/v2.0.0
Release/v2.0.0
2022-03-28 20:44:37 +02:00
96610c756b Update project files 2022-03-28 17:13:11 +02:00
7799740525 Added .env variable HTTPD_FLAVOUR to decide between Debian or Alpine for HTTP server 2022-03-28 17:10:51 +02:00
8e8991896a Remove failing services in CI 2022-03-28 17:10:50 +02:00
cbdabb2f97 Add exceptions for PHP CI to use older PGSQL versions 2022-03-28 17:10:50 +02:00
d45a336d65 Removed CI for MongoDB 2.8 and MongoDB 3.0 due to segfault 2022-03-28 17:10:50 +02:00
49b919534a Give more startup-time for CI tests 2022-03-28 17:10:49 +02:00
0159d2a60b Ensure CI tests run on bash shell 2022-03-28 17:10:49 +02:00
ac07995595 Adjust version according to breaking changes 2022-03-28 17:10:48 +02:00
4f0542b756 Add breaking changes info to CHANGELOG 2022-03-28 17:10:48 +02:00
052be908aa Add new CI status badges 2022-03-28 17:10:47 +02:00
a714821dea Use tiny Alpine version of Bind container 2022-03-28 17:10:47 +02:00
579ae15bcc Add exceptions for PHP CI to use older PGSQL versions 2022-03-28 17:10:46 +02:00
f632cc247f Fix Release version in CHANELOG 2022-03-28 17:10:46 +02:00
fbef67daac Rename workflows 2022-03-28 17:10:46 +02:00
a5e0a54c5f Reorganize integration tests 2022-03-28 17:10:45 +02:00
71c73f7fb3 Test re-usable workflows 2022-03-28 17:10:36 +02:00
52689f435a Colorize test outputs 2022-03-28 17:10:35 +02:00
3678a6799c Fix PGSQL versions in CI 2022-03-28 17:10:34 +02:00
014d9103db Added CakePHP integration tests for PHP 8+ 2022-03-28 17:10:33 +02:00
6acac7d8de Fix CI script to detect PHP version 2022-03-28 17:10:33 +02:00
9ac4b7399f Fix postgresql volume definitions 2022-03-28 17:10:33 +02:00
e3dfa7cc09 Bump version 2022-03-28 17:10:32 +02:00
6c03253313 Changed default server versions to have arm64 support 2022-03-28 17:10:32 +02:00
19a65b3da4 Merge pull request #877 from discorgento/fix/DOCS-xdebug3
Fix/docs xdebug3
2022-03-27 04:42:27 +02:00
95a0109004 DOCS-xdebug3 vscode linux config 2022-03-24 18:39:20 -03:00
0c26a6c319 Merge pull request #1 from cytopia/master
update
2022-03-24 13:50:28 -03:00
c3f213b779 Merge tag 'v1.10.5' of https://github.com/cytopia/devilbox
Release v1.10.5
2022-03-17 04:25:24 +01:00
54 changed files with 2223 additions and 1541 deletions

View File

@ -13,8 +13,8 @@ error_reporting(-1);
putenv('RES_OPTIONS=retrans:1 retry:1 timeout:1 attempts:1');
$DEVILBOX_VERSION = 'v1.11.0';
$DEVILBOX_DATE = '2022-03-22';
$DEVILBOX_VERSION = 'v2.2.0';
$DEVILBOX_DATE = '2022-04-14';
$DEVILBOX_API_PAGE = 'devilbox-api/status.json';
//

View File

@ -16,6 +16,7 @@
<p>I am currently the sole creator and maintainer of the Devilbox and all of its required projects.<br/>If you find this useful or if it makes your daily programming life easier, consider donating to keep this project alive.</p>
<ul>
<li><a target="_blank" href="https://github.com/sponsors/cytopia"><strong>GitHub sponsorship</strong></a></li>
<li><a target="_blank" href="https://opencollective.com/devilbox"><strong>Open Collective</strong></a></li>
<li><a target="_blank" href="https://www.patreon.com/devilbox"><strong>Patreon</strong></a></li>
</ul>
<br/>
@ -39,55 +40,59 @@
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.2">docker-php-fpm-5.2</a></td>
<td>Legacy PHP 5.2 base images (amd64 and i386)</td>
<td>Legacy PHP 5.2 base images (<code>amd64</code> and <code>i386</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.3">docker-php-fpm-5.3</a></td>
<td>Legacy PHP 5.3 base images (amd64 and arm64)</td>
<td>Legacy PHP 5.3 base images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.4">docker-php-fpm-5.4</a></td>
<td>Legacy PHP 5.4 base images (amd64 and arm64)</td>
<td>Legacy PHP 5.4 base images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-5.5">docker-php-fpm-5.5</a></td>
<td>Legacy PHP 5.5 base images (amd64 and arm64)</td>
<td>Legacy PHP 5.5 base images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.0">docker-php-fpm-8.0</a></td>
<td>PHP 8.0 base images (amd64 and arm64)</td>
<td>PHP 8.0 base images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.1">docker-php-fpm-8.1</a></td>
<td>PHP 8.1 base images (amd64 and arm64)</td>
<td>PHP 8.1 base images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-8.2">docker-php-fpm-8.2</a></td>
<td>Upcoming PHP 8.2 base images (amd64 and arm64)</td>
<td>PHP 8.2 base images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm">docker-php-fpm</a></td>
<td>PHP-FPM Devilbox images</td>
<td>PHP-FPM Devilbox images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-php-fpm-community">docker-php-fpm-community</a></td>
<td>PHP-FPM Community images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-mysql">docker-mysql</a></td>
<td>MySQL, MariaDB and PerconaDB images (amd64 and arm64)</td>
<td>MySQL, MariaDB and PerconaDB images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-apache-2.2">docker-apache-2.2</a></td>
<td>Apache 2.2 images (amd64 and arm64)</td>
<td>Apache 2.2 images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-apache-2.4">docker-apache-2.4</a></td>
<td>Apache 2.4 images (amd64 and arm64)</td>
<td>Apache 2.4 images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-nginx-stable">docker-nginx-stable</a></td>
<td>Nginx stable images (amd64 and arm64)</td>
<td>Nginx stable images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-nginx-mainline">docker-nginx-mainline</a></td>
<td>Nginx mainline images (amd64 and arm64)</td>
<td>Nginx mainline images (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-haproxy">docker-haproxy</a></td>
@ -95,7 +100,7 @@
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-ngrok">docker-ngrok</a></td>
<td>Ngrok image</td>
<td>Ngrok image (<code>amd64</code> and <code>arm64</code>)</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/devilbox/docker-varnish">docker-varnish</a></td>
@ -142,15 +147,19 @@
<td>Re-usable GitHub Action Workflows</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/shell-command-retry-action">shell-command-retry-action</a></td>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/shell-command-retry-action">shell-command-retry</a></td>
<td>GitHub Action</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/docker-tag-action">docker-tag-action</a></td>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/docker-tag-action">docker-tag</a></td>
<td>GitHub Action</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/git-ref-matrix-action">git-ref-matrix-action</a></td>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/git-ref-matrix-action">git-ref-matrix</a></td>
<td>GitHub Action</td>
</tr>
<tr>
<td><i class="fa fa-github-alt" aria-hidden="true"></i> <a target="_blank" href="https://github.com/cytopia/upload-artifact-verify-action">upload-artifact-verify</a></td>
<td>GitHub Action</td>
</tr>
<tr>

View File

@ -1,85 +0,0 @@
---
name: "\U0001F41B Bug report"
about: Something is not working? Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
<!---
1. Verify first that your issue/request is not already reported on GitHub.
2. Verify that your question is not covered in the docs: https://devilbox.readthedocs.io
3. PLEASE FILL OUT ALL REQUIRED INFORMATION BELOW! Otherwise it might take more time to properly handle this bug report.
-->
### ISSUE TYPE
<!-- DO NOT CHANGE THIS -->
- Bug Report
<!-- DO NOT CHANGE THIS -->
### Checklist
<!-- ENSURE YOU HAVE DONE THE FOLLOWING -->
* [ ] `.env` file is attached
* [ ] `./check-config.sh` output is added below
* [ ] `docker-compose logs` output is added below
* [ ] `docker-compose.override.yml` is attached (if exists)
* [ ] Custom configs from `cfg/` dir are attached (if exist)
* [ ] I've looked through the docs: https://devilbox.readthedocs.io/en/latest/
* [ ] I've looked through existing issues: https://github.com/cytopia/devilbox/issues
* [ ] I've read troubleshooting: https://devilbox.readthedocs.io/en/latest/support/troubleshooting.html
### OS / ENVIRONMENT
<!-- COMPLETE ALL 6 BULLET POINTS BELOW: -->
1. Host operating system and version:
2. (Windows only) Native Docker or Docker Toolbox:
3. Docker version:
4. Docker Compose version:
5. (Linux) Is SELinux enabled?:
6. What git commit hash are you on?:
### SUMMARY
<!-- Explain the problem briefly -->
### STEPS TO REPRODUCE
<!-- Show exactly how to reproduce the problem -->
<!-- Make this as detailed as possible and be sure that others can fully reproduce this issue -->
### EXPECTED BEHAVIOUR
<!-- What is the expected behaviour? -->
### ACTUAL BEHAVIOUR
<!-- What is the actual behaviour? -->
### OTHER INFORMATION
#### Start command
<!-- Add the command you have used to start the devilbox -->
```
$ docker-compose up...
```
#### Outputs
<!-- 1/2 Add the output from ./check-config.sh -->
```bash
$ ./check-config.sh
<<< REPLACE THIS LINE WITH OUTPUT FROM ABOVE COMMAND >>>
```
<!-- 2/2 Add the output from docker-compose logs -->
```bash
$ docker-compose logs
<<< REPLACE THIS LINE WITH OUTPUT FROM ABOVE COMMAND >>>
```

189
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@ -0,0 +1,189 @@
---
name: "\U0001F41B Bug report"
description: File a bug report
title: "[Bug]: "
labels: ["bug", "triage"]
assignees:
- cytopia
body:
- type: markdown
attributes:
value: |
Thanks for taking the time to fill out this bug report!
- type: checkboxes
attributes:
label: Have you already looked into this bug?
description: Please invest some time and check if this bug is already mentioned or documented elsewhere (You may select more than one).
options:
- label: I have checked the [Troubleshooting Guide](https://devilbox.readthedocs.io/en/latest/support/troubleshooting.html)
- label: I have checked [Release notes](https://github.com/cytopia/devilbox/releases) for potential migration steps
- label: I have checked [existing issues](https://github.com/cytopia/devilbox/issues) for similar bugs
- label: I have googled this bug already with no luck
- label: I have not done any of the above
validations:
required: true
- type: input
attributes:
label: (Optional) Error message
description: If you encountered any error message, copy and paste it here. This will be used for googling the issue.
validations:
required: false
- type: textarea
id: what-happened
attributes:
label: What went wrong?
description: What exactly went wrong of what bug did you encounter?
validations:
required: true
- type: textarea
id: expected-behaviour
attributes:
label: Expected behaviour
description: What did you expect to happen instead?
validations:
required: true
- type: textarea
id: steps-to-reproduce
attributes:
label: How can we reproduce the bug?
description: How do you trigger this bug? Please walk us through it step by step in detail. This is crucial in order to triage the bug and support you in resolving it.
validations:
required: true
- type: dropdown
id: host-os
attributes:
label: Host Operating System
description: What operating system are you using?
multiple: false
options:
- Linux
- macOS
- Windows
validations:
required: true
- type: dropdown
id: host-platform
attributes:
label: Host Platform (amd64, arm64, other)
description: What host platform are you running on?
options:
- amd64
- arm64
- other
validations:
required: true
- type: dropdown
attributes:
label: (Linux only) Is SELinux enabled?
description: When using Linux as your host operating system, check if SELinux is enabled or not. [More info here](https://devilbox.readthedocs.io/en/latest/getting-started/install-the-devilbox.html?highlight=selinux#linux-selinux)
options:
- Yes, SELinux is enabled
- No, SELinux is disabled
- I don't know
- I am not on Linux
validations:
required: true
- type: input
id: docker-version
attributes:
label: Docker version
description: "What Docker version are you using? Please copy and paste the output of `docker --version` into this text area."
validations:
required: true
- type: input
id: docker-compose-version
attributes:
label: Docker Compose version
description: "What Docker Compose version are you using? Please copy and paste the output of `docker-compose --version` into this text area."
validations:
required: true
- type: input
id: devilbox-version
attributes:
label: Devilbox version
description: "What version of Devilbox are you running (latest master, specific tag, git hash, etc)?"
validations:
required: true
- type: dropdown
attributes:
label: Have you removed stopped containers before starting?
description: "Have you done a `docker-compose rm` before starting up the Devilbox? [More info here](https://docs.docker.com/compose/reference/rm/)"
multiple: false
options:
- "Yes"
- "No"
validations:
required: true
- type: dropdown
attributes:
label: Have you pulled latest Docker images before starting?
description: "Have you done a `docker-compose pull` before starting up the Devilbox?"
multiple: false
options:
- "Yes"
- "No"
validations:
required: true
- type: input
attributes:
label: Devilbox start command
description: "What is the [start command](https://devilbox.readthedocs.io/en/latest/getting-started/start-the-devilbox.html) you have used to start the Devilbox?"
validations:
required: true
- type: textarea
id: log-env-file
attributes:
label: "Config: .env file"
description: "Please copy and paste your `.env` file into this text area"
validations:
required: true
- type: textarea
attributes:
label: "Config: docker-compose.override.yml"
description: "If you are using `docker-compose.override.yml`, please copy and paste its contents into this text area."
render: shell
validations:
required: false
- type: textarea
id: log-check-config
attributes:
label: "Config: ./check-config.sh"
description: "Please copy and paste the output of `./check-config.sh` into this text area"
render: shell
validations:
required: true
- type: textarea
id: log-docker-compose
attributes:
label: "Log: docker-compose logs"
description: "Please copy and paste the output of `docker-compose logs` into this text area"
render: shell
validations:
required: true
- type: textarea
attributes:
label: (Optional) Additional information
description: Add any additional information that might help with this bug report. (E.g. customizations from the `autostart/`, `bash/`, `cfg/` or `supervisor/` directory or relevant logfiles from the `log/` directory)
validations:
required: false

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

@ -0,0 +1,12 @@
---
blank_issues_enabled: false
contact_links:
- name: Devilbox Community Support
url: https://devilbox.discourse.group/
about: Please ask and answer questions here.
- name: Devilbox Gitter Chat
url: https://gitter.im/devilbox/Lobby
about: Please ask and answer questions here.
- name: Devilbox documentation
url: https://devilbox.readthedocs.io/
about: Find the Devilbox documentation here.

View File

@ -1,30 +0,0 @@
---
name: "\U0001F4DD Documentation"
about: Anything related to the Devilbox documentation
title: ''
labels: documentation
assignees: ''
---
<!---
1. Verify first that your question is not already reported on GitHub.
2. Verify that your question is not covered in the docs: https://devilbox.readthedocs.io
3. PLEASE FILL OUT ALL REQUIRED INFORMATION BELOW! Otherwise it might take more time to properly handle this question.
-->
#### ISSUE TYPE
<!-- DO NOT CHANGE THIS -->
- Documentation
<!-- DO NOT CHANGE THIS -->
#### SUMMARY
<!-- Add your information here -->
#### Goal
<!-- Explain what you actually want to accomplish -->

View File

@ -0,0 +1,30 @@
---
name: "\U0001F4DD Documentation"
description: Something is missing or wrong in the documentation.
title: "[Docs]: "
labels: ["documentation"]
assignees:
- cytopia
body:
- type: textarea
attributes:
label: What is wrong in the documentation?
description: Tell us, what is wrong in the documentation?
validations:
required: false
- type: textarea
attributes:
label: What is missing in the documentation?
description: Tell us, what is missing in the documentation?
validations:
required: false
- type: dropdown
attributes:
label: Are you willing to provide a PR to address this?
options:
- "Yes"
- "No"

View File

@ -1,30 +0,0 @@
---
name: "✨ Feature request"
about: Suggest an idea for this project
title: ''
labels: feature
assignees: ''
---
<!---
1. Verify first that your feature request is not already reported on GitHub.
2. Verify that your feature is not already implemented: https://devilbox.readthedocs.io
3. PLEASE FILL OUT ALL REQUIRED INFORMATION BELOW! Otherwise it might take more time to properly handle this feature request
-->
#### ISSUE TYPE
<!-- DO NOT CHANGE THIS -->
- Feature request
<!-- DO NOT CHANGE THIS -->
#### SUMMARY
<!-- Explain your feature idea briefly -->
#### Goal
<!-- Explain what you actually want to accomplish with that feature -->

View File

@ -0,0 +1,36 @@
---
name: "✨ Feature request"
description: Suggest an idea or feature for this project
title: "[Feature]: "
labels: ["feature"]
assignees: []
body:
- type: textarea
attributes:
label: What is your idea or feature suggestion?
description: Tell us, what idea or feature you suggest to be added to the Devilbox.
validations:
required: true
- type: textarea
attributes:
label: Benefits
description: Tell us, how this this will be beneficial to the Devilbox.
validations:
required: false
- type: textarea
attributes:
label: Where can we find information about this?
description: If you are proposing a software or tool, please add relevant links and documentation.
validations:
required: false
- type: dropdown
attributes:
label: Are you willing to provide a PR to address this?
options:
- "Yes"
- "No"

50
.github/ISSUE_TEMPLATE/howto.yml vendored Normal file
View File

@ -0,0 +1,50 @@
---
name: "❔ How to do ...?"
description: How do I do X or Y with the Devilbox?
title: "[Howto]: "
labels: ["question", "Community help wanted"]
assignees: []
body:
- type: markdown
attributes:
value: |
If this is a generic question, please consider using the [Devilbox forum](https://devilbox.discourse.group/) instead.
- type: checkboxes
attributes:
label: Have you already checked elsewhere?
description: You may select more than one.
options:
- label: I have read the [Devilbox documentation](https://devilbox.readthedocs.io/en/latest/)
- label: I have checked the [Devilbox Troubleshooting Guide](https://devilbox.readthedocs.io/en/latest/)
- label: I have checked the [Devilbox FAQ](https://devilbox.readthedocs.io/en/latest/support/faq.html)
- label: I have checked the [Devilbox Howto](https://devilbox.readthedocs.io/en/latest/support/howto.html)
- label: I have checked the [Devilbox Forum](https://devilbox.discourse.group/)
- label: I have checked [existing issues](https://github.com/cytopia/devilbox/issues)
- label: I have googled already with no luck
- label: I have not done any of the above
validations:
required: true
- type: textarea
attributes:
label: What are you struggling with?
description: Tell the community, what you are struggling with. Be as specific as possible to make it easier for other people to answer your question.
validations:
required: true
- type: textarea
attributes:
label: What have you tried already?
description: Add some details on what you have tried already, so this can be ruled out.
validations:
required: true
- type: textarea
attributes:
label: What is your goal?
description: Tell the community, what you want to accomplish? This might be helpful to know in order to prevent [XY problems](https://en.wikipedia.org/wiki/XY_problem).
validations:
required: true

View File

@ -1,40 +0,0 @@
---
name: "❔ Question"
about: 'Consider using the Devilbox Forum instead: https://devilbox.discourse.group/'
title: ''
labels: ''
assignees: ''
---
<!-- ---------- GITHUB QUESTIONS ARE DEPRECATED ---------- -->
<!-- ---------- USE THE FORUM ---------- ->
<!-- ---------- https://devilbox.discourse.group/ ---------- ->
<!---
1. A better place for questions is: https://devilbox.discourse.group/
2. VERIFY first that your question is not already reported on GitHub.
3. VERIFY that your question is not covered in the docs: https://devilbox.readthedocs.io
4. VERIFY that your question is not covered in the forum: https://devilbox.discourse.group/
5. PLEASE FILL OUT ALL REQUIRED INFORMATION BELOW! Otherwise it might take more time to properly handle this question.
-->
#### ISSUE TYPE
<!-- DO NOT CHANGE THIS -->
- Question
<!-- DO NOT CHANGE THIS -->
#### SUMMARY
<!-- Ask your question here -->
#### Goal
<!-- Explain what you actually want to accomplish -->

View File

@ -1,228 +0,0 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: Linux
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
# Runs on master Branch and Tags
push:
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
# -------------------------------------------------------------------------------------------------
# What to run
# -------------------------------------------------------------------------------------------------
jobs:
smoke_linux:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php:
- "5.3"
- "5.4"
- "5.5"
- "5.6"
- "7.0"
- "7.1"
- "7.2"
- "7.3"
- "7.4"
- "8.0"
- "8.1"
- "8.2"
httpd:
- "apache-2.2"
- "apache-2.4"
- "nginx-stable"
- "nginx-mainline"
name: "[PHP ${{ matrix.php }}] vs [${{ matrix.httpd }}]"
steps:
# ------------------------------------------------------------
# Checkout repository
# ------------------------------------------------------------
- name: Checkout repository
uses: actions/checkout@v1
- name: Show environment
shell: bash
run: |
env
- name: Show network
shell: bash
run: |
netstat -an || true
ss -tlun || true
- name: Show Docker version
shell: bash
run: |
docker version
# ------------------------------------------------------------
# Setup
# ------------------------------------------------------------
- name: Configure
shell: bash
run: |
cd .tests/
# Set the two candidates to test against
make configure KEY=PHP_SERVER VAL=${PHP}
make configure KEY=HTTPD_SERVER VAL=${HTTPD}
# 3306 is taken, so chose another one
make configure KEY=HOST_PORT_MYSQL VAL=3307
env:
PHP: ${{ matrix.php }}
HTTPD: ${{ matrix.httpd }}
- name: Pull images
shell: bash
run: |
cd .tests/
make pull
- name: Startup
shell: bash
run: |
cd .tests/
make start
- name: Docker logs
shell: bash
run: |
cd .tests/
make logs
# ------------------------------------------------------------
# Run tests
# ------------------------------------------------------------
- name: Test Modules
shell: bash
run: |
cd .tests/
make test-smoke-modules
if: success() || failure()
- name: Test Config
shell: bash
run: |
cd .tests/
make test-smoke-config
if: success() || failure()
- name: Test Intranet
shell: bash
run: |
cd .tests/
make test-smoke-intranet
if: success() || failure()
- name: Test Vendors
shell: bash
run: |
cd .tests/
make test-smoke-vendors
if: success() || failure()
- name: Test Vhosts
shell: bash
run: |
cd .tests/
make test-smoke-vhosts
if: success() || failure()
- name: Test Reverse Proxy
shell: bash
run: |
cd .tests/
make test-smoke-rproxies
if: success() || failure()
- name: Test SSL
shell: bash
run: |
cd .tests/
make test-smoke-ssl
if: success() || failure()
- name: Test Bind
shell: bash
run: |
cd .tests/
make test-smoke-bind
if: success() || failure()
- name: Test Autostart
shell: bash
run: |
cd .tests/
make test-smoke-autostart
if: success() || failure()
- name: "Test Framework: CakePHP"
shell: bash
run: |
cd .tests/
make test-smoke-framework-cakephp
if: success() || failure()
- name: "Test Framework: Drupal"
shell: bash
run: |
cd .tests/
make test-smoke-framework-drupal
if: success() || failure()
- name: "Test Framework: Wordpress"
shell: bash
run: |
cd .tests/
make test-smoke-framework-wordpress
if: success() || failure()
- name: "Test Container"
shell: bash
run: |
retry() {
for n in $(seq 5); do
echo "[${n}/5] ${*}";
if eval "${*}"; then
echo "[SUCC] ${n}/5";
return 0;
fi;
sleep 5;
echo "[FAIL] ${n}/5";
done;
return 1;
}
cd .tests/
retry make test-smoke-container
if: success() || failure()
# ------------------------------------------------------------
# Finish
# ------------------------------------------------------------
- name: "Finish: Docker logs"
shell: bash
run: |
cd .tests/
make logs
if: success() || failure()

View File

@ -1,262 +0,0 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: MacOS
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
# Runs on master Branch and Tags
push:
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
# -------------------------------------------------------------------------------------------------
# What to run
# -------------------------------------------------------------------------------------------------
jobs:
smoke_macos:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
php:
- "7.2"
httpd:
- "nginx-stable"
name: "[PHP ${{ matrix.php }}] vs [${{ matrix.httpd }}]"
steps:
# ------------------------------------------------------------
# Checkout repository
# ------------------------------------------------------------
- name: Checkout repository
uses: actions/checkout@v1
- name: "[Pre] Install Requirements"
shell: bash
run: |
brew install coreutils
brew install bash
brew install socat
- name: "[Pre] Install Docker"
shell: bash
run: |
brew install docker docker-machine-driver-xhyve
sudo chown root:wheel $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
sudo chmod u+s $(brew --prefix)/opt/docker-machine-driver-xhyve/bin/docker-machine-driver-xhyve
while ! docker-machine create --driver xhyve default; do
docker-machine rm -f default
sleep 1;
done
# Export variable (this target)
eval "$(docker-machine env default)"
DOCKER_TLS_VERIFY="$( docker-machine env default | grep DOCKER_TLS_VERIFY | sed -e 's/.*="//g' -e 's/"$//g' )"
DOCKER_HOST="$( docker-machine env default | grep DOCKER_HOST | sed -e 's/.*="//g' -e 's/"$//g' )"
DOCKER_CERT_PATH="$( docker-machine env default | grep DOCKER_CERT_PATH | sed -e 's/.*="//g' -e 's/"$//g' )"
DOCKER_MACHINE_NAME="$( docker-machine env default | grep DOCKER_MACHINE_NAME | sed -e 's/.*="//g' -e 's/"$//g' )"
# Export variable (this other targets)
# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/development-tools-for-github-actions#set-an-environment-variable-set-env
echo ::set-env name=DOCKER_TLS_VERIFY::${DOCKER_TLS_VERIFY}
echo ::set-env name=DOCKER_HOST::${DOCKER_HOST}
echo ::set-env name=DOCKER_CERT_PATH::${DOCKER_CERT_PATH}
echo ::set-env name=DOCKER_MACHINE_NAME::${DOCKER_MACHINE_NAME}
# Show info
docker-machine ls
docker-machine env default
docker version
- name: "[Pre] Install Docker Compose"
shell: bash
run: |
sudo curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
docker-compose version
- name: "[Pre] Setup Docker machine"
shell: bash
run: |
# Setup DNS records
echo "127.0.0.1 localhost" | sudo tee -a /etc/hosts
# Portforwarding from DOCKER_HOST to local
HOST="$( echo "${DOCKER_HOST}" | sed -e 's|^tcp://||g' -e 's|:.*||g' )"
echo "${HOST}"
sudo socat -s -d -d tcp-listen:80,reuseaddr,fork tcp:${HOST}:80 &
sleep 2
sudo socat -s -d -d tcp-listen:443,reuseaddr,fork tcp:${HOST}:443 &
sleep 2
if ! netstat -an | grep -i LISTEN | grep -E '(:80)|(\.80)\s'; then
netstat -an | grep -i LISTEN;
false;
fi
if ! netstat -an | grep -i LISTEN | grep -E '(:443)|(\.443)\s'; then
netstat -an | grep -i LISTEN;
false;
fi
host localhost
curl -sS -I 'http://localhost:80' || true
curl -sS -I 'https://localhost:443' || true
- name: "[Info] Show environment"
shell: bash
run: |
env
if: success() || failure()
- name: "[Info] Show network"
shell: bash
run: |
netstat -an || true
ss -tlun || true
if: success() || failure()
# ------------------------------------------------------------
# Setup
# ------------------------------------------------------------
- name: Configure
shell: bash
run: |
cd .tests/
# Set the two candidates to test against
make configure KEY=PHP_SERVER VAL=${PHP}
make configure KEY=HTTPD_SERVER VAL=${HTTPD}
# 3306 is taken, so chose another one
make configure KEY=HOST_PORT_MYSQL VAL=3307
env:
PHP: ${{ matrix.php }}
HTTPD: ${{ matrix.httpd }}
if: success() || failure()
- name: Pull images
shell: bash
run: |
cd .tests/
make pull
if: success() || failure()
- name: Startup
shell: bash
run: |
cd .tests/
make start
if: success() || failure()
- name: Docker logs
shell: bash
run: |
cd .tests/
make logs
if: success() || failure()
# ------------------------------------------------------------
# Run tests
# ------------------------------------------------------------
- name: Test Modules
shell: bash
run: |
cd .tests/
make test-smoke-modules
if: success() || failure()
- name: Test Config
shell: bash
run: |
cd .tests/
make test-smoke-config
if: success() || failure()
- name: Test Intranet
shell: bash
run: |
cd .tests/
make test-smoke-intranet
if: success() || failure()
- name: Test Vendors
shell: bash
run: |
cd .tests/
make test-smoke-vendors
if: success() || failure()
- name: Test Vhosts
shell: bash
run: |
cd .tests/
make test-smoke-vhosts
if: success() || failure()
- name: Test Reverse Proxy
shell: bash
run: |
cd .tests/
make test-smoke-rproxies
if: success() || failure()
- name: Test SSL
shell: bash
run: |
cd .tests/
make test-smoke-ssl
if: success() || failure()
- name: Test Bind
shell: bash
run: |
cd .tests/
make test-smoke-bind
if: success() || failure()
- name: Test Autostart
shell: bash
run: |
cd .tests/
make test-smoke-autostart
if: success() || failure()
- name: "Test Framework: CakePHP"
shell: bash
run: |
cd .tests/
make test-smoke-framework-cakephp
if: success() || failure()
- name: "Test Framework: Drupal"
shell: bash
run: |
cd .tests/
make test-smoke-framework-drupal
if: success() || failure()
- name: "Test Framework: Wordpress"
shell: bash
run: |
cd .tests/
make test-smoke-framework-wordpress
if: success() || failure()
# ------------------------------------------------------------
# Finish
# ------------------------------------------------------------
- name: "[Post] Docker logs"
shell: bash
run: |
cd .tests/
make logs
if: success() || failure()

View File

@ -12,12 +12,16 @@ name: Docs
on:
# Runs on Pull Requests
pull_request:
paths:
- 'docs/**'
- '!**.md'
# Runs on master Branch and Tags
push:
paths:
- 'docs/**'
- '!**.md'
branches:
- master
tags:
# -------------------------------------------------------------------------------------------------
@ -25,9 +29,7 @@ on:
# -------------------------------------------------------------------------------------------------
jobs:
docs:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
@ -46,24 +48,9 @@ jobs:
uses: actions/checkout@v1
- name: Check documentation
shell: bash
run: |
retry() {
for n in $(seq ${RETRIES}); do
echo "[${n}/${RETRIES}] ${*}";
if eval "${*}"; then
echo "[SUCC] ${n}/${RETRIES}";
return 0;
fi;
sleep ${PAUSE};
echo "[FAIL] ${n}/${RETRIES}";
done;
return 1;
}
cd docs
retry make ${TARGET}
env:
TARGET: ${{ matrix.target }}
RETRIES: 20
PAUSE: 10
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 5
workdir: "${{ github.workspace }}/docs/"
command: |
make ${{ matrix.target }}

View File

@ -17,7 +17,6 @@ on:
push:
branches:
- master
tags:
# -------------------------------------------------------------------------------------------------

59
.github/workflows/params-httpd.yml vendored Normal file
View File

@ -0,0 +1,59 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
# Note: Older PHP versions use an older version of phpPgMyAdmin, which does not work with later
# PgSQL server versions. That's why we need to tell those combinations to use an old PgSQL server
MATRIX: >-
[
{"HTTPD_SERVER": "apache-2.2", "HTTPD_FLAVOUR": "alpine"},
{"HTTPD_SERVER": "apache-2.2", "HTTPD_FLAVOUR": "debian"},
{"HTTPD_SERVER": "apache-2.4", "HTTPD_FLAVOUR": "alpine"},
{"HTTPD_SERVER": "apache-2.4", "HTTPD_FLAVOUR": "debian"},
{"HTTPD_SERVER": "nginx-stable", "HTTPD_FLAVOUR": "alpine"},
{"HTTPD_SERVER": "nginx-stable", "HTTPD_FLAVOUR": "debian"},
{"HTTPD_SERVER": "nginx-mainline", "HTTPD_FLAVOUR": "alpine"},
{"HTTPD_SERVER": "nginx-mainline", "HTTPD_FLAVOUR": "debian"}
]
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
outputs:
matrix:
description: "The determined version matrix"
value: ${{ jobs.params.outputs.matrix }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: "[Set-Output] Matrix"
id: set-matrix
run: |
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
- name: "[DEBUG] Show settings'"
run: |
echo 'Matrix'
echo '--------------------'
echo '${{ steps.set-matrix.outputs.matrix }}'
echo

54
.github/workflows/params-memcd.yml vendored Normal file
View File

@ -0,0 +1,54 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
MATRIX: >-
[
{"MEMCD_SERVER": "Memcd 1.4"},
{"MEMCD_SERVER": "Memcd 1.4-alpine"},
{"MEMCD_SERVER": "Memcd 1.5"},
{"MEMCD_SERVER": "Memcd 1.5-alpine"},
{"MEMCD_SERVER": "Memcd 1.6"},
{"MEMCD_SERVER": "Memcd 1.6-alpine"},
{"MEMCD_SERVER": "Memcd latest"},
{"MEMCD_SERVER": "Memcd alpine"}
]
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
outputs:
matrix:
description: "The determined version matrix"
value: ${{ jobs.params.outputs.matrix }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: "[Set-Output] Matrix"
id: set-matrix
run: |
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
- name: "[DEBUG] Show settings'"
run: |
echo 'Matrix'
echo '--------------------'
echo '${{ steps.set-matrix.outputs.matrix }}'
echo

56
.github/workflows/params-mongo.yml vendored Normal file
View File

@ -0,0 +1,56 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
# CI for Mongo 2.8 and Mongo 3.0 removed due to local segfault and non-segfault, but error in CI
# https://github.com/docker-library/mongo/issues/251
#
# CI for Mongo 3.2 and 3.4 removed due to non-reproducible error in CI
MATRIX: >-
[
{"MONGO_SERVER": "Mongo 3.6"},
{"MONGO_SERVER": "Mongo 4.0"},
{"MONGO_SERVER": "Mongo 4.2"},
{"MONGO_SERVER": "Mongo 4.4"},
{"MONGO_SERVER": "Mongo 5.0"},
{"MONGO_SERVER": "Mongo latest"}
]
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
outputs:
matrix:
description: "The determined version matrix"
value: ${{ jobs.params.outputs.matrix }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: "[Set-Output] Matrix"
id: set-matrix
run: |
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
- name: "[DEBUG] Show settings'"
run: |
echo 'Matrix'
echo '--------------------'
echo '${{ steps.set-matrix.outputs.matrix }}'
echo

64
.github/workflows/params-mysql.yml vendored Normal file
View File

@ -0,0 +1,64 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
MATRIX: >-
[
{"MYSQL_SERVER": "mysql-5.5"},
{"MYSQL_SERVER": "mysql-5.6"},
{"MYSQL_SERVER": "mysql-5.7"},
{"MYSQL_SERVER": "mysql-8.0"},
{"MYSQL_SERVER": "percona-5.5"},
{"MYSQL_SERVER": "percona-5.6"},
{"MYSQL_SERVER": "percona-5.7"},
{"MYSQL_SERVER": "percona-8.0"},
{"MYSQL_SERVER": "mariadb-5.5"},
{"MYSQL_SERVER": "mariadb-10.0"},
{"MYSQL_SERVER": "mariadb-10.1"},
{"MYSQL_SERVER": "mariadb-10.2"},
{"MYSQL_SERVER": "mariadb-10.3"},
{"MYSQL_SERVER": "mariadb-10.4"},
{"MYSQL_SERVER": "mariadb-10.5"},
{"MYSQL_SERVER": "mariadb-10.6"},
{"MYSQL_SERVER": "mariadb-10.7"},
{"MYSQL_SERVER": "mariadb-10.8"}
]
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
outputs:
matrix:
description: "The determined version matrix"
value: ${{ jobs.params.outputs.matrix }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: "[Set-Output] Matrix"
id: set-matrix
run: |
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
- name: "[DEBUG] Show settings'"
run: |
echo 'Matrix'
echo '--------------------'
echo '${{ steps.set-matrix.outputs.matrix }}'
echo

70
.github/workflows/params-pgsql.yml vendored Normal file
View File

@ -0,0 +1,70 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
MATRIX: >-
[
{"PGSQL_SERVER": "PgSQL 9.0"},
{"PGSQL_SERVER": "PgSQL 9.1"},
{"PGSQL_SERVER": "PgSQL 9.2"},
{"PGSQL_SERVER": "PgSQL 9.2-alpine"},
{"PGSQL_SERVER": "PgSQL 9.3"},
{"PGSQL_SERVER": "PgSQL 9.3-alpine"},
{"PGSQL_SERVER": "PgSQL 9.4"},
{"PGSQL_SERVER": "PgSQL 9.4-alpine"},
{"PGSQL_SERVER": "PgSQL 9.5"},
{"PGSQL_SERVER": "PgSQL 9.5-alpine"},
{"PGSQL_SERVER": "PgSQL 9.6"},
{"PGSQL_SERVER": "PgSQL 9.6-alpine"},
{"PGSQL_SERVER": "PgSQL 10"},
{"PGSQL_SERVER": "PgSQL 10-alpine"},
{"PGSQL_SERVER": "PgSQL 11"},
{"PGSQL_SERVER": "PgSQL 11-alpine"},
{"PGSQL_SERVER": "PgSQL 12"},
{"PGSQL_SERVER": "PgSQL 12-alpine"},
{"PGSQL_SERVER": "PgSQL 13"},
{"PGSQL_SERVER": "PgSQL 13-alpine"},
{"PGSQL_SERVER": "PgSQL 14"},
{"PGSQL_SERVER": "PgSQL 14-alpine"},
{"PGSQL_SERVER": "PgSQL latest"},
{"PGSQL_SERVER": "PgSQL alpine"}
]
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
outputs:
matrix:
description: "The determined version matrix"
value: ${{ jobs.params.outputs.matrix }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: "[Set-Output] Matrix"
id: set-matrix
run: |
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
- name: "[DEBUG] Show settings'"
run: |
echo 'Matrix'
echo '--------------------'
echo '${{ steps.set-matrix.outputs.matrix }}'
echo

99
.github/workflows/params-php.yml vendored Normal file
View File

@ -0,0 +1,99 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
# Note: Older PHP versions use an older version of phpPgMyAdmin, which does not work with later
# PgSQL server versions. That's why we need to tell those combinations to use an old PgSQL server
MATRIX: >-
[
{"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "apache-2.2", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "apache-2.2"},
{"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "apache-2.2"},
{"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "apache-2.2"},
{"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "apache-2.2"},
{"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "apache-2.2"},
{"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "apache-2.2"},
{"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "apache-2.4", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "apache-2.4"},
{"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "apache-2.4"},
{"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "apache-2.4"},
{"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "apache-2.4"},
{"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "apache-2.4"},
{"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "apache-2.4"},
{"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "nginx-stable", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "nginx-stable"},
{"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "nginx-stable"},
{"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "nginx-stable"},
{"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "nginx-stable"},
{"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "nginx-stable"},
{"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "nginx-stable"},
{"PHP_SERVER": "PHP 5.3", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.4", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.5", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 5.6", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.0", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.1", "HTTPD_SERVER": "nginx-mainline", "PGSQL_SERVER": "PgSQL 12"},
{"PHP_SERVER": "PHP 7.2", "HTTPD_SERVER": "nginx-mainline"},
{"PHP_SERVER": "PHP 7.3", "HTTPD_SERVER": "nginx-mainline"},
{"PHP_SERVER": "PHP 7.4", "HTTPD_SERVER": "nginx-mainline"},
{"PHP_SERVER": "PHP 8.0", "HTTPD_SERVER": "nginx-mainline"},
{"PHP_SERVER": "PHP 8.1", "HTTPD_SERVER": "nginx-mainline"},
{"PHP_SERVER": "PHP 8.2", "HTTPD_SERVER": "nginx-mainline"}
]
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
outputs:
matrix:
description: "The determined version matrix"
value: ${{ jobs.params.outputs.matrix }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: "[Set-Output] Matrix"
id: set-matrix
run: |
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
- name: "[DEBUG] Show settings'"
run: |
echo 'Matrix'
echo '--------------------'
echo '${{ steps.set-matrix.outputs.matrix }}'
echo

61
.github/workflows/params-redis.yml vendored Normal file
View File

@ -0,0 +1,61 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
MATRIX: >-
[
{"REDIS_SERVER": "Redis 2.8"},
{"REDIS_SERVER": "Redis 3.0"},
{"REDIS_SERVER": "Redis 3.0-alpine"},
{"REDIS_SERVER": "Redis 3.2"},
{"REDIS_SERVER": "Redis 3.2-alpine"},
{"REDIS_SERVER": "Redis 4.0"},
{"REDIS_SERVER": "Redis 4.0-alpine"},
{"REDIS_SERVER": "Redis 5.0"},
{"REDIS_SERVER": "Redis 5.0-alpine"},
{"REDIS_SERVER": "Redis 6.0"},
{"REDIS_SERVER": "Redis 6.0-alpine"},
{"REDIS_SERVER": "Redis 6.2"},
{"REDIS_SERVER": "Redis 6.2-alpine"},
{"REDIS_SERVER": "Redis latest"},
{"REDIS_SERVER": "Redis alpine"}
]
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
outputs:
matrix:
description: "The determined version matrix"
value: ${{ jobs.params.outputs.matrix }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
matrix: ${{ steps.set-matrix.outputs.matrix }}
steps:
- name: "[Set-Output] Matrix"
id: set-matrix
run: |
echo "::set-output name=matrix::$( echo '${{ env.MATRIX }}' | jq -M -c )"
- name: "[DEBUG] Show settings'"
run: |
echo 'Matrix'
echo '--------------------'
echo '${{ steps.set-matrix.outputs.matrix }}'
echo

View File

@ -1,242 +0,0 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: Config
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
# Runs on master Branch and Tags
push:
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
# -------------------------------------------------------------------------------------------------
# What to run
# -------------------------------------------------------------------------------------------------
jobs:
test_config:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
php:
- "5.3"
- "5.4"
- "5.5"
- "5.6"
- "7.0"
- "7.1"
- "7.2"
- "7.3"
- "7.4"
- "8.0"
- "8.1"
- "8.2"
httpd:
- "apache-2.2"
- "apache-2.4"
- "nginx-stable"
- "nginx-mainline"
name: "[PHP ${{ matrix.php }}] vs [${{ matrix.httpd }}]"
steps:
# ------------------------------------------------------------
# Checkout repository
# ------------------------------------------------------------
- name: Checkout repository
uses: actions/checkout@v1
- name: Show environment
shell: bash
run: |
env
- name: Show network
shell: bash
run: |
netstat -an || true
ss -tlun || true
- name: Show Docker version
shell: bash
run: |
docker version
# ------------------------------------------------------------
# Setup
# ------------------------------------------------------------
- name: Configure
shell: bash
run: |
cd .tests/
# Set the two candidates to test against
make configure KEY=PHP_SERVER VAL=${PHP}
make configure KEY=HTTPD_SERVER VAL=${HTTPD}
# 3306 is taken, so chose another one
make configure KEY=HOST_PORT_MYSQL VAL=3307
# Test full customization
make configure KEY=DEBUG_COMPOSE_ENTRYPOINT VAL="$(( RANDOM % 3 ))"
make configure KEY=DOCKER_LOGS VAL="$(( RANDOM % 1 ))"
make configure KEY=TLD_SUFFIX VAL=loc2
make configure KEY=TIMEZONE VAL='Europe/Berlin'
make configure KEY=PHP_MODULES_DISABLE VAL=
make configure KEY=HTTPD_TEMPLATE_DIR VAL=.config
make configure KEY=HOST_PORT_HTTPD VAL=8080
make configure KEY=HOST_PORT_HTTPD_SSL VAL=8443
make configure KEY=MYSQL_ROOT_PASSWORD VAL=mysqlpass
make configure KEY=PGSQL_ROOT_USER VAL=pgroot
make configure KEY=PGSQL_ROOT_PASSWORD VAL=pgsqlpass
make configure KEY=DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN VAL=0
env:
PHP: ${{ matrix.php }}
HTTPD: ${{ matrix.httpd }}
- name: Pull images
shell: bash
run: |
cd .tests/
make pull
- name: Startup
shell: bash
run: |
cd .tests/
make start
- name: Docker logs
shell: bash
run: |
cd .tests/
make logs
# ------------------------------------------------------------
# Run tests
# ------------------------------------------------------------
- name: Test Modules
shell: bash
run: |
cd .tests/
make test-smoke-modules
if: success() || failure()
- name: Test Config
shell: bash
run: |
cd .tests/
make test-smoke-config
if: success() || failure()
- name: Test Intranet
shell: bash
run: |
cd .tests/
make test-smoke-intranet
if: success() || failure()
- name: Test Vendors
shell: bash
run: |
cd .tests/
make test-smoke-vendors
if: success() || failure()
- name: Test Vhosts
shell: bash
run: |
cd .tests/
make test-smoke-vhosts
if: success() || failure()
- name: Test Reverse Proxy
shell: bash
run: |
cd .tests/
make test-smoke-rproxies
if: success() || failure()
- name: Test SSL
shell: bash
run: |
cd .tests/
make test-smoke-ssl
if: success() || failure()
- name: Test Bind
shell: bash
run: |
cd .tests/
make test-smoke-bind
if: success() || failure()
- name: Test Autostart
shell: bash
run: |
cd .tests/
make test-smoke-autostart
if: success() || failure()
- name: "Test Framework: CakePHP"
shell: bash
run: |
cd .tests/
make test-smoke-framework-cakephp
if: success() || failure()
- name: "Test Framework: Drupal"
shell: bash
run: |
cd .tests/
make test-smoke-framework-drupal
if: success() || failure()
- name: "Test Framework: Wordpress"
shell: bash
run: |
cd .tests/
make test-smoke-framework-wordpress
if: success() || failure()
- name: "Test Container"
shell: bash
run: |
retry() {
for n in $(seq 5); do
echo "[${n}/5] ${*}";
if eval "${*}"; then
echo "[SUCC] ${n}/t";
return 0;
fi;
sleep 5;
echo "[FAIL] ${n}/5";
done;
return 1;
}
cd .tests/
retry make test-smoke-container
if: success() || failure()
# ------------------------------------------------------------
# Finish
# ------------------------------------------------------------
- name: "Finish: Docker logs"
shell: bash
run: |
cd .tests/
make logs
if: success() || failure()

76
.github/workflows/test-httpd.yml vendored Normal file
View File

@ -0,0 +1,76 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: Httpd
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
# Runs on master Branch and Tags
push:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
jobs:
# -----------------------------------------------------------------------------------------------
# (1/3) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params-httpd.yml
# -----------------------------------------------------------------------------------------------
# (2/3) Test with default settings
# -----------------------------------------------------------------------------------------------
default:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: false
operating_system: ubuntu-latest
# -----------------------------------------------------------------------------------------------
# (3/3) Test with customizedt settings
# -----------------------------------------------------------------------------------------------
custom:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: true
operating_system: ubuntu-latest

76
.github/workflows/test-memcd.yml vendored Normal file
View File

@ -0,0 +1,76 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: Memcd
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
# Runs on master Branch and Tags
push:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
jobs:
# -----------------------------------------------------------------------------------------------
# (1/3) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params-memcd.yml
# -----------------------------------------------------------------------------------------------
# (2/3) Test with default settings
# -----------------------------------------------------------------------------------------------
default:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: false
operating_system: ubuntu-latest
# -----------------------------------------------------------------------------------------------
# (3/3) Test with customizedt settings
# -----------------------------------------------------------------------------------------------
custom:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: true
operating_system: ubuntu-latest

76
.github/workflows/test-mongo.yml vendored Normal file
View File

@ -0,0 +1,76 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: Mongo
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
# Runs on master Branch and Tags
push:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
jobs:
# -----------------------------------------------------------------------------------------------
# (1/3) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params-mongo.yml
# -----------------------------------------------------------------------------------------------
# (2/3) Test with default settings
# -----------------------------------------------------------------------------------------------
default:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: false
operating_system: ubuntu-latest
# -----------------------------------------------------------------------------------------------
# (3/3) Test with customizedt settings
# -----------------------------------------------------------------------------------------------
custom:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: true
operating_system: ubuntu-latest

76
.github/workflows/test-mysql.yml vendored Normal file
View File

@ -0,0 +1,76 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: MySQL
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
# Runs on master Branch and Tags
push:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
jobs:
# -----------------------------------------------------------------------------------------------
# (1/3) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params-mysql.yml
# -----------------------------------------------------------------------------------------------
# (2/3) Test with default settings
# -----------------------------------------------------------------------------------------------
default:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: false
operating_system: ubuntu-latest
# -----------------------------------------------------------------------------------------------
# (3/3) Test with customizedt settings
# -----------------------------------------------------------------------------------------------
custom:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: true
operating_system: ubuntu-latest

76
.github/workflows/test-pgsql.yml vendored Normal file
View File

@ -0,0 +1,76 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: PgSQL
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
# Runs on master Branch and Tags
push:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
jobs:
# -----------------------------------------------------------------------------------------------
# (1/3) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params-pgsql.yml
# -----------------------------------------------------------------------------------------------
# (2/3) Test with default settings
# -----------------------------------------------------------------------------------------------
default:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: false
operating_system: ubuntu-latest
# -----------------------------------------------------------------------------------------------
# (3/3) Test with customizedt settings
# -----------------------------------------------------------------------------------------------
custom:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: true
operating_system: ubuntu-latest

76
.github/workflows/test-php.yml vendored Normal file
View File

@ -0,0 +1,76 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: PHP
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
# Runs on master Branch and Tags
push:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
jobs:
# -----------------------------------------------------------------------------------------------
# (1/3) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params-php.yml
# -----------------------------------------------------------------------------------------------
# (2/3) Test with default settings
# -----------------------------------------------------------------------------------------------
default:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: false
operating_system: ubuntu-latest
# -----------------------------------------------------------------------------------------------
# (3/3) Test with customizedt settings
# -----------------------------------------------------------------------------------------------
custom:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: true
operating_system: ubuntu-latest

76
.github/workflows/test-redis.yml vendored Normal file
View File

@ -0,0 +1,76 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: Redis
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
# Runs on master Branch and Tags
push:
paths:
- '.devilbox/**'
- '.github/workflows/params*.yml'
- '.github/workflows/test*.yml'
- '.github/workflows/zzz*.yml'
- '.tests/**'
- 'cfg/vhost-gen/**'
- 'compose/**'
- 'docker-compose.override.yml-example'
- 'docker-compose.yml'
- 'env-example'
- '!**.md'
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
jobs:
# -----------------------------------------------------------------------------------------------
# (1/3) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params-redis.yml
# -----------------------------------------------------------------------------------------------
# (2/3) Test with default settings
# -----------------------------------------------------------------------------------------------
default:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: false
operating_system: ubuntu-latest
# -----------------------------------------------------------------------------------------------
# (3/3) Test with customizedt settings
# -----------------------------------------------------------------------------------------------
custom:
needs: [params]
uses: ./.github/workflows/zzz-reuse-tests.yml
with:
matrix: ${{ needs.params.outputs.matrix }}
custom_config: true
operating_system: ubuntu-latest

View File

@ -1,318 +0,0 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: Versions
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
# Runs on master Branch and Tags
push:
branches:
- master
tags:
- '[0-9]+.[0-9]+*'
# -------------------------------------------------------------------------------------------------
# What to run
# -------------------------------------------------------------------------------------------------
jobs:
smoke_version:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
version:
- "MYSQL_SERVER=mysql-5.5"
- "MYSQL_SERVER=mysql-5.6"
- "MYSQL_SERVER=mysql-5.7"
- "MYSQL_SERVER=mysql-8.0"
- "MYSQL_SERVER=mariadb-5.5"
- "MYSQL_SERVER=mariadb-10.0"
- "MYSQL_SERVER=mariadb-10.1"
- "MYSQL_SERVER=mariadb-10.2"
- "MYSQL_SERVER=mariadb-10.3"
- "MYSQL_SERVER=mariadb-10.4"
- "MYSQL_SERVER=mariadb-10.5"
- "MYSQL_SERVER=mariadb-10.6"
- "MYSQL_SERVER=mariadb-10.7"
- "MYSQL_SERVER=mariadb-10.8"
- "MYSQL_SERVER=percona-5.5"
- "MYSQL_SERVER=percona-5.6"
- "MYSQL_SERVER=percona-5.7"
- "MYSQL_SERVER=percona-8.0"
- "PGSQL_SERVER=9.0"
- "PGSQL_SERVER=9.1"
- "PGSQL_SERVER=9.2"
- "PGSQL_SERVER=9.2-alpine"
- "PGSQL_SERVER=9.3"
- "PGSQL_SERVER=9.3-alpine"
- "PGSQL_SERVER=9.4"
- "PGSQL_SERVER=9.4-alpine"
- "PGSQL_SERVER=9.5"
- "PGSQL_SERVER=9.5-alpine"
- "PGSQL_SERVER=9.6"
- "PGSQL_SERVER=9.6-alpine"
- "PGSQL_SERVER=10.0"
- "PGSQL_SERVER=10.0-alpine"
- "PGSQL_SERVER=10.1"
- "PGSQL_SERVER=10.1-alpine"
- "PGSQL_SERVER=10.2"
- "PGSQL_SERVER=10.2-alpine"
- "PGSQL_SERVER=10.3"
- "PGSQL_SERVER=10.3-alpine"
- "PGSQL_SERVER=10.4"
- "PGSQL_SERVER=10.4-alpine"
- "PGSQL_SERVER=10.5"
- "PGSQL_SERVER=10.5-alpine"
- "PGSQL_SERVER=10.6"
- "PGSQL_SERVER=10.6-alpine"
- "PGSQL_SERVER=11.0"
- "PGSQL_SERVER=11.0-alpine"
- "PGSQL_SERVER=11.1"
- "PGSQL_SERVER=11.1-alpine"
- "PGSQL_SERVER=11.2"
- "PGSQL_SERVER=11.2-alpine"
- "PGSQL_SERVER=11.3"
- "PGSQL_SERVER=11.3-alpine"
- "PGSQL_SERVER=11.4"
- "PGSQL_SERVER=11.4-alpine"
- "PGSQL_SERVER=11.5"
- "PGSQL_SERVER=11.5-alpine"
- "PGSQL_SERVER=11.6"
- "PGSQL_SERVER=11.6-alpine"
- "PGSQL_SERVER=11.7"
- "PGSQL_SERVER=11.7-alpine"
- "PGSQL_SERVER=11.8"
- "PGSQL_SERVER=11.8-alpine"
- "PGSQL_SERVER=11.9"
- "PGSQL_SERVER=11.9-alpine"
- "PGSQL_SERVER=12.0"
- "PGSQL_SERVER=12.0-alpine"
- "PGSQL_SERVER=12.1"
- "PGSQL_SERVER=12.1-alpine"
- "PGSQL_SERVER=12.2"
- "PGSQL_SERVER=12.2-alpine"
- "PGSQL_SERVER=12.3"
- "PGSQL_SERVER=12.3-alpine"
- "PGSQL_SERVER=13.0"
- "PGSQL_SERVER=13.0-alpine"
- "PGSQL_SERVER=latest"
- "PGSQL_SERVER=alpine"
- "REDIS_SERVER=2.8"
- "REDIS_SERVER=3.0"
- "REDIS_SERVER=3.0-alpine"
- "REDIS_SERVER=3.2"
- "REDIS_SERVER=3.2-alpine"
- "REDIS_SERVER=4.0"
- "REDIS_SERVER=4.0-alpine"
- "REDIS_SERVER=5.0"
- "REDIS_SERVER=5.0-alpine"
- "REDIS_SERVER=6.0"
- "REDIS_SERVER=6.0-alpine"
- "REDIS_SERVER=latest"
- "REDIS_SERVER=alpine"
- "MEMCD_SERVER=1.4"
- "MEMCD_SERVER=1.4-alpine"
- "MEMCD_SERVER=1.5"
- "MEMCD_SERVER=1.5-alpine"
- "MEMCD_SERVER=1.6"
- "MEMCD_SERVER=1.6-alpine"
- "MEMCD_SERVER=latest"
- "MEMCD_SERVER=alpine"
- "MONGO_SERVER=2.8"
- "MONGO_SERVER=3.0"
- "MONGO_SERVER=3.2"
- "MONGO_SERVER=3.4"
- "MONGO_SERVER=3.6"
- "MONGO_SERVER=4.0"
- "MONGO_SERVER=4.2"
- "MONGO_SERVER=4.4"
- "MONGO_SERVER=latest"
name: "[${{ matrix.version }}]"
steps:
# ------------------------------------------------------------
# Checkout repository
# ------------------------------------------------------------
- name: Checkout repository
uses: actions/checkout@v1
- name: Show environment
shell: bash
run: |
env
- name: Show network
shell: bash
run: |
netstat -an || true
ss -tlun || true
- name: Show Docker version
shell: bash
run: |
docker version
# ------------------------------------------------------------
# Setup
# ------------------------------------------------------------
- name: Configure
shell: bash
run: |
cd .tests/
# Set the matrix version
make configure KEY="${VERSION//=*/}" VAL="${VERSION//*=}"
# 3306 is taken, so chose another one
make configure KEY=HOST_PORT_MYSQL VAL=3307
env:
VERSION: ${{ matrix.version }}
- name: Pull images
shell: bash
run: |
cd .tests/
make pull
- name: Startup
shell: bash
run: |
cd .tests/
make start
- name: Docker logs
shell: bash
run: |
cd .tests/
make logs
# ------------------------------------------------------------
# Run tests
# ------------------------------------------------------------
- name: Test Modules
shell: bash
run: |
cd .tests/
make test-smoke-modules
if: success() || failure()
- name: Test Config
shell: bash
run: |
cd .tests/
make test-smoke-config
if: success() || failure()
- name: Test Intranet
shell: bash
run: |
cd .tests/
make test-smoke-intranet
if: success() || failure()
- name: Test Vendors
shell: bash
run: |
cd .tests/
make test-smoke-vendors
if: success() || failure()
- name: Test Vhosts
shell: bash
run: |
cd .tests/
make test-smoke-vhosts
if: success() || failure()
- name: Test Reverse Proxy
shell: bash
run: |
cd .tests/
make test-smoke-rproxies
if: success() || failure()
- name: Test SSL
shell: bash
run: |
cd .tests/
make test-smoke-ssl
if: success() || failure()
- name: Test Bind
shell: bash
run: |
cd .tests/
make test-smoke-bind
if: success() || failure()
- name: Test Autostart
shell: bash
run: |
cd .tests/
make test-smoke-autostart
if: success() || failure()
- name: "Test Framework: CakePHP"
shell: bash
run: |
cd .tests/
make test-smoke-framework-cakephp
if: success() || failure()
- name: "Test Framework: Drupal"
shell: bash
run: |
cd .tests/
make test-smoke-framework-drupal
if: success() || failure()
- name: "Test Framework: Wordpress"
shell: bash
run: |
cd .tests/
make test-smoke-framework-wordpress
if: success() || failure()
- name: "Test Container"
shell: bash
run: |
retry() {
for n in $(seq 5); do
echo "[${n}/5] ${*}";
if eval "${*}"; then
echo "[SUCC] ${n}/t";
return 0;
fi;
sleep 5;
echo "[FAIL] ${n}/5";
done;
return 1;
}
cd .tests/
retry make test-smoke-container
if: success() || failure()
# ------------------------------------------------------------
# Finish
# ------------------------------------------------------------
- name: "Finish: Docker logs"
shell: bash
run: |
cd .tests/
make logs
if: success() || failure()

284
.github/workflows/zzz-reuse-tests.yml vendored Normal file
View File

@ -0,0 +1,284 @@
---
name: Reusable worfklow for tests
on:
workflow_call:
###
### Variables
###
inputs:
matrix:
description: 'The test matrix'
required: true
type: string
custom_config:
description: 'Apply customized .env configuration?'
required: true
type: boolean
operating_system:
description: 'The operating system to run on'
required: true
type: string
jobs:
# -----------------------------------------------------------------------------------------------
# JOB: BUILD
# -----------------------------------------------------------------------------------------------
test:
runs-on: ${{ inputs.operating_system }}
strategy:
fail-fast: false
matrix:
include: ${{ fromJson(inputs.matrix) }}
steps:
# ------------------------------------------------------------
# Setup repository
# ------------------------------------------------------------
- name: "[SETUP] Checkout repository (current)"
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: "[DEBUG] Show Matrix configuration"
shell: bash
run: |
echo '${{ toJson(matrix) }}' | jq -r
- name: "[DEBUG] Show env variables"
shell: bash
run: |
env
- name: "[DEBUG] Show open network ports"
shell: bash
run: |
netstat -an || true
ss -tlun || true
- name: "[DEBUG] Show Docker version"
shell: bash
run: |
docker version
- name: "[DEBUG] Show Docker Compose version"
shell: bash
run: |
docker-compose version
# ------------------------------------------------------------
# Configure
# ------------------------------------------------------------
- name: "[Configure] Configure customized configuration"
shell: bash
run: |
cd "${GITHUB_WORKSPACE}/.tests/"
# Test full customization
make configure KEY=DEBUG_COMPOSE_ENTRYPOINT VAL="$(( RANDOM % 3 ))"
make configure KEY=DOCKER_LOGS VAL="$(( RANDOM % 1 ))"
make configure KEY=TLD_SUFFIX VAL=loc2
make configure KEY=TIMEZONE VAL='Europe/Berlin'
make configure KEY=PHP_MODULES_DISABLE VAL=
make configure KEY=HTTPD_TEMPLATE_DIR VAL=.config
make configure KEY=HOST_PORT_HTTPD VAL=8080
make configure KEY=HOST_PORT_HTTPD_SSL VAL=8443
make configure KEY=MYSQL_ROOT_PASSWORD VAL=mysqlpass
make configure KEY=PGSQL_ROOT_USER VAL=pgroot
make configure KEY=PGSQL_ROOT_PASSWORD VAL=pgsqlpass
make configure KEY=DEVILBOX_VENDOR_PHPMYADMIN_AUTOLOGIN VAL=0
if: inputs.custom_config
- name: "[Configure] Configure versions"
shell: bash
run: |
# (1/3) Change to .tests/ directory
cd "${GITHUB_WORKSPACE}/.tests/"
# (2/3) Change MySQL port 3306 to 3307 (3306 is already taken)
make configure KEY=HOST_PORT_MYSQL VAL=3307
# (3/3) Loop over configured values
while IFS= read -r line; do
KEY="${line}"
VAL="$( echo '${{ toJson(matrix) }}' | jq -r ".${KEY}" | awk '{print $NF}' )"
echo "KEY: ${KEY}"
echo "VAL: ${VAL}"
# Set the matrix version
make configure KEY="${KEY}" VAL="${VAL}"
done <<< "$( echo '${{ toJson(matrix) }}' | jq -r 'keys[]' )"
- name: "[Configure] Show .env file"
shell: bash
run: |
cat .env
# ------------------------------------------------------------
# Startup
# ------------------------------------------------------------
- name: "[Startup] Pull images"
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make pull
- name: "[Startup] Start Devilbox"
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make start
- name: "[Startup] Show Docker logs"
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make logs
# ------------------------------------------------------------
# Run tests
# ------------------------------------------------------------
- name: Test Modules
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-modules
- name: Test Config
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-config
if: success() || failure()
- name: Test Intranet
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-intranet
if: success() || failure()
- name: Test Vendors
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-vendors
if: success() || failure()
- name: Test Vhosts
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-vhosts
if: success() || failure()
- name: Test Reverse Proxy
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-rproxies
if: success() || failure()
- name: Test SSL
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-ssl
if: success() || failure()
- name: Test Bind
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-bind
if: success() || failure()
- name: Test Autostart
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-autostart
if: success() || failure()
- name: "Test Framework: CakePHP"
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-framework-cakephp
if: success() || failure()
- name: "Test Framework: Drupal"
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-framework-drupal
if: success() || failure()
- name: "Test Framework: Wordpress"
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-framework-wordpress
if: success() || failure()
- name: "Test Container"
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make test-smoke-container
if: success() || failure()
# ------------------------------------------------------------
# Finish
# ------------------------------------------------------------
- name: "Finish: Docker logs"
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make logs
if: success() || failure()
- name: "Finish: Shutdown"
uses: cytopia/shell-command-retry-action@v0.1.3
with:
retries: 3
workdir: "${{ github.workspace }}/.tests/"
command: |
make stop
if: success() || failure()

View File

@ -160,6 +160,7 @@ test-smoke-autostart:
###
test-smoke-framework-cakephp:
$(PWD)/tests/framework-cakephp.sh
$(PWD)/tests/framework-cakephp-php8.sh
test-smoke-framework-drupal:
$(PWD)/tests/framework-drupal.sh

View File

@ -47,8 +47,7 @@ get_php_version() {
# Check php -v
>&2 printf "Fetching PHP version from php -v: "
if ! cli_version="$( run "docker-compose exec -T php php -v \
| head -1 \
| grep -Eo 'PHP[[:space:]]+[0-9]+\\.[0-9]+' \
| grep -Eo '^PHP[[:space:]]+[0-9]+\\.[0-9]+' \
| grep -Eo '[0-9]+\\.[0-9]+'" \
"${retries}" "${root_path}" "0" )"; then
>&2 printf "FAILED\\n"
@ -118,6 +117,52 @@ replace() {
}
###
### Print colorized OK message
###
print_succ() {
local leading_nl="${1}"
local trailing_nl="${2}"
local message="${3}"
local green="\\033[0;32m"
local reset="\\033[0m"
if [ "${leading_nl}" = "1" ] && [ "${trailing_nl}" = "1" ]; then
printf "\\r${green}[OK]${reset} %s\\n" "${message}"
elif [ "${leading_nl}" = "1" ]; then
printf "\\r${green}[OK]${reset} %s" "${message}"
elif [ "${trailing_nl}" = "1" ]; then
printf "${green}[OK]${reset} %s\\n" "${message}"
else
printf "${green}[OK]${reset} %s" "${message}"
fi
}
###
### Print colorized FAIL message
###
print_fail() {
local leading_nl="${1}"
local trailing_nl="${2}"
local message="${3}"
local red="\\033[0;31m"
local reset="\\033[0m"
if [ "${leading_nl}" = "1" ] && [ "${trailing_nl}" = "1" ]; then
printf "\\r${red}[FAIL]${reset} %s\\n" "${message}"
elif [ "${leading_nl}" = "1" ]; then
printf "\\r${red}[FAIL]${reset} %s" "${message}"
elif [ "${trailing_nl}" = "1" ]; then
printf "${red}[FAIL]${reset} %s\\n" "${message}"
else
printf "${red}[FAIL]${reset} %s" "${message}"
fi
}
###
### Run command
###

View File

@ -53,7 +53,7 @@ until curl -sS -I --fail -o /dev/null -w "%{http_code}" "http://localhost:${HOST
printf "."
i=$(( i + 1 ))
if [ "${i}" -eq "60" ]; then
if [ "${i}" -eq "120" ]; then
printf "[FAIL]\\n\\n"
echo "---- curl From host ----"
curl -sS -v "http://localhost:${HOST_PORT_HTTPD}" || true
@ -84,7 +84,7 @@ until curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}" 2>/dev/null | grep '
printf "."
i=$(( i + 1 ))
if [ "${i}" -eq "60" ]; then
if [ "${i}" -eq "120" ]; then
printf "[FAIL]\\n"
curl -sS -v "http://localhost:${HOST_PORT_HTTPD}"
curl -sS -I "http://localhost:${HOST_PORT_HTTPD}"
@ -120,7 +120,7 @@ until cd "${DVLBOX_PATH}" && docker-compose exec -T php mongofiles --host=mongo
printf "."
i=$(( i + 1 ))
if [ "${i}" -eq "60" ]; then
if [ "${i}" -eq "120" ]; then
printf "[FAIL]\\n"
run "cd ${DVLBOX_PATH} && docker-compose exec -T php mongofiles --host=mongo list" || true
run "cd ${DVLBOX_PATH} && docker-compose logs" || true
@ -143,7 +143,7 @@ until cd "${DVLBOX_PATH}" && docker-compose exec -T php mysql --user=root --pass
printf "."
i=$(( i + 1 ))
if [ "${i}" -eq "60" ]; then
if [ "${i}" -eq "120" ]; then
printf "[FAIL]\\n"
run "cd ${DVLBOX_PATH} && docker-compose exec -T php mysql --user=root --password=\"${MYSQL_ROOT_PASSWORD}\" --host=mysql -e 'show databases;'" || true
run "cd ${DVLBOX_PATH} && docker-compose logs" || true
@ -166,7 +166,7 @@ until cd "${DVLBOX_PATH}" && docker-compose exec -T php pg_isready --host=pgsql
printf "."
i=$(( i + 1 ))
if [ "${i}" -eq "60" ]; then
if [ "${i}" -eq "120" ]; then
printf "[FAIL]\\n"
run "cd ${DVLBOX_PATH} && docker-compose exec -T php pg_isready --host=pgsql" || true
run "cd ${DVLBOX_PATH} && docker-compose logs" || true

View File

@ -0,0 +1,95 @@
#!/usr/bin/env bash
# NOTE: Parsing curl to tac to circumnvent "failed writing body"
# https://stackoverflow.com/questions/16703647/why-curl-return-and-error-23-failed-writing-body
set -e
set -u
set -o pipefail
SCRIPT_PATH="$( cd "$(dirname "$0")" && pwd -P )"
DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )"
# shellcheck disable=SC1090
. "${SCRIPT_PATH}/../scripts/.lib.sh"
RETRIES=10
# see framework-cakephp.sh for PHP <8 tests
DISABLED_VERSIONS=("5.2" "5.3" "5.4" "5.5" "5.6" "7.0" "7.1" "7.2" "7.3" "7.4" "8.2")
PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )"
###
### What CakePHP Version?
###
CAKE_PHP_VERSION=4.3
echo
echo "# --------------------------------------------------------------------------------------------------"
echo "# [Framework] CakePHP ${CAKE_PHP_VERSION}"
echo "# --------------------------------------------------------------------------------------------------"
echo
# -------------------------------------------------------------------------------------------------
# Pre-check
# -------------------------------------------------------------------------------------------------
if [[ ${DISABLED_VERSIONS[*]} =~ ${PHP_VERSION} ]]; then
printf "[SKIP] Skipping all checks for PHP %s\\n" "${PHP_VERSION}"
exit 0
fi
# -------------------------------------------------------------------------------------------------
# ENTRYPOINT
# -------------------------------------------------------------------------------------------------
###
### Get required env values
###
MYSQL_ROOT_PASSWORD="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "MYSQL_ROOT_PASSWORD" )"
TLD_SUFFIX="$( "${SCRIPT_PATH}/../scripts/env-getvar.sh" "TLD_SUFFIX" )"
VHOST="my-cakephp"
# Create vhost dir
create_vhost_dir "${VHOST}"
# Setup CakePHP project
run "docker-compose exec --user devilbox -T php bash -c 'cd /shared/httpd/${VHOST}; composer create-project --no-interaction --prefer-dist cakephp/app:~${CAKE_PHP_VERSION} cakephp'" "${RETRIES}" "${DVLBOX_PATH}"
run "docker-compose exec --user devilbox -T php bash -c 'cd /shared/httpd/${VHOST}; ln -sf cakephp/webroot htdocs'" "${RETRIES}" "${DVLBOX_PATH}"
run "docker-compose exec --user devilbox -T php mysql -u root -h mysql --password=\"${MYSQL_ROOT_PASSWORD}\" -e \"DROP DATABASE IF EXISTS my_cake; CREATE DATABASE my_cake;\"" "${RETRIES}" "${DVLBOX_PATH}"
# Configure CakePHP database settings
run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'host' =>.*/'host' => 'mysql',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}"
run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'username' =>.*/'username' => 'root',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}"
run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'password' =>.*/'password' => '${MYSQL_ROOT_PASSWORD}',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}"
run "docker-compose exec --user devilbox -T php sed -i\"\" \"s/'database' =>.*/'database' => 'my_cake',/g\" /shared/httpd/${VHOST}/cakephp/config/app_local.php" "${RETRIES}" "${DVLBOX_PATH}"
# Test CakePHP
ERROR=0
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'mbstring'" "${RETRIES}" "${DVLBOX_PATH}"; then
ERROR=1
fi
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'openssl'" "${RETRIES}" "${DVLBOX_PATH}"; then
ERROR=1
fi
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'intl'" "${RETRIES}" "${DVLBOX_PATH}"; then
ERROR=1
fi
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'tmp directory'" "${RETRIES}" "${DVLBOX_PATH}"; then
ERROR=1
fi
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'logs directory'" "${RETRIES}" "${DVLBOX_PATH}"; then
ERROR=1
fi
if ! run "docker-compose exec --user devilbox -T php curl -sS --fail 'http://${VHOST}.${TLD_SUFFIX}' | tac | tac | grep '\"bullet success\"' | grep 'connect to the database'" "${RETRIES}" "${DVLBOX_PATH}"; then
ERROR=1
fi
if [ "${ERROR}" = "1" ]; then
run "docker-compose exec --user devilbox -T php curl 'http://${VHOST}.${TLD_SUFFIX}' || true" "1" "${DVLBOX_PATH}"
exit 1
fi

View File

@ -13,6 +13,7 @@ DVLBOX_PATH="$( cd "${SCRIPT_PATH}/../.." && pwd -P )"
. "${SCRIPT_PATH}/../scripts/.lib.sh"
RETRIES=10
# see framework-cakephp-php8.sh for PHP 8+ tests
DISABLED_VERSIONS=("5.2" "5.3" "5.4" "5.5" "8.0" "8.1" "8.2")
PHP_VERSION="$( get_php_version "${DVLBOX_PATH}" )"

View File

@ -60,11 +60,11 @@ if ! URL="$( run "\
| tac \
| grep -Eo '/vendor/phppgadmin-[.0-9]+/'" \
"${RETRIES}" "" "0" )"; then
printf "\\r[FAILED] Retrieve phpPgAdmin URL\\n"
print_fail "1" "1" "Retrieve phpPgAdmin URL"
run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}/index.php' || true"
exit 1
else
printf "\\r[OK] Retrieve phpPgAdmin URL: %s\\n" "${URL}"
print_succ "1" "1" "Retrieve phpPgAdmin URL: ${URL}"
fi
@ -80,18 +80,18 @@ if ! curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" | tac
# 3rd Try
sleep 1
if ! curl -sS --fail "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" | tac | tac | grep -Eiq "welcome to phpPgAdmin"; then
printf "\\r[FAIL] Fetch %sintro.php\\n" "${URL}"
print_fail "1" "1" "Fetch ${URL}intro.php"
curl -sS "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" || true
curl -sS -I "http://localhost:${HOST_PORT_HTTPD}${URL}intro.php" || true
exit 1
else
printf "\\r[OK] Fetch %sintro.php (3 rounds)\\n" "${URL}"
print_succ "1" "1" "Fetch ${URL}intro.php (3 rounds)"
fi
else
printf "\\r[OK] Fetch %sintro.php (2 rounds)\\n" "${URL}"
print_succ "1" "1" "Fetch ${URL}intro.php (2 rounds)"
fi
else
printf "\\r[OK] Fetch %sintro.php (1 round)\\n" "${URL}"
print_succ "1" "1" "Fetch ${URL}intro.php (1 round)"
fi
@ -106,46 +106,46 @@ LIBPATH="${DVLBOXPATH}/.devilbox/www/htdocs${URL%index\.php}libraries/lib.inc.ph
printf "[TEST] config.inc.php exists"
if [ ! -f "${CONFIGPATH}" ]; then
printf "\\r[FAIL] config.inc.php exists: no\\n"
print_fail "1" "1" "config.inc.php exists: no"
exit 1
else
printf "\\r[OK] config.inc.php exists: yes\\n"
print_succ "1" "1" "config.inc.php exists: yes"
fi
# $conf['servers'][0]['host'] = 'pgsql';
printf "[TEST] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';"
if ! grep -E "^[[:space:]]*\\\$conf\\['servers'\\]\\[0\\]\\['host'\\][[:space:]]*=[[:space:]]*'pgsql';" "${CONFIGPATH}" >/dev/null; then
printf "\\r[FAIL] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';\\n"
print_fail "1" "1" "config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';"
if ! grep 'servers' "${CONFIGPATH}"; then
cat "${CONFIGPATH}"
fi
exit 1
else
printf "\\r[OK] config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';\\n"
print_succ "1" "1" "config.inc.php check: \$conf['servers'][0]['host'] = 'pgsql';"
fi
# $conf['extra_login_security'] = false;
printf "[TEST] config.inc.php check: \$conf['extra_login_security'] = false;"
if ! grep -E "^[[:space:]]*\\\$conf\\['extra_login_security'\\][[:space:]]*=[[:space:]]*false;" "${CONFIGPATH}" >/dev/null; then
printf "\\r[FAIL] config.inc.php check: \$conf['extra_login_security'] = false;\\n"
print_fail "1" "1" "config.inc.php check: \$conf['extra_login_security'] = false;"
if ! grep 'extra_login_security' "${CONFIGPATH}"; then
cat "${CONFIGPATH}"
fi
exit 1
else
printf "\\r[OK] config.inc.php check: \$conf['extra_login_security'] = false;\\n"
print_succ "1" "1" "config.inc.php check: \$conf['extra_login_security'] = false;"
fi
# error_reporting(E_ERROR | E_WARNING | E_PARSE);
printf "[TEST] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);"
if ! grep -E "^[[:space:]]*error_reporting\\(E_ERROR[[:space:]]*\\|[[:space:]]*E_WARNING[[:space:]]*\\|[[:space:]]*E_PARSE\\);" "${LIBPATH}" >/dev/null; then
printf "\\r[FAIL] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);\\n"
print_fail "1" "1" "lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);"
if ! grep 'error_reporting' "${LIBPATH}"; then
cat "${LIBPATH}"
fi
exit 1
else
printf "\\r[OK] lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);\\n"
print_succ "1" "1" "lib.inc.php check: error_reporting(E_ERROR | E_WARNING | E_PARSE);"
fi
@ -163,7 +163,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
###
printf "[TEST] Retrieve phpPgAdmin token page"
if ! TOKEN_URL="$( run "curl -sS --fail -c cookie.txt 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' | tac | tac | grep -Eo '\"redirect\\.php\\?subject=server.+\"' " "${RETRIES}" "" "0" )"; then
printf "\\r[FAIL] Retrieve phpPgAdmin login page\\n"
print_fail "1" "1" "Retrieve phpPgAdmin login page"
run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' || true"
run "curl -sSI 'http://localhost:${HOST_PORT_HTTPD}${URL}servers.php' || true"
rm -f cookie.txt
@ -171,7 +171,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
else
TOKEN_URL="${TOKEN_URL//\"/}"
TOKEN_URL="${TOKEN_URL//&amp;/&}"
printf "\\r[OK] Retrieve phpPgAdmin token page:%s\\n" "${TOKEN_URL}"
print_succ "1" "1" "Retrieve phpPgAdmin token page: ${TOKEN_URL}"
fi
###
@ -180,14 +180,14 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
printf "[TEST] Retrieve phpPgAdmin login token"
# 1st Try
if ! TOKEN="$( run "curl -sS --fail -c cookie.txt -b cookie.txt 'http://localhost:${HOST_PORT_HTTPD}${URL}${TOKEN_URL}' | tac | tac | grep -Eo 'loginPassword_[a-zA-Z0-9]+'" "${RETRIES}" "" "0" )"; then
printf "\\r[FAIL] Retrieve phpPgAdmin login token\\n"
print_fail "1" "1" "Retrieve phpPgAdmin login token"
run "curl -sS 'http://localhost:${TOKEN_URL_URL}' || true"
run "curl -sSI 'http://localhost:${TOKEN_URL_URL}' || true"
rm -f cookie.txt
exit 1
else
TOKEN="$( echo "${TOKEN}" | head -1 )"
printf "\\r[OK] Retrieve phpPgAdmin login token: %s\\n" "${TOKEN}"
print_succ "1" "1" "Retrieve phpPgAdmin login token: ${TOKEN}"
fi
###
@ -204,7 +204,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
--data 'loginSubmit=Login' \
'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php' 2>/dev/null \
| grep -q 'Create database'" "${RETRIES}" "" "0"; then
printf "\\r[FAIL] Submit phpPgAdmin POST login\\n"
print_fail "1" "1" "Submit phpPgAdmin POST login"
run "curl -sS -c cookie.txt -b cookie.txt \
--data 'subject=server' \
--data 'server=pgsql%3A5432%3Aallow' \
@ -224,7 +224,7 @@ if [ "${DEVILBOX_VENDOR_PHPPGADMIN_AUTOLOGIN}" != "1" ]; then
rm -f cookie.txt || true
exit 1
else
printf "\\r[OK] Submit phpPgAdmin POST login\\n"
print_succ "1" "1" "Submit phpPgAdmin POST login"
fi
fi
@ -240,12 +240,12 @@ if [ "$( run "curl -sS --fail \
| tac \
| tac \
| grep -Ec 'data\">(Database|Owner|Collation|Tablespace)'" "${RETRIES}" "" "0" )" != "4" ]; then
printf "\\r[FAIL] Evaluate successful phpPgAdmin login\\n"
print_fail "1" "1" "Evaluate successful phpPgAdmin login"
run "curl -sS 'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php?subject=server&server=pgsql%3A5432%3Aallow&' || true"
run "curl -sS -I 'http://localhost:${HOST_PORT_HTTPD}${URL}redirect.php?subject=server&server=pgsql%3A5432%3Aallow&' || true"
rm -f cookie.txt || true
exit 1
else
printf "\\r[OK] Evaluate successful phpPgAdmin login\\n"
print_succ "1" "1" "Evaluate successful phpPgAdmin login"
fi
rm -f cookie.txt || true

View File

@ -6,6 +6,62 @@ Make sure to have a look at [UPDATING.md](https://github.com/cytopia/devilbox/bl
## Unreleased
## Release v2.2.0 (2022-04-14)
This release adds PHP-FPM community images via `docker-compose.override.yml`, which easily allows you
to build upon existing PHP images and customize them for your usecase/workflow.
#### Added
- Added PHP-FPM Community images: https://github.com/devilbox/docker-php-fpm-community/
## Release v2.1.1 (2022-04-07)
#### Changed
- Used tagged PHP images (auto-updating)instead early release branch one.
## Release v2.1.0 (2022-04-05)
This is now a 100% `arm64` compatible release.
#### Fixed
- Fixed imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
- Fixed missing `arm64` support: [#855](https://github.com/cytopia/devilbox/issues/855)
#### Added
- Added PHP images with `arm64` support for PHP: https://github.com/devilbox/docker-php-fpm/releases/tag/0.138
- Added `vips` to PHP 8.0
- Added `vips` to PHP 8.1
- Added `swoole` to PHP 8.1
#### Removed
- Removed homebrew due to arm64 issues
- Removed Ansible due to arm64 issues
## Release v2.0.0 (2022-03-28)
The goal of this release is to reduce the overall size of Docker images and bring in latest versions.
**Important:** This release introduces backwards incompatible changes due to only keeping major versions of PostreSQL and therefore removing old volumes. Additionally the PostgreSQL volume names have changed. In order to guarantee a smooth transition, backup your PostgreSQL databases in the previous version before switching and then re-importing them in this version.
#### Added
- Added CakePHP integration tests for PHP 8+
- Added `.env` variable `HTTPD_FLAVOUR` to decide between `Debian` or `Alpine` for HTTP server
#### Changed
- Changed default PostgreSQL server from `12.4` to `14-alpine` (breaking change)
- Changed default Redis server from `6.0` to `6.2-alpine`
- Changed default Memcached server from `1.6` to `1.6-alpine`
- Changed default MongoDB server from `4.4` to `5.0`
- Changed default HTTPD server flavour from `Debian` to `Alpine`
- Use tiny Alpine version of Bind container
#### Removed
- Removed CI for MongoDB `2.8` and MongoDB `3.0` due to segfault: https://github.com/docker-library/mongo/issues/251
## Release v1.11.0 (2022-03-22)
#### Fixed

View File

@ -25,9 +25,16 @@
[![Documentation Status](https://readthedocs.org/projects/devilbox/badge/?version=latest)](https://devilbox.readthedocs.io)
[![Build Status](https://github.com/cytopia/devilbox/workflows/Lint/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Lint)
[![Build Status](https://github.com/cytopia/devilbox/workflows/Docs/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Docs)
[![Build Status](https://github.com/cytopia/devilbox/workflows/Linux/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Linux)
[![Build Status](https://github.com/cytopia/devilbox/workflows/Config/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Config)
[![Build Status](https://github.com/cytopia/devilbox/workflows/Versions/badge.svg)](https://github.com/cytopia/devilbox/actions?workflow=Versions)
[![PHP](https://github.com/cytopia/devilbox/actions/workflows/test-php.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-php.yml)
[![Httpd](https://github.com/cytopia/devilbox/actions/workflows/test-httpd.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-httpd.yml)
[![MySQL](https://github.com/cytopia/devilbox/actions/workflows/test-mysql.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-mysql.yml)
[![Memcd](https://github.com/cytopia/devilbox/actions/workflows/test-memcd.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-memcd.yml)
[![Mongo](https://github.com/cytopia/devilbox/actions/workflows/test-mongo.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-mongo.yml)
[![PgSQL](https://github.com/cytopia/devilbox/actions/workflows/test-pgsql.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-pgsql.yml)
[![Redis](https://github.com/cytopia/devilbox/actions/workflows/test-redis.yml/badge.svg)](https://github.com/cytopia/devilbox/actions/workflows/test-redis.yml)
**Available Architectures:** `amd64`, `arm64`
<img width="200" style="width:200px;" src="docs/_includes/figures/https/https-ssl-address-bar.png" /><br/>
<small><sub>Support for <a href="https://devilbox.readthedocs.io/en/latest/intermediate/setup-valid-https.html">valid https</a> out of the box.</sub></small>
@ -304,7 +311,7 @@ Every single attachable container comes with many different versions. In order t
<td><a target="_blank" title="MariaDB 10.5" href="https://github.com/devilbox/docker-mysql">10.5</a></td>
<td></td>
<td><a target="_blank" title="PgSQL 9.6" href="https://github.com/docker-library/postgres">9.6</a></td>
<td><a target="_blank" title="Redis latest" href="https://github.com/docker-library/redis">latest</a></td>
<td><a target="_blank" title="Redis 6.2" href="https://github.com/docker-library/redis">6.2</a></td>
<td></td>
<td><a target="_blank" title="MongoDB 4.2" href="https://github.com/docker-library/mongo">4.2</a></td>
</tr>
@ -315,8 +322,8 @@ Every single attachable container comes with many different versions. In order t
<td></td>
<td><a target="_blank" title="MariaDB 10.6" href="https://github.com/devilbox/docker-mysql">10.6</a></td>
<td></td>
<td>...</td>
<td></td>
<td><a target="_blank" title="PgSQL 10" href="https://github.com/docker-library/postgres">10</a></td>
<td><a target="_blank" title="Redis latest" href="https://github.com/docker-library/redis">latest</a></td>
<td></td>
<td><a target="_blank" title="MongoDB 4.4" href="https://github.com/docker-library/mongo">4.4</a></td>
</tr>
@ -327,10 +334,10 @@ Every single attachable container comes with many different versions. In order t
<td></td>
<td><a target="_blank" title="MariaDB 10.7" href="https://github.com/devilbox/docker-mysql">10.7</a></td>
<td></td>
<td><a target="_blank" title="PgSQL 12.3" href="https://github.com/docker-library/postgres">12.3</a></td>
<td><a target="_blank" title="PgSQL 11" href="https://github.com/docker-library/postgres">11</a></td>
<td></td>
<td></td>
<td><a target="_blank" title="MongoDB latest" href="https://github.com/docker-library/mongo">latest</a></td>
<td><a target="_blank" title="MongoDB 5.0" href="https://github.com/docker-library/mongo">5.0</a></td>
</tr>
<tr>
<td></td>
@ -339,10 +346,10 @@ Every single attachable container comes with many different versions. In order t
<td></td>
<td></td>
<td></td>
<td><a target="_blank" title="PgSQL 12.4" href="https://github.com/docker-library/postgres">12.4</a></td>
<td></td>
<td><a target="_blank" title="PgSQL 12" href="https://github.com/docker-library/postgres">12</a></td>
<td></td>
<td></td>
<td><a target="_blank" title="MongoDB latest" href="https://github.com/docker-library/mongo">latest</a></td>
</tr>
<tr>
<td></td>
@ -351,7 +358,7 @@ Every single attachable container comes with many different versions. In order t
<td></td>
<td></td>
<td></td>
<td><a target="_blank" title="PgSQL 13.0" href="https://github.com/docker-library/postgres">13.0</a></td>
<td><a target="_blank" title="PgSQL 13" href="https://github.com/docker-library/postgres">13</a></td>
<td></td>
<td></td>
<td></td>
@ -363,7 +370,7 @@ Every single attachable container comes with many different versions. In order t
<td></td>
<td></td>
<td></td>
<td><a target="_blank" title="PgSQL latest" href="https://github.com/docker-library/postgres">latest</a></td>
<td><a target="_blank" title="PgSQL 14" href="https://github.com/docker-library/postgres">14</a></td>
<td></td>
<td></td>
<td></td>
@ -375,7 +382,7 @@ Every single attachable container comes with many different versions. In order t
<td></td>
<td></td>
<td></td>
<td></td>
<td><a target="_blank" title="PgSQL latest" href="https://github.com/docker-library/postgres">latest</a></td>
<td></td>
<td></td>
<td></td>
@ -815,7 +822,7 @@ The Devilbox is a development stack, so it is made sure that a lot of PHP module
| <sup>sqlsrv</sup> | | | | | | d | d | d | d | d | d | d | d |
| <sup>ssh2</sup> | | | | | | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | | | |
| <sup>standard</sup> | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| <sup>swoole</sup> | | d | d | d | d | d | d | d | d | d | d | | |
| <sup>swoole</sup> | | d | d | d | d | d | d | d | d | d | d | d | |
| <sup>sysvmsg</sup> | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 |
| <sup>sysvsem</sup> | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 |
| <sup>sysvshm</sup> | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 |
@ -823,7 +830,7 @@ The Devilbox is a development stack, so it is made sure that a lot of PHP module
| <sup>tokenizer</sup> | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
| <sup>uploadprogress</sup> | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 |
| <sup>uuid</sup> | | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 |
| <sup>vips</sup> | | | | | | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | | | |
| <sup>vips</sup> | | | | | | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | |
| <sup>wddx</sup> | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | | | | |
| <sup>xdebug</sup> | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 |
| <sup>xlswriter</sup> | | | | | | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 | 🗸 |

View File

@ -7,6 +7,12 @@ version: '2.3'
###
services:
# -----------------------------------------------------------------------------------------------
# PHP Community image
# -----------------------------------------------------------------------------------------------
php:
image: devilbox/php-fpm-community:${PHP_SERVER}-${PHP_COMMUNITY_FLAVOUR:-devilbox}
# -----------------------------------------------------------------------------------------------
# Blackfire
# -----------------------------------------------------------------------------------------------

View File

@ -0,0 +1,11 @@
# vim: set ft=yaml:
---
version: '2.3'
services:
# -----------------------------------------------------------------------------------------------
# PHP Community image
# -----------------------------------------------------------------------------------------------
php:
image: devilbox/php-fpm-community:${PHP_SERVER}-${PHP_COMMUNITY_FLAVOUR:-devilbox}

View File

@ -34,7 +34,7 @@ services:
# Bind (DNS Server)
# ------------------------------------------------------------
bind:
image: cytopia/bind:0.28
image: cytopia/bind:alpine-0.28
hostname: bind
restart: always
ports:
@ -94,7 +94,7 @@ services:
# PHP
# ------------------------------------------------------------
php:
image: devilbox/php-fpm:${PHP_SERVER}-work-0.136
image: devilbox/php-fpm:${PHP_SERVER}-work-0.139
hostname: php
##
@ -220,7 +220,7 @@ services:
# Web Server
# ------------------------------------------------------------
httpd:
image: devilbox/${HTTPD_SERVER}:0.43
image: devilbox/${HTTPD_SERVER}:${HTTPD_FLAVOUR:-alpine}-0.47
hostname: httpd
environment:
@ -528,52 +528,16 @@ volumes:
devilbox-pgsql-9.5-alpine:
devilbox-pgsql-9.6:
devilbox-pgsql-9.6-alpine:
devilbox-pgsql-10.0:
devilbox-pgsql-10.0-alpine:
devilbox-pgsql-10.1:
devilbox-pgsql-10.1-alpine:
devilbox-pgsql-10.2:
devilbox-pgsql-10.2-alpine:
devilbox-pgsql-10.3:
devilbox-pgsql-10.3-alpine:
devilbox-pgsql-10.4:
devilbox-pgsql-10.4-alpine:
devilbox-pgsql-10.5:
devilbox-pgsql-10.5-alpine:
devilbox-pgsql-10.6:
devilbox-pgsql-10.6-alpine:
devilbox-pgsql-11.0:
devilbox-pgsql-11.0-alpine:
devilbox-pgsql-11.1:
devilbox-pgsql-11.1-alpine:
devilbox-pgsql-11.2:
devilbox-pgsql-11.2-alpine:
devilbox-pgsql-11.3:
devilbox-pgsql-11.3-alpine:
devilbox-pgsql-11.4:
devilbox-pgsql-11.4-alpine:
devilbox-pgsql-11.5:
devilbox-pgsql-11.5-alpine:
devilbox-pgsql-11.6:
devilbox-pgsql-11.6-alpine:
devilbox-pgsql-11.7:
devilbox-pgsql-11.7-alpine:
devilbox-pgsql-11.8:
devilbox-pgsql-11.8-alpine:
devilbox-pgsql-11.9:
devilbox-pgsql-11.9-alpine:
devilbox-pgsql-12.0:
devilbox-pgsql-12.0-alpine:
devilbox-pgsql-12.1:
devilbox-pgsql-12.1-alpine:
devilbox-pgsql-12.2:
devilbox-pgsql-12.2-alpine:
devilbox-pgsql-12.3:
devilbox-pgsql-12.3-alpine:
devilbox-pgsql-12.4:
devilbox-pgsql-12.4-alpine:
devilbox-pgsql-13.0:
devilbox-pgsql-13.0-alpine:
devilbox-pgsql-10:
devilbox-pgsql-10-alpine:
devilbox-pgsql-11:
devilbox-pgsql-11-alpine:
devilbox-pgsql-12:
devilbox-pgsql-12-alpine:
devilbox-pgsql-13:
devilbox-pgsql-13-alpine:
devilbox-pgsql-14:
devilbox-pgsql-14-alpine:
devilbox-pgsql-latest:
devilbox-pgsql-alpine:
@ -588,4 +552,5 @@ volumes:
devilbox-mongo-4.0:
devilbox-mongo-4.2:
devilbox-mongo-4.4:
devilbox-mongo-5.0:
devilbox-mongo-latest:

View File

@ -34,6 +34,18 @@
Github: MailHog <img src="https://raw.githubusercontent.com/cytopia/icons/master/11x11/ext-link.png" />
</a>
.. |ext_lnk_php_community_dockerhub| raw:: html
<a target="_blank" href="https://hub.docker.com/r/devilbox/php-fpm-community">
Dockerhub: PHP-FPM Community <img src="https://raw.githubusercontent.com/cytopia/icons/master/11x11/ext-link.png" />
</a>
.. |ext_lnk_php_community_github| raw:: html
<a target="_blank" href="https://github.com/devilbox/docker-php-fpm-community/">
Github: PHP-FPM Community <img src="https://raw.githubusercontent.com/cytopia/icons/master/11x11/ext-link.png" />
</a>
.. |ext_lnk_mailhog_dockerhub| raw:: html
<a target="_blank" href="https://hub.docker.com/r/mailhog/mailhog/">

View File

@ -0,0 +1,11 @@
.. |ext_lnk_php_community_github_announce| raw:: html
<a target="_blank" href="https://github.com/devilbox/docker-php-fpm-community/">
<strong>PHP-FPM Community <img src="https://raw.githubusercontent.com/cytopia/icons/master/11x11/ext-link.png" /></strong>
</a>
.. attention::
You can now create your own **custom flavour** of PHP-FPM Community images and easily add them to the Devilbox: |ext_lnk_php_community_github_announce|

View File

@ -1,6 +1,8 @@
+-------------------------------------+-----------+-----------+----------------+
| Container | Name | Hostname | IP Address |
+=====================================+===========+===========+================+
| PHP Community | php | php | 172.16.238.10 |
+-------------------------------------+-----------+-----------+----------------+
| Blackfire | blackfire | blackfire | 172.16.238.200 |
+-------------------------------------+-----------+-----------+----------------+
| MailHog | mailhog | mailhog | 172.16.238.201 |

View File

@ -13,6 +13,7 @@ However, each example also exists in its standalone file as shown below:
├── docker-compose.override.yml-elk
├── docker-compose.override.yml-mailhog
├── docker-compose.override.yml-ngrok
├── docker-compose.override.yml-php-community
├── docker-compose.override.yml-python-flask
├── docker-compose.override.yml-rabbitmq
├── docker-compose.override.yml-solr

View File

@ -557,11 +557,11 @@ PHP_SERVER
This variable choses your desired PHP-FPM version to be started.
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+
| Name | Allowed values | Default value |
+=========================+========================================================================================================================================================================================================================================================+=================+
| ``PHP_SERVER`` | ``php-fpm-5.2`` |br| ``php-fpm-5.3`` |br| ``php-fpm-5.4`` |br| ``php-fpm-5.5`` |br| ``php-fpm-5.6`` |br| ``php-fpm-7.0`` |br| ``php-fpm-7.1`` |br| ``php-fpm-7.2`` |br| ``php-fpm-7.3`` |br| ``php-fpm-7.4`` |br| ``php-fpm-8.0`` |br| ``php-fpm-8.1`` | ``php-fpm-7.4`` |
+-------------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+
| Name | Allowed values | Default value |
+=========================+=============================================================================================================================================================================================================================================================================+=================+
| ``PHP_SERVER`` | ``php-fpm-5.2`` |br| ``php-fpm-5.3`` |br| ``php-fpm-5.4`` |br| ``php-fpm-5.5`` |br| ``php-fpm-5.6`` |br| ``php-fpm-7.0`` |br| ``php-fpm-7.1`` |br| ``php-fpm-7.2`` |br| ``php-fpm-7.3`` |br| ``php-fpm-7.4`` |br| ``php-fpm-8.0`` |br| ``php-fpm-8.1`` |br| ``php-fpm-8.2`` | ``php-fpm-8.1`` |
+-------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------+
.. important::
**PHP 5.2** is available to use, but it is not officially supported. The Devilbox intranet does
@ -574,7 +574,7 @@ All values are already available in the ``.env`` file and just need to be commen
.. code-block:: bash
:caption: .env
:emphasize-lines: 9
:emphasize-lines: 14
host> grep PHP_SERVER .env
@ -587,9 +587,10 @@ All values are already available in the ``.env`` file and just need to be commen
#PHP_SERVER=php-fpm-7.1
#PHP_SERVER=php-fpm-7.2
#PHP_SERVER=php-fpm-7.3
PHP_SERVER=php-fpm-7.4
#PHP_SERVER=php-fpm-7.4
#PHP_SERVER=php-fpm-8.0
#PHP_SERVER=php-fpm-8.1
PHP_SERVER=php-fpm-8.1
#PHP_SERVER=php-fpm-8.2
.. _env_httpd_server:
@ -629,14 +630,14 @@ This variable choses your desired MySQL server version to be started.
+-------------------------+------------------------------------------------------------------------------------------------+------------------+
| Name | Allowed values | Default value |
+=========================+================================================================================================+==================+
| ``MYSQL_SERVER`` | ``mysql-5.5`` |br| ``mysql-5.6`` |br| ``mariadb-10.2`` |br| ``percona-5.7`` |br| and many more | ``mariadb-10.5`` |
| ``MYSQL_SERVER`` | ``mysql-5.5`` |br| ``mysql-5.6`` |br| ``mariadb-10.2`` |br| ``percona-5.7`` |br| and many more | ``mariadb-10.6`` |
+-------------------------+------------------------------------------------------------------------------------------------+------------------+
All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences:
.. code-block:: bash
:caption: .env
:emphasize-lines: 9
:emphasize-lines: 18
host> grep MYSQL_SERVER .env
@ -644,17 +645,20 @@ All values are already available in the ``.env`` file and just need to be commen
#MYSQL_SERVER=mysql-5.6
#MYSQL_SERVER=mysql-5.7
#MYSQL_SERVER=mysql-8.0
#MYSQL_SERVER=percona-5.5
#MYSQL_SERVER=percona-5.6
#MYSQL_SERVER=percona-5.7
#MYSQL_SERVER=percona-8.0
#MYSQL_SERVER=mariadb-5.5
#MYSQL_SERVER=mariadb-10.0
#MYSQL_SERVER=mariadb-10.1
#MYSQL_SERVER=mariadb-10.2
#MYSQL_SERVER=mariadb-10.3
#MYSQL_SERVER=mariadb-10.4
MYSQL_SERVER=mariadb-10.5
#MYSQL_SERVER=percona-5.5
#MYSQL_SERVER=percona-5.6
#MYSQL_SERVER=percona-5.7
#MYSQL_SERVER=percona-8.0
#MYSQL_SERVER=mariadb-10.5
MYSQL_SERVER=mariadb-10.6
#MYSQL_SERVER=mariadb-10.7
#MYSQL_SERVER=mariadb-10.8
.. _env_pgsql_server:
@ -667,14 +671,14 @@ This variable choses your desired PostgreSQL server version to be started.
+-------------------------+-------------------------------------------------------------------+------------------+
| Name | Allowed values | Default value |
+=========================+===================================================================+==================+
| ``PGSQL_SERVER`` | ``9.1`` |br| ``9.2`` |br| ``9.3`` |br| ``9.4`` |br| and many more | ``12.4`` |
| ``PGSQL_SERVER`` | ``9.1`` |br| ``9.2`` |br| ``9.3`` |br| ``9.4`` |br| and many more | ``14-alpine`` |
+-------------------------+-------------------------------------------------------------------+------------------+
All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences:
.. code-block:: bash
:caption: .env
:emphasize-lines: 8
:emphasize-lines: 24
host> grep PGSQL_SERVER .env
@ -690,52 +694,16 @@ All values are already available in the ``.env`` file and just need to be commen
#PGSQL_SERVER=9.5-alpine
#PGSQL_SERVER=9.6
#PGSQL_SERVER=9.6-alpine
#PGSQL_SERVER=10.0
#PGSQL_SERVER=10.0-alpine
#PGSQL_SERVER=10.1
#PGSQL_SERVER=10.1-alpine
#PGSQL_SERVER=10.2
#PGSQL_SERVER=10.2-alpine
#PGSQL_SERVER=10.3
#PGSQL_SERVER=10.3-alpine
#PGSQL_SERVER=10.4
#PGSQL_SERVER=10.4-alpine
#PGSQL_SERVER=10.5
#PGSQL_SERVER=10.5-alpine
#PGSQL_SERVER=10.6
#PGSQL_SERVER=10.6-alpine
#PGSQL_SERVER=11.0
#PGSQL_SERVER=11.0-alpine
#PGSQL_SERVER=11.1
#PGSQL_SERVER=11.1-alpine
#PGSQL_SERVER=11.2
#PGSQL_SERVER=11.2-alpine
#PGSQL_SERVER=11.3
#PGSQL_SERVER=11.3-alpine
#PGSQL_SERVER=11.4
#PGSQL_SERVER=11.4-alpine
#PGSQL_SERVER=11.5
#PGSQL_SERVER=11.5-alpine
#PGSQL_SERVER=11.6
#PGSQL_SERVER=11.6-alpine
#PGSQL_SERVER=11.7
#PGSQL_SERVER=11.7-alpine
#PGSQL_SERVER=11.8
#PGSQL_SERVER=11.8-alpine
#PGSQL_SERVER=11.9
#PGSQL_SERVER=11.9-alpine
#PGSQL_SERVER=12.0
#PGSQL_SERVER=12.0-alpine
#PGSQL_SERVER=12.1
#PGSQL_SERVER=12.1-alpine
#PGSQL_SERVER=12.2
#PGSQL_SERVER=12.2-alpine
#PGSQL_SERVER=12.3
#PGSQL_SERVER=12.3-alpine
PGSQL_SERVER=12.4
#PGSQL_SERVER=12.4-alpine
#PGSQL_SERVER=13.0
#PGSQL_SERVER=13.0-alpine
#PGSQL_SERVER=10
#PGSQL_SERVER=10-alpine
#PGSQL_SERVER=11
#PGSQL_SERVER=11-alpine
#PGSQL_SERVER=12
#PGSQL_SERVER=12-alpine
#PGSQL_SERVER=13
#PGSQL_SERVER=13-alpine
#PGSQL_SERVER=14
PGSQL_SERVER=14-alpine
#PGSQL_SERVER=latest
#PGSQL_SERVER=alpine
@ -755,14 +723,14 @@ This variable choses your desired Redis server version to be started.
+-------------------------+-------------------------------------------------------------------+------------------+
| Name | Allowed values | Default value |
+=========================+===================================================================+==================+
| ``REDIS_SERVER`` | ``2.8`` |br| ``3.0`` |br| ``3.2`` |br| ``4.0`` |br| and many more | ``6.0`` |
| ``REDIS_SERVER`` | ``2.8`` |br| ``3.0`` |br| ``3.2`` |br| ``4.0`` |br| and many more | ``6.2-alpine`` |
+-------------------------+-------------------------------------------------------------------+------------------+
All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences:
.. code-block:: bash
:caption: .env
:emphasize-lines: 6
:emphasize-lines: 15
host> grep REDIS_SERVER .env
@ -775,8 +743,10 @@ All values are already available in the ``.env`` file and just need to be commen
#REDIS_SERVER=4.0-alpine
#REDIS_SERVER=5.0
#REDIS_SERVER=5.0-alpine
REDIS_SERVER=6.0
#REDIS_SERVER=6.0
#REDIS_SERVER=6.0-alpine
#REDIS_SERVER=6.2
REDIS_SERVER=6.2-alpine
#REDIS_SERVER=latest
#REDIS_SERVER=alpine
@ -796,14 +766,14 @@ This variable choses your desired Memcached server version to be started.
+-------------------------+---------------------------------------------------------------------------------+------------------+
| Name | Allowed values | Default value |
+=========================+=================================================================================+==================+
| ``MEMCD_SERVER`` | ``1.4`` |br| ``1.4-alpine`` |br| ``1.5`` |br| ``1.5-alpine`` |br| and many more | ``1.6`` |
| ``MEMCD_SERVER`` | ``1.4`` |br| ``1.4-alpine`` |br| ``1.5`` |br| ``1.5-alpine`` |br| and many more | ``1.6-alpine`` |
+-------------------------+---------------------------------------------------------------------------------+------------------+
All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences:
.. code-block:: bash
:caption: .env
:emphasize-lines: 5
:emphasize-lines: 8
host> grep MEMCD_SERVER .env
@ -811,8 +781,8 @@ All values are already available in the ``.env`` file and just need to be commen
#MEMCD_SERVER=1.4-alpine
#MEMCD_SERVER=1.5
#MEMCD_SERVER=1.5-alpine
MEMCD_SERVER=1.6
#MEMCD_SERVER=1.6-alpine
#MEMCD_SERVER=1.6
MEMCD_SERVER=1.6-alpine
#MEMCD_SERVER=latest
#MEMCD_SERVER=alpine
@ -832,14 +802,14 @@ This variable choses your desired MongoDB server version to be started.
+-------------------------+-------------------------------------------------------------------+------------------+
| Name | Allowed values | Default value |
+=========================+===================================================================+==================+
| ``MONGO_SERVER`` | ``2.8`` |br| ``3.0`` |br| ``3.2`` |br| ``3.4`` |br| and many more | ``4.4`` |
| ``MONGO_SERVER`` | ``2.8`` |br| ``3.0`` |br| ``3.2`` |br| ``3.4`` |br| and many more | ``5.0`` |
+-------------------------+-------------------------------------------------------------------+------------------+
All values are already available in the ``.env`` file and just need to be commented or uncommented. If multiple values are uncommented, the last uncommented variable one takes precedences:
.. code-block:: bash
:caption: .env
:emphasize-lines: 6
:emphasize-lines: 11
host> grep MONGO_SERVER .env
@ -850,7 +820,8 @@ All values are already available in the ``.env`` file and just need to be commen
#MONGO_SERVER=3.6
#MONGO_SERVER=4.0
#MONGO_SERVER=4.2
MONGO_SERVER=4.4
#MONGO_SERVER=4.4
MONGO_SERVER=5.0
#MONGO_SERVER=latest
.. note::

View File

@ -56,6 +56,7 @@ That includes, but is not limited to:
In order to fully customize each container, refer to their own documentation section:
.. seealso::
* :ref:`custom_container_enable_php_community`
* :ref:`custom_container_enable_blackfire`
* :ref:`custom_container_enable_elk_stack`
* :ref:`custom_container_enable_mailhog`

View File

@ -0,0 +1,135 @@
.. include:: /_includes/all.rst
.. include:: /_includes/snippets/__ANNOUNCEMENTS__.rst
.. _custom_container_enable_php_community:
**********************************
Enable and configure PHP Community
**********************************
This section will guide you through getting PHP community images integrated into the Devilbox.
.. seealso::
* |ext_lnk_php_community_github|
* |ext_lnk_php_community_dockerhub|
* :ref:`custom_container_enable_all_additional_container`
* :ref:`docker_compose_override_yml_how_does_it_work`
**Table of Contents**
.. contents:: :local:
Overview
========
Available overwrites
--------------------
.. include:: /_includes/snippets/docker-compose-override-tree-view.rst
PHP-FPM Community settings
--------------------------
In case of PHP-FPM Community, the file is ``compose/docker-compose.override.yml-php-community``. This file
must be copied into the root of the Devilbox git directory.
+-----------------------+-----------------------------------------------------------------------------------------------------------+
| What | How and where |
+=======================+===========================================================================================================+
| Example compose file | ``compose/docker-compose.override.yml-all`` or |br| ``compose/docker-compose.override.yml-php-community`` |
+-----------------------+-----------------------------------------------------------------------------------------------------------+
| Container IP address | ``172.16.238.10`` |
+-----------------------+-----------------------------------------------------------------------------------------------------------+
| Container host name | ``php`` |
+-----------------------+-----------------------------------------------------------------------------------------------------------+
| Container name | ``php`` |
+-----------------------+-----------------------------------------------------------------------------------------------------------+
| Mount points | Same as default php image |
+-----------------------+-----------------------------------------------------------------------------------------------------------+
| Exposed port | Same as default php image |
+-----------------------+-----------------------------------------------------------------------------------------------------------+
| Available at | n.a. |
+-----------------------+-----------------------------------------------------------------------------------------------------------+
| Further configuration | ``PHP_COMMUNITY_FLAVOUR`` must be set via ``.env`` |
+-----------------------+-----------------------------------------------------------------------------------------------------------+
PHP Community env variables
---------------------------
Additionally the following ``.env`` variables can be created for easy configuration:
+------------------------------+---------------+-------------------------------------------------------------------------+
| Variable | Default value | Description |
+==============================+===============+=========================================================================+
| ``PHP_COMMUNITY_FLAVOUR`` | ``devilbox`` | Controls the PHP Community flavour. |
+------------------------------+---------------+-------------------------------------------------------------------------+
Instructions
============
1. Copy docker-compose.override.yml
-----------------------------------
Copy the PHP-FPM Community Docker Compose overwrite file into the root of the Devilbox git directory.
(It must be at the same level as the default ``docker-compose.yml`` file).
.. code-block:: bash
host> cp compose/docker-compose.override.yml-php-community docker-compose.override.yml
.. seealso::
* :ref:`docker_compose_override_yml`
* :ref:`add_your_own_docker_image`
* :ref:`overwrite_existing_docker_image`
2. Adjust ``env`` settings
--------------------------
By default PHP-FPM Community is using the Devilbox reference flavour ``devilbox``.
You can change this flavour via the ``.env`` variable ``PHP_COMMUNITY_FLAVOUR``.
.. code-block:: bash
:caption: .env
PHP_COMMUNITY_FLAVOUR=devilbox
.. seealso:: :ref:`env_file`
3. Start the Devilbox
---------------------
The final step is to start the Devilbox with the newly added PHP-FPM Community images.
Let's assume you want to start ``php``, ``httpd``, and ``bind``.
.. code-block:: bash
host> docker-compose up -d php httpd bind
.. seealso:: :ref:`start_the_devilbox`
TL;DR
=====
For the lazy readers, here are all commands required to get you started.
Simply copy and paste the following block into your terminal from the root of your Devilbox git
directory:
.. code-block:: bash
# Copy compose-override.yml into place
cp compose/docker-compose.override.yml-php-community docker-compose.override.yml
# Set Community flavour
echo "PHP_COMMUNITY_FLAVOUR=devilbox" >> .env
# Start container
docker-compose up -d php httpd bind

View File

@ -118,6 +118,7 @@ host is ready to be served with your custom domain.
:maxdepth: 2
custom-container/enable-all-container
custom-container/enable-php-community
custom-container/enable-blackfire
custom-container/enable-elk-stack
custom-container/enable-mailhog

View File

@ -72,25 +72,32 @@ You will need to configure the path mapping in ``launch.json`` (VSCode configura
:emphasize-lines: 5,9,10
{
"version": "0.2.0",
"configurations": [
{
"name": "Xdebug for Project mytest",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/shared/httpd/mytest/htdocs": "${workspaceFolder}/htdocs"
}
}, {
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
"version": "0.2.0",
"configurations": [
{
"name": "Xdebug for Project mytest",
"type": "php",
"request": "launch",
"port": 9000,
"pathMappings": {
"/shared/httpd/mytest/htdocs": "${workspaceFolder}/htdocs"
},
"log": true,
"xdebugSettings": {
"max_children": 128,
"max_data": 512,
"max_depth": 3
}
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${file}",
"cwd": "${fileDirname}",
"port": 9000
}
]
}
.. important::
@ -106,7 +113,7 @@ You will need to configure the path mapping in ``launch.json`` (VSCode configura
Configure php.ini
-----------------
.. note:: The following example show how to configure PHP Xdebug for PHP 5.6:
.. note:: The following example show how to configure PHP Xdebug for PHP 7.4:
Create an ``xdebug.ini`` file (must end by ``.ini``):
@ -115,8 +122,8 @@ Create an ``xdebug.ini`` file (must end by ``.ini``):
# Navigate to the Devilbox git directory
host> cd path/to/devilbox
# Navigate to PHP 5.6 ini configuration directory
host> cd cfg/php-ini-5.6/
# Navigate to PHP 7.4 ini configuration directory
host> cd cfg/php-ini-7.4/
# Create and open debug.ini file
host> vi xdebug.ini
@ -128,19 +135,19 @@ Copy/paste all of the following lines into the above created ``xdebug.ini`` file
:emphasize-lines: 7,10
; Defaults
xdebug.default_enable=1
xdebug.remote_enable=1
xdebug.remote_port=9000
zend_extension=xdebug.so
xdebug.mode=debug
xdebug.client_port=9000
xdebug.client_host=docker.for.lin.host.internal
xdebug.remote_handler=dbgp
xdebug.start_with_request=yes
; The Linux way
xdebug.remote_connect_back=1
; Controls the protection mechanism for infinite recursion protection
xdebug.max_nesting_level=250
; idekey value is specific to Visual Studio Code
xdebug.idekey=VSCODE
; Optional: Set to true to always auto-start xdebug
xdebug.remote_autostart=true
.. note:: Host os and editor specific settings are highlighted in yellow and are worth googling to get a better understanding of the tools you use and to be more efficient at troubleshooting.

View File

@ -379,6 +379,13 @@ to read-only by applying the following ``chmod`` command.
* :ref:`my_cnf`
* https://github.com/cytopia/devilbox/issues/212
[MariaDB] Assertion failure when executing prepared statement with ? in IN list
-------------------------------------------------------------------------------
Some MariaDB versions are affected by MDEV-27937 bug, use a fixed version or set in_predicate_conversion_threshold variable to a higher value.
.. seealso:: https://jira.mariadb.org/browse/MDEV-27937
Docker Toolbox
==============

View File

@ -273,6 +273,12 @@ PHP_SERVER=8.1
###
### 1.2 Choose HTTPD Server Image
###
### Choose between 'debian' or 'alpine' flavour and then select the version
###
### Note: apache-2.2 has no arm64 support on 'alpine' flavour
###
HTTPD_FLAVOUR=alpine
#HTTPD_SERVER=apache-2.2
#HTTPD_SERVER=apache-2.4
HTTPD_SERVER=nginx-stable
@ -286,6 +292,10 @@ HTTPD_SERVER=nginx-stable
#MYSQL_SERVER=mysql-5.6
#MYSQL_SERVER=mysql-5.7
#MYSQL_SERVER=mysql-8.0
#MYSQL_SERVER=percona-5.5
#MYSQL_SERVER=percona-5.6
#MYSQL_SERVER=percona-5.7
#MYSQL_SERVER=percona-8.0
#MYSQL_SERVER=mariadb-5.5
#MYSQL_SERVER=mariadb-10.0
#MYSQL_SERVER=mariadb-10.1
@ -296,22 +306,26 @@ HTTPD_SERVER=nginx-stable
MYSQL_SERVER=mariadb-10.6
#MYSQL_SERVER=mariadb-10.7
#MYSQL_SERVER=mariadb-10.8
#MYSQL_SERVER=percona-5.5
#MYSQL_SERVER=percona-5.6
#MYSQL_SERVER=percona-5.7
#MYSQL_SERVER=percona-8.0
###
### 1.4 Choose PostgreSQL Server Image
###
### https://www.postgresql.org/support/versioning/
###
### IMPORTANT: Alpine based images might cause issues on Docker Toolbox or OSX
### https://github.com/docker/toolbox/issues/510
###
#
# PostgreSQL without arm64 support
#
#PGSQL_SERVER=9.0
#PGSQL_SERVER=9.1
#PGSQL_SERVER=9.2
#PGSQL_SERVER=9.2-alpine
#
# PostgreSQL with arm64 support
#
#PGSQL_SERVER=9.2
#PGSQL_SERVER=9.3
#PGSQL_SERVER=9.3-alpine
#PGSQL_SERVER=9.4
@ -320,62 +334,16 @@ MYSQL_SERVER=mariadb-10.6
#PGSQL_SERVER=9.5-alpine
#PGSQL_SERVER=9.6
#PGSQL_SERVER=9.6-alpine
#PGSQL_SERVER=10.0
#PGSQL_SERVER=10.0-alpine
#PGSQL_SERVER=10.1
#PGSQL_SERVER=10.1-alpine
#PGSQL_SERVER=10.2
#PGSQL_SERVER=10.2-alpine
#PGSQL_SERVER=10.3
#PGSQL_SERVER=10.3-alpine
#PGSQL_SERVER=10.4
#PGSQL_SERVER=10.4-alpine
#PGSQL_SERVER=10.5
#PGSQL_SERVER=10.5-alpine
#PGSQL_SERVER=10.6
#PGSQL_SERVER=10.6-alpine
#PGSQL_SERVER=10.7
#PGSQL_SERVER=10.7-alpine
#PGSQL_SERVER=10.8
#PGSQL_SERVER=10.8-alpine
#PGSQL_SERVER=10.9
#PGSQL_SERVER=10.9-alpine
#PGSQL_SERVER=10.10
#PGSQL_SERVER=10.10-alpine
#PGSQL_SERVER=10.11
#PGSQL_SERVER=10.11-alpine
#PGSQL_SERVER=11.0
#PGSQL_SERVER=11.0-alpine
#PGSQL_SERVER=11.1
#PGSQL_SERVER=11.1-alpine
#PGSQL_SERVER=11.2
#PGSQL_SERVER=11.2-alpine
#PGSQL_SERVER=11.3
#PGSQL_SERVER=11.3-alpine
#PGSQL_SERVER=11.4
#PGSQL_SERVER=11.4-alpine
#PGSQL_SERVER=11.5
#PGSQL_SERVER=11.5-alpine
#PGSQL_SERVER=11.6
#PGSQL_SERVER=11.6-alpine
#PGSQL_SERVER=11.7
#PGSQL_SERVER=11.7-alpine
#PGSQL_SERVER=11.8
#PGSQL_SERVER=11.8-alpine
#PGSQL_SERVER=11.9
#PGSQL_SERVER=11.9-alpine
#PGSQL_SERVER=12.0
#PGSQL_SERVER=12.0-alpine
#PGSQL_SERVER=12.1
#PGSQL_SERVER=12.1-alpine
#PGSQL_SERVER=12.2
#PGSQL_SERVER=12.2-alpine
#PGSQL_SERVER=12.3
#PGSQL_SERVER=12.3-alpine
PGSQL_SERVER=12.4
#PGSQL_SERVER=12.4-alpine
#PGSQL_SERVER=13.0
#PGSQL_SERVER=13.0-alpine
#PGSQL_SERVER=10
#PGSQL_SERVER=10-alpine
#PGSQL_SERVER=11
#PGSQL_SERVER=11-alpine
#PGSQL_SERVER=12
#PGSQL_SERVER=12-alpine
#PGSQL_SERVER=13
#PGSQL_SERVER=13-alpine
#PGSQL_SERVER=14
PGSQL_SERVER=14-alpine
#PGSQL_SERVER=latest
#PGSQL_SERVER=alpine
@ -386,17 +354,25 @@ PGSQL_SERVER=12.4
### IMPORTANT: Alpine based images might cause issues on Docker Toolbox or OSX
### https://github.com/docker/toolbox/issues/510
###
#
# Redis without arm64 support
#
#REDIS_SERVER=2.8
#REDIS_SERVER=3.0
#REDIS_SERVER=3.0-alpine
#
# Redis with arm64 support
#
#REDIS_SERVER=3.2
#REDIS_SERVER=3.2-alpine
#REDIS_SERVER=4.0
#REDIS_SERVER=4.0-alpine
#REDIS_SERVER=5.0
#REDIS_SERVER=5.0-alpine
REDIS_SERVER=6.0
#REDIS_SERVER=6.0
#REDIS_SERVER=6.0-alpine
#REDIS_SERVER=6.2
REDIS_SERVER=6.2-alpine
#REDIS_SERVER=latest
#REDIS_SERVER=alpine
@ -407,12 +383,18 @@ REDIS_SERVER=6.0
### IMPORTANT: Alpine based images might cause issues on Docker Toolbox or OSX
### https://github.com/docker/toolbox/issues/510
###
#
# Memcached without arm64 support
#
#MEMCD_SERVER=1.4
#MEMCD_SERVER=1.4-alpine
#
# Memcached with arm64 support
#
#MEMCD_SERVER=1.5
#MEMCD_SERVER=1.5-alpine
MEMCD_SERVER=1.6
#MEMCD_SERVER=1.6-alpine
#MEMCD_SERVER=1.6
MEMCD_SERVER=1.6-alpine
#MEMCD_SERVER=latest
#MEMCD_SERVER=alpine
@ -420,14 +402,23 @@ MEMCD_SERVER=1.6
###
### 1.7 Choose Mongo Server Image
###
### https://www.mongodb.com/evolved
###
#
# MongoDB without arm64 support
#
#MONGO_SERVER=2.8
#MONGO_SERVER=3.0
#MONGO_SERVER=3.2
#
# MongoDB with arm64 support
#
#MONGO_SERVER=3.4
#MONGO_SERVER=3.6
#MONGO_SERVER=4.0
#MONGO_SERVER=4.2
MONGO_SERVER=4.4
#MONGO_SERVER=4.4
MONGO_SERVER=5.0
#MONGO_SERVER=latest