Compare commits

...

188 Commits
0.135 ... 0.142

Author SHA1 Message Date
cytopia
70e3fc68ba Merge pull request #249 from devilbox/release-0.142
Release 0.142
2022-11-21 10:38:33 +01:00
cytopia
e6564db96d Disable Phalcon Devtools for PHP 7.4 as it breaks 2022-11-21 00:49:41 +01:00
cytopia
b90a13482d Fix postgreSQL install on PHP 7.0 2022-11-21 00:36:21 +01:00
cytopia
397175aec8 Fix postgreSQL install on PHP 5.6 2022-11-21 00:27:49 +01:00
cytopia
90f5abc2fd Ensure to pull correct base image prior build 2022-11-20 11:58:02 +01:00
cytopia
79f087e21a Fixed installation of NodeJS 2022-11-20 11:57:41 +01:00
cytopia
b08e7d5c02 Trigger Build 2022-11-20 11:10:28 +01:00
cytopia
0a71f838f2 Update CHANGELOG 2022-11-19 20:33:39 +01:00
cytopia
7e3db52406 Fix build of phalcon 2022-11-19 20:31:41 +01:00
cytopia
05d8edb2fe Fix Phalcon versions 2022-11-19 20:31:41 +01:00
cytopia
a671401bf2 Trigger build 2022-11-19 20:31:40 +01:00
cytopia
0d11c229d4 Empty-Commit 2022-11-19 20:31:40 +01:00
cytopia
20f87ad3ce Fix workflow syntax errors 2022-11-19 20:31:40 +01:00
cytopia
8a7ca18897 Merge pull request #246 from mrLexx/bugfix/drupalconsole
drupalconsole the old way of get DURL was wrong
2022-11-19 20:31:14 +01:00
cytopia
59b1197c75 Merge branch 'master' into bugfix/drupalconsole 2022-11-19 20:30:35 +01:00
cytopia
12e51113a6 Merge pull request #245 from mrLexx/bugfix/wkhtmltopdf
wkhtmltopdf new way of install (from wkhtmltopdf/packaging)
2022-11-19 20:28:11 +01:00
cytopia
40c2db6633 Merge branch 'master' into bugfix/wkhtmltopdf 2022-11-19 20:25:47 +01:00
cytopia
b4bfb84dcf Merge pull request #247 from mrLexx/bugfix/symfony-cli
symfony cli new way of install (from symfony-cli/symfony-cli)
2022-11-19 20:21:48 +01:00
Valeriy
b7a52ff1bd wkhtmltopdf new way of install (from wkhtmltopdf/packaging) 2022-10-05 17:14:33 +03:00
Valeriy
9df90b3500 symfony cli new way of install (from symfony-cli/symfony-cli) 2022-10-05 17:11:59 +03:00
Valeriy
0bdc196f43 drupalconsole the old way of get DURL was wrong 2022-10-05 17:09:51 +03:00
cytopia
14f9ebe3b8 Merge pull request #243 from devilbox/release-0.141
Release 0.141
2022-07-04 11:02:50 +02:00
cytopia
e0cb0c1f5d Adjust permission during build time instead of run-time 2022-07-03 12:41:21 +02:00
cytopia
4b9739a99d Fixed correct permission for /opt/nvm during startup 2022-07-01 15:29:40 +02:00
cytopia
9cbb2d3ddb Merge pull request #241 from devilbox/release-0.140
Release 0.140
2022-05-15 03:07:15 +02:00
cytopia
82f9bc2c86 Update CHANGELOG 2022-05-14 11:53:44 +02:00
cytopia
4ab9fff38b Ensure old Jessie repositories are trusted beyond EOL 2022-05-14 11:52:45 +02:00
cytopia
73734b4481 Merge pull request #239 from devilbox/release-0.139
Release 0.139
2022-04-05 23:15:34 +02:00
cytopia
3610e5f602 Fix PHP 5.6 and 7.0 work images 2022-04-05 13:17:52 +02:00
cytopia
a425b5fd82 Fix install errors 2022-04-05 01:47:49 +02:00
cytopia
e02e7781c7 Streamline amd64 images 2022-04-04 17:56:06 +02:00
cytopia
b42b7789df Use buildkit to build docker images 2022-04-03 15:56:09 +02:00
cytopia
70a19575bb Updated CHANGELOG 2022-04-03 15:55:28 +02:00
cytopia
e34a8a8792 Added postgresql command line client for PHP 7.1+ 2022-04-03 15:55:14 +02:00
cytopia
7ed35f19a9 Update changelog 2022-04-03 14:52:06 +02:00
cytopia
573d5fa2e2 Added mongodb command line client 2022-04-03 14:50:58 +02:00
cytopia
17b98f785c Separate nightly workflows 2022-04-03 14:26:08 +02:00
cytopia
46faa83583 Speed up xargs commands 2022-04-03 13:55:12 +02:00
cytopia
a23cdcdfd0 Merge pull request #237 from devilbox/release-0.138
WIP: Release 0.138
2022-04-02 04:08:18 +02:00
cytopia
b6883cf4be Speed up work builds 2022-04-01 16:16:27 +02:00
cytopia
8334b38869 Remove newline from input params 2022-04-01 02:42:59 +02:00
cytopia
ed40a191df Ensure GH actions trigger are described 2022-04-01 02:26:28 +02:00
cytopia
107b39f5a2 Adjust nightly schedule 2022-04-01 02:04:07 +02:00
cytopia
0b6187fe37 Added swoole module for PHP 8.1 2022-03-31 16:38:55 +02:00
cytopia
b9efb7b1c3 Fix composer install 2022-03-31 15:08:04 +02:00
cytopia
f9a5db2cee Rename workflows 2022-03-31 03:22:08 +02:00
cytopia
2471921a2a Fix composer install 2022-03-31 02:22:54 +02:00
cytopia
fd44d5a2ef Have COPY statements at the end of Dockerfiles 2022-03-31 01:33:32 +02:00
cytopia
e9852d26d8 Include all images 2022-03-30 15:10:30 +02:00
cytopia
465a0284c0 Always clean up after installation 2022-03-30 14:35:06 +02:00
cytopia
c906ff09e0 Cleanup work image 2022-03-30 14:05:51 +02:00
cytopia
ee7b55fc0f Use composer v1 for PHP 5.3 2022-03-30 13:59:08 +02:00
cytopia
cbc27ffffd Cleanup cache in worker images 2022-03-30 13:57:42 +02:00
cytopia
f5f22904fb Have tests run in parallel job 2022-03-30 13:52:42 +02:00
cytopia
b5467210e1 variablize nvm install directory 2022-03-30 13:40:37 +02:00
cytopia
b681725fa5 Ignore PR builds for myself 2022-03-30 13:21:36 +02:00
cytopia
1b02bd11fe Clean GitHub Actions 2022-03-30 13:09:30 +02:00
cytopia
476a1dee47 Fix composer version check 2022-03-30 12:46:07 +02:00
cytopia
8213301902 Remove manual yarn install 2022-03-30 12:07:58 +02:00
cytopia
ca544c19d2 Workflow deps 2022-03-30 11:18:02 +02:00
cytopia
180edab57f Use modern way to install node & yarn 2022-03-30 11:15:46 +02:00
cytopia
a2b50e69fd Allow for more parallel runs 2022-03-30 01:33:40 +02:00
cytopia
b51e640932 Distinguish between flavour and stage 2022-03-30 01:31:28 +02:00
cytopia
d8eccbf21a Use STAGE instead of FLAVOUR 2022-03-30 01:00:56 +02:00
cytopia
4176a5dd70 Fix booleans 2022-03-30 00:44:09 +02:00
cytopia
83cc953e55 Test few versions 2022-03-30 00:13:32 +02:00
cytopia
d0949e3fe9 Remove enabled flag 2022-03-30 00:11:48 +02:00
cytopia
ab8a549764 Update deps 2022-03-29 20:57:00 +02:00
cytopia
d26e6221c4 Outsource push action 2022-03-29 20:54:00 +02:00
cytopia
07267f20d0 Unify workflows 2022-03-29 20:11:39 +02:00
cytopia
0e4f51c82d Simplify install of vips 2022-03-29 02:16:40 +02:00
cytopia
c35c942bf8 Add support for arm64 2022-03-28 18:58:11 +02:00
cytopia
a02163b6c1 Merge pull request #236 from devilbox/ci-build-test-separation
Separate build and test jobs for CI
2022-03-28 16:56:08 +02:00
cytopia
35a3a9a486 Fix curl commands 2022-03-28 13:27:04 +02:00
cytopia
b72f81edd9 Only outsource test for mods due to long run-time 2022-03-28 13:23:16 +02:00
cytopia
a47265e482 Re-add all job dependencies 2022-03-28 13:03:45 +02:00
cytopia
880a6f17b8 Change Workflow dependency 2022-03-28 12:59:38 +02:00
cytopia
b224ecfdd7 Separate build and test jobs for CI 2022-03-27 20:58:01 +02:00
cytopia
c17e49b849 Merge pull request #235 from devilbox/workflow-dispatch
Allow workflows to be manually dispatched
2022-03-27 20:36:41 +02:00
cytopia
9a981de73f Allow workflows to be manually dispatched 2022-03-27 18:37:27 +02:00
cytopia
beeff54815 allow to manually trigger workflow 2022-03-27 04:33:13 +02:00
cytopia
6cb03a9890 Merge pull request #234 from devilbox/cytopia-patch-1
Allow to manually trigger workflow
2022-03-27 04:31:21 +02:00
cytopia
0dc4bd6959 Allow to manually trigger workflow 2022-03-27 04:29:46 +02:00
cytopia
a8c3f2c655 Allow to manually trigger workflow 2022-03-27 04:28:57 +02:00
cytopia
2655813ab8 Merge pull request #233 from devilbox/nightly-jobs
Separate nightly jobs
2022-03-27 01:14:27 +01:00
cytopia
0011b2e6ed Separate nightly jobs 2022-03-26 19:30:43 +01:00
cytopia
52c1a907f9 Merge pull request #232 from devilbox/release-0.137
Release 0.137
2022-03-26 15:41:05 +01:00
cytopia
e19d955965 Fix linting pipeline 2022-03-26 13:53:00 +01:00
cytopia
c0af9f91a6 Update CHANGELOG 2022-03-26 13:49:04 +01:00
cytopia
5f8551e742 Finalize new pipelines 2022-03-26 13:47:53 +01:00
cytopia
b774432a7a Re-enable tests 2022-03-26 13:47:07 +01:00
cytopia
e856fe1da4 Verify docker save 2022-03-26 01:32:07 +01:00
cytopia
1ed1c7eb81 Add test download 2022-03-26 01:16:44 +01:00
cytopia
756b6bc0fe Integrate retry for upload artifact 2022-03-26 00:54:48 +01:00
cytopia
4e9969ef75 Fix if condition 2022-03-25 21:57:31 +01:00
cytopia
1b67f7b02d Fix action name 2022-03-25 21:47:12 +01:00
cytopia
9fda4fd0a2 Use verifyer to upload artifacts 2022-03-25 21:43:19 +01:00
cytopia
4858303a1b Remove limited retries 2022-03-25 19:38:51 +01:00
cytopia
2e3115ef04 Use retry for artifact download 2022-03-25 19:31:19 +01:00
cytopia
8989b52602 Use shorter build names 2022-03-25 17:25:32 +01:00
cytopia
ee6b735f17 Fix test-case 2022-03-25 17:23:43 +01:00
cytopia
20b45a0b79 Remove non-existing matrix var 2022-03-25 16:49:52 +01:00
cytopia
687969b59b Separate PHP 5.2 2022-03-25 16:24:00 +01:00
cytopia
111c8a412f Enable all versions 2022-03-25 16:21:08 +01:00
cytopia
1d27f22e3f Organize workflow files 2022-03-25 16:17:50 +01:00
cytopia
4b8668623b Test with am64 only 2022-03-25 15:55:22 +01:00
cytopia
7b7a680e0b Test manifest 2022-03-25 15:52:31 +01:00
cytopia
49d9459df8 Ensure deploy tag is present 2022-03-25 15:36:59 +01:00
cytopia
efad9eaa48 Fix paths 2022-03-25 15:33:07 +01:00
cytopia
22231fc61c Fix deploy 2022-03-25 15:31:52 +01:00
cytopia
f971d8d4b8 Limit retries 2022-03-25 15:18:32 +01:00
cytopia
5498275047 Fix makefile 2022-03-25 15:15:51 +01:00
cytopia
a6f9bd8219 Test deploy 2022-03-25 15:04:43 +01:00
cytopia
ea47aa2ba5 Streamline build 2022-03-25 15:02:20 +01:00
cytopia
5094da0ae6 Build correct flavour 2022-03-25 14:16:24 +01:00
cytopia
38d4f0c222 Disable debug 2022-03-25 14:12:05 +01:00
cytopia
853962c4e9 Set outputs 2022-03-25 14:11:23 +01:00
cytopia
8d50798d54 Show more outputs 2022-03-25 14:04:32 +01:00
cytopia
b50a688add show debug 2022-03-25 14:01:09 +01:00
cytopia
99bd1d2cdb Add debug stage 2022-03-25 13:47:01 +01:00
cytopia
ac368b8725 Fix missing char 2022-03-25 13:40:34 +01:00
cytopia
c815e9040c Fix workflow 2022-03-25 13:39:06 +01:00
cytopia
61ccae6fc1 Fix workflow 2022-03-25 13:37:16 +01:00
cytopia
f7699f9c84 Fix aa build 2022-03-25 13:26:03 +01:00
cytopia
1cab69c0ab Add new workflow 2022-03-25 13:24:56 +01:00
cytopia
2158817a05 Fix Makefile 2022-03-25 13:24:09 +01:00
cytopia
29d34dcdb2 Go full build chain 2022-03-25 01:43:34 +01:00
cytopia
ff04507e50 Dont check if image exists before loading it from disk 2022-03-25 01:30:09 +01:00
cytopia
a448549b82 Make artifact name unique 2022-03-25 01:23:45 +01:00
cytopia
e808575164 Add generic flavour 2022-03-25 01:16:19 +01:00
cytopia
643e1a7478 Pick fast builder 2022-03-25 01:14:48 +01:00
cytopia
f3758cec56 Build mods 2022-03-25 01:13:18 +01:00
cytopia
ec5d6734fa Remove tests for now 2022-03-25 01:02:46 +01:00
cytopia
ab91e0794b Fix Makefile 2022-03-25 01:02:33 +01:00
cytopia
b6f926cf8a Fix tests 2022-03-25 00:53:26 +01:00
cytopia
1609e8ea61 Fix Makefile 2022-03-25 00:50:24 +01:00
cytopia
389e0bad20 Fix tests 2022-03-25 00:50:11 +01:00
cytopia
e48ceef4a6 Fix Makefile 2022-03-25 00:37:53 +01:00
cytopia
b659089ff9 Fix git cmd 2022-03-25 00:32:41 +01:00
cytopia
e8e92eceb7 Fix reusable workflow 2022-03-25 00:30:50 +01:00
cytopia
14c25cf670 Try out new workflow run 2022-03-25 00:29:07 +01:00
cytopia
8679dbee6a Give some additional startup time 2022-03-24 18:07:43 +01:00
cytopia
6ccf44b5a9 Fix README generation test 2022-03-24 17:37:02 +01:00
cytopia
2826053fc0 Probe for test email repeatedly 2022-03-24 17:31:05 +01:00
cytopia
1eb30660a6 CI: Limit retries on failure 2022-03-24 13:03:12 +01:00
cytopia
81ef92f91e Test: Better check to see if PHP-FPM is running 2022-03-24 13:02:49 +01:00
cytopia
663f716031 Removed Ansible due to arm64 issues 2022-03-23 21:32:01 +01:00
cytopia
ea52cc0969 Fix mysql CI test 2022-03-23 15:28:13 +01:00
cytopia
ee14a4d46e Fix base/ tests for quemu envs 2022-03-23 14:15:57 +01:00
cytopia
d894a2bff7 Fix work/ integration tests 2022-03-23 14:12:00 +01:00
cytopia
cdfca15613 Fix work/ tests 2022-03-23 13:36:21 +01:00
cytopia
d1061273b0 Fix prod/ tests 2022-03-23 13:27:02 +01:00
cytopia
1c31dbe3bf tests: update headlines 2022-03-23 13:26:28 +01:00
cytopia
7975126bdf tests: adjust container startup waiting time 2022-03-23 13:26:10 +01:00
cytopia
ffaee357fd Fix mods/ tests 2022-03-23 12:03:43 +01:00
cytopia
a0e7ae7131 Fix base/ tests 2022-03-23 11:51:19 +01:00
cytopia
7041e6ef0a Adjust CI tests 2022-03-23 11:26:50 +01:00
cytopia
176f48d063 Fix mhsendmail install 2022-03-23 00:27:00 +01:00
cytopia
dc15215156 Optimize images 2022-03-23 00:15:08 +01:00
cytopia
7693a4ea3f Removed mongodb cmd client and apt repositories due to arm64 issues 2022-03-22 23:20:19 +01:00
cytopia
4ac5a7ab10 Fix broken software on non-amd64 platforms 2022-03-22 23:17:53 +01:00
cytopia
2b60cd648d Removed postgres cmd client and apt repositories due to arm64 issues 2022-03-22 23:01:15 +01:00
cytopia
492d23b9f8 Removed homebrew due to arm64 issues 2022-03-22 22:58:08 +01:00
cytopia
b852001495 Enable arm64 tests in CI 2022-03-22 22:52:30 +01:00
cytopia
5eb8ce8187 Ensured CI tests are platform agnostic (amd64 vs arm64) 2022-03-22 22:50:11 +01:00
cytopia
d1fd0addaa Update nightly tag 2022-03-22 22:21:10 +01:00
cytopia
0aceceabda Fixed imklog: cannot open kernel log (/proc/kmsg): Operation not permitted. 2022-03-22 22:20:17 +01:00
cytopia
42933391b6 Test arm64 builds 2022-03-22 12:39:38 +01:00
cytopia
436babd549 Merge pull request #231 from devilbox/release-0.136
Release 0.136
2022-03-21 22:16:40 +01:00
cytopia
abfeef2e5c Remove testing files 2022-03-21 22:15:33 +01:00
cytopia
896c8f6c80 Fix soap module build for PHP 7.4 2022-03-21 19:15:03 +01:00
cytopia
7f71dd2493 Update PHP modules in README 2022-03-21 19:14:43 +01:00
cytopia
8318b43d2f Ensure to check against mhash module 2022-03-21 16:31:17 +01:00
cytopia
6a00f19e88 Fix snmp module for PHP 7.4 2022-03-21 16:22:06 +01:00
cytopia
e97261bc87 Update PHP modules in README 2022-03-21 16:18:48 +01:00
cytopia
06ac183215 Fix build for PHP 7.0 2022-03-21 15:39:26 +01:00
cytopia
0181f196f6 Update module section 2022-03-21 15:23:33 +01:00
cytopia
4e5da07e21 Make install of symfony cli platform independent 2022-03-21 15:21:24 +01:00
cytopia
6c6470c181 Fix build 2022-03-21 14:59:34 +01:00
cytopia
80f03e7512 Integrate new PHP-FPM images 2022-03-21 12:02:09 +01:00
cytopia
157945dada Fix syntax error 2022-03-18 18:41:13 +01:00
cytopia
116aa387fb Changed PHP 5.5 to Debian stretch 2022-03-18 13:35:03 +01:00
cytopia
e33041ca55 Switch PHP 5.5 base image to devilbox/php-fpm-5.5 for arm64 support 2022-03-18 12:59:38 +01:00
cytopia
2d489beb2c Test arm64 builds 2022-03-18 12:22:37 +01:00
cytopia
cb9437b4f3 Updated CHANGELOG 2022-03-18 12:22:22 +01:00
cytopia
9505770a8c Update nightly 2022-03-18 12:22:06 +01:00
cytopia
919a6887a6 Removed amqp on PHP 5.3 2022-03-18 12:21:37 +01:00
cytopia
b352de6939 Fixed install of mongodb-org-shell and mongodb-org-tools 2022-03-18 12:19:00 +01:00
91 changed files with 8979 additions and 4855 deletions

View File

@@ -0,0 +1,298 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: nightly
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Nightly: At 00:00 on Monday, Wednesday, and Friday
schedule:
- cron: '0 18 * * 1,3,5'
# Dispatch: allows for manual trigger via GH UI
workflow_dispatch:
jobs:
# -----------------------------------------------------------------------------------------------
# (1/8) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params-nightly_master.yml
# -----------------------------------------------------------------------------------------------
# (2/8) Configure Build and Deploy Matrices
# -----------------------------------------------------------------------------------------------
configure:
needs: [params]
uses: devilbox/github-actions/.github/workflows/docker-multistage-configure.yml@master
with:
enabled: true
can_deploy: true
versions: ${{ needs.params.outputs.versions }}
refs: ${{ needs.params.outputs.refs }}
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
# -----------------------------------------------------------------------------------------------
# (3/8) Build & Test base
# -----------------------------------------------------------------------------------------------
build-base:
needs:
- configure
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
pull_base_image: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: base
stage_prev: ''
test-base:
needs:
- configure
- build-base
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: base
# -----------------------------------------------------------------------------------------------
# (4/8) Build & Test mods
# -----------------------------------------------------------------------------------------------
build-mods:
needs:
- configure
- build-base
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: mods
stage_prev: base
test-mods:
needs:
- configure
- build-mods
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: mods
# -----------------------------------------------------------------------------------------------
# (5/8) Build & Test prod
# -----------------------------------------------------------------------------------------------
build-prod:
needs:
- configure
- build-mods
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: prod
stage_prev: mods
test-prod:
needs:
- configure
- build-prod
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: prod
# -----------------------------------------------------------------------------------------------
# (6/8) Build & Test work
# -----------------------------------------------------------------------------------------------
build-work:
needs:
- configure
- build-prod
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: work
stage_prev: prod
test-work:
needs:
- configure
- build-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: work
# -----------------------------------------------------------------------------------------------
# (7/8) Push images
# -----------------------------------------------------------------------------------------------
push-base:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: base
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
push-mods:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: mods
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
push-prod:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: prod
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
push-work:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: work
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
# -----------------------------------------------------------------------------------------------
# (8/8) Push Manifests
# -----------------------------------------------------------------------------------------------
manifest-base:
needs:
- configure
- push-base
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: base
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
manifest-mods:
needs:
- configure
- push-mods
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: mods
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
manifest-prod:
needs:
- configure
- push-prod
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: prod
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
manifest-work:
needs:
- configure
- push-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: work
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}

View File

@@ -0,0 +1,298 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: nightly
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Nightly: At 18:00 on Sunday, Tuesday, and Thursday
schedule:
- cron: '0 18 * * 0,2,4'
# Dispatch: allows for manual trigger via GH UI
workflow_dispatch:
jobs:
# -----------------------------------------------------------------------------------------------
# (1/8) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params-nightly_tags.yml
# -----------------------------------------------------------------------------------------------
# (2/8) Configure Build and Deploy Matrices
# -----------------------------------------------------------------------------------------------
configure:
needs: [params]
uses: devilbox/github-actions/.github/workflows/docker-multistage-configure.yml@master
with:
enabled: true
can_deploy: true
versions: ${{ needs.params.outputs.versions }}
refs: ${{ needs.params.outputs.refs }}
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
# -----------------------------------------------------------------------------------------------
# (3/8) Build & Test base
# -----------------------------------------------------------------------------------------------
build-base:
needs:
- configure
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
pull_base_image: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: base
stage_prev: ''
test-base:
needs:
- configure
- build-base
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: base
# -----------------------------------------------------------------------------------------------
# (4/8) Build & Test mods
# -----------------------------------------------------------------------------------------------
build-mods:
needs:
- configure
- build-base
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: mods
stage_prev: base
test-mods:
needs:
- configure
- build-mods
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: mods
# -----------------------------------------------------------------------------------------------
# (5/8) Build & Test prod
# -----------------------------------------------------------------------------------------------
build-prod:
needs:
- configure
- build-mods
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: prod
stage_prev: mods
test-prod:
needs:
- configure
- build-prod
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: prod
# -----------------------------------------------------------------------------------------------
# (6/8) Build & Test work
# -----------------------------------------------------------------------------------------------
build-work:
needs:
- configure
- build-prod
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: work
stage_prev: prod
test-work:
needs:
- configure
- build-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: work
# -----------------------------------------------------------------------------------------------
# (7/8) Push images
# -----------------------------------------------------------------------------------------------
push-base:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: base
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
push-mods:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: mods
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
push-prod:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: prod
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
push-work:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: work
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
# -----------------------------------------------------------------------------------------------
# (8/8) Push Manifests
# -----------------------------------------------------------------------------------------------
manifest-base:
needs:
- configure
- push-base
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: base
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
manifest-mods:
needs:
- configure
- push-mods
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: mods
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
manifest-prod:
needs:
- configure
- push-prod
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: prod
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
manifest-work:
needs:
- configure
- push-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: work
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}

298
.github/workflows/action.yml vendored Normal file
View File

@@ -0,0 +1,298 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: build
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Push or pull_request will be determined in jobs.configure.enabled
push:
pull_request:
# Dispatch: allows for manual trigger via GH UI
workflow_dispatch:
jobs:
# -----------------------------------------------------------------------------------------------
# (1/8) Determine parameter settings
# -----------------------------------------------------------------------------------------------
params:
uses: ./.github/workflows/params.yml
# -----------------------------------------------------------------------------------------------
# (2/8) Configure Build and Deploy Matrices
# -----------------------------------------------------------------------------------------------
configure:
needs: [params]
uses: devilbox/github-actions/.github/workflows/docker-multistage-configure.yml@master
with:
enabled: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && (github.event.pull_request.user.login != 'cytopia')) }}
can_deploy: ${{ (github.repository == 'devilbox/docker-php-fpm') && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/heads/release-')) }}
versions: ${{ needs.params.outputs.versions }}
refs: ${{ needs.params.outputs.refs }}
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
# -----------------------------------------------------------------------------------------------
# (3/8) Build & Test base
# -----------------------------------------------------------------------------------------------
build-base:
needs:
- configure
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
pull_base_image: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: base
stage_prev: ''
test-base:
needs:
- configure
- build-base
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: base
# -----------------------------------------------------------------------------------------------
# (4/8) Build & Test mods
# -----------------------------------------------------------------------------------------------
build-mods:
needs:
- configure
- build-base
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: mods
stage_prev: base
test-mods:
needs:
- configure
- build-mods
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: mods
# -----------------------------------------------------------------------------------------------
# (5/8) Build & Test prod
# -----------------------------------------------------------------------------------------------
build-prod:
needs:
- configure
- build-mods
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: prod
stage_prev: mods
test-prod:
needs:
- configure
- build-prod
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: prod
# -----------------------------------------------------------------------------------------------
# (6/8) Build & Test work
# -----------------------------------------------------------------------------------------------
build-work:
needs:
- configure
- build-prod
uses: devilbox/github-actions/.github/workflows/docker-multistage-build.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
run_tests: false
upload_artifact: true
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: work
stage_prev: prod
test-work:
needs:
- configure
- build-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-test.yml@master
with:
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: work
# -----------------------------------------------------------------------------------------------
# (7/8) Push images
# -----------------------------------------------------------------------------------------------
push-base:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: base
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
push-mods:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: mods
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
push-prod:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: prod
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
push-work:
needs:
- configure
- test-base
- test-prod
- test-mods
- test-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-image.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_build }}
artifact_prefix: ${{ needs.configure.outputs.artifact_prefix }}
stage: work
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
# -----------------------------------------------------------------------------------------------
# (8/8) Push Manifests
# -----------------------------------------------------------------------------------------------
manifest-base:
needs:
- configure
- push-base
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: base
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
manifest-mods:
needs:
- configure
- push-mods
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: mods
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
manifest-prod:
needs:
- configure
- push-prod
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: prod
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}
manifest-work:
needs:
- configure
- push-work
uses: devilbox/github-actions/.github/workflows/docker-multistage-push-manifest.yml@master
with:
can_deploy: ${{ needs.configure.outputs.can_login == 'true' && needs.configure.outputs.can_push == 'true' }}
has_refs: ${{ needs.configure.outputs.has_refs == 'true' }}
matrix: ${{ needs.configure.outputs.matrix_deploy }}
versions: ${{ needs.configure.outputs.versions }}
stage: work
secrets:
dockerhub_username: ${{ secrets.DOCKERHUB_USERNAME }}
dockerhub_password: ${{ secrets.DOCKERHUB_PASSWORD }}

View File

@@ -1,348 +0,0 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: build
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs on Pull Requests
pull_request:
# Runs on Push
push:
# -------------------------------------------------------------------------------------------------
# What to run
# -------------------------------------------------------------------------------------------------
jobs:
build:
name: "[ PHP-${{ matrix.version }} ]"
runs-on: ubuntu-latest
strategy:
fail-fast: False
matrix:
version:
- '5.2'
- '5.3'
- '5.4'
- '5.5'
- '5.6'
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
steps:
# ------------------------------------------------------------
# Setup repository
# ------------------------------------------------------------
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Set variables
id: vars
run: |
# Retrieve git info (tags, etc)
git fetch --all
# Branch, Tag or Commit
GIT_TYPE="$( \
curl -sS https://raw.githubusercontent.com/cytopia/git-tools/master/git-info.sh \
| sh \
| grep '^GIT_TYPE' \
| sed 's|.*=||g' \
)"
# Branch name, Tag name or Commit Hash
GIT_SLUG="$( \
curl -sS https://raw.githubusercontent.com/cytopia/git-tools/master/git-info.sh \
| sh \
| grep '^GIT_NAME' \
| sed 's|.*=||g' \
)"
# Docker Tag
if [ "${GIT_TYPE}" = "BRANCH" ] && [ "${GIT_SLUG}" = "master" ]; then
DOCKER_TAG_BASE="${VERSION}-base"
DOCKER_TAG_MODS="${VERSION}-mods"
DOCKER_TAG_PROD="${VERSION}-prod"
DOCKER_TAG_WORK="${VERSION}-work"
else
DOCKER_TAG_BASE="${VERSION}-base-${GIT_SLUG}"
DOCKER_TAG_MODS="${VERSION}-mods-${GIT_SLUG}"
DOCKER_TAG_PROD="${VERSION}-prod-${GIT_SLUG}"
DOCKER_TAG_WORK="${VERSION}-work-${GIT_SLUG}"
fi
# Output
echo "GIT_TYPE=${GIT_TYPE}"
echo "GIT_SLUG=${GIT_SLUG}"
echo "DOCKER_TAG_BASE=${DOCKER_TAG_BASE}"
echo "DOCKER_TAG_MODS=${DOCKER_TAG_MODS}"
echo "DOCKER_TAG_PROD=${DOCKER_TAG_PROD}"
echo "DOCKER_TAG_WORK=${DOCKER_TAG_WORK}"
# Export variable
# https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#environment-files
echo "GIT_TYPE=${GIT_TYPE}" >> ${GITHUB_ENV}
echo "GIT_SLUG=${GIT_SLUG}" >> ${GITHUB_ENV}
echo "DOCKER_TAG_BASE=${DOCKER_TAG_BASE}" >> ${GITHUB_ENV}
echo "DOCKER_TAG_MODS=${DOCKER_TAG_MODS}" >> ${GITHUB_ENV}
echo "DOCKER_TAG_PROD=${DOCKER_TAG_PROD}" >> ${GITHUB_ENV}
echo "DOCKER_TAG_WORK=${DOCKER_TAG_WORK}" >> ${GITHUB_ENV}
env:
VERSION: ${{ matrix.version }}
# ------------------------------------------------------------
# Base
# ------------------------------------------------------------
- name: Build Base
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;
}
retry make _pull-base-image VERSION=${VERSION}
retry make build-base VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
- name: Test Base
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;
}
retry make test-base VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# ------------------------------------------------------------
# Mods
# ------------------------------------------------------------
- name: Build Mods
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;
}
retry make build-mods VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
- name: Test Mods
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;
}
retry make test-mods VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# ------------------------------------------------------------
# Prod
# ------------------------------------------------------------
- name: Build Prod
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;
}
retry make build-prod VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
- name: Test Prod
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;
}
retry make test-prod VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# ------------------------------------------------------------
# Work
# ------------------------------------------------------------
- name: Build Work
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;
}
retry make build-work VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
- name: Test Work
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;
}
retry make test-work VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# ------------------------------------------------------------
# Diff README.md
# ------------------------------------------------------------
- name: Diff README.md
run: |
make gen-readme VERSION=${VERSION}
git diff --quiet || { echo "Build Changes"; git diff; git status; false; }
env:
VERSION: ${{ matrix.version }}
# ------------------------------------------------------------
# Deploy
# ------------------------------------------------------------
- name: Publish images (only repo owner)
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;
}
# Output
echo "GIT_TYPE=${GIT_TYPE}"
echo "GIT_SLUG=${GIT_SLUG}"
echo "DOCKER_TAG_BASE=${DOCKER_TAG_BASE}"
echo "DOCKER_TAG_MODS=${DOCKER_TAG_MODS}"
echo "DOCKER_TAG_PROD=${DOCKER_TAG_PROD}"
echo "DOCKER_TAG_WORK=${DOCKER_TAG_WORK}"
# Tag image
retry make tag OLD_TAG="${VERSION}-base" NEW_TAG="${DOCKER_TAG_BASE}"
retry make tag OLD_TAG="${VERSION}-mods" NEW_TAG="${DOCKER_TAG_MODS}"
retry make tag OLD_TAG="${VERSION}-prod" NEW_TAG="${DOCKER_TAG_PROD}"
retry make tag OLD_TAG="${VERSION}-work" NEW_TAG="${DOCKER_TAG_WORK}"
docker images
# Login
retry make login USERNAME=${{ secrets.DOCKERHUB_USERNAME }} PASSWORD=${{ secrets.DOCKERHUB_PASSWORD }}
# Push
retry make push TAG=${DOCKER_TAG_BASE}
retry make push TAG=${DOCKER_TAG_MODS}
retry make push TAG=${DOCKER_TAG_PROD}
retry make push TAG=${DOCKER_TAG_WORK}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# https://help.github.com/en/github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#functions
if: github.event.pull_request.base.repo.id == github.event.pull_request.head.repo.id
&& (
(github.event_name == 'schedule' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
||
(github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
||
(github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release-'))
)

View File

@@ -11,6 +11,7 @@ name: lint
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
on: on:
# Runs on Pull Requests # Runs on Pull Requests
workflow_dispatch:
pull_request: pull_request:
@@ -41,10 +42,6 @@ jobs:
run: | run: |
make lint-yaml make lint-yaml
- name: Lint workflow
run: |
make lint-workflow
- name: Lint Changelog - name: Lint Changelog
run: | run: |
make lint-changelog make lint-changelog

View File

@@ -1,351 +0,0 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: nightly
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
# Runs daily
schedule:
- cron: '0 0 * * *'
# -------------------------------------------------------------------------------------------------
# What to run
# -------------------------------------------------------------------------------------------------
jobs:
nightly:
name: "[ PHP-${{ matrix.version }} ] (ref: ${{ matrix.refs }})"
runs-on: ubuntu-latest
strategy:
fail-fast: False
matrix:
version:
- '5.2'
- '5.3'
- '5.4'
- '5.5'
- '5.6'
- '7.0'
- '7.1'
- '7.2'
- '7.3'
- '7.4'
- '8.0'
- '8.1'
- '8.2'
refs:
- 'master'
- '0.135'
steps:
# ------------------------------------------------------------
# Setup repository
# ------------------------------------------------------------
- name: Checkout repository
uses: actions/checkout@v2
with:
fetch-depth: 0
ref: ${{ matrix.refs }}
- name: Set variables
id: vars
run: |
# Retrieve git info (tags, etc)
git fetch --all
# Branch, Tag or Commit
GIT_TYPE="$( \
curl -sS https://raw.githubusercontent.com/cytopia/git-tools/master/git-info.sh \
| sh \
| grep '^GIT_TYPE' \
| sed 's|.*=||g' \
)"
# Branch name, Tag name or Commit Hash
GIT_SLUG="$( \
curl -sS https://raw.githubusercontent.com/cytopia/git-tools/master/git-info.sh \
| sh \
| grep '^GIT_NAME' \
| sed 's|.*=||g' \
)"
# Docker Tag
if [ "${GIT_TYPE}" = "BRANCH" ] && [ "${GIT_SLUG}" = "master" ]; then
DOCKER_TAG_BASE="${VERSION}-base"
DOCKER_TAG_MODS="${VERSION}-mods"
DOCKER_TAG_PROD="${VERSION}-prod"
DOCKER_TAG_WORK="${VERSION}-work"
else
DOCKER_TAG_BASE="${VERSION}-base-${GIT_SLUG}"
DOCKER_TAG_MODS="${VERSION}-mods-${GIT_SLUG}"
DOCKER_TAG_PROD="${VERSION}-prod-${GIT_SLUG}"
DOCKER_TAG_WORK="${VERSION}-work-${GIT_SLUG}"
fi
# Output
echo "GIT_TYPE=${GIT_TYPE}"
echo "GIT_SLUG=${GIT_SLUG}"
echo "DOCKER_TAG_BASE=${DOCKER_TAG_BASE}"
echo "DOCKER_TAG_MODS=${DOCKER_TAG_MODS}"
echo "DOCKER_TAG_PROD=${DOCKER_TAG_PROD}"
echo "DOCKER_TAG_WORK=${DOCKER_TAG_WORK}"
# Export variable
# https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-commands-for-github-actions#environment-files
echo "GIT_TYPE=${GIT_TYPE}" >> ${GITHUB_ENV}
echo "GIT_SLUG=${GIT_SLUG}" >> ${GITHUB_ENV}
echo "DOCKER_TAG_BASE=${DOCKER_TAG_BASE}" >> ${GITHUB_ENV}
echo "DOCKER_TAG_MODS=${DOCKER_TAG_MODS}" >> ${GITHUB_ENV}
echo "DOCKER_TAG_PROD=${DOCKER_TAG_PROD}" >> ${GITHUB_ENV}
echo "DOCKER_TAG_WORK=${DOCKER_TAG_WORK}" >> ${GITHUB_ENV}
env:
VERSION: ${{ matrix.version }}
# ------------------------------------------------------------
# Base
# ------------------------------------------------------------
- name: Build Base
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;
}
retry make _pull-base-image VERSION=${VERSION}
retry make build-base VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
- name: Test Base
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;
}
retry make test-base VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# ------------------------------------------------------------
# Mods
# ------------------------------------------------------------
- name: Build Mods
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;
}
retry make build-mods VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
- name: Test Mods
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;
}
retry make test-mods VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# ------------------------------------------------------------
# Prod
# ------------------------------------------------------------
- name: Build Prod
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;
}
retry make build-prod VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
- name: Test Prod
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;
}
retry make test-prod VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# ------------------------------------------------------------
# Work
# ------------------------------------------------------------
- name: Build Work
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;
}
retry make build-work VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
- name: Test Work
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;
}
retry make test-work VERSION=${VERSION}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# ------------------------------------------------------------
# Diff README.md
# ------------------------------------------------------------
- name: Diff README.md
run: |
make gen-readme VERSION=${VERSION}
git diff --quiet || { echo "Build Changes"; git diff; git status; false; }
env:
VERSION: ${{ matrix.version }}
# ------------------------------------------------------------
# Deploy
# ------------------------------------------------------------
- name: Publish images (only repo owner)
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;
}
# Output
echo "GIT_TYPE=${GIT_TYPE}"
echo "GIT_SLUG=${GIT_SLUG}"
echo "DOCKER_TAG_BASE=${DOCKER_TAG_BASE}"
echo "DOCKER_TAG_MODS=${DOCKER_TAG_MODS}"
echo "DOCKER_TAG_PROD=${DOCKER_TAG_PROD}"
echo "DOCKER_TAG_WORK=${DOCKER_TAG_WORK}"
# Tag image
retry make tag OLD_TAG="${VERSION}-base" NEW_TAG="${DOCKER_TAG_BASE}"
retry make tag OLD_TAG="${VERSION}-mods" NEW_TAG="${DOCKER_TAG_MODS}"
retry make tag OLD_TAG="${VERSION}-prod" NEW_TAG="${DOCKER_TAG_PROD}"
retry make tag OLD_TAG="${VERSION}-work" NEW_TAG="${DOCKER_TAG_WORK}"
docker images
# Login
retry make login USERNAME=${{ secrets.DOCKERHUB_USERNAME }} PASSWORD=${{ secrets.DOCKERHUB_PASSWORD }}
# Push
retry make push TAG=${DOCKER_TAG_BASE}
retry make push TAG=${DOCKER_TAG_MODS}
retry make push TAG=${DOCKER_TAG_PROD}
retry make push TAG=${DOCKER_TAG_WORK}
env:
VERSION: ${{ matrix.version }}
RETRIES: 20
PAUSE: 10
# https://help.github.com/en/github/automating-your-workflow-with-github-actions/contexts-and-expression-syntax-for-github-actions#functions
if: github.event.pull_request.base.repo.id == github.event.pull_request.head.repo.id
&& (
(github.event_name == 'schedule' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
||
(github.event_name == 'push' && (github.ref == 'refs/heads/master' || startsWith(github.ref, 'refs/tags/')))
||
(github.event_name == 'push' && startsWith(github.ref, 'refs/heads/release-'))
)

View File

@@ -0,0 +1,71 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
VERSIONS: >
[
{
"NAME": "PHP",
"VERSION": ["5.2"],
"FLAVOUR": ["default"],
"ARCH": ["linux/amd64"]
},
{
"NAME": "PHP",
"VERSION": ["5.3", "5.4", "5.5", "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"],
"FLAVOUR": ["default"],
"ARCH": ["linux/amd64", "linux/arm64"]
}
]
REFS: >
{
"DEFAULT_BRANCH": "master",
"BRANCHES": "master",
"NUM_LATEST_TAGS": 0
}
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
###
### OUTPUTS
###
outputs:
versions:
description: "JSON string for versions. Use via: fromJson(needs.params.versions)"
value: ${{ jobs.params.outputs.versions }}
refs:
description: "JSON string for refs. Use via: fromJson(needs.params.refs)"
value: ${{ jobs.params.outputs.refs }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
versions: ${{ steps.set-versions.outputs.versions }}
refs: ${{ steps.set-refs.outputs.refs }}
steps:
- name: "[Set-Output] jsonify VERSIONS"
id: set-versions
run: |
VERSIONS="$( echo '${{ env.VERSIONS }}' | jq -M -c )"
echo "versions=${VERSIONS}" >> $GITHUB_OUTPUT
- name: "[Set-Output] jsonify REFS"
id: set-refs
run: |
REFS="$( echo '${{ env.REFS }}' | jq -M -c )"
echo "refs=${REFS}" >> $GITHUB_OUTPUT

View File

@@ -0,0 +1,71 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
VERSIONS: >
[
{
"NAME": "PHP",
"VERSION": ["5.2"],
"FLAVOUR": ["default"],
"ARCH": ["linux/amd64"]
},
{
"NAME": "PHP",
"VERSION": ["5.3", "5.4", "5.5", "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"],
"FLAVOUR": ["default"],
"ARCH": ["linux/amd64", "linux/arm64"]
}
]
REFS: >
{
"DEFAULT_BRANCH": "master",
"BRANCHES": "",
"NUM_LATEST_TAGS": 1
}
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
###
### OUTPUTS
###
outputs:
versions:
description: "JSON string for versions. Use via: fromJson(needs.params.versions)"
value: ${{ jobs.params.outputs.versions }}
refs:
description: "JSON string for refs. Use via: fromJson(needs.params.refs)"
value: ${{ jobs.params.outputs.refs }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
versions: ${{ steps.set-versions.outputs.versions }}
refs: ${{ steps.set-refs.outputs.refs }}
steps:
- name: "[Set-Output] jsonify VERSIONS"
id: set-versions
run: |
VERSIONS="$( echo '${{ env.VERSIONS }}' | jq -M -c )"
echo "versions=${VERSIONS}" >> $GITHUB_OUTPUT
- name: "[Set-Output] jsonify REFS"
id: set-refs
run: |
REFS="$( echo '${{ env.REFS }}' | jq -M -c )"
echo "refs=${REFS}" >> $GITHUB_OUTPUT

71
.github/workflows/params.yml vendored Normal file
View File

@@ -0,0 +1,71 @@
---
# -------------------------------------------------------------------------------------------------
# Job Name
# -------------------------------------------------------------------------------------------------
name: params
# -------------------------------------------------------------------------------------------------
# Custom Variables
# -------------------------------------------------------------------------------------------------
env:
VERSIONS: >
[
{
"NAME": "PHP",
"VERSION": ["5.2"],
"FLAVOUR": ["default"],
"ARCH": ["linux/amd64"]
},
{
"NAME": "PHP",
"VERSION": ["5.3", "5.4", "5.5", "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2"],
"FLAVOUR": ["default"],
"ARCH": ["linux/amd64", "linux/arm64"]
}
]
REFS: >
{
"DEFAULT_BRANCH": "master",
"BRANCHES": "",
"NUM_LATEST_TAGS": 0
}
# -------------------------------------------------------------------------------------------------
# When to run
# -------------------------------------------------------------------------------------------------
on:
workflow_call:
###
### OUTPUTS
###
outputs:
versions:
description: "JSON string for versions. Use via: fromJson(needs.params.versions)"
value: ${{ jobs.params.outputs.versions }}
refs:
description: "JSON string for refs. Use via: fromJson(needs.params.refs)"
value: ${{ jobs.params.outputs.refs }}
jobs:
params:
runs-on: ubuntu-latest
outputs:
versions: ${{ steps.set-versions.outputs.versions }}
refs: ${{ steps.set-refs.outputs.refs }}
steps:
- name: "[Set-Output] jsonify VERSIONS"
id: set-versions
run: |
VERSIONS="$( echo '${{ env.VERSIONS }}' | jq -M -c )"
echo "versions=${VERSIONS}" >> $GITHUB_OUTPUT
- name: "[Set-Output] jsonify REFS"
id: set-refs
run: |
REFS="$( echo '${{ env.REFS }}' | jq -M -c )"
echo "refs=${REFS}" >> $GITHUB_OUTPUT

75
.gitignore vendored
View File

@@ -1,74 +1,3 @@
######################################
# CUSTOM
######################################
build/ansible/*.retry build/ansible/*.retry
Makefile.docker
Makefile.lint
######################################
# GENERIC
######################################
###### std ######
.lock
*.log
###### patches/diffs ######
*.patch
*.diff
*.orig
*.rej
######################################
# Operating Systems
######################################
###### OSX ######
._*
.DS*
.Spotlight-V100
.Trashes
###### Windows ######
Thumbs.db
ehthumbs.db
Desktop.ini
$RECYCLE.BIN/
*.lnk
######################################
# Editors
######################################
###### Sublime ######
*.sublime-workspace
*.sublime-project
###### Eclipse ######
.classpath
.buildpath
.project
.settings/
###### Netbeans ######
nbproject/private/
###### Intellij IDE ######
.idea/
.idea_modules/
###### vim ######
*.swp
*.swo
*~
###### TextMate ######
.tm_properties
*.tmproj
###### BBEdit ######
*.bbprojectd
*.bbproject

View File

@@ -4,6 +4,85 @@
## Unreleased ## Unreleased
## Release 0.142
### Fixed
- Fixed `phalcon` module
- Fixed `swoole` module
- Fixed installation of wkhtmltopdf [#245](https://github.com/devilbox/docker-php-fpm/pull/245)
- FIxed installation of drupalconsole [#246](https://github.com/devilbox/docker-php-fpm/pull/246)
- Fixed installation of symfoni cli [#247](https://github.com/devilbox/docker-php-fpm/pull/247)
- Fixed installation of NodeJS
- Fixed installation of PostgreSQL client for PHP 5.6
- Fixed installation of PostgreSQL client for PHP 7.0
- Disabled Phalcon Devtools for PHP 7.4 as it breaks
## Release 0.141
### Fixed
- Fixed correct permission for `/opt/nvm` during startup
## Release 0.140
### Changed
- Ensure apt Jessie repositories are trusted beyond EOL
## Release 0.139
#### Added
- (Re-)added mongodb command line client
- (Re-)added postgresql command line client
### Changed
- Speed up `xargs` commands by using multi-CPU
- Use buildkit for building
## Release 0.138
#### Added
- Added arm64 support
- Added `vips` module for PHP 8.0
- Added `vips` module for PHP 8.1
- Added `swoole` module for PHP 8.1
#### Changed
- Separated nightly jobs
## Release 0.137
#### Fixed
- Fixed imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
#### Changed
- Ensured CI tests are platform agnostic (amd64 vs arm64)
- Ensured CI pipeline will work for long-running jobs
#### Removed
- Removed homebrew due to arm64 issues
- Removed postgres cmd client and apt repositories due to arm64 issues
- Removed mongodb cmd client and apt repositories due to arm64 issues
- Removed Ansible due to arm64 issues
## Release 0.136
#### Fixed
- Fixed `mongodb-org-shell` and `mongodb-org-tools` install
#### Added
- Re-added `mongodb` for PHP 5.3
#### Changed
- Switch PHP 5.4 base image to [devilbox/php-fpm-5.4](https://github.com/devilbox/docker-php-fpm-5.4) for potential arm64 support
- Switch PHP 5.5 base image to [devilbox/php-fpm-5.5](https://github.com/devilbox/docker-php-fpm-5.5) for potential arm64 support
- Changed base image back to Debian Jessie for PHP 5.2 and PHP 5.3
## Release 0.135 ## Release 0.135
#### Fixed #### Fixed

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -1,5 +1,5 @@
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead. # Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead.
FROM php:5.4-fpm FROM devilbox/php-fpm-5.4
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
@@ -44,15 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& rm -f /etc/apt/sources.list \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& { \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
echo "deb http://ftp.debian.org/debian jessie main"; \
echo "#deb http://ftp.debian.org/debian jessie-updates main"; \
echo "deb http://security.debian.org/debian-security jessie/updates main"; \
} | tee /etc/apt/sources.list
RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -1,5 +1,5 @@
# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead. # Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead.
FROM php:5.5-fpm FROM devilbox/php-fpm-5.5
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
@@ -44,15 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& rm -f /etc/apt/sources.list \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& { \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
echo "deb http://ftp.debian.org/debian jessie main"; \
echo "#deb http://ftp.debian.org/debian jessie-updates main"; \
echo "deb http://security.debian.org/debian-security jessie/updates main"; \
} | tee /etc/apt/sources.list
RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -44,8 +44,8 @@ RUN set -eux \
### Upgrade (install ps) ### Upgrade (install ps)
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -6,9 +6,8 @@ FROM devilbox/php-fpm:5.2-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
libbz2-dev \ libbz2-dev \
@@ -26,12 +25,12 @@ RUN set -eux \
libmagic-dev \ libmagic-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libmysqlclient-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
libpq-dev \ libpq-dev \
libpspell-dev \ libpspell-dev \
librabbitmq-dev \ librabbitmq-dev \
librecode-dev \
libsasl2-dev \ libsasl2-dev \
libsnmp-dev \ libsnmp-dev \
libssl-dev \ libssl-dev \
@@ -43,8 +42,29 @@ RUN set -eux \
libxslt-dev \ libxslt-dev \
snmp \ snmp \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -134,22 +154,14 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: ftp --------------------
RUN set -eux \
# Installation: Generic
# Type: Built-in extension
# Custom: configure command
&& docker-php-ext-configure ftp --with-openssl-dir \
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
&& true
# -------------------- Installing PHP Extension: gd -------------------- # -------------------- Installing PHP Extension: gd --------------------
RUN set -eux \ RUN set -eux \
# Version specific pre-command # Version specific pre-command
&& ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \ && ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \ ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ \ ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ && \
mkdir /usr/include/freetype2/freetype && \
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
\ \
# Installation: Version specific # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
@@ -275,6 +287,25 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: mysql --------------------
RUN set -eux \
# Installation: Generic
# Type: Built-in extension
# Custom: configure command
&& docker-php-ext-configure mysql --with-mysql --with-mysql-sock --with-zlib-dir=/usr --with-libdir="/lib/$(dpkg-architecture --query DEB_BUILD_MULTIARCH)" \
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \
&& true
# -------------------- Installing PHP Extension: mysqli --------------------
RUN set -eux \
# Installation: Version specific
# Type: Built-in extension
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
&& true
# -------------------- Installing PHP Extension: oauth -------------------- # -------------------- Installing PHP Extension: oauth --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Version specific
@@ -323,6 +354,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: pdo_mysql --------------------
RUN set -eux \
# Installation: Version specific
# Type: Built-in extension
# Default: configure command
&& docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
&& true
# -------------------- Installing PHP Extension: pdo_pgsql -------------------- # -------------------- Installing PHP Extension: pdo_pgsql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -358,14 +400,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: recode --------------------
RUN set -eux \
# Installation: Generic
# Type: Built-in extension
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
&& true
# -------------------- Installing PHP Extension: redis -------------------- # -------------------- Installing PHP Extension: redis --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Version specific
@@ -395,6 +429,16 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: soap --------------------
RUN set -eux \
# Installation: Generic
# Type: Built-in extension
# Custom: configure command
&& docker-php-ext-configure soap --with-libxml-dir=/usr \
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
&& true
# -------------------- Installing PHP Extension: sockets -------------------- # -------------------- Installing PHP Extension: sockets --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -509,9 +553,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -538,6 +582,42 @@ LABEL "org.opencontainers.image.title"="PHP-FPM 5.2-mods"
LABEL "org.opencontainers.image.description"="PHP-FPM 5.2-mods" LABEL "org.opencontainers.image.description"="PHP-FPM 5.2-mods"
###
### Install runtime libraries
###
RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libevent-2.0-5 \
libfbclient2 \
libfreetype6 \
libicu52 \
libjpeg62-turbo \
libmagic1 \
libmcrypt4 \
libmemcachedutil2 \
libmysqlclient18 \
libpng12-0 \
libpq5 \
librabbitmq1 \
librecode0 \
libsybdb5 \
libtidy-0.99-0 \
libvpx1 \
libwebp5 \
libxpm4 \
libxslt1.1 \
snmp \
zlib1g \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates
### ###
### Copy artifacts from builder ### Copy artifacts from builder
### ###
@@ -550,40 +630,7 @@ COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
### ###
### Install ### Post Install executions
###
RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libfreetype6 \
libicu57 \
libjpeg62-turbo \
libmariadbclient18 \
libmcrypt4 \
libmemcachedutil2 \
libpng16-16 \
libpq5 \
librabbitmq4 \
librecode0 \
libsybdb5 \
libtidy5 \
libvpx4 \
libwebp6 \
libxpm4 \
libxslt1.1 \
snmp \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates
###
### Post Install
### ###
### ###
### Verify ### Verify
@@ -662,6 +709,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^memcache$' \ && php-fpm -m | grep -oiE '^memcache$' \
&& php -m | grep -oiE '^memcached$' \ && php -m | grep -oiE '^memcached$' \
&& php-fpm -m | grep -oiE '^memcached$' \ && php-fpm -m | grep -oiE '^memcached$' \
&& php -m | grep -oiE '^mhash$' \
&& php-fpm -m | grep -oiE '^mhash$' \
&& php -m | grep -oiE '^mongo$' \ && php -m | grep -oiE '^mongo$' \
&& php-fpm -m | grep -oiE '^mongo$' \ && php-fpm -m | grep -oiE '^mongo$' \
&& php -m | grep -oiE '^mysql$' \ && php -m | grep -oiE '^mysql$' \

View File

@@ -6,14 +6,14 @@ FROM devilbox/php-fpm:5.3-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libenchant-dev \ libenchant-dev \
@@ -28,6 +28,7 @@ RUN set -eux \
libldap2-dev \ libldap2-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libmysqlclient-dev \
libnghttp2-dev \ libnghttp2-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
@@ -48,8 +49,29 @@ RUN set -eux \
snmp \ snmp \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -136,20 +158,15 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: ftp --------------------
RUN set -eux \
# Installation: Generic
# Type: Built-in extension
# Custom: configure command
&& docker-php-ext-configure ftp --with-openssl-dir \
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ftp \
&& true
# -------------------- Installing PHP Extension: gd -------------------- # -------------------- Installing PHP Extension: gd --------------------
RUN set -eux \ RUN set -eux \
# Version specific pre-command # Version specific pre-command
&& ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ \ && ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ && \
mkdir /usr/include/freetype2/freetype && \
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
\
# Installation: Version specific # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
@@ -229,14 +246,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: mbstring --------------------
RUN set -eux \
# Installation: Generic
# Type: Built-in extension
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mbstring \
&& true
# -------------------- Installing PHP Extension: mcrypt -------------------- # -------------------- Installing PHP Extension: mcrypt --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Version specific
@@ -290,10 +299,32 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: mysqli -------------------- # -------------------- Installing PHP Extension: mongodb --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install mongodb-0.6.3 \
# Enabling
&& docker-php-ext-enable mongodb \
&& true
# -------------------- Installing PHP Extension: mysql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command
&& docker-php-ext-configure mysql --with-mysql --with-mysql-sock --with-zlib-dir=/usr --with-libdir="/lib/$(dpkg-architecture --query DEB_BUILD_MULTIARCH)" \
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \
&& true
# -------------------- Installing PHP Extension: mysqli --------------------
RUN set -eux \
# Installation: Version specific
# Type: Built-in extension
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
&& true && true
@@ -317,9 +348,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -387,10 +418,11 @@ RUN set -eux \
# -------------------- Installing PHP Extension: pdo_mysql -------------------- # -------------------- Installing PHP Extension: pdo_mysql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Default: configure command
&& docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \ && docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
&& true && true
@@ -492,17 +524,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-1.9.23 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# -------------------- Installing PHP Extension: sysvmsg -------------------- # -------------------- Installing PHP Extension: sysvmsg --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -619,6 +640,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-1.9.23 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -631,9 +663,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -660,6 +692,48 @@ LABEL "org.opencontainers.image.title"="PHP-FPM 5.3-mods"
LABEL "org.opencontainers.image.description"="PHP-FPM 5.3-mods" LABEL "org.opencontainers.image.description"="PHP-FPM 5.3-mods"
###
### Install runtime libraries
###
RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
libaio1 \
libaspell15 \
libc-ares2 \
libc-client2007e \
libenchant1c2a \
libevent-2.0-5 \
libfbclient2 \
libfreetype6 \
libicu52 \
libjpeg62-turbo \
libmcrypt4 \
libmemcachedutil2 \
libmysqlclient18 \
libnghttp2-5 \
libpng12-0 \
libpq5 \
librabbitmq1 \
librdkafka1 \
librecode0 \
libssl1.0.0 \
libsybdb5 \
libtidy-0.99-0 \
libvpx1 \
libwebp5 \
libxpm4 \
libxslt1.1 \
libyaml-0-2 \
snmp \
uuid \
zlib1g \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates
### ###
### Copy artifacts from builder ### Copy artifacts from builder
### ###
@@ -672,45 +746,7 @@ COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
### ###
### Install ### Post Install executions
###
RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
libaio1 \
libaspell15 \
libc-client2007e \
libenchant1c2a \
libfbclient2 \
libfreetype6 \
libicu57 \
libjpeg62-turbo \
libmariadbclient18 \
libmcrypt4 \
libmemcachedutil2 \
libnghttp2-14 \
libpng16-16 \
libpq5 \
librabbitmq4 \
librdkafka1 \
librecode0 \
libsybdb5 \
libtidy5 \
libvpx4 \
libwebp6 \
libxpm4 \
libxslt1.1 \
libyaml-0-2 \
snmp \
uuid \
ca-certificates \
&& rm -rf /var/lib/apt/lists/* \
\
&& update-ca-certificates
###
### Post Install
### ###
RUN set -eux \ RUN set -eux \
# ---------- oci8 ---------- # ---------- oci8 ----------
@@ -803,8 +839,12 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^memcache$' \ && php-fpm -m | grep -oiE '^memcache$' \
&& php -m | grep -oiE '^memcached$' \ && php -m | grep -oiE '^memcached$' \
&& php-fpm -m | grep -oiE '^memcached$' \ && php-fpm -m | grep -oiE '^memcached$' \
&& php -m | grep -oiE '^mhash$' \
&& php-fpm -m | grep -oiE '^mhash$' \
&& php -m | grep -oiE '^mongo$' \ && php -m | grep -oiE '^mongo$' \
&& php-fpm -m | grep -oiE '^mongo$' \ && php-fpm -m | grep -oiE '^mongo$' \
&& php -m | grep -oiE '^mongodb$' \
&& php-fpm -m | grep -oiE '^mongodb$' \
&& php -m | grep -oiE '^mysql$' \ && php -m | grep -oiE '^mysql$' \
&& php-fpm -m | grep -oiE '^mysql$' \ && php-fpm -m | grep -oiE '^mysql$' \
&& php -m | grep -oiE '^mysqli$' \ && php -m | grep -oiE '^mysqli$' \
@@ -868,8 +908,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^sockets$' \ && php-fpm -m | grep -oiE '^sockets$' \
&& php -m | grep -oiE '^spl$' \ && php -m | grep -oiE '^spl$' \
&& php-fpm -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -902,6 +940,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,14 +6,14 @@ FROM devilbox/php-fpm:5.4-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libenchant-dev \ libenchant-dev \
@@ -28,6 +28,7 @@ RUN set -eux \
libldap2-dev \ libldap2-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libmysqlclient-dev \
libnghttp2-dev \ libnghttp2-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
@@ -40,6 +41,7 @@ RUN set -eux \
libssl-dev \ libssl-dev \
libtidy-dev \ libtidy-dev \
libvpx-dev \ libvpx-dev \
libwebp-dev \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -47,8 +49,29 @@ RUN set -eux \
snmp \ snmp \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -91,7 +114,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install bcmath \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \
&& true && true
@@ -99,7 +122,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install bz2 \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \
&& true && true
@@ -107,7 +130,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install calendar \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \
&& true && true
@@ -115,7 +138,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install dba \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \
&& true && true
@@ -123,7 +146,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install enchant \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \
&& true && true
@@ -131,30 +154,25 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install exif \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \
&& true
# -------------------- Installing PHP Extension: ftp --------------------
RUN set -eux \
# Installation: Generic
# Type: Built-in extension
# Custom: configure command
&& docker-php-ext-configure ftp --with-openssl-dir \
&& docker-php-ext-install ftp \
&& true && true
# -------------------- Installing PHP Extension: gd -------------------- # -------------------- Installing PHP Extension: gd --------------------
RUN set -eux \ RUN set -eux \
# Version specific pre-command # Version specific pre-command
&& ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ \ && ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ && \
mkdir /usr/include/freetype2/freetype && \
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
\
# Installation: Version specific # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
&& docker-php-ext-configure gd --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf \ && docker-php-ext-configure gd --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf \
# Installation # Installation
&& docker-php-ext-install gd \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \
&& true && true
@@ -162,7 +180,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install gettext \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \
&& true && true
@@ -172,7 +190,7 @@ RUN set -eux \
&& ln /usr/include/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/gmp.h /usr/include/ \ && ln /usr/include/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/gmp.h /usr/include/ \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install gmp \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \
&& true && true
@@ -195,7 +213,7 @@ RUN set -eux \
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
&& docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \ && docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \
&& docker-php-ext-install imap \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \
&& true && true
@@ -203,7 +221,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install interbase \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \
&& true && true
@@ -212,7 +230,7 @@ RUN set -eux \
# Installation: Version specific # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Installation # Installation
&& docker-php-ext-install intl \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \
&& true && true
@@ -224,15 +242,7 @@ RUN set -eux \
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
&& docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \ && docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \
&& docker-php-ext-install ldap \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \
&& true
# -------------------- Installing PHP Extension: mbstring --------------------
RUN set -eux \
# Installation: Generic
# Type: Built-in extension
&& docker-php-ext-install mbstring \
&& true && true
@@ -241,7 +251,7 @@ RUN set -eux \
# Installation: Version specific # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Installation # Installation
&& docker-php-ext-install mcrypt \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mcrypt \
&& true && true
@@ -302,18 +312,20 @@ RUN set -eux \
# -------------------- Installing PHP Extension: mysql -------------------- # -------------------- Installing PHP Extension: mysql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
# Installation # Custom: configure command
&& docker-php-ext-install mysql \ && docker-php-ext-configure mysql --with-mysql --with-mysql-sock --with-zlib-dir=/usr --with-libdir="/lib/$(dpkg-architecture --query DEB_BUILD_MULTIARCH)" \
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \
&& true && true
# -------------------- Installing PHP Extension: mysqli -------------------- # -------------------- Installing PHP Extension: mysqli --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install mysqli \ # Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
&& true && true
@@ -336,9 +348,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -357,7 +369,7 @@ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architec
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
&& docker-php-ext-configure oci8 --with-oci8=instantclient,/usr/lib/oracle/${ORACLE_VERSION_MAJOR}/client64/lib/,${ORACLE_VERSION_MAJOR} \ && docker-php-ext-configure oci8 --with-oci8=instantclient,/usr/lib/oracle/${ORACLE_VERSION_MAJOR}/client64/lib/,${ORACLE_VERSION_MAJOR} \
&& docker-php-ext-install oci8 \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) oci8 \
# Generic post-command # Generic post-command
&& ORACLE_HREF="$( curl -sS https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/ | tac | tac | grep -Eo 'href="getPackage/oracle-instantclient.+basiclite.+rpm"' | tail -1 )" \ && ORACLE_HREF="$( curl -sS https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/ | tac | tac | grep -Eo 'href="getPackage/oracle-instantclient.+basiclite.+rpm"' | tail -1 )" \
&& ORACLE_VERSION_MAJOR="$( echo "${ORACLE_HREF}" | grep -Eo 'instantclient[.0-9]+' | sed 's/instantclient//g' )" \ && ORACLE_VERSION_MAJOR="$( echo "${ORACLE_HREF}" | grep -Eo 'instantclient[.0-9]+' | sed 's/instantclient//g' )" \
@@ -382,7 +394,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install pcntl \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \
&& true && true
@@ -392,7 +404,7 @@ RUN set -eux \
&& ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libsybdb.* /usr/lib/ \ && ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libsybdb.* /usr/lib/ \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install pdo_dblib \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \
&& true && true
@@ -400,17 +412,18 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install pdo_firebird \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \
&& true && true
# -------------------- Installing PHP Extension: pdo_mysql -------------------- # -------------------- Installing PHP Extension: pdo_mysql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Default: configure command
&& docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \ && docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
&& docker-php-ext-install pdo_mysql \ # Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
&& true && true
@@ -418,7 +431,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install pdo_pgsql \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \
&& true && true
@@ -426,7 +439,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install pgsql \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \
&& true && true
@@ -460,7 +473,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install pspell \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \
&& true && true
@@ -490,7 +503,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install shmop \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \
&& true && true
@@ -500,7 +513,7 @@ RUN set -eux \
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
&& docker-php-ext-configure snmp --with-openssl-dir \ && docker-php-ext-configure snmp --with-openssl-dir \
&& docker-php-ext-install snmp \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
&& true && true
@@ -510,7 +523,7 @@ RUN set -eux \
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
&& docker-php-ext-configure soap --with-libxml-dir=/usr \ && docker-php-ext-configure soap --with-libxml-dir=/usr \
&& docker-php-ext-install soap \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
&& true && true
@@ -518,18 +531,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install sockets \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \
&& true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-1.9.23 \
# Enabling
&& docker-php-ext-enable swoole \
&& true && true
@@ -537,7 +539,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install sysvmsg \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \
&& true && true
@@ -545,7 +547,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install sysvsem \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \
&& true && true
@@ -553,7 +555,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install sysvshm \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \
&& true && true
@@ -562,7 +564,7 @@ RUN set -eux \
# Installation: Version specific # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Installation # Installation
&& docker-php-ext-install tidy \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \
&& true && true
@@ -594,7 +596,7 @@ RUN set -eux \
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
&& docker-php-ext-configure wddx --with-libxml-dir=/usr \ && docker-php-ext-configure wddx --with-libxml-dir=/usr \
&& docker-php-ext-install wddx \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \
&& true && true
@@ -615,7 +617,7 @@ RUN set -eux \
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
&& docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \ && docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \
&& docker-php-ext-install xmlrpc \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \
&& true && true
@@ -623,7 +625,7 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
&& docker-php-ext-install xsl \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \
&& true && true
@@ -645,7 +647,18 @@ RUN set -eux \
# Custom: configure command # Custom: configure command
&& docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr \ && docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr \
# Installation # Installation
&& docker-php-ext-install zip \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \
&& true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-1.9.23 \
# Enabling
&& docker-php-ext-enable swoole \
&& true && true
@@ -661,9 +674,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -691,26 +704,17 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.4-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libenchant1c2a \ libenchant1c2a \
libevent-2.0-5 \
libfbclient2 \ libfbclient2 \
libfreetype6 \ libfreetype6 \
libicu52 \ libicu52 \
@@ -724,14 +728,17 @@ RUN set -eux \
librabbitmq1 \ librabbitmq1 \
librdkafka1 \ librdkafka1 \
librecode0 \ librecode0 \
libssl1.0.0 \
libsybdb5 \ libsybdb5 \
libtidy-0.99-0 \ libtidy-0.99-0 \
libvpx1 \ libvpx1 \
libwebp5 \
libxpm4 \ libxpm4 \
libxslt1.1 \ libxslt1.1 \
libyaml-0-2 \ libyaml-0-2 \
snmp \ snmp \
uuid \ uuid \
zlib1g \
ca-certificates \ ca-certificates \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
@@ -739,7 +746,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- oci8 ---------- # ---------- oci8 ----------
@@ -832,6 +850,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^memcache$' \ && php-fpm -m | grep -oiE '^memcache$' \
&& php -m | grep -oiE '^memcached$' \ && php -m | grep -oiE '^memcached$' \
&& php-fpm -m | grep -oiE '^memcached$' \ && php-fpm -m | grep -oiE '^memcached$' \
&& php -m | grep -oiE '^mhash$' \
&& php-fpm -m | grep -oiE '^mhash$' \
&& php -m | grep -oiE '^mongo$' \ && php -m | grep -oiE '^mongo$' \
&& php-fpm -m | grep -oiE '^mongo$' \ && php-fpm -m | grep -oiE '^mongo$' \
&& php -m | grep -oiE '^mongodb$' \ && php -m | grep -oiE '^mongodb$' \
@@ -901,8 +921,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^sockets$' \ && php-fpm -m | grep -oiE '^sockets$' \
&& php -m | grep -oiE '^spl$' \ && php -m | grep -oiE '^spl$' \
&& php-fpm -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -935,6 +953,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,15 +6,15 @@ FROM devilbox/php-fpm:5.5-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
ghostscript \ ghostscript \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libenchant-dev \ libenchant-dev \
@@ -30,6 +30,7 @@ RUN set -eux \
libmagickwand-dev \ libmagickwand-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libmysqlclient-dev \
libnghttp2-dev \ libnghttp2-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
@@ -37,13 +38,12 @@ RUN set -eux \
libpspell-dev \ libpspell-dev \
librabbitmq-dev \ librabbitmq-dev \
librdkafka-dev \ librdkafka-dev \
librecode-dev \
libsasl2-dev \ libsasl2-dev \
libsnmp-dev \ libsnmp-dev \
libssl-dev \ libssl-dev \
libtidy-dev \ libtidy-dev \
libvpx-dev \ libvpx-dev \
libwebp5 \ libwebp-dev \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -51,8 +51,29 @@ RUN set -eux \
snmp \ snmp \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -75,7 +96,7 @@ RUN set -eux \
# Type: Custom extension # Type: Custom extension
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \ && curl -sS --fail -k https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \ && tar xvfz ioncube.tar.gz \
&& cd ioncube \ && cd ioncube \
&& cp "ioncube_loader_lin_5.5.so" "${EXTENSION_DIR}/ioncube.so" \ && cp "ioncube_loader_lin_5.5.so" "${EXTENSION_DIR}/ioncube.so" \
@@ -159,7 +180,12 @@ RUN set -eux \
# -------------------- Installing PHP Extension: gd -------------------- # -------------------- Installing PHP Extension: gd --------------------
RUN set -eux \ RUN set -eux \
# Version specific pre-command # Version specific pre-command
&& ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ \ && ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ && \
mkdir /usr/include/freetype2/freetype && \
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
\
# Installation: Version specific # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Custom: configure command
@@ -327,17 +353,19 @@ RUN set -eux \
# -------------------- Installing PHP Extension: mysql -------------------- # -------------------- Installing PHP Extension: mysql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Generic
# Type: Built-in extension # Type: Built-in extension
# Installation # Custom: configure command
&& docker-php-ext-configure mysql --with-mysql --with-mysql-sock --with-zlib-dir=/usr --with-libdir="/lib/$(dpkg-architecture --query DEB_BUILD_MULTIARCH)" \
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \
&& true && true
# -------------------- Installing PHP Extension: mysqli -------------------- # -------------------- Installing PHP Extension: mysqli --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
&& true && true
@@ -361,9 +389,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -428,10 +456,11 @@ RUN set -eux \
# -------------------- Installing PHP Extension: pdo_mysql -------------------- # -------------------- Installing PHP Extension: pdo_mysql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Default: configure command
&& docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \ && docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
&& true && true
@@ -486,14 +515,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: recode --------------------
RUN set -eux \
# Installation: Generic
# Type: Built-in extension
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \
&& true
# -------------------- Installing PHP Extension: redis -------------------- # -------------------- Installing PHP Extension: redis --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Version specific
@@ -552,17 +573,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-1.9.23 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# -------------------- Installing PHP Extension: sysvmsg -------------------- # -------------------- Installing PHP Extension: sysvmsg --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -679,6 +689,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-1.9.23 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -691,9 +712,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -721,27 +742,18 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.5-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ghostscript \ ghostscript \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libenchant1c2a \ libenchant1c2a \
libevent-2.0-5 \
libfbclient2 \ libfbclient2 \
libfreetype6 \ libfreetype6 \
libicu52 \ libicu52 \
@@ -756,6 +768,7 @@ RUN set -eux \
librabbitmq1 \ librabbitmq1 \
librdkafka1 \ librdkafka1 \
librecode0 \ librecode0 \
libssl1.0.0 \
libsybdb5 \ libsybdb5 \
libtidy-0.99-0 \ libtidy-0.99-0 \
libvpx1 \ libvpx1 \
@@ -765,6 +778,7 @@ RUN set -eux \
libyaml-0-2 \ libyaml-0-2 \
snmp \ snmp \
uuid \ uuid \
zlib1g \
ca-certificates \ ca-certificates \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
@@ -772,7 +786,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------
@@ -878,6 +903,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^memcache$' \ && php-fpm -m | grep -oiE '^memcache$' \
&& php -m | grep -oiE '^memcached$' \ && php -m | grep -oiE '^memcached$' \
&& php-fpm -m | grep -oiE '^memcached$' \ && php-fpm -m | grep -oiE '^memcached$' \
&& php -m | grep -oiE '^mhash$' \
&& php-fpm -m | grep -oiE '^mhash$' \
&& php -m | grep -oiE '^mongo$' \ && php -m | grep -oiE '^mongo$' \
&& php-fpm -m | grep -oiE '^mongo$' \ && php-fpm -m | grep -oiE '^mongo$' \
&& php -m | grep -oiE '^mongodb$' \ && php -m | grep -oiE '^mongodb$' \
@@ -947,8 +974,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^sockets$' \ && php-fpm -m | grep -oiE '^sockets$' \
&& php -m | grep -oiE '^spl$' \ && php -m | grep -oiE '^spl$' \
&& php-fpm -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -981,6 +1006,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,15 +6,15 @@ FROM devilbox/php-fpm:5.6-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
ghostscript \ ghostscript \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libenchant-dev \ libenchant-dev \
@@ -28,6 +28,7 @@ RUN set -eux \
libkrb5-dev \ libkrb5-dev \
libldap2-dev \ libldap2-dev \
libmagickwand-dev \ libmagickwand-dev \
libmariadbclient-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libnghttp2-dev \ libnghttp2-dev \
@@ -44,7 +45,6 @@ RUN set -eux \
libtidy-dev \ libtidy-dev \
libvpx-dev \ libvpx-dev \
libwebp-dev \ libwebp-dev \
libwebp6 \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -53,8 +53,29 @@ RUN set -eux \
snmp \ snmp \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -77,7 +98,7 @@ RUN set -eux \
# Type: Custom extension # Type: Custom extension
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \ && curl -sS --fail -k https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \ && tar xvfz ioncube.tar.gz \
&& cd ioncube \ && cd ioncube \
&& cp "ioncube_loader_lin_5.6.so" "${EXTENSION_DIR}/ioncube.so" \ && cp "ioncube_loader_lin_5.6.so" "${EXTENSION_DIR}/ioncube.so" \
@@ -343,16 +364,20 @@ RUN set -eux \
# -------------------- Installing PHP Extension: mysql -------------------- # -------------------- Installing PHP Extension: mysql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Default: configure command
&& docker-php-ext-configure mysql --with-mysql --with-mysql-sock --with-zlib-dir=/usr --with-libdir="/lib/$(dpkg-architecture --query DEB_BUILD_MULTIARCH)" \
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysql \
&& true && true
# -------------------- Installing PHP Extension: mysqli -------------------- # -------------------- Installing PHP Extension: mysqli --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
&& true && true
@@ -376,9 +401,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -443,10 +468,11 @@ RUN set -eux \
# -------------------- Installing PHP Extension: pdo_mysql -------------------- # -------------------- Installing PHP Extension: pdo_mysql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Default: configure command
&& docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \ && docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
&& true && true
@@ -567,17 +593,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-1.9.23 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# -------------------- Installing PHP Extension: sysvmsg -------------------- # -------------------- Installing PHP Extension: sysvmsg --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -693,6 +708,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-1.9.23 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -705,9 +731,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -735,27 +761,18 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.6-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ghostscript \ ghostscript \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libenchant1c2a \ libenchant1c2a \
libevent-2.0-5 \
libfbclient2 \ libfbclient2 \
libfreetype6 \ libfreetype6 \
libicu57 \ libicu57 \
@@ -787,7 +804,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------
@@ -893,6 +921,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^memcache$' \ && php-fpm -m | grep -oiE '^memcache$' \
&& php -m | grep -oiE '^memcached$' \ && php -m | grep -oiE '^memcached$' \
&& php-fpm -m | grep -oiE '^memcached$' \ && php-fpm -m | grep -oiE '^memcached$' \
&& php -m | grep -oiE '^mhash$' \
&& php-fpm -m | grep -oiE '^mhash$' \
&& php -m | grep -oiE '^mongo$' \ && php -m | grep -oiE '^mongo$' \
&& php-fpm -m | grep -oiE '^mongo$' \ && php-fpm -m | grep -oiE '^mongo$' \
&& php -m | grep -oiE '^mongodb$' \ && php -m | grep -oiE '^mongodb$' \
@@ -962,8 +992,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^sockets$' \ && php-fpm -m | grep -oiE '^sockets$' \
&& php -m | grep -oiE '^spl$' \ && php -m | grep -oiE '^spl$' \
&& php-fpm -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -996,6 +1024,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,61 +6,48 @@ FROM devilbox/php-fpm:7.0-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
fftw-dev \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
ghostscript \ ghostscript \
gobject-introspection \
gtk-doc-tools \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libenchant-dev \ libenchant-dev \
libevent-dev \ libevent-dev \
libexif-dev \
libexpat1-dev \
libfbclient2 \ libfbclient2 \
libfftw3-dev \
libfreetype6-dev \ libfreetype6-dev \
libgif-dev \
libglib2.0-dev \
libgmp-dev \ libgmp-dev \
libib-util \ libib-util \
libicu-dev \ libicu-dev \
libjpeg-dev \ libjpeg-dev \
libkrb5-dev \ libkrb5-dev \
libldap2-dev \ libldap2-dev \
libmagick++-dev \
libmagickcore-6.q16-dev \
libmagickwand-dev \ libmagickwand-dev \
libmariadbclient-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libnghttp2-dev \ libnghttp2-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
libpoppler-glib-dev \
libpq-dev \ libpq-dev \
libpspell-dev \ libpspell-dev \
librabbitmq-dev \ librabbitmq-dev \
librdkafka-dev \ librdkafka-dev \
librecode-dev \ librecode-dev \
librsvg2-dev \
libsasl2-dev \ libsasl2-dev \
libsnmp-dev \ libsnmp-dev \
libssh2-1-dev \ libssh2-1-dev \
libssl-dev \ libssl-dev \
libtidy-dev \ libtidy-dev \
libtool \ libvips-dev \
libvips42 \
libvpx-dev \ libvpx-dev \
libwebp-dev \ libwebp-dev \
libwebp6 \
libwebpdemux2 \
libwebpmux2 \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -70,8 +57,29 @@ RUN set -eux \
unixodbc-dev \ unixodbc-dev \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -94,7 +102,7 @@ RUN set -eux \
# Type: Custom extension # Type: Custom extension
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \ && curl -sS --fail -k https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \ && tar xvfz ioncube.tar.gz \
&& cd ioncube \ && cd ioncube \
&& cp "ioncube_loader_lin_7.0.so" "${EXTENSION_DIR}/ioncube.so" \ && cp "ioncube_loader_lin_7.0.so" "${EXTENSION_DIR}/ioncube.so" \
@@ -327,10 +335,10 @@ RUN set -eux \
# -------------------- Installing PHP Extension: memcached -------------------- # -------------------- Installing PHP Extension: memcached --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: PECL extension # Type: PECL extension
# Default: Pecl command # Custom: Pecl command
&& pecl install memcached \ && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \
# Enabling # Enabling
&& docker-php-ext-enable memcached \ && docker-php-ext-enable memcached \
&& true && true
@@ -349,8 +357,9 @@ RUN set -eux \
# -------------------- Installing PHP Extension: mysqli -------------------- # -------------------- Installing PHP Extension: mysqli --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \
&& true && true
@@ -374,9 +383,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -441,10 +450,11 @@ RUN set -eux \
# -------------------- Installing PHP Extension: pdo_mysql -------------------- # -------------------- Installing PHP Extension: pdo_mysql --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command # Default: configure command
&& docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \ && docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \
# Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \
&& true && true
@@ -457,9 +467,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -647,17 +657,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-4.2.13 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# -------------------- Installing PHP Extension: sysvmsg -------------------- # -------------------- Installing PHP Extension: sysvmsg --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -715,15 +714,6 @@ RUN set -eux \
# -------------------- Installing PHP Extension: vips -------------------- # -------------------- Installing PHP Extension: vips --------------------
RUN set -eux \ RUN set -eux \
# Generic pre-command
&& git clone https://github.com/libvips/libvips /tmp/libvips \
&& cd /tmp/libvips \
&& ./autogen.sh \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& cd /tmp \
&& rm -rf /tmp/libvips \
\
# Installation: Generic # Installation: Generic
# Type: PECL extension # Type: PECL extension
# Default: Pecl command # Default: Pecl command
@@ -804,6 +794,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-4.2.13 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -816,9 +817,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -846,62 +847,38 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.0-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
fftw2 \
ghostscript \ ghostscript \
gir1.2-poppler-0.18 \
imagemagick-6.q16 \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libenchant1c2a \ libenchant1c2a \
libexif12 \ libevent-2.0-5 \
libexpat1 \
libfbclient2 \ libfbclient2 \
libfftw3-3 \
libfreetype6 \ libfreetype6 \
libgif7 \
libglib2.0-0 \
libicu57 \ libicu57 \
libjpeg62-turbo \ libjpeg62-turbo \
libmagick++-6.q16-7 \
libmagick++-6.q16hdri-7 \
libmagickcore-6.q16-3 \
libmagickcore-6.q16-3-extra \
libmagickwand-6.q16-3 \ libmagickwand-6.q16-3 \
libmagickwand-6.q16hdri-3 \ libmariadbclient18 \
libmcrypt4 \ libmcrypt4 \
libmemcachedutil2 \ libmemcachedutil2 \
libnghttp2-14 \ libnghttp2-14 \
libpng16-16 \ libpng16-16 \
libpoppler-glib8 \
libpq5 \ libpq5 \
librabbitmq4 \ librabbitmq4 \
librdkafka1 \ librdkafka1 \
librecode0 \ librecode0 \
librsvg2-2 \
libssh2-1 \ libssh2-1 \
libsybdb5 \ libsybdb5 \
libtidy5 \ libtidy5 \
libvips42 \
libvpx4 \ libvpx4 \
libwebp6 \ libwebp6 \
libwebpdemux2 \
libwebpmux2 \
libxpm4 \ libxpm4 \
libxslt1.1 \ libxslt1.1 \
libyaml-0-2 \ libyaml-0-2 \
@@ -916,7 +893,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------
@@ -1095,8 +1083,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^sqlsrv$' \ && php-fpm -m | grep -oiE '^sqlsrv$' \
&& php -m | grep -oiE '^ssh2$' \ && php -m | grep -oiE '^ssh2$' \
&& php-fpm -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -1133,6 +1119,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,62 +6,48 @@ FROM devilbox/php-fpm:7.1-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
fftw-dev \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
ghostscript \ ghostscript \
gobject-introspection \
gtk-doc-tools \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libenchant-dev \ libenchant-dev \
libevent-dev \ libevent-dev \
libexif-dev \
libexpat1-dev \
libfbclient2 \ libfbclient2 \
libfftw3-dev \
libfreetype6-dev \ libfreetype6-dev \
libgif-dev \
libglib2.0-dev \
libgmp-dev \ libgmp-dev \
libib-util \ libib-util \
libicu-dev \ libicu-dev \
libimagequant-dev \
libjpeg-dev \ libjpeg-dev \
libkrb5-dev \ libkrb5-dev \
libldap2-dev \ libldap2-dev \
libmagick++-dev \
libmagickcore-6.q16-dev \
libmagickwand-dev \ libmagickwand-dev \
libmariadb-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libnghttp2-dev \ libnghttp2-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
libpoppler-glib-dev \
libpq-dev \ libpq-dev \
libpspell-dev \ libpspell-dev \
librabbitmq-dev \ librabbitmq-dev \
librdkafka-dev \ librdkafka-dev \
librecode-dev \ librecode-dev \
librsvg2-dev \
libsasl2-dev \ libsasl2-dev \
libsnmp-dev \ libsnmp-dev \
libssh2-1-dev \ libssh2-1-dev \
libssl-dev \ libssl-dev \
libtidy-dev \ libtidy-dev \
libtool \ libvips-dev \
libvips42 \
libvpx-dev \ libvpx-dev \
libwebp-dev \ libwebp-dev \
libwebp6 \
libwebpdemux2 \
libwebpmux3 \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -71,8 +57,29 @@ RUN set -eux \
unixodbc-dev \ unixodbc-dev \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -95,7 +102,7 @@ RUN set -eux \
# Type: Custom extension # Type: Custom extension
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \ && curl -sS --fail -k https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \ && tar xvfz ioncube.tar.gz \
&& cd ioncube \ && cd ioncube \
&& cp "ioncube_loader_lin_7.1.so" "${EXTENSION_DIR}/ioncube.so" \ && cp "ioncube_loader_lin_7.1.so" "${EXTENSION_DIR}/ioncube.so" \
@@ -328,10 +335,10 @@ RUN set -eux \
# -------------------- Installing PHP Extension: memcached -------------------- # -------------------- Installing PHP Extension: memcached --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: PECL extension # Type: PECL extension
# Default: Pecl command # Custom: Pecl command
&& pecl install memcached \ && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \
# Enabling # Enabling
&& docker-php-ext-enable memcached \ && docker-php-ext-enable memcached \
&& true && true
@@ -375,9 +382,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -458,9 +465,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -659,17 +666,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-4.4.26 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# -------------------- Installing PHP Extension: sysvmsg -------------------- # -------------------- Installing PHP Extension: sysvmsg --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -726,15 +722,6 @@ RUN set -eux \
# -------------------- Installing PHP Extension: vips -------------------- # -------------------- Installing PHP Extension: vips --------------------
RUN set -eux \ RUN set -eux \
# Generic pre-command
&& git clone https://github.com/libvips/libvips /tmp/libvips \
&& cd /tmp/libvips \
&& ./autogen.sh \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& cd /tmp \
&& rm -rf /tmp/libvips \
\
# Installation: Generic # Installation: Generic
# Type: PECL extension # Type: PECL extension
# Default: Pecl command # Default: Pecl command
@@ -815,6 +802,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-4.4.26 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -827,9 +825,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -857,64 +855,38 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.1-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
fftw2 \
ghostscript \ ghostscript \
gir1.2-poppler-0.18 \
imagemagick-6.q16 \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libenchant1c2a \ libenchant1c2a \
libexif12 \ libevent-2.1-6 \
libexpat1 \
libfbclient2 \ libfbclient2 \
libfftw3-3 \
libfreetype6 \ libfreetype6 \
libgif7 \
libglib2.0-0 \
libicu63 \ libicu63 \
libimagequant0 \
libjpeg62-turbo \ libjpeg62-turbo \
libmagick++-6.q16-8 \
libmagick++-6.q16hdri-8 \
libmagickcore-6.q16-6 \
libmagickcore-6.q16-6-extra \
libmagickwand-6.q16-6 \ libmagickwand-6.q16-6 \
libmagickwand-6.q16hdri-6 \ libmariadbd19 \
libmcrypt4 \ libmcrypt4 \
libmemcachedutil2 \ libmemcachedutil2 \
libnghttp2-14 \ libnghttp2-14 \
libpng16-16 \ libpng16-16 \
libpoppler-glib8 \
libpq5 \ libpq5 \
librabbitmq4 \ librabbitmq4 \
librdkafka1 \ librdkafka1 \
librecode0 \ librecode0 \
librsvg2-2 \
libssh2-1 \ libssh2-1 \
libsybdb5 \ libsybdb5 \
libtidy5deb1 \ libtidy5deb1 \
libvips42 \
libvpx5 \ libvpx5 \
libwebp-dev \
libwebp6 \ libwebp6 \
libwebpdemux2 \
libwebpmux3 \
libxpm4 \ libxpm4 \
libxslt1.1 \ libxslt1.1 \
libyaml-0-2 \ libyaml-0-2 \
@@ -929,7 +901,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------
@@ -1110,8 +1093,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^sqlsrv$' \ && php-fpm -m | grep -oiE '^sqlsrv$' \
&& php -m | grep -oiE '^ssh2$' \ && php -m | grep -oiE '^ssh2$' \
&& php-fpm -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -1148,6 +1129,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,62 +6,48 @@ FROM devilbox/php-fpm:7.2-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
fftw-dev \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
ghostscript \ ghostscript \
gobject-introspection \
gtk-doc-tools \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libenchant-dev \ libenchant-dev \
libevent-dev \ libevent-dev \
libexif-dev \
libexpat1-dev \
libfbclient2 \ libfbclient2 \
libfftw3-dev \
libfreetype6-dev \ libfreetype6-dev \
libgif-dev \
libglib2.0-dev \
libgmp-dev \ libgmp-dev \
libib-util \ libib-util \
libicu-dev \ libicu-dev \
libimagequant-dev \
libjpeg-dev \ libjpeg-dev \
libkrb5-dev \ libkrb5-dev \
libldap2-dev \ libldap2-dev \
libmagick++-dev \
libmagickcore-6.q16-dev \
libmagickwand-dev \ libmagickwand-dev \
libmariadb-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libnghttp2-dev \ libnghttp2-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
libpoppler-glib-dev \
libpq-dev \ libpq-dev \
libpspell-dev \ libpspell-dev \
librabbitmq-dev \ librabbitmq-dev \
librdkafka-dev \ librdkafka-dev \
librecode-dev \ librecode-dev \
librsvg2-dev \
libsasl2-dev \ libsasl2-dev \
libsnmp-dev \ libsnmp-dev \
libssh2-1-dev \ libssh2-1-dev \
libssl-dev \ libssl-dev \
libtidy-dev \ libtidy-dev \
libtool \ libvips-dev \
libvips42 \
libvpx-dev \ libvpx-dev \
libwebp-dev \ libwebp-dev \
libwebp6 \
libwebpdemux2 \
libwebpmux3 \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -71,8 +57,29 @@ RUN set -eux \
unixodbc-dev \ unixodbc-dev \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -95,7 +102,7 @@ RUN set -eux \
# Type: Custom extension # Type: Custom extension
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \ && curl -sS --fail -k https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \ && tar xvfz ioncube.tar.gz \
&& cd ioncube \ && cd ioncube \
&& cp "ioncube_loader_lin_7.2.so" "${EXTENSION_DIR}/ioncube.so" \ && cp "ioncube_loader_lin_7.2.so" "${EXTENSION_DIR}/ioncube.so" \
@@ -330,10 +337,10 @@ RUN set -eux \
# -------------------- Installing PHP Extension: memcached -------------------- # -------------------- Installing PHP Extension: memcached --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: PECL extension # Type: PECL extension
# Default: Pecl command # Custom: Pecl command
&& pecl install memcached \ && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \
# Enabling # Enabling
&& docker-php-ext-enable memcached \ && docker-php-ext-enable memcached \
&& true && true
@@ -377,9 +384,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -460,9 +467,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -527,12 +534,12 @@ RUN set -eux \
# -------------------- Installing PHP Extension: phalcon -------------------- # -------------------- Installing PHP Extension: phalcon --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: GIT extension # Type: GIT extension
&& git clone https://github.com/phalcon/cphalcon /tmp/phalcon \ && git clone https://github.com/phalcon/cphalcon /tmp/phalcon \
&& cd /tmp/phalcon \ && cd /tmp/phalcon \
# Custom: Branch # Custom: Branch
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | sed 's/^.*tags\///g' | grep -E '^v[.0-9]+$' | tail -1) \ && git checkout v4.1.1 \
# Custom: Install command # Custom: Install command
&& cd build && ./install \ && cd build && ./install \
# Enabling # Enabling
@@ -662,17 +669,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Generic
# Type: PECL extension
# Custom: Pecl command
&& yes yes | pecl install swoole \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# -------------------- Installing PHP Extension: sysvmsg -------------------- # -------------------- Installing PHP Extension: sysvmsg --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -729,15 +725,6 @@ RUN set -eux \
# -------------------- Installing PHP Extension: vips -------------------- # -------------------- Installing PHP Extension: vips --------------------
RUN set -eux \ RUN set -eux \
# Generic pre-command
&& git clone https://github.com/libvips/libvips /tmp/libvips \
&& cd /tmp/libvips \
&& ./autogen.sh \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& cd /tmp \
&& rm -rf /tmp/libvips \
\
# Installation: Generic # Installation: Generic
# Type: PECL extension # Type: PECL extension
# Default: Pecl command # Default: Pecl command
@@ -818,6 +805,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-4.8.12 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -830,9 +828,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -860,64 +858,38 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.2-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
fftw2 \
ghostscript \ ghostscript \
gir1.2-poppler-0.18 \
imagemagick-6.q16 \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libenchant1c2a \ libenchant1c2a \
libexif12 \ libevent-2.1-6 \
libexpat1 \
libfbclient2 \ libfbclient2 \
libfftw3-3 \
libfreetype6 \ libfreetype6 \
libgif7 \
libglib2.0-0 \
libicu63 \ libicu63 \
libimagequant0 \
libjpeg62-turbo \ libjpeg62-turbo \
libmagick++-6.q16-8 \
libmagick++-6.q16hdri-8 \
libmagickcore-6.q16-6 \
libmagickcore-6.q16-6-extra \
libmagickwand-6.q16-6 \ libmagickwand-6.q16-6 \
libmagickwand-6.q16hdri-6 \ libmariadbd19 \
libmcrypt4 \ libmcrypt4 \
libmemcachedutil2 \ libmemcachedutil2 \
libnghttp2-14 \ libnghttp2-14 \
libpng16-16 \ libpng16-16 \
libpoppler-glib8 \
libpq5 \ libpq5 \
librabbitmq4 \ librabbitmq4 \
librdkafka1 \ librdkafka1 \
librecode0 \ librecode0 \
librsvg2-2 \
libssh2-1 \ libssh2-1 \
libsybdb5 \ libsybdb5 \
libtidy5deb1 \ libtidy5deb1 \
libvips42 \
libvpx5 \ libvpx5 \
libwebp-dev \
libwebp6 \ libwebp6 \
libwebpdemux2 \
libwebpmux3 \
libxpm4 \ libxpm4 \
libxslt1.1 \ libxslt1.1 \
libyaml-0-2 \ libyaml-0-2 \
@@ -932,7 +904,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------
@@ -1115,8 +1098,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^sqlsrv$' \ && php-fpm -m | grep -oiE '^sqlsrv$' \
&& php -m | grep -oiE '^ssh2$' \ && php -m | grep -oiE '^ssh2$' \
&& php-fpm -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -1153,6 +1134,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,61 +6,47 @@ FROM devilbox/php-fpm:7.3-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
fftw-dev \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
ghostscript \ ghostscript \
gobject-introspection \
gtk-doc-tools \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libevent-dev \ libevent-dev \
libexif-dev \
libexpat1-dev \
libfbclient2 \ libfbclient2 \
libfftw3-dev \
libfreetype6-dev \ libfreetype6-dev \
libgif-dev \
libglib2.0-dev \
libgmp-dev \ libgmp-dev \
libib-util \ libib-util \
libicu-dev \ libicu-dev \
libimagequant-dev \
libjpeg-dev \ libjpeg-dev \
libkrb5-dev \ libkrb5-dev \
libldap2-dev \ libldap2-dev \
libmagick++-dev \
libmagickcore-6.q16-dev \
libmagickwand-dev \ libmagickwand-dev \
libmariadb-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libnghttp2-dev \ libnghttp2-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
libpoppler-glib-dev \
libpq-dev \ libpq-dev \
libpspell-dev \ libpspell-dev \
librabbitmq-dev \ librabbitmq-dev \
librdkafka-dev \ librdkafka-dev \
librecode-dev \ librecode-dev \
librsvg2-dev \
libsasl2-dev \ libsasl2-dev \
libsnmp-dev \ libsnmp-dev \
libssh2-1-dev \ libssh2-1-dev \
libssl-dev \ libssl-dev \
libtidy-dev \ libtidy-dev \
libtool \ libvips-dev \
libvips42 \
libvpx-dev \ libvpx-dev \
libwebp-dev \ libwebp-dev \
libwebp6 \
libwebpdemux2 \
libwebpmux3 \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -70,8 +56,29 @@ RUN set -eux \
unixodbc-dev \ unixodbc-dev \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -94,7 +101,7 @@ RUN set -eux \
# Type: Custom extension # Type: Custom extension
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \ && curl -sS --fail -k https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \ && tar xvfz ioncube.tar.gz \
&& cd ioncube \ && cd ioncube \
&& cp "ioncube_loader_lin_7.3.so" "${EXTENSION_DIR}/ioncube.so" \ && cp "ioncube_loader_lin_7.3.so" "${EXTENSION_DIR}/ioncube.so" \
@@ -322,8 +329,8 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
# Type: PECL extension # Type: PECL extension
# Default: Pecl command # Custom: Pecl command
&& pecl install memcached \ && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \
# Enabling # Enabling
&& docker-php-ext-enable memcached \ && docker-php-ext-enable memcached \
&& true && true
@@ -367,9 +374,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -450,9 +457,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -517,12 +524,12 @@ RUN set -eux \
# -------------------- Installing PHP Extension: phalcon -------------------- # -------------------- Installing PHP Extension: phalcon --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Version specific
# Type: GIT extension # Type: GIT extension
&& git clone https://github.com/phalcon/cphalcon /tmp/phalcon \ && git clone https://github.com/phalcon/cphalcon /tmp/phalcon \
&& cd /tmp/phalcon \ && cd /tmp/phalcon \
# Custom: Branch # Custom: Branch
&& git checkout $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | sed 's/^.*tags\///g' | grep -E '^v[.0-9]+$' | tail -1) \ && git checkout v4.1.2 \
# Custom: Install command # Custom: Install command
&& cd build && ./install \ && cd build && ./install \
# Enabling # Enabling
@@ -652,17 +659,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Generic
# Type: PECL extension
# Custom: Pecl command
&& yes yes | pecl install swoole \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# -------------------- Installing PHP Extension: sysvmsg -------------------- # -------------------- Installing PHP Extension: sysvmsg --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -719,15 +715,6 @@ RUN set -eux \
# -------------------- Installing PHP Extension: vips -------------------- # -------------------- Installing PHP Extension: vips --------------------
RUN set -eux \ RUN set -eux \
# Generic pre-command
&& git clone https://github.com/libvips/libvips /tmp/libvips \
&& cd /tmp/libvips \
&& ./autogen.sh \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& cd /tmp \
&& rm -rf /tmp/libvips \
\
# Installation: Generic # Installation: Generic
# Type: PECL extension # Type: PECL extension
# Default: Pecl command # Default: Pecl command
@@ -808,6 +795,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-4.8.12 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -820,9 +818,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -850,63 +848,37 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.3-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
fftw2 \
ghostscript \ ghostscript \
gir1.2-poppler-0.18 \
imagemagick-6.q16 \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libexif12 \ libevent-2.1-7 \
libexpat1 \
libfbclient2 \ libfbclient2 \
libfftw3-3 \
libfreetype6 \ libfreetype6 \
libgif7 \
libglib2.0-0 \
libicu67 \ libicu67 \
libimagequant0 \
libjpeg62-turbo \ libjpeg62-turbo \
libmagick++-6.q16-8 \
libmagick++-6.q16hdri-8 \
libmagickcore-6.q16-6 \
libmagickcore-6.q16-6-extra \
libmagickwand-6.q16-6 \ libmagickwand-6.q16-6 \
libmagickwand-6.q16hdri-6 \ libmariadbd19 \
libmcrypt4 \ libmcrypt4 \
libmemcachedutil2 \ libmemcachedutil2 \
libnghttp2-14 \ libnghttp2-14 \
libpng16-16 \ libpng16-16 \
libpoppler-glib8 \
libpq5 \ libpq5 \
librabbitmq4 \ librabbitmq4 \
librdkafka1 \ librdkafka1 \
librecode0 \ librecode0 \
librsvg2-2 \
libssh2-1 \ libssh2-1 \
libsybdb5 \ libsybdb5 \
libtidy5deb1 \ libtidy5deb1 \
libvips42 \
libvpx6 \ libvpx6 \
libwebp-dev \
libwebp6 \ libwebp6 \
libwebpdemux2 \
libwebpmux3 \
libxpm4 \ libxpm4 \
libxslt1.1 \ libxslt1.1 \
libyaml-0-2 \ libyaml-0-2 \
@@ -921,7 +893,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------
@@ -1102,8 +1085,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^sqlsrv$' \ && php-fpm -m | grep -oiE '^sqlsrv$' \
&& php -m | grep -oiE '^ssh2$' \ && php -m | grep -oiE '^ssh2$' \
&& php-fpm -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -1140,6 +1121,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,61 +6,47 @@ FROM devilbox/php-fpm:7.4-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
fftw-dev \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
ghostscript \ ghostscript \
gobject-introspection \
gtk-doc-tools \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libevent-dev \ libevent-dev \
libexif-dev \
libexpat1-dev \
libfbclient2 \ libfbclient2 \
libffi-dev \ libffi-dev \
libfftw3-dev \
libfreetype6-dev \ libfreetype6-dev \
libgif-dev \
libglib2.0-dev \
libgmp-dev \ libgmp-dev \
libib-util \ libib-util \
libicu-dev \ libicu-dev \
libimagequant-dev \
libjpeg-dev \ libjpeg-dev \
libkrb5-dev \ libkrb5-dev \
libldap2-dev \ libldap2-dev \
libmagick++-dev \
libmagickcore-6.q16-dev \
libmagickwand-dev \ libmagickwand-dev \
libmariadb-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libnghttp2-dev \ libnghttp2-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
libpoppler-glib-dev \
libpq-dev \ libpq-dev \
libpspell-dev \ libpspell-dev \
librabbitmq-dev \ librabbitmq-dev \
librdkafka-dev \ librdkafka-dev \
librsvg2-dev \
libsasl2-dev \ libsasl2-dev \
libsnmp-dev \ libsnmp-dev \
libssh2-1-dev \ libssh2-1-dev \
libssl-dev \ libssl-dev \
libtidy-dev \ libtidy-dev \
libtool \ libvips-dev \
libvips42 \
libvpx-dev \ libvpx-dev \
libwebp-dev \ libwebp-dev \
libwebp6 \
libwebpdemux2 \
libwebpmux3 \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -70,8 +56,29 @@ RUN set -eux \
unixodbc-dev \ unixodbc-dev \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -94,7 +101,7 @@ RUN set -eux \
# Type: Custom extension # Type: Custom extension
&& EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \ && curl -sS --fail -k https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \ && tar xvfz ioncube.tar.gz \
&& cd ioncube \ && cd ioncube \
&& cp "ioncube_loader_lin_7.4.so" "${EXTENSION_DIR}/ioncube.so" \ && cp "ioncube_loader_lin_7.4.so" "${EXTENSION_DIR}/ioncube.so" \
@@ -320,14 +327,10 @@ RUN set -eux \
# -------------------- Installing PHP Extension: memcached -------------------- # -------------------- Installing PHP Extension: memcached --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Generic
# Type: GIT extension # Type: PECL extension
&& git clone https://github.com/php-memcached-dev/php-memcached /tmp/memcached \ # Custom: Pecl command
&& cd /tmp/memcached \ && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \
# Custom: Branch
&& git checkout master \
# Custom: Install command
&& phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install \
# Enabling # Enabling
&& docker-php-ext-enable memcached \ && docker-php-ext-enable memcached \
&& true && true
@@ -371,9 +374,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -454,9 +457,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -591,6 +594,8 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command
&& docker-php-ext-configure snmp --with-snmp \
# Installation # Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \
&& true && true
@@ -600,6 +605,8 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Version specific
# Type: Built-in extension # Type: Built-in extension
# Custom: configure command
&& docker-php-ext-configure soap --enable-soap \
# Installation # Installation
&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \ && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \
&& true && true
@@ -646,17 +653,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Generic
# Type: PECL extension
# Custom: Pecl command
&& yes yes | pecl install swoole \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# -------------------- Installing PHP Extension: sysvmsg -------------------- # -------------------- Installing PHP Extension: sysvmsg --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -713,15 +709,6 @@ RUN set -eux \
# -------------------- Installing PHP Extension: vips -------------------- # -------------------- Installing PHP Extension: vips --------------------
RUN set -eux \ RUN set -eux \
# Generic pre-command
&& git clone https://github.com/libvips/libvips /tmp/libvips \
&& cd /tmp/libvips \
&& ./autogen.sh \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& cd /tmp \
&& rm -rf /tmp/libvips \
\
# Installation: Generic # Installation: Generic
# Type: PECL extension # Type: PECL extension
# Default: Pecl command # Default: Pecl command
@@ -794,6 +781,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Version specific
# Type: PECL extension
# Default: Pecl command
&& pecl install swoole-4.8.12 \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -806,9 +804,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -836,63 +834,37 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.4-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
fftw2 \
ghostscript \ ghostscript \
gir1.2-poppler-0.18 \
imagemagick-6.q16 \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libexif12 \ libevent-2.1-7 \
libexpat1 \
libfbclient2 \ libfbclient2 \
libffi7 \ libffi7 \
libfftw3-3 \
libfreetype6 \ libfreetype6 \
libgif7 \
libglib2.0-0 \
libicu67 \ libicu67 \
libimagequant0 \
libjpeg62-turbo \ libjpeg62-turbo \
libmagick++-6.q16-8 \
libmagick++-6.q16hdri-8 \
libmagickcore-6.q16-6 \
libmagickcore-6.q16-6-extra \
libmagickwand-6.q16-6 \ libmagickwand-6.q16-6 \
libmagickwand-6.q16hdri-6 \ libmariadbd19 \
libmcrypt4 \ libmcrypt4 \
libmemcachedutil2 \ libmemcachedutil2 \
libnghttp2-14 \ libnghttp2-14 \
libpng16-16 \ libpng16-16 \
libpoppler-glib8 \
libpq5 \ libpq5 \
librabbitmq4 \ librabbitmq4 \
librdkafka1 \ librdkafka1 \
librsvg2-2 \
libssh2-1 \ libssh2-1 \
libsybdb5 \ libsybdb5 \
libtidy5deb1 \ libtidy5deb1 \
libvips42 \
libvpx6 \ libvpx6 \
libwebp-dev \
libwebp6 \ libwebp6 \
libwebpdemux2 \
libwebpmux3 \
libxpm4 \ libxpm4 \
libxslt1.1 \ libxslt1.1 \
libyaml-0-2 \ libyaml-0-2 \
@@ -907,7 +879,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------
@@ -1086,8 +1069,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^sqlsrv$' \ && php-fpm -m | grep -oiE '^sqlsrv$' \
&& php -m | grep -oiE '^ssh2$' \ && php -m | grep -oiE '^ssh2$' \
&& php-fpm -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -1122,6 +1103,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,15 +6,15 @@ FROM devilbox/php-fpm:8.0-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
ghostscript \ ghostscript \
libaio-dev \ libaio-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libenchant-2-dev \ libenchant-2-dev \
@@ -28,6 +28,7 @@ RUN set -eux \
libkrb5-dev \ libkrb5-dev \
libldap2-dev \ libldap2-dev \
libmagickwand-dev \ libmagickwand-dev \
libmariadb-dev \
libmcrypt-dev \ libmcrypt-dev \
libmemcached-dev \ libmemcached-dev \
libnghttp2-dev \ libnghttp2-dev \
@@ -42,9 +43,10 @@ RUN set -eux \
libsodium-dev \ libsodium-dev \
libssl-dev \ libssl-dev \
libtidy-dev \ libtidy-dev \
libvips-dev \
libvips42 \
libvpx-dev \ libvpx-dev \
libwebp-dev \ libwebp-dev \
libwebp6 \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -54,8 +56,29 @@ RUN set -eux \
unixodbc-dev \ unixodbc-dev \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -287,21 +310,10 @@ RUN set -eux \
# -------------------- Installing PHP Extension: memcached -------------------- # -------------------- Installing PHP Extension: memcached --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Generic
# Type: GIT extension # Type: PECL extension
&& git clone https://github.com/php-memcached-dev/php-memcached /tmp/memcached \ # Custom: Pecl command
&& cd /tmp/memcached \ && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \
# Custom: Branch
&& git checkout master \
# Custom: Install command
&& true \
# FIXME: This is a work-around to mitigate compile error with PHP 8.0
&& sed -i'' 's/\sTSRMLS_CC//g' php_memcached_session.c \
&& phpize \
&& ./configure --enable-memcached \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
\
# Enabling # Enabling
&& docker-php-ext-enable memcached \ && docker-php-ext-enable memcached \
&& true && true
@@ -345,9 +357,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -428,9 +440,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -608,17 +620,6 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Generic
# Type: PECL extension
# Custom: Pecl command
&& yes yes | pecl install swoole \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# -------------------- Installing PHP Extension: sysvmsg -------------------- # -------------------- Installing PHP Extension: sysvmsg --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -673,6 +674,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: vips --------------------
RUN set -eux \
# Installation: Generic
# Type: PECL extension
# Default: Pecl command
&& pecl install vips \
# Enabling
&& docker-php-ext-enable vips \
&& true
# -------------------- Installing PHP Extension: xdebug -------------------- # -------------------- Installing PHP Extension: xdebug --------------------
RUN set -eux \ RUN set -eux \
# Installation: Generic # Installation: Generic
@@ -724,6 +736,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Generic
# Type: PECL extension
# Custom: Pecl command
&& pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes" with-postgres="yes"' swoole \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -736,9 +759,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -766,33 +789,25 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 8.0-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ghostscript \ ghostscript \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libenchant-2-2 \ libenchant-2-2 \
libevent-2.1-7 \
libfbclient2 \ libfbclient2 \
libffi7 \ libffi7 \
libfreetype6 \ libfreetype6 \
libicu67 \ libicu67 \
libjpeg62-turbo \ libjpeg62-turbo \
libmagickwand-6.q16-6 \ libmagickwand-6.q16-6 \
libmariadbd19 \
libmcrypt4 \ libmcrypt4 \
libmemcachedutil2 \ libmemcachedutil2 \
libnghttp2-14 \ libnghttp2-14 \
@@ -802,8 +817,8 @@ RUN set -eux \
librdkafka1 \ librdkafka1 \
libsybdb5 \ libsybdb5 \
libtidy5deb1 \ libtidy5deb1 \
libvips42 \
libvpx6 \ libvpx6 \
libwebp-dev \
libwebp6 \ libwebp6 \
libxpm4 \ libxpm4 \
libxslt1.1 \ libxslt1.1 \
@@ -819,7 +834,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------
@@ -996,8 +1022,6 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \
&& php -m | grep -oiE '^sqlsrv$' \ && php -m | grep -oiE '^sqlsrv$' \
&& php-fpm -m | grep -oiE '^sqlsrv$' \ && php-fpm -m | grep -oiE '^sqlsrv$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& php -m | grep -oiE '^sysvmsg$' \ && php -m | grep -oiE '^sysvmsg$' \
&& php-fpm -m | grep -oiE '^sysvmsg$' \ && php-fpm -m | grep -oiE '^sysvmsg$' \
&& php -m | grep -oiE '^sysvsem$' \ && php -m | grep -oiE '^sysvsem$' \
@@ -1012,6 +1036,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^uploadprogress$' \ && php-fpm -m | grep -oiE '^uploadprogress$' \
&& php -m | grep -oiE '^uuid$' \ && php -m | grep -oiE '^uuid$' \
&& php-fpm -m | grep -oiE '^uuid$' \ && php-fpm -m | grep -oiE '^uuid$' \
&& php -m | grep -oiE '^vips$' \
&& php-fpm -m | grep -oiE '^vips$' \
&& php -m | grep -oiE '^xdebug$' \ && php -m | grep -oiE '^xdebug$' \
&& php-fpm -m | grep -oiE '^xdebug$' \ && php-fpm -m | grep -oiE '^xdebug$' \
&& php -m | grep -oiE '^xml$' \ && php -m | grep -oiE '^xml$' \
@@ -1028,6 +1054,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,9 +6,8 @@ FROM devilbox/php-fpm:8.1-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
@@ -16,6 +15,7 @@ RUN set -eux \
libaio-dev \ libaio-dev \
libavif-dev \ libavif-dev \
libbz2-dev \ libbz2-dev \
libc-ares-dev \
libc-client-dev \ libc-client-dev \
libcurl4-openssl-dev \ libcurl4-openssl-dev \
libenchant-2-dev \ libenchant-2-dev \
@@ -29,7 +29,9 @@ RUN set -eux \
libkrb5-dev \ libkrb5-dev \
libldap2-dev \ libldap2-dev \
libmagickwand-dev \ libmagickwand-dev \
libmariadb-dev \
libmemcached-dev \ libmemcached-dev \
libnghttp2-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
libpq-dev \ libpq-dev \
@@ -41,9 +43,10 @@ RUN set -eux \
libsodium-dev \ libsodium-dev \
libssl-dev \ libssl-dev \
libtidy-dev \ libtidy-dev \
libvips-dev \
libvips42 \
libvpx-dev \ libvpx-dev \
libwebp-dev \ libwebp-dev \
libwebp6 \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -53,8 +56,29 @@ RUN set -eux \
unixodbc-dev \ unixodbc-dev \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -261,21 +285,10 @@ RUN set -eux \
# -------------------- Installing PHP Extension: memcached -------------------- # -------------------- Installing PHP Extension: memcached --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Generic
# Type: GIT extension # Type: PECL extension
&& git clone https://github.com/php-memcached-dev/php-memcached /tmp/memcached \ # Custom: Pecl command
&& cd /tmp/memcached \ && printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached \
# Custom: Branch
&& git checkout master \
# Custom: Install command
&& true \
# FIXME: This is a work-around to mitigate compile error with PHP 8.1
&& sed -i'' 's/\sTSRMLS_CC//g' php_memcached_session.c \
&& phpize \
&& ./configure --enable-memcached \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
\
# Enabling # Enabling
&& docker-php-ext-enable memcached \ && docker-php-ext-enable memcached \
&& true && true
@@ -319,9 +332,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -405,9 +418,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -641,6 +654,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: vips --------------------
RUN set -eux \
# Installation: Generic
# Type: PECL extension
# Default: Pecl command
&& pecl install vips \
# Enabling
&& docker-php-ext-enable vips \
&& true
# -------------------- Installing PHP Extension: xdebug -------------------- # -------------------- Installing PHP Extension: xdebug --------------------
RUN set -eux \ RUN set -eux \
# Installation: Version specific # Installation: Version specific
@@ -699,6 +723,17 @@ RUN set -eux \
&& true && true
# -------------------- Installing PHP Extension: swoole --------------------
RUN set -eux \
# Installation: Generic
# Type: PECL extension
# Custom: Pecl command
&& pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes" with-postgres="yes"' swoole \
# Enabling
&& docker-php-ext-enable swoole \
&& true
# Fix php.ini settings for enabled extensions # Fix php.ini settings for enabled extensions
@@ -711,9 +746,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -741,43 +776,36 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 8.1-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ghostscript \ ghostscript \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libavif9 \ libavif9 \
libc-ares2 \
libc-client2007e \ libc-client2007e \
libenchant-2-2 \ libenchant-2-2 \
libevent-2.1-7 \
libfbclient2 \ libfbclient2 \
libffi7 \ libffi7 \
libfreetype6 \ libfreetype6 \
libicu67 \ libicu67 \
libjpeg62-turbo \ libjpeg62-turbo \
libmagickwand-6.q16-6 \ libmagickwand-6.q16-6 \
libmariadbd19 \
libmemcachedutil2 \ libmemcachedutil2 \
libnghttp2-14 \
libpng16-16 \ libpng16-16 \
libpq5 \ libpq5 \
librabbitmq4 \ librabbitmq4 \
librdkafka1 \ librdkafka1 \
libsybdb5 \ libsybdb5 \
libtidy5deb1 \ libtidy5deb1 \
libvips42 \
libvpx6 \ libvpx6 \
libwebp-dev \
libwebp6 \ libwebp6 \
libxpm4 \ libxpm4 \
libxslt1.1 \ libxslt1.1 \
@@ -793,7 +821,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------
@@ -982,6 +1021,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^uploadprogress$' \ && php-fpm -m | grep -oiE '^uploadprogress$' \
&& php -m | grep -oiE '^uuid$' \ && php -m | grep -oiE '^uuid$' \
&& php-fpm -m | grep -oiE '^uuid$' \ && php-fpm -m | grep -oiE '^uuid$' \
&& php -m | grep -oiE '^vips$' \
&& php-fpm -m | grep -oiE '^vips$' \
&& php -m | grep -oiE '^xdebug$' \ && php -m | grep -oiE '^xdebug$' \
&& php-fpm -m | grep -oiE '^xdebug$' \ && php-fpm -m | grep -oiE '^xdebug$' \
&& php -m | grep -oiE '^xml$' \ && php -m | grep -oiE '^xml$' \
@@ -998,6 +1039,8 @@ RUN set -eux \
&& php-fpm -m | grep -oiE '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \
&& php -m | grep -oiE '^zip$' \ && php -m | grep -oiE '^zip$' \
&& php-fpm -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \
&& php -m | grep -oiE '^swoole$' \
&& php-fpm -m | grep -oiE '^swoole$' \
&& true && true

View File

@@ -6,9 +6,8 @@ FROM devilbox/php-fpm:8.2-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
alien \ alien \
firebird-dev \ firebird-dev \
freetds-dev \ freetds-dev \
@@ -29,6 +28,7 @@ RUN set -eux \
libkrb5-dev \ libkrb5-dev \
libldap2-dev \ libldap2-dev \
libmagickwand-dev \ libmagickwand-dev \
libmariadb-dev \
libmemcached-dev \ libmemcached-dev \
libpcre3-dev \ libpcre3-dev \
libpng-dev \ libpng-dev \
@@ -43,7 +43,6 @@ RUN set -eux \
libtidy-dev \ libtidy-dev \
libvpx-dev \ libvpx-dev \
libwebp-dev \ libwebp-dev \
libwebp6 \
libxml2-dev \ libxml2-dev \
libxpm-dev \ libxpm-dev \
libxslt-dev \ libxslt-dev \
@@ -53,8 +52,29 @@ RUN set -eux \
unixodbc-dev \ unixodbc-dev \
uuid-dev \ uuid-dev \
zlib1g-dev \ zlib1g-dev \
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -319,9 +339,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -405,9 +425,9 @@ RUN set -eux \
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -700,9 +720,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -730,34 +750,25 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 8.2-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ghostscript \ ghostscript \
libaio1 \ libaio1 \
libaspell15 \ libaspell15 \
libavif9 \ libavif9 \
libc-client2007e \ libc-client2007e \
libenchant-2-2 \ libenchant-2-2 \
libevent-2.1-7 \
libfbclient2 \ libfbclient2 \
libffi7 \ libffi7 \
libfreetype6 \ libfreetype6 \
libicu67 \ libicu67 \
libjpeg62-turbo \ libjpeg62-turbo \
libmagickwand-6.q16-6 \ libmagickwand-6.q16-6 \
libmariadbd19 \
libmemcachedutil2 \ libmemcachedutil2 \
libpng16-16 \ libpng16-16 \
libpq5 \ libpq5 \
@@ -766,7 +777,6 @@ RUN set -eux \
libsybdb5 \ libsybdb5 \
libtidy5deb1 \ libtidy5deb1 \
libvpx6 \ libvpx6 \
libwebp-dev \
libwebp6 \ libwebp6 \
libxpm4 \ libxpm4 \
libxslt1.1 \ libxslt1.1 \
@@ -782,7 +792,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
RUN set -eux \ RUN set -eux \
# ---------- imagick ---------- # ---------- imagick ----------

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.2-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.3-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.4-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.5-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 5.6-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.0-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.1-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.2-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.3-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 7.4-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 8.0-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 8.1-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM 8.2-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:5.2-prod FROM devilbox/php-fpm:5.2-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,30 +46,21 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
dirmngr \ dirmngr \
gnupg \ gnupg \
\ \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb [trusted=yes] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -78,7 +70,6 @@ RUN set -eux \
blackfire-agent \ blackfire-agent \
build-essential \ build-essential \
bzip2 \ bzip2 \
certbot \
coreutils \ coreutils \
dnsutils \ dnsutils \
dos2unix \ dos2unix \
@@ -103,10 +94,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mysql-client \ mysql-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +106,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,16 +123,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -160,9 +148,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="17" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -170,13 +167,40 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
\
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& apt-get update \
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -194,27 +218,17 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- linkcheck -------------------- # -------------------- linkcheck --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ && curl -sS -L --fail https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \ && chmod +x /usr/local/bin/linkcheck \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -251,53 +265,60 @@ RUN set -eux \
\ \
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/wkhtmltopdf/releases | awk -F\" '/wkhtmltopdf.*.jessie_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
\ && rm -rf /var/lib/apt/lists/*; \
\ fi \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\ \
\ \
\ \
&& (rm -rf /root/.gem || true ) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.npm || true) \
\
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.npm || true) \
\ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -306,12 +327,47 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -361,17 +417,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -391,22 +482,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -414,13 +536,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -467,19 +623,36 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '5.2' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '5.2' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& git-flow version | grep -E '[0-9][.0-9]+' \ && git-flow version | grep -E '[0-9][.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[0-9][.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[0-9][.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[0-9][.0-9]+' \ && mysqldump-secure --version | grep -E 'Version:\s*[0-9][.0-9]+' \
&& phpcs --version | grep -E 'version [0-9][.0-9]+' \ && phpcs --version | grep -E 'version [0-9][.0-9]+' \
&& phpcbf --version | grep -E 'version [0-9][.0-9]+' \ && phpcbf --version | grep -E 'version [0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -500,14 +673,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:5.3-prod FROM devilbox/php-fpm:5.3-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,30 +46,21 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
dirmngr \ dirmngr \
gnupg \ gnupg \
\ \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb [trusted=yes] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -78,7 +70,6 @@ RUN set -eux \
blackfire-agent \ blackfire-agent \
build-essential \ build-essential \
bzip2 \ bzip2 \
certbot \
coreutils \ coreutils \
dnsutils \ dnsutils \
dos2unix \ dos2unix \
@@ -103,10 +94,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mysql-client \ mysql-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +106,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,16 +123,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -150,11 +138,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-1 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -168,9 +160,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="17" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -178,13 +179,40 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
\
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& apt-get update \
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -216,27 +244,17 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- linkcheck -------------------- # -------------------- linkcheck --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ && curl -sS -L --fail https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \ && chmod +x /usr/local/bin/linkcheck \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -301,57 +319,64 @@ RUN set -eux \
\ \
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/wkhtmltopdf/releases | awk -F\" '/wkhtmltopdf.*.jessie_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://github.com/wp-cli/wp-cli/releases/download/v1.5.1/wp-cli-1.5.1.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://github.com/wp-cli/wp-cli/releases/download/v1.5.1/wp-cli-1.5.1.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -363,12 +388,47 @@ RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \
\ \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -418,17 +478,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -448,22 +543,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -471,13 +597,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -524,8 +684,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '5.3' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '5.3' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \
&& git-flow version | grep -E '[0-9][.0-9]+' \ && git-flow version | grep -E '[0-9][.0-9]+' \
@@ -537,13 +715,12 @@ RUN set -eux \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -564,14 +741,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:5.4-prod FROM devilbox/php-fpm:5.4-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -55,20 +55,12 @@ RUN set -eux \
gnupg \ gnupg \
\ \
&& echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until \ && echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until \
&& echo "deb http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb [trusted=yes] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \
&& echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -102,10 +94,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mysql-client \ mysql-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -114,7 +106,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -132,16 +123,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -149,11 +138,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -167,9 +160,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="17" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -177,13 +179,40 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
\
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& apt-get update \
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -233,18 +262,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -262,9 +279,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -329,62 +348,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/wkhtmltopdf/releases | awk -F\" '/wkhtmltopdf.*.jessie_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://github.com/wp-cli/wp-cli/releases/download/v2.4.0/wp-cli-2.4.0.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://github.com/wp-cli/wp-cli/releases/download/v2.4.0/wp-cli-2.4.0.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -400,12 +428,47 @@ RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \
\ \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -455,17 +518,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -485,22 +583,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -508,13 +637,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -561,8 +724,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '5.4' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '5.4' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \
@@ -577,15 +758,14 @@ RUN set -eux \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
&& codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[0-9][.0-9]+$' \ && codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[0-9][.0-9]+$' \
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -606,14 +786,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:5.5-prod FROM devilbox/php-fpm:5.5-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -55,20 +55,12 @@ RUN set -eux \
gnupg \ gnupg \
\ \
&& echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until \ && echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until \
&& echo "deb http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb [trusted=yes] http://archive.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \
&& echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -102,10 +94,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mysql-client \ mysql-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -114,7 +106,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -132,16 +123,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -149,11 +138,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -167,9 +160,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="17" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -177,13 +179,40 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ jessie-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
\
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& apt-get update \
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -238,18 +267,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -267,9 +284,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -335,62 +354,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/wkhtmltopdf/releases | awk -F\" '/wkhtmltopdf.*.jessie_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://github.com/wp-cli/wp-cli/releases/download/v2.4.0/wp-cli-2.4.0.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://github.com/wp-cli/wp-cli/releases/download/v2.4.0/wp-cli-2.4.0.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -414,12 +442,47 @@ RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \
\ \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -469,17 +532,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -499,22 +597,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -522,13 +651,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -575,8 +738,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '5.5' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '5.5' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \
@@ -592,8 +773,8 @@ RUN set -eux \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
@@ -602,7 +783,6 @@ RUN set -eux \
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \ && lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -623,14 +803,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:5.6-prod FROM devilbox/php-fpm:5.6-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -58,17 +58,9 @@ RUN set -eux \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -103,10 +95,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mysql-client \ mysql-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +107,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,17 +124,15 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
zsh-common \ zsh-common \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -151,11 +140,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -169,9 +162,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="17" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -179,13 +181,44 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
\
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& apt-get update \
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients \
mongo-tools; \
else \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -254,18 +287,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -283,9 +304,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -351,62 +374,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -430,12 +462,47 @@ RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \
\ \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -485,17 +552,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -512,22 +614,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -535,13 +668,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -588,8 +755,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '5.6' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '5.6' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \
@@ -606,8 +791,8 @@ RUN set -eux \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
@@ -616,7 +801,6 @@ RUN set -eux \
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \ && lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -637,14 +821,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:7.0-prod FROM devilbox/php-fpm:7.0-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -58,17 +58,9 @@ RUN set -eux \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -103,10 +95,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mysql-client \ mysql-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +107,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,17 +124,15 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
zsh-common \ zsh-common \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -151,11 +140,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -169,9 +162,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="17" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -179,13 +181,44 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
\
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& apt-get update \
&& if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients \
mongo-tools; \
else \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -235,18 +268,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -264,9 +285,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -332,62 +355,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -411,12 +443,47 @@ RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \
\ \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -466,17 +533,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -493,22 +595,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -516,13 +649,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -569,8 +736,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '7.0' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '7.0' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \
@@ -585,8 +770,8 @@ RUN set -eux \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
@@ -595,7 +780,6 @@ RUN set -eux \
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \ && lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -616,14 +800,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:7.1-prod FROM devilbox/php-fpm:7.1-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -55,20 +55,12 @@ RUN set -eux \
gnupg \ gnupg \
\ \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb http://ftp.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -103,10 +95,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mariadb-client \ mariadb-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +107,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,16 +124,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -150,11 +139,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -168,9 +161,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="--lts" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -178,13 +180,38 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 20691EEC35216C63CAF66CE1656408E390CFB1F5 \
&& echo "deb http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" > /etc/apt/sources.list.d/mongo.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-org-tools \
mongodb-org-shell \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -234,18 +261,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -263,9 +278,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -331,62 +348,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -410,12 +436,47 @@ RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \
\ \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -465,17 +526,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -492,22 +588,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -515,13 +642,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -568,8 +729,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '7.1' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '7.1' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \
@@ -584,8 +763,8 @@ RUN set -eux \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
@@ -594,7 +773,6 @@ RUN set -eux \
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \ && lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -615,14 +793,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:7.2-prod FROM devilbox/php-fpm:7.2-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -55,20 +55,12 @@ RUN set -eux \
gnupg \ gnupg \
\ \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb http://ftp.debian.org/debian buster-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -103,10 +95,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mariadb-client \ mariadb-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +107,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,16 +124,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -150,11 +139,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -168,9 +161,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="--lts" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -178,13 +180,38 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 20691EEC35216C63CAF66CE1656408E390CFB1F5 \
&& echo "deb http://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" > /etc/apt/sources.list.d/mongo.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-org-tools \
mongodb-org-shell \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -242,7 +269,7 @@ RUN set -eux \
\ \
\ \
# -------------------- drupalconsole -------------------- # -------------------- drupalconsole --------------------
&& DURL="https://github.com$(curl -sS 'https://github.com/hechoendrupal/drupal-console-launcher/releases' | grep -Eo 'href="/.+drupal.phar"' | head -1 | sed 's/^href="//g' | sed 's/"$//g')" \ && DURL="$(curl -s https://api.github.com/repos/hechoendrupal/drupal-console-launcher/releases/latest | awk -F\" '/download.*.phar/{print $(NF-1)}' | head -1)" \
&& curl -sS -L --fail "${DURL}" -L -o /usr/local/bin/drupal \ && curl -sS -L --fail "${DURL}" -L -o /usr/local/bin/drupal \
&& chmod +x /usr/local/bin/drupal \ && chmod +x /usr/local/bin/drupal \
\ \
@@ -253,18 +280,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -282,9 +297,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -351,62 +368,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -430,12 +456,47 @@ RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \
\ \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -485,17 +546,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -512,22 +608,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -535,13 +662,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -588,8 +749,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '7.2' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '7.2' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \
@@ -606,8 +785,8 @@ RUN set -eux \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
@@ -616,7 +795,6 @@ RUN set -eux \
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \ && lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -637,14 +815,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:7.3-prod FROM devilbox/php-fpm:7.3-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -55,20 +55,12 @@ RUN set -eux \
gnupg \ gnupg \
\ \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb http://ftp.debian.org/debian bullseye-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -103,10 +95,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mariadb-client \ mariadb-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +107,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,16 +124,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -150,11 +139,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -169,9 +162,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="--lts" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -179,13 +181,38 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 20691EEC35216C63CAF66CE1656408E390CFB1F5 \
&& echo "deb http://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" > /etc/apt/sources.list.d/mongo.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-org-tools \
mongodb-org-shell \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -243,7 +270,7 @@ RUN set -eux \
\ \
\ \
# -------------------- drupalconsole -------------------- # -------------------- drupalconsole --------------------
&& DURL="https://github.com$(curl -sS 'https://github.com/hechoendrupal/drupal-console-launcher/releases' | grep -Eo 'href="/.+drupal.phar"' | head -1 | sed 's/^href="//g' | sed 's/"$//g')" \ && DURL="$(curl -s https://api.github.com/repos/hechoendrupal/drupal-console-launcher/releases/latest | awk -F\" '/download.*.phar/{print $(NF-1)}' | head -1)" \
&& curl -sS -L --fail "${DURL}" -L -o /usr/local/bin/drupal \ && curl -sS -L --fail "${DURL}" -L -o /usr/local/bin/drupal \
&& chmod +x /usr/local/bin/drupal \ && chmod +x /usr/local/bin/drupal \
\ \
@@ -254,18 +281,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -283,9 +298,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -352,62 +369,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -431,12 +457,47 @@ RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \
\ \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -486,17 +547,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -513,22 +609,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -536,13 +663,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -589,8 +750,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '7.3' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '7.3' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \
@@ -607,8 +786,8 @@ RUN set -eux \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
@@ -617,7 +796,6 @@ RUN set -eux \
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \ && lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -638,14 +816,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:7.4-prod FROM devilbox/php-fpm:7.4-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -55,20 +55,12 @@ RUN set -eux \
gnupg \ gnupg \
\ \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb http://ftp.debian.org/debian bullseye-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -103,10 +95,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mariadb-client \ mariadb-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +107,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,16 +124,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -150,11 +139,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -169,9 +162,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="--lts" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -179,13 +181,38 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 20691EEC35216C63CAF66CE1656408E390CFB1F5 \
&& echo "deb http://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" > /etc/apt/sources.list.d/mongo.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-org-tools \
mongodb-org-shell \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -243,7 +270,7 @@ RUN set -eux \
\ \
\ \
# -------------------- drupalconsole -------------------- # -------------------- drupalconsole --------------------
&& DURL="https://github.com$(curl -sS 'https://github.com/hechoendrupal/drupal-console-launcher/releases' | grep -Eo 'href="/.+drupal.phar"' | head -1 | sed 's/^href="//g' | sed 's/"$//g')" \ && DURL="$(curl -s https://api.github.com/repos/hechoendrupal/drupal-console-launcher/releases/latest | awk -F\" '/download.*.phar/{print $(NF-1)}' | head -1)" \
&& curl -sS -L --fail "${DURL}" -L -o /usr/local/bin/drupal \ && curl -sS -L --fail "${DURL}" -L -o /usr/local/bin/drupal \
&& chmod +x /usr/local/bin/drupal \ && chmod +x /usr/local/bin/drupal \
\ \
@@ -254,18 +281,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -283,9 +298,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -311,20 +328,6 @@ RUN set -eux \
&& rm -rf /usr/local/src/mysqldump-secure \ && rm -rf /usr/local/src/mysqldump-secure \
\ \
\ \
# -------------------- phalcon --------------------
&& git clone https://github.com/phalcon/phalcon-devtools /usr/local/src/phalcon-devtools \
&& cd /usr/local/src/phalcon-devtools \
&& git checkout $(git describe --abbrev=0 --tags) \
&& COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer install \
\
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/phalcon-devtools \
&& su - ${MY_USER} -c 'cd /usr/local/src/phalcon-devtools && ./phalcon.sh' \
&& ln -sf /usr/local/src/phalcon-devtools/phalcon /usr/local/bin/phalcon \
&& chmod +x phalcon \
&& cd / \
&& rm -rf /usr/local/src/phalcon-devtools/.git \
\
\
# -------------------- phpcs -------------------- # -------------------- phpcs --------------------
&& curl -sS -L --fail https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar > /usr/local/bin/phpcs \ && curl -sS -L --fail https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar > /usr/local/bin/phpcs \
&& chmod +x /usr/local/bin/phpcs \ && chmod +x /usr/local/bin/phpcs \
@@ -352,62 +355,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -431,12 +443,47 @@ RUN set -eux \
&& COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \ && COMPOSER_HOME="/usr/local/src/composer" COMPOSER_MEMORY_LIMIT=-1 /usr/local/bin/composer-1 global require hirak/prestissimo \
\ \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -486,17 +533,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -513,22 +595,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -536,13 +649,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -589,8 +736,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '7.4' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '7.4' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& drush7 --version | grep -E '7[.0-9]+\s*$' \ && drush7 --version | grep -E '7[.0-9]+\s*$' \
@@ -601,14 +766,13 @@ RUN set -eux \
&& laravel --version | grep -E '(Installer|version)\s*[0-9][.0-9]+' \ && laravel --version | grep -E '(Installer|version)\s*[0-9][.0-9]+' \
&& linkcheck --version | grep -E '^linkcheck\sv[0-9][.0-9]+' \ && linkcheck --version | grep -E '^linkcheck\sv[0-9][.0-9]+' \
&& mysqldump-secure --version | grep -E 'Version:\s*[0-9][.0-9]+' \ && mysqldump-secure --version | grep -E 'Version:\s*[0-9][.0-9]+' \
&& phalcon commands | grep -E '[0-9][.0-9]+' \
&& phpcs --version | grep -E 'version [0-9][.0-9]+' \ && phpcs --version | grep -E 'version [0-9][.0-9]+' \
&& phpcbf --version | grep -E 'version [0-9][.0-9]+' \ && phpcbf --version | grep -E 'version [0-9][.0-9]+' \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \ && phpunit --version | grep -iE '^PHPUnit\s[0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
@@ -617,7 +781,6 @@ RUN set -eux \
&& lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \ && lumen --version 2>/dev/null | grep -E '^Lumen Installer\s[0-9][.0-9]+$' \
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -638,14 +801,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:8.0-prod FROM devilbox/php-fpm:8.0-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -55,20 +55,12 @@ RUN set -eux \
gnupg \ gnupg \
\ \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb http://ftp.debian.org/debian bullseye-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -103,10 +95,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mariadb-client \ mariadb-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +107,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,16 +124,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -150,11 +139,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -169,9 +162,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="--lts" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -179,13 +181,38 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 20691EEC35216C63CAF66CE1656408E390CFB1F5 \
&& echo "deb http://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" > /etc/apt/sources.list.d/mongo.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-org-tools \
mongodb-org-shell \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -207,18 +234,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -236,9 +251,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -286,62 +303,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -350,12 +376,47 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -405,17 +466,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -432,22 +528,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -455,13 +582,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -508,8 +669,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '8.0' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '8.0' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& git-flow version | grep -E '[0-9][.0-9]+' \ && git-flow version | grep -E '[0-9][.0-9]+' \
@@ -520,14 +699,13 @@ RUN set -eux \
&& phpcbf --version | grep -E 'version [0-9][.0-9]+' \ && phpcbf --version | grep -E 'version [0-9][.0-9]+' \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -548,14 +726,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:8.1-prod FROM devilbox/php-fpm:8.1-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -55,20 +55,12 @@ RUN set -eux \
gnupg \ gnupg \
\ \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb http://ftp.debian.org/debian bullseye-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -103,10 +95,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mariadb-client \ mariadb-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +107,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,16 +124,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -150,11 +139,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -169,9 +162,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="--lts" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -179,13 +181,38 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 20691EEC35216C63CAF66CE1656408E390CFB1F5 \
&& echo "deb http://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" > /etc/apt/sources.list.d/mongo.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-org-tools \
mongodb-org-shell \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -207,18 +234,6 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- laravel -------------------- # -------------------- laravel --------------------
&& git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \
&& cd /usr/local/src/laravel-installer \ && cd /usr/local/src/laravel-installer \
@@ -236,9 +251,11 @@ RUN set -eux \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -286,62 +303,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -350,12 +376,47 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -405,17 +466,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -432,22 +528,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -455,13 +582,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -508,8 +669,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '8.1' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '8.1' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& git-flow version | grep -E '[0-9][.0-9]+' \ && git-flow version | grep -E '[0-9][.0-9]+' \
@@ -520,14 +699,13 @@ RUN set -eux \
&& phpcbf --version | grep -E 'version [0-9][.0-9]+' \ && phpcbf --version | grep -E 'version [0-9][.0-9]+' \
&& php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \ && php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -548,14 +726,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:8.2-prod FROM devilbox/php-fpm:8.2-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -55,20 +55,12 @@ RUN set -eux \
gnupg \ gnupg \
\ \
&& apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 \
&& echo "deb http://ftp.debian.org/debian stretch-backports main" > /etc/apt/sources.list.d/backports.list \ && echo "deb http://ftp.debian.org/debian bullseye-backports main" > /etc/apt/sources.list.d/backports.list \
&& curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ && curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \
&& echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 \
&& echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" > /etc/apt/sources.list.d/mongo.list \
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -103,10 +95,10 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
mariadb-client \ mariadb-client \
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -115,7 +107,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -133,16 +124,14 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -150,11 +139,15 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
# -------------------- composer -------------------- # -------------------- composer --------------------
&& curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ && COMPOSER_1_VERSION="latest-1.x" \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && COMPOSER_2_VERSION="latest-2.x" \
\
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
\ \
\ \
# -------------------- pip -------------------- # -------------------- pip --------------------
@@ -169,9 +162,18 @@ RUN set -eux \
\ \
\ \
# -------------------- nvm -------------------- # -------------------- nvm --------------------
&& git clone https://github.com/creationix/nvm /opt/nvm \ && NODE_VERSION="--lts" \
&& cd /opt/nvm \ \
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ && NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p /opt/nvm \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="/opt/nvm" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="/opt/nvm"'; \
@@ -179,13 +181,38 @@ RUN set -eux \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "/opt/nvm" \
\ \
&& su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ && su -c ". /opt/nvm/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ && su -c ". /opt/nvm/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 /opt/nvm \
&& find /opt/nvm -type f -print0 | xargs -n1 -0 chmod go+w \
&& find /opt/nvm -type d -print0 | xargs -n1 -0 chmod 0777 \
\ \
\ \
# -------------------- pgsql_client --------------------
&& curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- mongo_client --------------------
&& APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 20691EEC35216C63CAF66CE1656408E390CFB1F5 \
&& echo "deb http://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" > /etc/apt/sources.list.d/mongo.list \
&& apt-get update \
\
&& apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-org-tools \
mongodb-org-shell \
\
&& rm -rf /var/lib/apt/lists/* \
\
# -------------------- awesomeci -------------------- # -------------------- awesomeci --------------------
&& git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \
&& cd /usr/local/src/awesome-ci \ && cd /usr/local/src/awesome-ci \
@@ -207,27 +234,17 @@ RUN set -eux \
&& cd / && rm -rf /tmp/gitflow \ && cd / && rm -rf /tmp/gitflow \
\ \
\ \
# -------------------- homebrew --------------------
&& git clone https://github.com/Homebrew/brew.git /usr/local/src/brew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/brew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/brew/bin:/usr/local/src/brew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/brew/manpages:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/brew/manpages:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/brew/bin/brew config' \
\
\
# -------------------- linkcheck -------------------- # -------------------- linkcheck --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ && curl -sS -L --fail https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \ && chmod +x /usr/local/bin/linkcheck \
\ \
\ \
# -------------------- mhsendmail -------------------- # -------------------- mhsendmail --------------------
&& curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
\ \
\ \
# -------------------- mysqldumpsecure -------------------- # -------------------- mysqldumpsecure --------------------
@@ -270,62 +287,71 @@ RUN set -eux \
\ \
\ \
# -------------------- symfony -------------------- # -------------------- symfony --------------------
&& SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" \ && VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')" \
&& curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony \ && curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& chmod +x /usr/local/bin/symfony \ && dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
\
\ \
# -------------------- wkhtmltopdf -------------------- # -------------------- wkhtmltopdf --------------------
&& VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" \ && VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )" \
&& DEBIAN_FRONTEND=noninteractive apt-get update -qq \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
\ \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
\ \
\ \
# -------------------- wpcli -------------------- # -------------------- wpcli --------------------
&& curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ && curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \
&& chmod +x /usr/local/bin/wp \ && chmod +x /usr/local/bin/wp \
\ \
# -------------------- cleanup --------------------
&& rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \
\
\ \
\ \
&& (rm -rf /root/.gem || true ) \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /root/.cache || true) \ && (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /root/.composer || true) \ && (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /root/.config || true) \ && (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /root/.npm || true) \ && (rm -rf /home/devilbox/.config || true) \
\ && (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.cache || true) \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.config || true) \ && (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.npm || true) \ && (rm -rf /home/devilbox/.node || true) \
\ && (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -334,12 +360,47 @@ RUN set -eux \
### ###
RUN set -eux \ RUN set -eux \
\ \
&& rm -rf /tmp/* \ \
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -389,17 +450,52 @@ RUN set -eux \
&& su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \ && su -c '. /opt/nvm/nvm.sh; npm install -g --force webpack-cli' devilbox \
\ \
\ \
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "/opt/nvm/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
&& (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /opt/nvm -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -416,22 +512,53 @@ RUN set -eux \
&& gem install mdl -v 0.5.0 \ && gem install mdl -v 0.5.0 \
\ \
\ \
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
### Install pip (Python) packages ### Install pip (Python) packages
### ###
RUN set -eux \ RUN set -eux \
# -------------------- ansible --------------------
&& pip install --no-cache-dir --force-reinstall ansible==3.4.0 || true \
\
# -------------------- yamllint -------------------- # -------------------- yamllint --------------------
&& pip install --no-cache-dir --force-reinstall yamllint || true \ && pip install --no-cache-dir --force-reinstall yamllint || true \
\ \
@@ -439,13 +566,47 @@ RUN set -eux \
&& pip install --no-cache-dir --force-reinstall yq || true \ && pip install --no-cache-dir --force-reinstall yq || true \
\ \
\ \
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.*json || true) \
&& (rm -rf /home/devilbox/.ansible || true) \
&& (rm -rf /home/devilbox/.cache || true) \
&& (rm -rf /home/devilbox/.composer || true) \
&& (rm -rf /home/devilbox/.config || true) \
&& (rm -rf /home/devilbox/.console || true) \
&& (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -492,8 +653,26 @@ RUN set -eux \
RUN set -eux \ RUN set -eux \
# -------------------- Software -------------------- # -------------------- Software --------------------
&& composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' \ && composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' \ && su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. /opt/nvm/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
\
&& if echo '8.2' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
\
&& if echo '8.2' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
\
&& regex-grep --version | grep -E '[0-9][.0-9]+' \ && regex-grep --version | grep -E '[0-9][.0-9]+' \
&& dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \ && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[0-9][.0-9]+' \
&& git-flow version | grep -E '[0-9][.0-9]+' \ && git-flow version | grep -E '[0-9][.0-9]+' \
@@ -502,14 +681,13 @@ RUN set -eux \
&& phpcs --version | grep -E 'version [0-9][.0-9]+' \ && phpcs --version | grep -E 'version [0-9][.0-9]+' \
&& phpcbf --version | grep -E 'version [0-9][.0-9]+' \ && phpcbf --version | grep -E 'version [0-9][.0-9]+' \
&& phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \ && phpmd --version | grep -E '^PHPMD [0-9][.0-9]+' \
&& symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' \ && symfony -V | grep -Ei 'version\s[0-9][.0-9]+' \
&& wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" \ && if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi \
&& wp --allow-root --version | grep -E '[0-9][.0-9]+' \ && wp --allow-root --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Composer -------------------- # -------------------- Composer --------------------
\ \
# -------------------- PIP -------------------- # -------------------- PIP --------------------
&& ansible --version | grep -E '^ansible [0-9][.0-9]+$' \
&& yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \ && yamllint --version 2>&1 | grep -E '[0-9][.0-9]+' \
&& yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \ && yq --version 2>&1 | grep -E '^yq\s+[0-9][.0-9]+$' \
\ \
@@ -530,14 +708,42 @@ RUN set -eux \
&& mdl --version | grep -E '[0-9][.0-9]+' \ && mdl --version | grep -E '[0-9][.0-9]+' \
\ \
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ && (rm -rf /home/devilbox/.*json || true) \
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/.ansible || true) \
&& rm -rf /root/.console \ && (rm -rf /home/devilbox/.cache || true) \
&& rm -rf /root/.composer \ && (rm -rf /home/devilbox/.composer || true) \
&& rm -rf /root/.drush \ && (rm -rf /home/devilbox/.config || true) \
&& rm -rf /root/.pm2 \ && (rm -rf /home/devilbox/.console || true) \
&& rm -rf /tmp/* \ && (rm -rf /home/devilbox/.drush || true) \
&& (rm -rf /home/devilbox/.gem || true) \
&& (rm -rf /home/devilbox/.local || true) \
&& (rm -rf /home/devilbox/.node || true) \
&& (rm -rf /home/devilbox/.npm || true) \
&& (rm -rf /home/devilbox/.pm2 || true) \
&& (rm -rf /home/devilbox/.subversion || true) \
&& (rm -rf /home/devilbox/.v8* || true) \
&& (rm -rf /home/devilbox/node_modules || true) \
&& (rm -rf /home/devilbox/yarn.lock || true) \
\
&& (rm -rf /root/.*json || true) \
&& (rm -rf /root/.ansible || true) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.console || true) \
&& (rm -rf /root/.drush || true) \
&& (rm -rf /root/.gem || true) \
&& (rm -rf /root/.local || true) \
&& (rm -rf /root/.node || true) \
&& (rm -rf /root/.npm || true) \
&& (rm -rf /root/.pm2 || true) \
&& (rm -rf /root/.subversion || true) \
&& (rm -rf /root/.v8* || true) \
&& (rm -rf /root/node_modules || true) \
&& (rm -rf /root/yarn.lock || true) \
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

658
Makefile
View File

@@ -2,109 +2,87 @@ ifneq (,)
.error This Makefile requires GNU Make. .error This Makefile requires GNU Make.
endif endif
# Ensure additional Makefiles are present
# ------------------------------------------------------------------------------------------------- MAKEFILES = Makefile.docker Makefile.lint
# Docker configuration $(MAKEFILES): URL=https://raw.githubusercontent.com/devilbox/makefiles/master/$(@)
# ------------------------------------------------------------------------------------------------- $(MAKEFILES):
@if ! (curl --fail -sS -o $(@) $(URL) || wget -O $(@) $(URL)); then \
CURRENT_DIR = $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) echo "Error, curl or wget required."; \
echo "Exiting."; \
DIR = Dockerfiles false; \
IMAGE = devilbox/php-fpm
ARCH = linux/amd64
NO_CACHE =
PHP_EXT_DIR =
# Run checks after each module has been installed (slow, but yields errors faster)
FAIL_FAST = False
# File lint
FL_VERSION = 0.3
FL_IGNORES = .git/,.github/
# -------------------------------------------------------------------------------------------------
# DEFAULT TARGET
# -------------------------------------------------------------------------------------------------
help:
@echo
@echo " _ _ _ _ __ _ ___ "
@echo " _| |___ _ _<_| | |_ _____ / ___| |_ ___ ___| | ___._ _ _ "
@echo " / . / ._| | | | | . / . \ \// | . | . | . |___| || . | ' ' |"
@echo " \___\___|__/|_|_|___\___/\_/_/| _|_|_| _/ |_|| _|_|_|_|"
@echo " |_| |_| |_| "
@echo
@echo
@echo "Targets"
@echo "--------------------------------------------------------------------------------"
@echo
@echo "lint Lint project files and repository"
@echo
@echo "gen-readme [VERSION=] Update README with PHP modules from built images."
@echo "gen-dockerfiles [FAIL_FAST=] Generate Dockerfiles from templates."
@echo
@echo "build-base VERSION= [ARGS=] Build base image by specified version"
@echo "build-mods VERSION= [ARGS=] Build mods image by specified version"
@echo "build-prod VERSION= [ARGS=] Build prod image by specified version"
@echo "build-work VERSION= [ARGS=] Build work image by specified version"
@echo
@echo "rebuild-base VERSION= [ARGS=] Rebuild base image by specified version"
@echo "rebuild-mods VERSION= [ARGS=] Rebuild mods image by specified version"
@echo "rebuild-prod VERSION= [ARGS=] Rebuild prod image by specified version"
@echo "rebuild-work VERSION= [ARGS=] Rebuild work image by specified version"
@echo
@echo "test-base VERSION= Test base image by specified version"
@echo "test-mods VERSION= Test mods image by specified version"
@echo "test-prod VERSION= Test prod image by specified version"
@echo "test-work VERSION= Test work image by specified version"
@echo
@echo
@echo "Variables"
@echo "--------------------------------------------------------------------------------"
@echo
@echo "VERSION One of '5.2', '5.3', '5.4', '5.5', '5.6', '7.0',"
@echo " '7.1', '7.2', '7.3', '7.4', '8.0', '8.1', '8.2'."
@echo " For gen-readme target it is optional and if not"
@echo " specified, it will generate for all versions."
@echo
@echo "FAIL_FAST Either 'True' or 'False' (defaults to 'False')."
@echo " If set to 'True', each module install has an"
@echo " immediate check, which is very slow for CI, but"
@echo " yields errors immediately."
@echo " If set to 'False', checks are done at the end."
@echo
@echo "ARGS Can be added to all build-* and rebuild-* targets"
@echo " to supply additional docker build options."
# -------------------------------------------------------------------------------------------------
# Lint Targets
# -------------------------------------------------------------------------------------------------
lint: lint-files
lint: lint-yaml
lint: lint-changelog
lint: lint-workflow
lint-workflow:
@echo "################################################################################"
@echo "# Lint Workflow"
@echo "################################################################################"
@\
GIT_CURR_MAJOR="$$( git tag | sort -V | tail -1 | sed 's|\.[0-9]*$$||g' )"; \
GIT_CURR_MINOR="$$( git tag | sort -V | tail -1 | sed 's|^[0-9]*\.||g' )"; \
GIT_NEXT_TAG="$${GIT_CURR_MAJOR}.$$(( GIT_CURR_MINOR + 1 ))"; \
if ! grep 'refs:' -A 100 .github/workflows/nightly.yml \
| grep " - '$${GIT_NEXT_TAG}'" >/dev/null; then \
echo "[ERR] New Tag required in .github/workflows/nightly.yml: $${GIT_NEXT_TAG}"; \
exit 1; \
else \
echo "[OK] Git Tag present in .github/workflows/nightly.yml: $${GIT_NEXT_TAG}"; \
fi fi
include $(MAKEFILES)
# Set default Target
.DEFAULT_GOAL := help
# -------------------------------------------------------------------------------------------------
# Default configuration
# -------------------------------------------------------------------------------------------------
# Own vars
TAG = latest
# Makefile.docker overwrites
NAME = PHP
#VERSION = 5.5
IMAGE = devilbox/php-fpm
#FLAVOUR = debian
#STAGE = base
FILE = Dockerfile-$(VERSION)
DIR = Dockerfiles/$(STAGE)
ifeq ($(strip $(TAG)),latest)
DOCKER_TAG = $(VERSION)-$(STAGE)
BASE_TAG = $(VERSION)-base
MODS_TAG = $(VERSION)-mods
PROD_TAG = $(VERSION)-prod
WORK_TAG = $(VERSION)-work
else
DOCKER_TAG = $(VERSION)-$(STAGE)-$(TAG)
BASE_TAG = $(VERSION)-base-$(TAG)
MODS_TAG = $(VERSION)-mods-$(TAG)
PROD_TAG = $(VERSION)-prod-$(TAG)
WORK_TAG = $(VERSION)-work-$(TAG)
endif
ARCH = linux/amd64
# Makefile.lint overwrites
FL_IGNORES = .git/,.github/,tests/
SC_IGNORES = .git/,.github/,tests/
# -------------------------------------------------------------------------------------------------
# Default Target
# -------------------------------------------------------------------------------------------------
.PHONY: help
help:
@echo "lint Lint project files and repository"
@echo
@echo "build [ARCH=...] [TAG=...] Build Docker image"
@echo "rebuild [ARCH=...] [TAG=...] Build Docker image without cache"
@echo "push [ARCH=...] [TAG=...] Push Docker image to Docker hub"
@echo
@echo "manifest-create [ARCHES=...] [TAG=...] Create multi-arch manifest"
@echo "manifest-push [TAG=...] Push multi-arch manifest"
@echo
@echo "test [ARCH=...] Test built Docker image"
@echo @echo
# -------------------------------------------------------------------------------------------------
# Overwrite Targets
# -------------------------------------------------------------------------------------------------
# Append additional target to lint
lint: lint-changelog
lint: lint-ansible
###
### Ensures CHANGELOG has an entry
###
.PHONY: lint-changelog
lint-changelog: lint-changelog:
@echo "################################################################################" @echo "################################################################################"
@echo "# Lint Changelog" @echo "# Lint Changelog"
@@ -121,46 +99,119 @@ lint-changelog:
fi fi
@echo @echo
lint-files: ###
@echo "################################################################################" ### Ensures Ansible Dockerfile generation is current
@echo "# Lint Files" ###
@echo "################################################################################" .PHONY: lint-ansible
@docker run --rm $$(tty -s && echo "-it" || echo) -v $(CURRENT_DIR):/data cytopia/file-lint:$(FL_VERSION) file-cr --text --ignore '$(FL_IGNORES)' --path . lint-ansible: gen-dockerfiles
@docker run --rm $$(tty -s && echo "-it" || echo) -v $(CURRENT_DIR):/data cytopia/file-lint:$(FL_VERSION) file-crlf --text --ignore '$(FL_IGNORES)' --path . @git diff --quiet || { echo "Build Changes"; git diff; git status; false; }
@docker run --rm $$(tty -s && echo "-it" || echo) -v $(CURRENT_DIR):/data cytopia/file-lint:$(FL_VERSION) file-trailing-single-newline --text --ignore '$(FL_IGNORES)' --path .
@docker run --rm $$(tty -s && echo "-it" || echo) -v $(CURRENT_DIR):/data cytopia/file-lint:$(FL_VERSION) file-trailing-space --text --ignore '$(FL_IGNORES)' --path .
@docker run --rm $$(tty -s && echo "-it" || echo) -v $(CURRENT_DIR):/data cytopia/file-lint:$(FL_VERSION) file-utf8 --text --ignore '$(FL_IGNORES)' --path .
@docker run --rm $$(tty -s && echo "-it" || echo) -v $(CURRENT_DIR):/data cytopia/file-lint:$(FL_VERSION) file-utf8-bom --text --ignore '$(FL_IGNORES)' --path .
@echo
lint-yaml:
@# Lint all files
@echo "################################################################################"
@echo "# Lint Yaml"
@echo "################################################################################"
@docker run --rm $$(tty -s && echo "-it" || echo) -v $(CURRENT_DIR):/data cytopia/yamllint .
@echo
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
# GENERATE TARGETS # Docker Targets
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
gen-readme: # ---- ONLY FOR "mods" images ----
ifeq ($(strip $(VERSION)),) # When builds mods, we have a builder image and then copy everything to the final
@echo "Generate README.md for all PHP versions" # target image. In order to do so, we pass a build-arg EXT_DIR, which contains
cd build; ./gen-readme.sh $(ARCH) # the variable directory of extensions to copy.
else # The only way to "LAZY" fetch it, is by doing a call to the base image and populate
@echo "Generate README.md for PHP $(VERSION)" # a Makefile variable with its value upon call.
@$(MAKE) --no-print-directory _check-version ifeq ($(strip $(STAGE)),mods)
@$(MAKE) --no-print-directory _check-image-exists _EXIST_IMAGE=base EXT_DIR=$$( docker run --rm --platform $(ARCH) --entrypoint=php $(IMAGE):$(BASE_TAG) -r \
@$(MAKE) --no-print-directory _check-image-exists _EXIST_IMAGE=mods 'echo ini_get("extension_dir");'\
cd build; ./gen-readme.sh $(ARCH) $(VERSION) )
endif endif
# Use Buldkit for building
export DOCKER_BUILDKIT=1
.PHONY: build
build: check-stage-is-set
build: check-parent-image-exists
build: ARGS+=--build-arg EXT_DIR=$(EXT_DIR)
build: docker-arch-build
.PHONY: rebuild
rebuild: check-stage-is-set
rebuild: check-parent-image-exists
rebuild: ARGS+=--build-arg EXT_DIR=$(EXT_DIR)
rebuild: docker-arch-rebuild
.PHONY: push
push: check-stage-is-set
push: check-version-is-set
push: docker-arch-push
.PHONY: tag
tag: check-stage-is-set
tag: check-version-is-set
tag:
docker tag $(IMAGE):$(VERSION)-$(STAGE) $(IMAGE):$(DOCKER_TAG)
# -------------------------------------------------------------------------------------------------
# Save / Load Targets
# -------------------------------------------------------------------------------------------------
.PHONY: save
save: check-stage-is-set
save: check-version-is-set
save: check-current-image-exists
save: docker-save
.PHONY: load
load: docker-load
.PHONY: save-verify
save-verify: save
save-verify: load
# -------------------------------------------------------------------------------------------------
# Manifest Targets
# -------------------------------------------------------------------------------------------------
.PHONY: manifest-create
manifest-create: docker-manifest-create
.PHONY: manifest-push
manifest-push: docker-manifest-push
# -------------------------------------------------------------------------------------------------
# Test Targets
# -------------------------------------------------------------------------------------------------
.PHONY: test
test: check-stage-is-set
test: check-current-image-exists
test: test-integration
.PHONY: test-integration
test-integration:
./tests/test.sh $(IMAGE) $(ARCH) $(VERSION) $(STAGE) $(DOCKER_TAG)
# -------------------------------------------------------------------------------------------------
# Generate Targets
# -------------------------------------------------------------------------------------------------
###
### Generate README (requires images to be built)
###
.PHONY: gen-readme
gen-readme: check-version-is-set
gen-readme:
@echo "################################################################################"
@echo "# Generate README.md for PHP $(VERSION) ($(IMAGE):$(DOCKER_TAG)) on $(ARCH)"
@echo "################################################################################"
./build/gen-readme.sh $(IMAGE) $(ARCH) $(BASE_TAG) $(MODS_TAG) $(VERSION)
git diff --quiet || { echo "Build Changes"; git diff; git status; false; }
###
### Generate Dockerfiles
###
.PHONY: gen-dockerfiles
gen-dockerfiles: gen-dockerfiles:
docker run --rm \ docker run --rm \
--platform $(ARCH) \
$$(tty -s && echo "-it" || echo) \ $$(tty -s && echo "-it" || echo) \
-e USER=ansible \ -e USER=ansible \
-e MY_UID=$$(id -u) \ -e MY_UID=$$(id -u) \
@@ -175,253 +226,118 @@ gen-dockerfiles:
--diff $(ARGS) --diff $(ARGS)
# -------------------------------------------------------------------------------------------------
# BUILD TARGETS
# -------------------------------------------------------------------------------------------------
build-base: _check-version
build-base:
docker build $(NO_CACHE) \
--platform $(ARCH) \
--label "org.opencontainers.image.created"="$$(date --rfc-3339=s)" \
--label "org.opencontainers.image.version"="$$(git rev-parse --abbrev-ref HEAD)" \
--label "org.opencontainers.image.revision"="$$(git rev-parse HEAD))" \
$(ARGS) \
-t $(IMAGE):${VERSION}-base \
-f $(DIR)/base/Dockerfile-${VERSION} $(DIR)/base
build-mods: _check-version
build-mods: _EXIST_IMAGE=base
build-mods: _check-image-exists
build-mods:
ifeq ($(strip $(TARGET)),)
docker build $(NO_CACHE) \
--platform $(ARCH) \
--target builder \
-t $(IMAGE):$(VERSION)-mods \
-f $(DIR)/mods/Dockerfile-$(VERSION) $(DIR)/mods;
@# $(NO_CACHE) is removed, as it would otherwise rebuild the 'builder' image again.
docker build \
--platform $(ARCH) \
--target final \
--label "org.opencontainers.image.created"="$$(date --rfc-3339=s)" \
--label "org.opencontainers.image.version"="$$(git rev-parse --abbrev-ref HEAD)" \
--label "org.opencontainers.image.revision"="$$(git rev-parse HEAD)" \
--build-arg EXT_DIR="$$( docker run --rm --platform $(ARCH) --entrypoint=php $(IMAGE):$(VERSION)-mods -i \
| grep ^extension_dir \
| awk -F '=>' '{print $$2}' \
| xargs \
)" \
$(ARGS) \
-t $(IMAGE):$(VERSION)-mods \
-f $(DIR)/mods/Dockerfile-$(VERSION) $(DIR)/mods;
else
docker build $(NO_CACHE) \
--platform $(ARCH) \
--target $(TARGET) \
--label "org.opencontainers.image.created"="$$(date --rfc-3339=s)" \
--label "org.opencontainers.image.version"="$$(git rev-parse --abbrev-ref HEAD)" \
--label "org.opencontainers.image.revision"="$$(git rev-parse HEAD)" \
$(ARGS) \
-t $(IMAGE):$(VERSION)-mods \
-f $(DIR)/mods/Dockerfile-$(VERSION) $(DIR)/mods
endif
build-prod: _check-version
build-prod: _EXIST_IMAGE=mods
build-prod: _check-image-exists
build-prod:
docker build $(NO_CACHE) \
--platform $(ARCH) \
--label "org.opencontainers.image.created"="$$(date --rfc-3339=s)" \
--label "org.opencontainers.image.version"="$$(git rev-parse --abbrev-ref HEAD)" \
--label "org.opencontainers.image.revision"="$$(git rev-parse HEAD)" \
$(ARGS) \
-t $(IMAGE):${VERSION}-prod \
-f $(DIR)/prod/Dockerfile-${VERSION} $(DIR)/prod
build-work: _check-version
build-work: _EXIST_IMAGE=prod
build-work: _check-image-exists
build-work:
docker build $(NO_CACHE) \
--platform $(ARCH) \
--label "org.opencontainers.image.created"="$$(date --rfc-3339=s)" \
--label "org.opencontainers.image.version"="$$(git rev-parse --abbrev-ref HEAD)" \
--label "org.opencontainers.image.revision"="$$(git rev-parse HEAD)" \
$(ARGS) \
-t $(IMAGE):${VERSION}-work \
-f $(DIR)/work/Dockerfile-${VERSION} $(DIR)/work
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
# REBUILD TARGETS # HELPER TARGETS
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
rebuild-base: _pull-base-image ###
rebuild-base: NO_CACHE=--no-cache ### Ensures the VERSION variable is set
rebuild-base: build-base ###
.PHONY: check-version-is-set
check-version-is-set:
@if [ "$(VERSION)" = "" ]; then \
echo "This make target requires the VERSION variable to be set."; \
echo "make <target> VERSION="; \
echo "Exiting."; \
exit 1; \
fi
###
### Ensures the STAGE variable is set
###
.PHONY: check-stage-is-set
check-stage-is-set:
@if [ "$(STAGE)" = "" ]; then \
echo "This make target requires the STAGE variable to be set."; \
echo "make <target> STAGE="; \
echo "Exiting."; \
exit 1; \
fi
@if [ "$(STAGE)" != "base" ] && [ "$(STAGE)" != "mods" ] && [ "$(STAGE)" != "prod" ] && [ "$(STAGE)" != "work" ]; then \
echo "Error, Flavour can only be one of 'base', 'mods', 'prod', or 'work'."; \
echo "Exiting."; \
exit 1; \
fi
rebuild-mods: NO_CACHE=--no-cache ###
rebuild-mods: build-mods ### Checks if current image exists and is of correct architecture
###
.PHONY: check-current-image-exists
rebuild-prod: NO_CACHE=--no-cache check-current-image-exists: check-stage-is-set
rebuild-prod: build-prod check-current-image-exists:
@if [ "$$( docker images -q $(IMAGE):$(DOCKER_TAG) )" = "" ]; then \
>&2 echo "Docker image '$(IMAGE):$(DOCKER_TAG)' was not found locally."; \
rebuild-work: NO_CACHE=--no-cache
rebuild-work: build-work
# -------------------------------------------------------------------------------------------------
# TEST TARGETS
# -------------------------------------------------------------------------------------------------
test-base: _check-version
test-base: _EXIST_IMAGE=base
test-base: _check-image-exists
test-base:
./tests/test.sh $(IMAGE) $(ARCH) $(VERSION) base
test-mods: _check-version
test-mods: _EXIST_IMAGE=mods
test-mods: _check-image-exists
test-mods: _check-version
./tests/test.sh $(IMAGE) $(ARCH) $(VERSION) mods
test-prod: _check-version
test-prod: _EXIST_IMAGE=prod
test-prod: _check-image-exists
test-prod: _check-version
./tests/test.sh $(IMAGE) $(ARCH) $(VERSION) prod
test-work: _check-version
test-work: _EXIST_IMAGE=work
test-work: _check-image-exists
test-work: _check-version
./tests/test.sh $(IMAGE) $(ARCH) $(VERSION) work
# -------------------------------------------------------------------------------------------------
# DOCKERHUB TARGETS
# -------------------------------------------------------------------------------------------------
login:
ifeq ($(strip $(USERNAME)),)
@$(info This make target requires the USERNAME variable to be set.)
@$(info make login USERNAME= PASSWORD=)
@$(info )
@$(error Exiting)
endif
ifeq ($(strip $(PASSWORD)),)
@$(info This make target requires the PASSWORD variable to be set.)
@$(info make login USERNAME= PASSWORD=)
@$(info )
@$(error Exiting)
endif
@yes | docker login --username $(USERNAME) --password $(PASSWORD)
push:
ifeq ($(strip $(TAG)),)
@$(info This make target requires the TAG variable to be set.)
@$(info make push TAG=)
@$(info )
@$(error Exiting)
endif
docker push $(IMAGE):$(TAG)
tag:
ifeq ($(strip $(OLD_TAG)),)
@$(info This make target requires the OLD_TAG variable to be set.)
@$(info make tag OLD_TAG= NEW_TAG=)
@$(info )
@$(error Exiting)
endif
ifeq ($(strip $(NEW_TAG)),)
@$(info This make target requires the NEW_TAG variable to be set.)
@$(info make tag OLD_TAG= NEW_TAG=)
@$(info )
@$(error Exiting)
endif
docker tag $(IMAGE):$(OLD_TAG) $(IMAGE):$(NEW_TAG)
# -------------------------------------------------------------------------------------------------
# HELPER TARGETS
# -------------------------------------------------------------------------------------------------
_check-version:
ifeq ($(strip $(VERSION)),)
@$(info This make target requires the VERSION variable to be set.)
@$(info make build-<flavour> VERSION=7.3)
@$(info )
@$(error Exiting)
endif
ifeq ($(VERSION),5.2)
else
ifeq ($(VERSION),5.3)
else
ifeq ($(VERSION),5.4)
else
ifeq ($(VERSION),5.5)
else
ifeq ($(VERSION),5.6)
else
ifeq ($(VERSION),7.0)
else
ifeq ($(VERSION),7.1)
else
ifeq ($(VERSION),7.2)
else
ifeq ($(VERSION),7.3)
else
ifeq ($(VERSION),7.4)
else
ifeq ($(VERSION),8.0)
else
ifeq ($(VERSION),8.1)
else
ifeq ($(VERSION),8.2)
else
@$(info VERSION can only be: '5.2', '5.3', '5.4', '5.5', '5.6', '7.0', '7.1', '7.2', '7.3', '7.4', '8.0', '8.1' or '8.2')
@$(info )
@$(error Exiting)
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
endif
@echo "Version $(VERSION) is valid"
_check-image-exists:
@if [ "$$(docker images -q $(IMAGE):$(VERSION)-$(_EXIST_IMAGE))" = "" ]; then \
>&2 echo "Docker image '$(IMAGE):$(VERSION)-$(_EXIST_IMAGE)' was not found locally."; \
>&2 echo "Either build it first or explicitly pull it from Dockerhub."; \ >&2 echo "Either build it first or explicitly pull it from Dockerhub."; \
>&2 echo "This is a safeguard to not automatically pull the Docker image."; \ >&2 echo "This is a safeguard to not automatically pull the Docker image."; \
>&2 echo; \ >&2 echo; \
false; \ exit 1; \
else \
echo "OK: Image $(IMAGE):$(DOCKER_TAG) exists"; \
fi; \
OS="$$( docker image inspect $(IMAGE):$(DOCKER_TAG) --format '{{.Os}}' )"; \
ARCH="$$( docker image inspect $(IMAGE):$(DOCKER_TAG) --format '{{.Architecture}}' )"; \
if [ "$${OS}/$${ARCH}" != "$(ARCH)" ]; then \
>&2 echo "Docker image '$(IMAGE):$(DOCKER_TAG)' has invalid architecture: $${OS}/$${ARCH}"; \
>&2 echo "Expected: $(ARCH)"; \
>&2 echo; \
exit 1; \
else \
echo "OK: Image $(IMAGE):$(DOCKER_TAG) is of arch $${OS}/$${ARCH}"; \
fi
###
### Checks if parent image exists and is of correct architecture
###
.PHONY: check-parent-image-exists
check-parent-image-exists: check-stage-is-set
check-parent-image-exists:
@if [ "$(STAGE)" = "work" ]; then \
if [ "$$( docker images -q $(IMAGE):$(PROD_TAG) )" = "" ]; then \
>&2 echo "Docker image '$(IMAGE):$(PROD_TAG)' was not found locally."; \
>&2 echo "Either build it first or explicitly pull it from Dockerhub."; \
>&2 echo "This is a safeguard to not automatically pull the Docker image."; \
>&2 echo; \
exit 1; \
fi; \
OS="$$( docker image inspect $(IMAGE):$(PROD_TAG) --format '{{.Os}}' )"; \
ARCH="$$( docker image inspect $(IMAGE):$(PROD_TAG) --format '{{.Architecture}}' )"; \
if [ "$${OS}/$${ARCH}" != "$(ARCH)" ]; then \
>&2 echo "Docker image '$(IMAGE):$(PROD_TAG)' has invalid architecture: $${OS}/$${ARCH}"; \
>&2 echo "Expected: $(ARCH)"; \
>&2 echo; \
exit 1; \
fi; \
elif [ "$(STAGE)" = "prod" ]; then \
if [ "$$( docker images -q $(IMAGE):$(MODS_TAG) )" = "" ]; then \
>&2 echo "Docker image '$(IMAGE):$(MODS_TAG)' was not found locally."; \
>&2 echo "Either build it first or explicitly pull it from Dockerhub."; \
>&2 echo "This is a safeguard to not automatically pull the Docker image."; \
>&2 echo; \
exit 1; \
fi; \
OS="$$( docker image inspect $(IMAGE):$(MODS_TAG) --format '{{.Os}}' )"; \
ARCH="$$( docker image inspect $(IMAGE):$(MODS_TAG) --format '{{.Architecture}}' )"; \
if [ "$${OS}/$${ARCH}" != "$(ARCH)" ]; then \
>&2 echo "Docker image '$(IMAGE):$(MODS_TAG)' has invalid architecture: $${OS}/$${ARCH}"; \
>&2 echo "Expected: $(ARCH)"; \
>&2 echo; \
exit 1; \
fi; \
elif [ "$(STAGE)" = "mods" ]; then \
if [ "$$( docker images -q $(IMAGE):$(BASE_TAG) )" = "" ]; then \
>&2 echo "Docker image '$(IMAGE):$(BASE_TAG)' was not found locally."; \
>&2 echo "Either build it first or explicitly pull it from Dockerhub."; \
>&2 echo "This is a safeguard to not automatically pull the Docker image."; \
>&2 echo; \
exit 1; \
fi; \
OS="$$( docker image inspect $(IMAGE):$(BASE_TAG) --format '{{.Os}}' )"; \
ARCH="$$( docker image inspect $(IMAGE):$(BASE_TAG) --format '{{.Architecture}}' )"; \
if [ "$${OS}/$${ARCH}" != "$(ARCH)" ]; then \
>&2 echo "Docker image '$(IMAGE):$(BASE_TAG)' has invalid architecture: $${OS}/$${ARCH}"; \
>&2 echo "Expected: $(ARCH)"; \
>&2 echo; \
exit 1; \
fi; \
fi; fi;
_pull-base-image:
@echo "Pulling root image for PHP ${VERSION}"
docker pull --platform $(ARCH) $(shell grep FROM $(DIR)/base/Dockerfile-${VERSION} | sed 's/^FROM\s*//g';)

View File

@@ -9,6 +9,8 @@
[![License](https://img.shields.io/badge/license-MIT-%233DA639.svg)](https://opensource.org/licenses/MIT) [![License](https://img.shields.io/badge/license-MIT-%233DA639.svg)](https://opensource.org/licenses/MIT)
**Available Architectures:** `amd64`, `arm64`
This repository will provide you fully functional PHP-FPM Docker images in different flavours, This repository will provide you fully functional PHP-FPM Docker images in different flavours,
versions and packed with different types of integrated PHP modules. It also solves the problem of **[syncronizing file permissions](#unsynchronized-permissions)** of mounted volumes between the host and the container. versions and packed with different types of integrated PHP modules. It also solves the problem of **[syncronizing file permissions](#unsynchronized-permissions)** of mounted volumes between the host and the container.
@@ -658,23 +660,23 @@ Check out this table to see which Docker image provides what PHP modules.
<tbody> <tbody>
<tr> <tr>
<th>5.2</th> <th>5.2</th>
<td id="52-base">ctype, curl, date, dom, filter, hash, iconv, json, libxml, mbstring, mysql, mysqli, openssl, pcre, PDO, pdo_mysql, pdo_sqlite, posix, readline, Reflection, session, SimpleXML, soap, SPL, SQLite, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td> <td id="52-base">ctype, curl, date, dom, filter, ftp, hash, iconv, json, libxml, mbstring, mhash, openssl, pcre, PDO, pdo_sqlite, posix, readline, recode, Reflection, session, SimpleXML, SPL, SQLite, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="52-mods">amqp, bcmath, bz2, calendar, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, igbinary, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, msgpack, mysql, mysqli, OAuth, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, SQLite, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td> <td id="52-mods">amqp, bcmath, bz2, calendar, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, hash, iconv, igbinary, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mhash, mongo, msgpack, mysql, mysqli, OAuth, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, SQLite, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib</td>
</tr> </tr>
<tr> <tr>
<th>5.3</th> <th>5.3</th>
<td id="53-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, hash, iconv, json, libxml, mysql, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, recode, Reflection, session, SimpleXML, SPL, SQLite, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td> <td id="53-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mhash, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, recode, Reflection, session, SimpleXML, SPL, SQLite, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="53-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, msgpack, mysql, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, SQLite, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td> <td id="53-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mhash, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, SQLite, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td>
</tr> </tr>
<tr> <tr>
<th>5.4</th> <th>5.4</th>
<td id="54-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, hash, iconv, json, libxml, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, recode, Reflection, session, SimpleXML, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td> <td id="54-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mhash, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, recode, Reflection, session, SimpleXML, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="54-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, psr, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td> <td id="54-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mhash, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, psr, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td>
</tr> </tr>
<tr> <tr>
<th>5.5</th> <th>5.5</th>
<td id="55-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td> <td id="55-base">Core, ctype, curl, date, dom, ereg, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mhash, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, recode, Reflection, session, SimpleXML, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="55-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, ioncube, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, psr, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td> <td id="55-mods">amqp, apc, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, ereg, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, ioncube, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mhash, mongo, mongodb, msgpack, mysql, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, phalcon, Phar, posix, pspell, psr, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, wddx, xdebug, xml, xmlreader, xmlrpc, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td>
</tr> </tr>
<tr> <tr>
<th>5.6</th> <th>5.6</th>
@@ -709,12 +711,12 @@ Check out this table to see which Docker image provides what PHP modules.
<tr> <tr>
<th>8.0</th> <th>8.0</th>
<td id="80-base">Core, ctype, curl, date, dom, FFI, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td> <td id="80-base">Core, ctype, curl, date, dom, FFI, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="80-mods">amqp, apcu, bcmath, blackfire, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_OCI, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, pspell, psr, rdkafka, readline, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, solr, SPL, sqlite3, sqlsrv, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, xdebug, xlswriter, xml, xmlreader, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td> <td id="80-mods">amqp, apcu, bcmath, blackfire, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, mbstring, mcrypt, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_OCI, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, pspell, psr, rdkafka, readline, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, solr, SPL, sqlite3, sqlsrv, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, vips, xdebug, xlswriter, xml, xmlreader, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td>
</tr> </tr>
<tr> <tr>
<th>8.1</th> <th>8.1</th>
<td id="81-base">Core, ctype, curl, date, dom, FFI, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td> <td id="81-base">Core, ctype, curl, date, dom, FFI, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib</td>
<td id="81-mods">amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, mbstring, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_OCI, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, pspell, psr, rdkafka, readline, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, solr, SPL, sqlite3, sqlsrv, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, xdebug, xlswriter, xml, xmlreader, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td> <td id="81-mods">amqp, apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, intl, json, ldap, libxml, mbstring, memcache, memcached, mongodb, msgpack, mysqli, mysqlnd, OAuth, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_OCI, pdo_pgsql, pdo_sqlite, pdo_sqlsrv, pgsql, Phar, posix, pspell, psr, rdkafka, readline, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, solr, SPL, sqlite3, sqlsrv, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, uuid, vips, xdebug, xlswriter, xml, xmlreader, xmlwriter, xsl, yaml, Zend OPcache, zip, zlib</td>
</tr> </tr>
<tr> <tr>
<th>8.2</th> <th>8.2</th>

View File

@@ -3,6 +3,10 @@
FROM devilbox/php-fpm-5.2 FROM devilbox/php-fpm-5.2
{% elif php_version == 5.3 %} {% elif php_version == 5.3 %}
FROM devilbox/php-fpm-5.3 FROM devilbox/php-fpm-5.3
{% elif php_version == 5.4 %}
FROM devilbox/php-fpm-5.4
{% elif php_version == 5.5 %}
FROM devilbox/php-fpm-5.5
{% elif php_version == 8.0 %} {% elif php_version == 8.0 %}
FROM devilbox/php-fpm-8.0 FROM devilbox/php-fpm-8.0
{% elif php_version == 8.1 %} {% elif php_version == 8.1 %}
@@ -55,18 +59,9 @@ RUN set -eux \
### ###
### Upgrade (install ps) ### Upgrade (install ps)
### ###
{% if php_version in [5.4, 5.5] %}
RUN set -eux \ RUN set -eux \
&& rm -f /etc/apt/sources.list \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& { \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
echo "deb http://ftp.debian.org/debian jessie main"; \
echo "#deb http://ftp.debian.org/debian jessie-updates main"; \
echo "deb http://security.debian.org/debian-security jessie/updates main"; \
} | tee /etc/apt/sources.list
{% endif %}
RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
dpkg-dev \ dpkg-dev \
procps \ procps \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*

View File

@@ -31,14 +31,34 @@ FROM devilbox/php-fpm:{{ php_version }}-base as builder
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
{% for build_dep in build_deps | unique | sort %} {% for build_dep in build_deps | unique | sort %}
{{ build_dep }} \ {{ build_dep }} \
{% endfor %} {% endfor %}
# Build tools
autoconf \
bison \
bisonc++ \
ca-certificates \ ca-certificates \
git curl \
dpkg-dev \
file \
flex \
g++ \
gcc \
git \
lemon \
libc-client-dev \
libc-dev \
libcurl4-openssl-dev \
libssl-dev \
make \
patch \
pkg-config \
re2c \
xz-utils \
&& rm -rf /var/lib/apt/lists/*
# Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr)
@@ -94,9 +114,12 @@ RUN set -eux \
{%- if 'configure' in extensions_available[ext][php_version] -%} {%- if 'configure' in extensions_available[ext][php_version] -%}
{{- "\n\t" }}# Custom: configure command {{- "\n\t" }}# Custom: configure command
{{- "\n\t" }}&& docker-php-ext-configure {{ ext }} {{ extensions_available[ext][php_version]['configure'] }} \ {{- "\n\t" }}&& docker-php-ext-configure {{ ext }} {{ extensions_available[ext][php_version]['configure'] }} \
{%- elif 'configure' in extensions_available[ext]['all'] -%}
{{- "\n\t" }}# Default: configure command
{{- "\n\t" }}&& docker-php-ext-configure {{ ext }} {{ extensions_available[ext]['all']['configure'] }} \
{%- endif -%} {%- endif -%}
{{- "\n\t" }}# Installation {{- "\n\t" }}# Installation
{{- "\n\t" }}&& docker-php-ext-install{% if php_version != 5.4 %} -j$(getconf _NPROCESSORS_ONLN){% endif %} {{ ext }} \ {{- "\n\t" }}&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) {{ ext }} \
{#- {#-
# -------------------- 2.) PECL -------------------- # -------------------- 2.) PECL --------------------
-#} -#}
@@ -157,7 +180,7 @@ RUN set -eux \
{{- "\n\t" }}# Custom: configure command {{- "\n\t" }}# Custom: configure command
{{- "\n\t" }}&& docker-php-ext-configure {{ ext }} {{ extensions_available[ext]['all']['configure'] }} \ {{- "\n\t" }}&& docker-php-ext-configure {{ ext }} {{ extensions_available[ext]['all']['configure'] }} \
{%- endif -%} {%- endif -%}
{{- "\n\t" }}&& docker-php-ext-install{% if php_version != 5.4 %} -j$(getconf _NPROCESSORS_ONLN){% endif %} {{ ext }} \ {{- "\n\t" }}&& docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) {{ ext }} \
{#- {#-
# -------------------- 2.) PECL -------------------- # -------------------- 2.) PECL --------------------
-#} -#}
@@ -289,9 +312,9 @@ RUN set -eux \
# Shrink everything down # Shrink everything down
RUN set -eux \ RUN set -eux \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
@@ -319,22 +342,11 @@ LABEL "org.opencontainers.image.description"="PHP-FPM {{ php_version }}-mods"
### ###
### Copy artifacts from builder ### Install runtime libraries
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
{# Loop over enabled run-time dependencies -#} {# Loop over enabled run-time dependencies -#}
{%- set run_deps = [] -%} {%- set run_deps = [] -%}
{%- for ext in extensions_enabled -%} {%- for ext in extensions_enabled -%}
@@ -365,7 +377,18 @@ RUN set -eux \
### ###
### Post Install ### Copy artifacts from builder
###
ARG EXT_DIR
COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/
COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/
COPY --from=builder /usr/local/bin/ /usr/local/bin/
COPY --from=builder /usr/local/lib/ /usr/local/lib/
COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/
###
### Post Install executions
### ###
{# Loop over enabled extensions #} {# Loop over enabled extensions #}
{%- set post_commands = {} -%} {%- set post_commands = {} -%}

View File

@@ -26,9 +26,8 @@ LABEL "org.opencontainers.image.description"="PHP-FPM {{ php_version }}-prod"
### Install ### Install
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
locales-all \ locales-all \
postfix \ postfix \
postfix-pcre \ postfix-pcre \
@@ -36,18 +35,21 @@ RUN set -eux \
rsyslog \ rsyslog \
socat \ socat \
supervisor \ supervisor \
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
# Fix: rsyslogd: imklog: cannot open kernel log (/proc/kmsg): Operation not permitted.
&& sed -i'' 's/.*imklog.*//g' /etc/rsyslog.conf \
\
# Setup Supervisor
&& rm -rf /etc/supervisor* \ && rm -rf /etc/supervisor* \
&& mkdir -p /var/log/supervisor \ && mkdir -p /var/log/supervisor \
&& mkdir -p /etc/supervisor/conf.d \ && mkdir -p /etc/supervisor/conf.d \
&& mkdir -p /etc/supervisor/custom.d \ && mkdir -p /etc/supervisor/custom.d \
&& chown devilbox:devilbox /etc/supervisor/custom.d \ && chown devilbox:devilbox /etc/supervisor/custom.d \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
{% if debug %} {% if debug %}

View File

@@ -2,6 +2,7 @@
FROM devilbox/php-fpm:{{ php_version }}-prod FROM devilbox/php-fpm:{{ php_version }}-prod
MAINTAINER "cytopia" <cytopia@everythingcli.org> MAINTAINER "cytopia" <cytopia@everythingcli.org>
ARG ARCH
### ###
### Labels ### Labels
@@ -45,9 +46,8 @@ ENV BASH_PROFILE=".bashrc"
### Install Tools ### Install Tools
### ###
RUN set -eux \ RUN set -eux \
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests apt-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \
apt-transport-https \ apt-transport-https \
ca-certificates \ ca-certificates \
curl \ curl \
@@ -80,8 +80,8 @@ RUN set -eux \
{%- endif -%} {%- endif -%}
{%- endif -%} {%- endif -%}
{%- endfor -%}{{ "\n\t" }}\ {%- endfor -%}{{ "\n\t" }}\
&& DEBIAN_FRONTEND=noninteractive apt-get update -q \ && DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install -q -y --no-install-recommends --no-install-suggests \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \
ack-grep \ ack-grep \
aspell \ aspell \
autoconf \ autoconf \
@@ -91,7 +91,7 @@ RUN set -eux \
blackfire-agent \ blackfire-agent \
build-essential \ build-essential \
bzip2 \ bzip2 \
{% if php_version != 5.4 and php_version != 5.5 %} {% if php_version not in [5.2, 5.3, 5.4, 5.5] %}
certbot \ certbot \
{% endif %} {% endif %}
coreutils \ coreutils \
@@ -118,14 +118,14 @@ RUN set -eux \
libyaml-dev \ libyaml-dev \
locales \ locales \
make \ make \
mongodb-org-shell \
mongodb-org-tools \
moreutils \ moreutils \
\
{% if php_version in [7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] %} {% if php_version in [7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] %}
mariadb-client \ mariadb-client \
{% else %} {% else %}
mysql-client \ mysql-client \
{% endif %} {% endif %}
\
mupdf \ mupdf \
mupdf-tools \ mupdf-tools \
nano \ nano \
@@ -134,7 +134,6 @@ RUN set -eux \
openssh-client \ openssh-client \
patch \ patch \
patchelf \ patchelf \
postgresql-client \
redis-tools \ redis-tools \
rsync \ rsync \
rubygems \ rubygems \
@@ -152,19 +151,17 @@ RUN set -eux \
wget \ wget \
whois \ whois \
xz-utils \ xz-utils \
yarn \
zip \ zip \
zlib1g-dev \ zlib1g-dev \
zsh \ zsh \
{% if php_version in [5.6, 7.0] %} {% if php_version in [5.6, 7.0] %}
zsh-common \ zsh-common \
{% endif %} {% endif %}
&& DEBIAN_FRONTEND=noninteractive apt-get purge -q -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \
&& rm -rf /var/lib/apt/lists/* \ && rm -rf /var/lib/apt/lists/* \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -219,19 +216,17 @@ RUN set -eux \
{%- else -%} {%- else -%}
{{ "\n\t" }}\{{ "\n" }} {{ "\n\t" }}\{{ "\n" }}
{%- endif %} {%- endif %}
&& (rm -rf /root/.gem || true ) \
&& (rm -rf /root/.cache || true) \
&& (rm -rf /root/.composer || true) \
&& (rm -rf /root/.config || true) \
&& (rm -rf /root/.npm || true) \
\ \
&& (rm -rf /home/devilbox/.cache || true) \ {% for f in directory_to_clean %}
&& (rm -rf /home/devilbox/.composer || true) \ && (rm -rf /home/devilbox/{{ f }} || true) \
&& (rm -rf /home/devilbox/.config || true) \ {% endfor %}
&& (rm -rf /home/devilbox/.npm || true) \ \
{% for f in directory_to_clean %}
&& (rm -rf /root/{{ f }} || true) \
{% endfor %}
\ \
&& (rm -rf /usr/local/src/composer/cache/* || true) \ && (rm -rf /usr/local/src/composer/cache/* || true) \
&& rm -rf /tmp/* \ && (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)
@@ -280,12 +275,21 @@ RUN set -eux \
{%- else -%} {%- else -%}
{{ "\n\t" }}\{{ "\n" }} {{ "\n\t" }}\{{ "\n" }}
{%- endif %} {%- endif %}
&& rm -rf /tmp/* \ \
{% for f in directory_to_clean %}
&& (rm -rf /home/devilbox/{{ f }} || true) \
{% endfor %}
\
{% for f in directory_to_clean %}
&& (rm -rf /root/{{ f }} || true) \
{% endfor %}
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -303,18 +307,18 @@ RUN set -eux \
{%- endif -%} {%- endif -%}
{#- Version specific gem version available? -#} {#- Version specific gem version available? -#}
{%- if php_version in npm_available[tool] and 'version' in npm_available[tool][php_version] -%} {%- if php_version in npm_available[tool] and 'version' in npm_available[tool][php_version] -%}
{{ "\n\t" }}&& su -c '. /opt/nvm/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }} {{ npm_available[tool][php_version]['version'] }}' devilbox \ {{ "\n\t" }}&& su -c '. {{ nvm_home }}/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }} {{ npm_available[tool][php_version]['version'] }}' devilbox \
{#- Generic gem version available? -#} {#- Generic gem version available? -#}
{%- elif 'all' in npm_available[tool] and 'version' in npm_available[tool]['all'] -%} {%- elif 'all' in npm_available[tool] and 'version' in npm_available[tool]['all'] -%}
{{ "\n\t" }}&& su -c '. /opt/nvm/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }} {{ npm_available[tool]['all']['version'] }}' devilbox \ {{ "\n\t" }}&& su -c '. {{ nvm_home }}/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }} {{ npm_available[tool]['all']['version'] }}' devilbox \
{#- No version info available -#} {#- No version info available -#}
{%- else -%} {%- else -%}
{{ "\n\t" }}&& su -c '. /opt/nvm/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }}' devilbox \ {{ "\n\t" }}&& su -c '. {{ nvm_home }}/nvm.sh; npm install -g --force {{ npm_available[tool]['name'] }}' devilbox \
{%- endif -%} {%- endif -%}
{#- Fail fast version -#} {#- Fail fast version -#}
{%- if build_fail_fast -%} {%- if build_fail_fast -%}
{%- if 'check' in npm_available[tool] -%} {%- if 'check' in npm_available[tool] -%}
{{ "\n\t" }}&& PATH=$PATH:/opt/nvm/versions/node/$(/bin/ls -1 /opt/nvm/versions/node/ | sort -V | tail -1)/bin /opt/nvm/versions/node/$(/bin/ls -1 /opt/nvm/versions/node/ | sort -V | tail -1)/bin/{{ npm_available[tool]['check'] }}{{ "\n\n" }} {{ "\n\t" }}&& PATH=$PATH:{{ nvm_home }}/versions/node/$(/bin/ls -1 {{ nvm_home }}/versions/node/ | sort -V | tail -1)/bin {{ nvm_home }}/versions/node/$(/bin/ls -1 {{ nvm_home }}/versions/node/ | sort -V | tail -1)/bin/{{ npm_available[tool]['check'] }}{{ "\n\n" }}
{%- else -%} {%- else -%}
{{ "\n\t" }}&& true{{ "\n\n" }} {{ "\n\t" }}&& true{{ "\n\n" }}
{%- endif -%} {%- endif -%}
@@ -329,17 +333,26 @@ RUN set -eux \
{%- else -%} {%- else -%}
{{ "\n\t" }}\{{ "\n" }} {{ "\n\t" }}\{{ "\n" }}
{%- endif %} {%- endif %}
&& ln -sf $(dirname $(su -c '. /opt/nvm/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
\ \
&& su -c '. /opt/nvm/nvm.sh; npm cache clear --force' devilbox \ && if [ -f "{{ nvm_home }}/nvm.sh" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm cache clear --force' devilbox \ ln -sf $(dirname $(su -c '. {{ nvm_home }}/nvm.sh; nvm which current' devilbox))/* /usr/local/bin/ \
&& rm -rf /home/devilbox/.npm \ \
&& rm -rf /home/devilbox/.cache \ && su -c '. {{ nvm_home }}/nvm.sh; npm cache clear --force' devilbox \
&& rm -rf /home/devilbox/.config \ && su -c '. {{ nvm_home }}/nvm.sh; nvm cache clear --force' devilbox; \
&& rm -rf /tmp/* \ fi \
\
{% for f in directory_to_clean %}
&& (rm -rf /home/devilbox/{{ f }} || true) \
{% endfor %}
\
{% for f in directory_to_clean %}
&& (rm -rf /root/{{ f }} || true) \
{% endfor %}
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /opt/nvm -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find {{ nvm_home }} -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -383,13 +396,21 @@ RUN set -eux \
{%- else -%} {%- else -%}
{{ "\n\t" }}\{{ "\n" }} {{ "\n\t" }}\{{ "\n" }}
{%- endif %} {%- endif %}
&& rm -rf /root/.gem \ \
&& rm -rf /tmp/* \ {% for f in directory_to_clean %}
&& (rm -rf /home/devilbox/{{ f }} || true) \
{% endfor %}
\
{% for f in directory_to_clean %}
&& (rm -rf /root/{{ f }} || true) \
{% endfor %}
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -433,13 +454,21 @@ RUN set -eux \
{%- else -%} {%- else -%}
{{ "\n\t" }}\{{ "\n" }} {{ "\n\t" }}\{{ "\n" }}
{%- endif %} {%- endif %}
&& rm -rf /root/.cache/pip \ \
&& rm -rf /tmp/* \ {% for f in directory_to_clean %}
&& (rm -rf /home/devilbox/{{ f }} || true) \
{% endfor %}
\
{% for f in directory_to_clean %}
&& (rm -rf /root/{{ f }} || true) \
{% endfor %}
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) \ && (rm -rf /tmp/.* || true) \
\ \
&& (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/bin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \
&& (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true)
### ###
@@ -450,7 +479,7 @@ RUN \
echo 'PATH="${PATH}:/usr/local/bin:/usr/local/sbin"'; \ echo 'PATH="${PATH}:/usr/local/bin:/usr/local/sbin"'; \
echo 'PATH="${HOME}/.yarn/bin:${PATH}"'; \ echo 'PATH="${HOME}/.yarn/bin:${PATH}"'; \
echo 'PATH="${HOME}/.composer/vendor/bin:${PATH}"'; \ echo 'PATH="${HOME}/.composer/vendor/bin:${PATH}"'; \
echo 'PATH="/opt/nvm/versions/node/$(nvm version default)/bin:${PATH}"'; \ echo 'PATH="{{ nvm_home }}/versions/node/$(nvm version default)/bin:${PATH}"'; \
echo "export PATH"; \ echo "export PATH"; \
echo ". /etc/bash-devilbox"; \ echo ". /etc/bash-devilbox"; \
echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \
@@ -532,14 +561,16 @@ RUN set -eux \
{%- endif -%} {%- endif -%}
{% endfor %}{{ "\n\t" }}\ {% endfor %}{{ "\n\t" }}\
# -------------------- Cleanup -------------------- # -------------------- Cleanup --------------------
&& rm -rf /home/devilbox/.cache/ \ \
&& rm -rf /home/devilbox/.config/ \ {% for f in directory_to_clean %}
&& rm -rf /root/.ansible \ && (rm -rf /home/devilbox/{{ f }} || true) \
&& rm -rf /root/.console \ {% endfor %}
&& rm -rf /root/.composer \ \
&& rm -rf /root/.drush \ {% for f in directory_to_clean %}
&& rm -rf /root/.pm2 \ && (rm -rf /root/{{ f }} || true) \
&& rm -rf /tmp/* \ {% endfor %}
\
&& (rm -rf /tmp/* || true) \
&& (rm -rf /tmp/.* || true) && (rm -rf /tmp/.* || true)

View File

@@ -12,7 +12,7 @@
# Extensions to enable (in defined order) # Extensions to enable (in defined order)
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
extensions_enabled: extensions_enabled:
# # ioncube must be loaded first # ioncube must be loaded first
- ioncube - ioncube
- amqp - amqp
- apcu - apcu
@@ -49,6 +49,7 @@ extensions_enabled:
- memcache - memcache
# requires igbinary and msgpack to be installed # requires igbinary and msgpack to be installed
- memcached - memcached
- mhash
- mongo - mongo
- mongodb - mongodb
- mysql - mysql
@@ -93,8 +94,6 @@ extensions_enabled:
- spl - spl
- sqlsrv - sqlsrv
- ssh2 - ssh2
# requires sockets to be installed
- swoole
- sysvmsg - sysvmsg
- sysvsem - sysvsem
- sysvshm - sysvshm
@@ -113,6 +112,9 @@ extensions_enabled:
- xlswriter - xlswriter
- yaml - yaml
- zip - zip
# Swoole requires php-json, php-sockets, php-curl, php-mysql (and others) to be installed
# https://openswoole.com/docs/get-started/prerequisites#php-extensions
- swoole
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
@@ -146,13 +148,14 @@ extensions_enabled:
# command: [required] Custom command to install and enable a module # command: [required] Custom command to install and enable a module
extensions_available: extensions_available:
amqp: amqp:
disabled: []
5.2: 5.2:
type: pecl type: pecl
version: 1.6.1 version: 1.6.1
run_dep: [librabbitmq1]
5.3: 5.3:
type: pecl type: pecl
version: 1.9.3 version: 1.9.3
run_dep: [librabbitmq1]
5.4: 5.4:
type: pecl type: pecl
version: 1.9.3 version: 1.9.3
@@ -262,42 +265,52 @@ extensions_available:
5.2: 5.2:
type: pecl type: pecl
build_dep: [libmagic-dev] build_dep: [libmagic-dev]
all: run_dep: [libmagic1]
type: builtin
filter: filter:
already_avail: "{{ php_all_versions }}" # Available by default already_avail: "{{ php_all_versions }}" # Available by default
ftp: ftp:
already_avail: [5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] already_avail: "{{ php_all_versions }}" # Available by default
all:
type: builtin
configure: --with-openssl-dir
build_dep: [libssl-dev]
gd: gd:
5.2: 5.2:
type: builtin type: builtin
pre: | pre: |
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \ ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \ ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ \ ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ && \
mkdir /usr/include/freetype2/freetype && \
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
configure: --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf configure: --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf
run_dep: [libpng16-16, libjpeg62-turbo, libxpm4, libvpx4, libfreetype6, libwebp6] run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6, libwebp5]
5.3: 5.3:
type: builtin type: builtin
pre: ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ pre: |
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ && \
mkdir /usr/include/freetype2/freetype && \
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
configure: --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf configure: --with-gd --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf
run_dep: [libpng16-16, libjpeg62-turbo, libxpm4, libvpx4, libfreetype6, libwebp6] run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6, libwebp5]
5.4: 5.4:
type: builtin type: builtin
pre: ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ pre: |
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ && \
mkdir /usr/include/freetype2/freetype && \
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf
build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6, libwebp5]
run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6]
5.5: 5.5:
type: builtin type: builtin
pre: ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ pre: |
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libjpeg.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libpng.* /usr/lib/ && \
ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ && \
mkdir /usr/include/freetype2/freetype && \
ln -s /usr/include/freetype2/freetype.h /usr/include/freetype2/freetype/freetype.h \
configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf configure: --with-gd --with-vpx-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-native-ttf
build_dep: [libpng-dev, libjpeg-dev, libxpm-dev, libvpx-dev, zlib1g-dev, libfreetype6-dev] run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6, libwebp5]
run_dep: [libpng12-0, libjpeg62-turbo, libxpm4, libvpx1, libfreetype6]
5.6: 5.6:
type: builtin type: builtin
pre: ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ pre: ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/
@@ -354,7 +367,6 @@ extensions_available:
iconv: iconv:
already_avail: "{{ php_all_versions }}" already_avail: "{{ php_all_versions }}"
igbinary: igbinary:
disabled: []
5.2: 5.2:
type: pecl type: pecl
version: 2.0.7 version: 2.0.7
@@ -376,7 +388,6 @@ extensions_available:
disabled: [5.2, 5.3, 5.4] # Only available since 5.3. 5.3 and 5.4 segfaults disabled: [5.2, 5.3, 5.4] # Only available since 5.3. 5.3 and 5.4 segfaults
5.5: 5.5:
type: pecl type: pecl
build_dep: [libmagickwand-dev, libwebp5, ghostscript]
run_dep: [libmagickwand-6.q16-2, libwebp5, ghostscript] run_dep: [libmagickwand-6.q16-2, libwebp5, ghostscript]
5.6: 5.6:
type: pecl type: pecl
@@ -386,8 +397,8 @@ extensions_available:
run_dep: [libmagickwand-6.q16-3, libwebp6, ghostscript] run_dep: [libmagickwand-6.q16-3, libwebp6, ghostscript]
all: all:
type: pecl type: pecl
build_dep: [libmagickwand-dev, libwebp6, ghostscript] build_dep: [libmagickwand-dev, libwebp-dev, ghostscript]
run_dep: [libmagickwand-6.q16-6, libwebp-dev, ghostscript] run_dep: [libmagickwand-6.q16-6, libwebp6, ghostscript]
# https://bugs.php.net/bug.php?id=77683 # https://bugs.php.net/bug.php?id=77683
# https://github.com/Imagick/imagick/issues/262 (policy prevents PDF from being read) # https://github.com/Imagick/imagick/issues/262 (policy prevents PDF from being read)
post: | post: |
@@ -417,10 +428,10 @@ extensions_available:
intl: intl:
5.2: 5.2:
type: pecl type: pecl
run_dep: [libicu57] run_dep: [libicu52]
5.3: 5.3:
type: builtin type: builtin
run_dep: [libicu57] run_dep: [libicu52]
5.4: 5.4:
type: builtin type: builtin
run_dep: [libicu52] run_dep: [libicu52]
@@ -452,7 +463,7 @@ extensions_available:
command: | command: |
EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \
&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ && if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \
&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \ && curl -sS --fail -k https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_$(dpkg-architecture --query DEB_HOST_GNU_CPU | sed 's/_/-/g').tar.gz -L -o ioncube.tar.gz \
&& tar xvfz ioncube.tar.gz \ && tar xvfz ioncube.tar.gz \
&& cd ioncube \ && cd ioncube \
&& cp "ioncube_loader_lin_{{ php_version }}.so" "${EXTENSION_DIR}/ioncube.so" \ && cp "ioncube_loader_lin_{{ php_version }}.so" "${EXTENSION_DIR}/ioncube.so" \
@@ -470,9 +481,7 @@ extensions_available:
libxml: libxml:
already_avail: "{{ php_all_versions }}" # Available by default already_avail: "{{ php_all_versions }}" # Available by default
mbstring: mbstring:
already_avail: [5.2, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] already_avail: "{{ php_all_versions }}" # Available by default
all:
type: builtin
mcrypt: mcrypt:
# mcrypt 1.0.4 requires PHP 8.1.0 or older # mcrypt 1.0.4 requires PHP 8.1.0 or older
# version >= 7.2.0, version <= 8.1.0, excluded versions: 8.1.0 # version >= 7.2.0, version <= 8.1.0, excluded versions: 8.1.0
@@ -502,7 +511,6 @@ extensions_available:
run_dep: [libmcrypt4] run_dep: [libmcrypt4]
build_dep: [libmcrypt-dev] build_dep: [libmcrypt-dev]
memcache: memcache:
disabled: []
5.2: 5.2:
type: pecl type: pecl
version: 2.2.7 version: 2.2.7
@@ -540,47 +548,35 @@ extensions_available:
5.2: 5.2:
type: pecl type: pecl
version: 2.1.0 version: 2.1.0
run_dep: [libmemcachedutil2, libevent-2.0-5]
5.3: 5.3:
type: pecl type: pecl
version: 2.2.0 version: 2.2.0
run_dep: [libmemcachedutil2, libevent-2.0-5]
5.4: 5.4:
type: pecl type: pecl
version: 2.2.0 version: 2.2.0
run_dep: [libmemcachedutil2, libevent-2.0-5]
5.5: 5.5:
type: pecl type: pecl
version: 2.2.0 version: 2.2.0
run_dep: [libmemcachedutil2, libevent-2.0-5]
5.6: 5.6:
type: pecl type: pecl
version: 2.2.0 version: 2.2.0
7.4: run_dep: [libmemcachedutil2, libevent-2.0-5]
type: git 7.0:
git_url: https://github.com/php-memcached-dev/php-memcached type: pecl
git_ref: master command: printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached
command: phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install run_dep: [libmemcachedutil2, libevent-2.0-5]
8.0: 7.1:
type: git type: pecl
git_url: https://github.com/php-memcached-dev/php-memcached command: printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached
git_ref: master run_dep: [libmemcachedutil2, libevent-2.1-6]
command: | 7.2:
true \ type: pecl
# FIXME: This is a work-around to mitigate compile error with PHP 8.0 command: printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached
&& sed -i'' 's/\sTSRMLS_CC//g' php_memcached_session.c \ run_dep: [libmemcachedutil2, libevent-2.1-6]
&& phpize \
&& ./configure --enable-memcached \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
8.1:
type: git
git_url: https://github.com/php-memcached-dev/php-memcached
git_ref: master
command: |
true \
# FIXME: This is a work-around to mitigate compile error with PHP 8.1
&& sed -i'' 's/\sTSRMLS_CC//g' php_memcached_session.c \
&& phpize \
&& ./configure --enable-memcached \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
8.2: 8.2:
type: git type: git
git_url: https://github.com/php-memcached-dev/php-memcached git_url: https://github.com/php-memcached-dev/php-memcached
@@ -595,8 +591,12 @@ extensions_available:
&& make install \ && make install \
all: all:
type: pecl type: pecl
command: printf "\n\n\nyes\nyes\nyes\n" | pecl install memcached
build_dep: [zlib1g-dev, libmemcached-dev, libevent-dev] build_dep: [zlib1g-dev, libmemcached-dev, libevent-dev]
run_dep: [libmemcachedutil2] run_dep: [libmemcachedutil2, libevent-2.1-7]
mhash:
disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] # Deprecated
already_avail: [5.2, 5.3, 5.4, 5.5, 5.6]
mongo: mongo:
disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] # Deprecated disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] # Deprecated
5.2: 5.2:
@@ -607,7 +607,10 @@ extensions_available:
command: yes yes | pecl install mongo command: yes yes | pecl install mongo
build_dep: [libssl-dev, libsasl2-dev] build_dep: [libssl-dev, libsasl2-dev]
mongodb: mongodb:
disabled: [5.2, 5.3] disabled: [5.2]
5.3:
type: pecl
version: 0.6.3
5.4: 5.4:
type: pecl type: pecl
version: 1.2.11 version: 1.2.11
@@ -627,7 +630,6 @@ extensions_available:
type: pecl type: pecl
build_dep: [libssl-dev, libsasl2-dev] build_dep: [libssl-dev, libsasl2-dev]
msgpack: msgpack:
disabled: []
5.2: 5.2:
type: pecl type: pecl
version: 0.5.7 version: 0.5.7
@@ -646,26 +648,49 @@ extensions_available:
all: all:
type: pecl type: pecl
mysql: mysql:
already_avail: [5.2, 5.3]
disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] # Deprecated in newer versions disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] # Deprecated in newer versions
5.6:
type: builtin
run_dep: [libmariadbclient18]
build_dep: [libmariadbclient-dev]
all:
type: builtin
configure: --with-mysql --with-mysql-sock --with-zlib-dir=/usr --with-libdir="/lib/$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"
run_dep: [libmysqlclient18]
build_dep: [libmysqlclient-dev]
mysqli:
5.2:
type: builtin
run_dep: [libmysqlclient18]
build_dep: [libmysqlclient-dev]
5.3:
type: builtin
run_dep: [libmysqlclient18]
build_dep: [libmysqlclient-dev]
5.4: 5.4:
type: builtin type: builtin
run_dep: [libmysqlclient18] run_dep: [libmysqlclient18]
build_dep: [libmysqlclient-dev]
5.5: 5.5:
type: builtin type: builtin
run_dep: [libmysqlclient18] run_dep: [libmysqlclient18]
all: build_dep: [libmysqlclient-dev]
5.6:
type: builtin type: builtin
run_dep: [libmariadbclient18] run_dep: [libmariadbclient18]
mysqli: build_dep: [libmariadbclient-dev]
already_avail: [5.2] 7.0:
type: builtin
run_dep: [libmariadbclient18]
build_dep: [libmariadbclient-dev]
all: all:
type: builtin type: builtin
run_dep: [libmariadbd19]
build_dep: [libmariadb-dev]
mysqlnd: mysqlnd:
disabled: [5.2] disabled: [5.2]
already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2] already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0, 8.1, 8.2]
oauth: oauth:
disabled: []
5.2: 5.2:
type: pecl type: pecl
version: 1.2.3 version: 1.2.3
@@ -695,9 +720,9 @@ extensions_available:
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -721,7 +746,6 @@ extensions_available:
odbc: odbc:
disabled: "{{ php_all_versions }}" # TODO: sqlext.h' not found! disabled: "{{ php_all_versions }}" # TODO: sqlext.h' not found!
opcache: opcache:
disabled: []
5.2: 5.2:
type: pecl type: pecl
command: pecl install zendopcache command: pecl install zendopcache
@@ -749,7 +773,6 @@ extensions_available:
pdo: pdo:
already_avail: "{{ php_all_versions }}" already_avail: "{{ php_all_versions }}"
pdo_dblib: pdo_dblib:
disabled: []
all: all:
type: builtin type: builtin
pre: ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libsybdb.* /usr/lib/ pre: ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libsybdb.* /usr/lib/
@@ -761,11 +784,35 @@ extensions_available:
build_dep: [libfbclient2, libib-util, firebird-dev] build_dep: [libfbclient2, libib-util, firebird-dev]
run_dep: [libfbclient2] run_dep: [libfbclient2]
pdo_mysql: pdo_mysql:
already_avail: [5.2] 5.2:
type: builtin
run_dep: [libmysqlclient18]
build_dep: [zlib1g-dev, libmysqlclient-dev]
5.3:
type: builtin
run_dep: [libmysqlclient18]
build_dep: [zlib1g-dev, libmysqlclient-dev]
5.4:
type: builtin
run_dep: [libmysqlclient18]
build_dep: [zlib1g-dev, libmysqlclient-dev]
5.5:
type: builtin
run_dep: [libmysqlclient18]
build_dep: [zlib1g-dev, libmysqlclient-dev]
5.6:
type: builtin
run_dep: [libmariadbclient18]
build_dep: [zlib1g-dev, libmariadbclient-dev]
7.0:
type: builtin
run_dep: [libmariadbclient18]
build_dep: [zlib1g-dev, libmariadbclient-dev]
all: all:
type: builtin type: builtin
configure: --with-zlib-dir=/usr configure: --with-zlib-dir=/usr
build_dep: [zlib1g-dev] run_dep: [libmariadbd19]
build_dep: [zlib1g-dev, libmariadb-dev]
pdo_oci: pdo_oci:
disabled: [5.2, 5.3, 5.4, 5.5, 5.6] disabled: [5.2, 5.3, 5.4, 5.5, 5.6]
7.2: 7.2:
@@ -795,9 +842,9 @@ extensions_available:
&& ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \ && ORACLE_VERSION_FULL="$( echo "${ORACLE_HREF}" | grep -Eo 'basiclite-[-.0-9]+' | sed -e 's/basiclite-//g' -e 's/\.$//g' )" \
\ \
&& rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-basiclite-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& curl -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ && curl -sS -o /tmp/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \ https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/$(dpkg-architecture --query DEB_HOST_GNU_CPU)/getPackage/oracle-instantclient${ORACLE_VERSION_MAJOR}-devel-${ORACLE_VERSION_FULL}.$(dpkg-architecture --query DEB_HOST_GNU_CPU).rpm \
&& alien \ && alien \
-v \ -v \
@@ -899,6 +946,16 @@ extensions_available:
git_url: https://github.com/phalcon/cphalcon git_url: https://github.com/phalcon/cphalcon
git_ref: v3.4.4 git_ref: v3.4.4
command: cd build && ./install command: cd build && ./install
7.2:
type: git
git_url: https://github.com/phalcon/cphalcon
git_ref: v4.1.1
command: cd build && ./install
7.3:
type: git
git_url: https://github.com/phalcon/cphalcon
git_ref: v4.1.2
command: cd build && ./install
all: all:
type: git type: git
git_url: https://github.com/phalcon/cphalcon git_url: https://github.com/phalcon/cphalcon
@@ -920,7 +977,7 @@ extensions_available:
already_avail: "{{ php_all_versions }}" already_avail: "{{ php_all_versions }}"
recode: recode:
disabled: [7.4, 8.0, 8.1, 8.2] disabled: [7.4, 8.0, 8.1, 8.2]
already_avail: [5.3, 5.4] already_avail: [5.2, 5.3, 5.4, 5.5]
all: all:
type: builtin type: builtin
build_dep: [librecode-dev] build_dep: [librecode-dev]
@@ -1026,6 +1083,7 @@ extensions_available:
snmp: snmp:
7.4: 7.4:
type: builtin type: builtin
configure: --with-snmp
build_dep: [libssl-dev, libsnmp-dev, snmp] build_dep: [libssl-dev, libsnmp-dev, snmp]
run_dep: [snmp] run_dep: [snmp]
all: all:
@@ -1034,9 +1092,9 @@ extensions_available:
build_dep: [libssl-dev, libsnmp-dev, snmp] build_dep: [libssl-dev, libsnmp-dev, snmp]
run_dep: [snmp] run_dep: [snmp]
soap: soap:
already_avail: [5.2]
7.4: 7.4:
type: builtin type: builtin
configure: --enable-soap
all: all:
type: builtin type: builtin
configure: --with-libxml-dir=/usr configure: --with-libxml-dir=/usr
@@ -1099,18 +1157,19 @@ extensions_available:
build_dep: [libssh2-1-dev] build_dep: [libssh2-1-dev]
run_dep: [libssh2-1] run_dep: [libssh2-1]
swoole: swoole:
disabled: [5.2, 8.1, 8.2] disabled: [5.2, 8.2]
5.3: 5.3:
type: pecl type: pecl
version: 1.9.23 version: 1.9.23
run_dep: [libc-ares2, libnghttp2-5, libssl1.0.0]
5.4: 5.4:
type: pecl type: pecl
version: 1.9.23 version: 1.9.23
run_dep: [libnghttp2-5] run_dep: [libc-ares2, libnghttp2-5, libssl1.0.0]
5.5: 5.5:
type: pecl type: pecl
version: 1.9.23 version: 1.9.23
run_dep: [libnghttp2-5] run_dep: [libc-ares2, libnghttp2-5, libssl1.0.0]
5.6: 5.6:
type: pecl type: pecl
version: 1.9.23 version: 1.9.23
@@ -1120,11 +1179,21 @@ extensions_available:
7.1: 7.1:
type: pecl type: pecl
version: 4.4.26 version: 4.4.26
7.2:
type: pecl
version: 4.8.12
7.3:
type: pecl
version: 4.8.12
7.4:
type: pecl
version: 4.8.12
all: all:
type: pecl type: pecl
command: yes yes | pecl install swoole # Note: -D is only supported from PHP 7.2+
build_dep: [libnghttp2-dev, libssl-dev] command: pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes" with-postgres="yes"' swoole
run_dep: [libnghttp2-14] build_dep: [libc-ares-dev, libnghttp2-dev, libssl-dev, libcurl4-openssl-dev]
run_dep: [libc-ares2, libnghttp2-14]
sysvmsg: sysvmsg:
all: all:
type: builtin type: builtin
@@ -1137,10 +1206,10 @@ extensions_available:
tidy: tidy:
5.2: 5.2:
type: builtin type: builtin
run_dep: [libtidy5] run_dep: [libtidy-0.99-0]
5.3: 5.3:
type: builtin type: builtin
run_dep: [libtidy5] run_dep: [libtidy-0.99-0]
5.4: 5.4:
type: builtin type: builtin
run_dep: [libtidy-0.99-0] run_dep: [libtidy-0.99-0]
@@ -1160,7 +1229,6 @@ extensions_available:
tokenizer: tokenizer:
already_avail: "{{ php_all_versions }}" already_avail: "{{ php_all_versions }}"
uploadprogress: uploadprogress:
disabled: []
5.2: 5.2:
type: pecl type: pecl
version: 1.1.4 version: 1.1.4
@@ -1203,96 +1271,18 @@ extensions_available:
run_dep: [uuid] run_dep: [uuid]
build_dep: [uuid-dev] build_dep: [uuid-dev]
vips: vips:
disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 8.0, 8.1, 8.2] # vips requires PHP > 5.6
7.0: disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 8.2]
build_dep: 5.6:
- fftw-dev type: pecl
- gobject-introspection version: 1.0.0
- gtk-doc-tools
- libexif-dev
- libexpat1-dev
- libfftw3-dev
- libgif-dev
- libglib2.0-dev
- libmagick++-dev
- libmagickcore-6.q16-dev
- libmagickwand-dev
- libpoppler-glib-dev
- librsvg2-dev
- libtool
- libwebp-dev
- libwebpdemux2
- libwebpmux2
run_dep:
- fftw2
- gir1.2-poppler-0.18
- imagemagick-6.q16
- libexif12
- libexpat1
- libfftw3-3
- libgif7
- libglib2.0-0
- libmagick++-6.q16-7
- libmagick++-6.q16hdri-7
- libmagickcore-6.q16-3
- libmagickcore-6.q16-3-extra
- libmagickwand-6.q16-3
- libmagickwand-6.q16hdri-3
- libpoppler-glib8
- librsvg2-2
- libwebp6
- libwebpdemux2
- libwebpmux2
all: all:
type: pecl type: pecl
pre: |
git clone https://github.com/libvips/libvips /tmp/libvips \
&& cd /tmp/libvips \
&& ./autogen.sh \
&& make -j$(getconf _NPROCESSORS_ONLN) \
&& make install \
&& cd /tmp \
&& rm -rf /tmp/libvips \
build_dep: build_dep:
- fftw-dev - libvips-dev
- gobject-introspection - libvips42
- gtk-doc-tools
- libexif-dev
- libexpat1-dev
- libfftw3-dev
- libgif-dev
- libglib2.0-dev
- libimagequant-dev
- libmagick++-dev
- libmagickcore-6.q16-dev
- libmagickwand-dev
- libpoppler-glib-dev
- librsvg2-dev
- libtool
- libwebp-dev
- libwebpdemux2
- libwebpmux3
run_dep: run_dep:
- fftw2 - libvips42
- gir1.2-poppler-0.18
- imagemagick-6.q16
- libexif12
- libexpat1
- libfftw3-3
- libgif7
- libglib2.0-0
- libimagequant0
- libmagick++-6.q16-8
- libmagick++-6.q16hdri-8
- libmagickcore-6.q16-6
- libmagickcore-6.q16-6-extra
- libmagickwand-6.q16-6
- libmagickwand-6.q16hdri-6
- libpoppler-glib8
- librsvg2-2
- libwebp6
- libwebpdemux2
- libwebpmux3
wddx: wddx:
# https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx # https://wiki.php.net/rfc/deprecate-and-remove-ext-wddx
disabled: [7.4, 8.0, 8.1, 8.2] disabled: [7.4, 8.0, 8.1, 8.2]
@@ -1301,7 +1291,6 @@ extensions_available:
configure: --with-libxml-dir=/usr configure: --with-libxml-dir=/usr
build_dep: [libxml2-dev] build_dep: [libxml2-dev]
xdebug: xdebug:
disabled: []
5.2: 5.2:
type: pecl type: pecl
version: 2.2.7 version: 2.2.7
@@ -1388,22 +1377,22 @@ extensions_available:
type: builtin type: builtin
configure: --with-zlib-dir=/usr --with-pcre-dir=/usr configure: --with-zlib-dir=/usr --with-pcre-dir=/usr
build_dep: [zlib1g-dev] build_dep: [zlib1g-dev]
run_dep: [] run_dep: [zlib1g]
5.3: 5.3:
type: builtin type: builtin
configure: --with-zlib-dir=/usr --with-pcre-dir=/usr configure: --with-zlib-dir=/usr --with-pcre-dir=/usr
build_dep: [zlib1g-dev] build_dep: [zlib1g-dev]
run_dep: [] run_dep: [zlib1g]
5.4: 5.4:
type: builtin type: builtin
configure: --with-zlib-dir=/usr --with-pcre-dir=/usr configure: --with-zlib-dir=/usr --with-pcre-dir=/usr
build_dep: [zlib1g-dev] build_dep: [zlib1g-dev]
run_dep: [] run_dep: [zlib1g]
5.5: 5.5:
type: builtin type: builtin
configure: --with-zlib-dir=/usr --with-pcre-dir=/usr configure: --with-zlib-dir=/usr --with-pcre-dir=/usr
build_dep: [zlib1g-dev] build_dep: [zlib1g-dev]
run_dep: [] run_dep: [zlib1g]
7.4: 7.4:
type: builtin type: builtin
configure: --with-zip configure: --with-zip

View File

@@ -8,11 +8,82 @@
# #
###
### Define operating system versions
###
os_release:
# Jessie (Ubuntu: trusty, utopic, vivid, wily)
5.2:
debian: jessie
ubuntu: trusty
5.3:
debian: jessie
ubuntu: trusty
5.4:
debian: jessie
ubuntu: trusty
5.5:
debian: jessie
ubuntu: trusty
# Strech (Ubuntu: xenial, yakkety, zesty, artful)
5.6:
debian: stretch
ubuntu: xenial
7.0:
debian: stretch
ubuntu: xenial
# Buster (Ubuntu: bionic, cosmic, disco, eoan)
7.1:
debian: buster
ubuntu: bionic
7.2:
debian: buster
ubuntu: bionic
# Bullseye (Ubuntu: focal, groovy, hirsute, impish)
7.3:
debian: bullseye
ubuntu: focal
7.4:
debian: bullseye
ubuntu: focal
8.0:
debian: bullseye
ubuntu: focal
8.1:
debian: bullseye
ubuntu: focal
8.2:
debian: bullseye
ubuntu: focal
all:
debian: bullseye
ubuntu: focal
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
# Global variables # Global variables
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
composer_home: /usr/local/src/composer composer_home: /usr/local/src/composer
nvm_home: /usr/local/src/nvm nvm_home: /opt/nvm
node_version: --lts
directory_to_clean:
- .*json
- .ansible
- .cache
- .composer
- .config
- .console
- .drush
- .gem
- .local
- .node
- .npm
- .pm2
- .subversion
- .v8*
- node_modules
- yarn.lock
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
@@ -21,10 +92,9 @@ nvm_home: /usr/local/src/nvm
apt_repositories_enabled: apt_repositories_enabled:
- backports - backports
- blackfire - blackfire
- git #- git
- mongo #- mongo
- pgsql #- pgsql
- yarn
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
@@ -73,7 +143,7 @@ npm_enabled:
# Python pip packages to install # Python pip packages to install
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
pip_enabled: pip_enabled:
- ansible #- ansible
- yamllint - yamllint
- yq - yq
@@ -86,6 +156,9 @@ software_enabled:
- composer - composer
- pip - pip
- nvm - nvm
# Required for internal Devilbox connection
- pgsql_client
- mongo_client
# Normal packages start here # Normal packages start here
- awesomeci - awesomeci
- deployer - deployer
@@ -94,10 +167,9 @@ software_enabled:
- drush9 - drush9
- drupalconsole - drupalconsole
- gitflow - gitflow
- homebrew #- homebrew
- laravel - laravel
- linkcheck - linkcheck
# - linuxbrew
- mhsendmail - mhsendmail
- mysqldumpsecure - mysqldumpsecure
- phalcon - phalcon
@@ -109,8 +181,6 @@ software_enabled:
- symfony - symfony
- wkhtmltopdf - wkhtmltopdf
- wpcli - wpcli
# Cleanup needs to be last
- cleanup
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
@@ -127,78 +197,152 @@ software_enabled:
# pre: [optional] Run custom command to add gpg key for repository # pre: [optional] Run custom command to add gpg key for repository
# #
apt_repositories_available: apt_repositories_available:
###
### Backports
###
backports: backports:
# [Jessie]
5.2:
pre: echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until
deb: deb [trusted=yes] http://archive.debian.org/debian {{ os_release[5.2].debian }}-backports main
# [Jessie]
5.3:
pre: echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until
deb: deb [trusted=yes] http://archive.debian.org/debian {{ os_release[5.3].debian }}-backports main
# [Jessie]
5.4: 5.4:
pre: echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until pre: echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until
deb: deb http://archive.debian.org/debian jessie-backports main deb: deb [trusted=yes] http://archive.debian.org/debian {{ os_release[5.4].debian }}-backports main
# [Jessie]
5.5: 5.5:
pre: echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until pre: echo 'Acquire::Check-Valid-Until no;' > /etc/apt/apt.conf.d/99no-check-valid-until
deb: deb http://archive.debian.org/debian jessie-backports main deb: deb [trusted=yes] http://archive.debian.org/debian {{ os_release[5.5].debian }}-backports main
# [Stretch]
5.6:
pre: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
deb: deb http://ftp.debian.org/debian {{ os_release[5.6].debian }}-backports main
# [Stretch]
7.0:
pre: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
deb: deb http://ftp.debian.org/debian {{ os_release[7.0].debian }}-backports main
# [Buster]
7.1:
pre: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
deb: deb http://ftp.debian.org/debian {{ os_release[7.1].debian }}-backports main
# [Buster]
7.2:
pre: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
deb: deb http://ftp.debian.org/debian {{ os_release[7.2].debian }}-backports main
# [Bullseye]
all: all:
pre: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 pre: apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138
deb: deb http://ftp.debian.org/debian stretch-backports main deb: deb http://ftp.debian.org/debian {{ os_release['all'].debian }}-backports main
###
### Blackfire
###
blackfire: blackfire:
all: all:
deb: deb http://packages.blackfire.io/debian any main deb: deb http://packages.blackfire.io/debian any main
pre: curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - pre: curl -sS -L --fail "https://packages.blackfire.io/gpg.key" | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
###
### Git (currently obsolete)
###
git: git:
7.2:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main
7.3:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main
7.4:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main
8.0:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main
8.1:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main
8.2:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main
all:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main
key: A1715D88E1DF1F24
# Get keys
# gpg --dry-run --with-fingerprint < <(curl https://www.mongodb.org/static/pgp/server-3.6.asc) | grep fingerprint | sed 's/.*=//g' | sed 's/ //g'
mongo:
5.4:
deb: deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main
key: 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
5.5:
deb: deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main
key: 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
all:
deb: deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main
key: 9DA31620334BD75D9DCB49F368818C72E52529D4
pgsql:
5.2: 5.2:
deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[5.2].ubuntu }} main
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
5.3: 5.3:
deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[5.3].ubuntu }} main
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
5.4: 5.4:
deb: deb https://apt-archive.postgresql.org/pub/repos/apt/ jessie-pgdg main deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[5.4].ubuntu }} main
5.5: 5.5:
deb: deb https://apt-archive.postgresql.org/pub/repos/apt/ jessie-pgdg main deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[5.5].ubuntu }} main
5.6: 5.6:
deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[5.6].ubuntu }} main
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
7.0: 7.0:
deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[7.0].ubuntu }} main
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
7.1: 7.1:
deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[7.1].ubuntu }} main
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
7.2: 7.2:
deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[7.2].ubuntu }} main
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - 7.3:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[7.3].ubuntu }} main
7.4:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[7.4].ubuntu }} main
8.0:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[8.0].ubuntu }} main
8.1:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[8.1].ubuntu }} main
8.2:
deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu {{ os_release[8.2].ubuntu }} main
all: all:
deb: deb http://apt.postgresql.org/pub/repos/apt/ bullseye-pgdg main key: A1715D88E1DF1F24
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - ###
yarn: ### MongoDB (currently obsolete)
###
mongo:
# 5.2: mongodb-clients (amd64)
# 5.3: mongodb-clients (amd64)
# 5.4: mongodb-clients (amd64)
# 5.5: mongodb-clients (amd64)
# 5.6: mongodb-clients & mongo-tools (amd64, arm64)
# 7.0: mongodb-clients & mongo-tools (amd64, arm64)
# 7.1: mongo-tools OR mongodb-org-(tools|shell) (amd64, arm64)
# 7.2: mongo-tools OR mongodb-org-(tools|shell) (amd64, arm64)
# 7.3: mongodb-org-(tools|shell) (amd64, arm64)
# 7.4: mongodb-org-(tools|shell) (amd64, arm64)
# 8.0: mongodb-org-(tools|shell) (amd64, arm64)
# 8.1: mongodb-org-(tools|shell) (amd64, arm64)
# 8.2: mongodb-org-(tools|shell) (amd64, arm64)
disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0]
# [Buster] Ubuntu repository required for arm64 support instead
7.1:
# gpg --dry-run --with-fingerprint < <(curl https://www.mongodb.org/static/pgp/server-4.4.asc) | grep fingerprint | sed 's/.*=//g' | sed 's/ //g'
deb: deb http://repo.mongodb.org/apt/ubuntu {{ os_release[7.1].ubuntu }}/mongodb-org/4.4 multiverse
key: 20691EEC35216C63CAF66CE1656408E390CFB1F5
# [Buster] Ubuntu repository required for arm64 support instead
7.2:
# gpg --dry-run --with-fingerprint < <(curl https://www.mongodb.org/static/pgp/server-4.4.asc) | grep fingerprint | sed 's/.*=//g' | sed 's/ //g'
deb: deb http://repo.mongodb.org/apt/ubuntu {{ os_release[7.2].ubuntu }}/mongodb-org/4.4 multiverse
key: 20691EEC35216C63CAF66CE1656408E390CFB1F5
# [Bullseye] Ubuntu repository required for arm64 support instead
all: all:
deb: deb http://dl.yarnpkg.com/debian/ stable main # gpg --dry-run --with-fingerprint < <(curl https://www.mongodb.org/static/pgp/server-4.4.asc) | grep fingerprint | sed 's/.*=//g' | sed 's/ //g'
pre: curl -sS -k -L --fail https://dl.yarnpkg.com/debian/pubkey.gpg | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - deb: deb http://repo.mongodb.org/apt/ubuntu {{ os_release['all'].ubuntu }}/mongodb-org/4.4 multiverse
key: 20691EEC35216C63CAF66CE1656408E390CFB1F5
###
### PostgrSQL (currently obsolete)
###
pgsql:
# [Jessie]
5.2:
deb: deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[5.2].debian }}-pgdg main
# [Jessie]
5.3:
deb: deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[5.3].debian }}-pgdg main
# [Jessie]
5.4:
deb: deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[5.4].debian }}-pgdg main
# [Jessie]
5.5:
deb: deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[5.5].debian }}-pgdg main
# [Stretch]
5.6:
deb: deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[5.6].debian }}-pgdg main
# [Stretch]
7.0:
deb: deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[7.0].debian }}-pgdg main
# [Buster]
7.1:
deb: deb http://apt.postgresql.org/pub/repos/apt/ {{ os_release[7.1].debian }}-pgdg main
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
# [Buster]
7.2:
deb: deb http://apt.postgresql.org/pub/repos/apt/ {{ os_release[7.2].debian }}-pgdg main
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
# [Bullseye]
all:
deb: deb http://apt.postgresql.org/pub/repos/apt/ {{ os_release['all'].debian }}-pgdg main
pre: curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add -
# ------------------------------------------------------------------------------------------------- # -------------------------------------------------------------------------------------------------
@@ -407,14 +551,44 @@ software_available:
# Composer is a dependency for others # Composer is a dependency for others
composer: composer:
disabled: [5.2] disabled: [5.2]
check: composer --version 2>/dev/null | grep -E 'version\s*[0-9][.0-9]+' check: composer --version 2>/dev/null | grep -Ei '(composer|version)\s*[0-9][.0-9]+'
5.3:
pre: |
COMPOSER_1_VERSION="latest-1.x" \
&& COMPOSER_2_VERSION="latest-2.2.x" \
post: |
ln -sf /usr/local/bin/composer-1 /usr/local/bin/composer \
5.4:
pre: |
COMPOSER_1_VERSION="latest-1.x" \
&& COMPOSER_2_VERSION="latest-2.2.x" \
5.5:
pre: |
COMPOSER_1_VERSION="latest-1.x" \
&& COMPOSER_2_VERSION="latest-2.2.x" \
5.6:
pre: |
COMPOSER_1_VERSION="latest-1.x" \
&& COMPOSER_2_VERSION="latest-2.2.x" \
7.0:
pre: |
COMPOSER_1_VERSION="latest-1.x" \
&& COMPOSER_2_VERSION="latest-2.2.x" \
7.1:
pre: |
COMPOSER_1_VERSION="latest-1.x" \
&& COMPOSER_2_VERSION="latest-2.2.x" \
all: all:
pre: |
COMPOSER_1_VERSION="latest-1.x" \
&& COMPOSER_2_VERSION="latest-2.x" \
command: | command: |
curl -sS -L --fail https://getcomposer.org/composer-1.phar > /usr/local/bin/composer-1 \ curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_1_VERSION}/composer.phar" > /usr/local/bin/composer-1 \
&& curl -sS -L --fail https://getcomposer.org/composer-2.phar > /usr/local/bin/composer-2 \ && curl -sS -L --fail "https://getcomposer.org/download/${COMPOSER_2_VERSION}/composer.phar" > /usr/local/bin/composer-2 \
&& chmod +x /usr/local/bin/composer-1 \ && chmod +x /usr/local/bin/composer-1 \
&& chmod +x /usr/local/bin/composer-2 \ && chmod +x /usr/local/bin/composer-2 \
&& ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \ post: |
ln -sf /usr/local/bin/composer-2 /usr/local/bin/composer \
# pip is a dependency for others # pip is a dependency for others
pip: pip:
5.2: 5.2:
@@ -501,25 +675,249 @@ software_available:
&& curl -sS -L --fail https://bootstrap.pypa.io/get-pip.py | python3 \ && curl -sS -L --fail https://bootstrap.pypa.io/get-pip.py | python3 \
# nvm is a dependency for others # nvm is a dependency for others
nvm: nvm:
check: su -c '. /opt/nvm/nvm.sh; nvm --version' devilbox | grep -E '^[0-9][.0-9]+' check: |
su -c '. {{ nvm_home }}/nvm.sh; nvm --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
&& su -c '. {{ nvm_home }}/nvm.sh; yarn --version' devilbox | grep -E '^v?[0-9][.0-9]+' \
5.2:
pre: |
NODE_VERSION="17" \
5.3:
pre: |
NODE_VERSION="17" \
5.4:
pre: |
NODE_VERSION="17" \
5.5:
pre: |
NODE_VERSION="17" \
5.6:
pre: |
NODE_VERSION="17" \
7.0:
pre: |
NODE_VERSION="17" \
all: all:
pre: | pre: |
git clone https://github.com/creationix/nvm /opt/nvm \ NODE_VERSION="{{ node_version }}" \
&& cd /opt/nvm \ command: |
&& git checkout "$(git describe --abbrev=0 --tags --match "v[0-9]*" $(git rev-list --tags --max-count=1))" \ NVM_VERSION="$( \
curl -sS 'https://github.com/nvm-sh/nvm/releases' \
| grep -Eo '/nvm-sh/nvm/releases/tag/v?[.0-9]+"' \
| grep -Eo 'v?[.0-9]+' \
| sort -V \
| tail -1 \
)" \
&& mkdir -p {{ nvm_home }} \
&& curl -o- "https://raw.githubusercontent.com/nvm-sh/nvm/${NVM_VERSION}/install.sh" \
| NVM_DIR="{{ nvm_home }}" bash \
\ \
&& { \ && { \
echo 'export NVM_DIR="/opt/nvm"'; \ echo 'export NVM_DIR="{{ nvm_home }}"'; \
echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \ echo '[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm'; \
echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \ echo '[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion'; \
} >> /home/devilbox/.bashrc \ } >> /home/devilbox/.bashrc \
\ \
&& chown -R devilbox:devilbox /opt/nvm \ && chown -R devilbox:devilbox "{{ nvm_home }}" \
# Install latest and LTS version # Install latest and LTS version and yarn
post: |
su -c ". {{ nvm_home }}/nvm.sh; nvm install ${NODE_VERSION}" devilbox \
&& su -c ". {{ nvm_home }}/nvm.sh; nvm use ${NODE_VERSION}" devilbox \
&& su -c ". {{ nvm_home }}/nvm.sh; corepack enable" devilbox \
\
&& chmod 0777 {{ nvm_home }} \
&& find {{ nvm_home }} -type f -print0 | xargs -n1 -0 chmod go+w \
&& find {{ nvm_home }} -type d -print0 | xargs -n1 -0 chmod 0777 \
###
### PostgrSQL Command line client
###
# 5.2: (amd64)
# 5.3: (amd64)
# 5.4: (amd64)
# 5.5: (amd64)
# 5.6: (amd64)
# 7.0: (amd64)
# 7.1: (amd64, arm64)
# 7.2: (amd64, arm64)
# 7.3: (amd64, arm64)
# 7.4: (amd64, arm64)
# 8.0: (amd64, arm64)
# 8.1: (amd64, arm64)
# 8.2: (amd64, arm64)
pgsql_client:
check: |
if echo '{{ php_version }}' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
pg_isready --version; \
fi \
else \
pg_isready --version; \
fi \
5.2:
pre: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[php_version].debian }}-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
command: | command: |
su -c '. /opt/nvm/nvm.sh; nvm install node' devilbox \ if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
&& su -c '. /opt/nvm/nvm.sh; nvm install --lts' devilbox \ apt-get install -y --no-install-recommends --no-install-suggests \
&& su -c '. /opt/nvm/nvm.sh; nvm use node' devilbox \ postgresql-client; \
fi \
5.3:
pre: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[php_version].debian }}-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
5.4:
pre: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[php_version].debian }}-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
5.5:
pre: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[php_version].debian }}-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
5.6:
pre: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[php_version].debian }}-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
7.0:
pre: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb https://apt-archive.postgresql.org/pub/repos/apt/ {{ os_release[php_version].debian }}-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update; \
fi \
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client; \
fi \
all:
pre: |
curl -sS -k -L --fail https://www.postgresql.org/media/keys/ACCC4CF8.asc | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \
&& echo "deb http://apt.postgresql.org/pub/repos/apt/ {{ os_release[php_version].debian }}-pgdg main" > /etc/apt/sources.list.d/pgsql.list \
&& apt-get update \
command: |
apt-get install -y --no-install-recommends --no-install-suggests \
postgresql-client \
post: rm -rf /var/lib/apt/lists/*
###
### MongoDB Command line client
###
# 5.2: mongodb-clients (amd64)
# 5.3: mongodb-clients (amd64)
# 5.4: mongodb-clients (amd64)
# 5.5: mongodb-clients (amd64)
# 5.6: mongodb-clients & mongo-tools (amd64, arm64)
# 7.0: mongodb-clients & mongo-tools (amd64, arm64)
# 7.1: mongodb-org-(tools|shell) (amd64, arm64)
# 7.2: mongodb-org-(tools|shell) (amd64, arm64)
# 7.3: mongodb-org-(tools|shell) (amd64, arm64)
# 7.4: mongodb-org-(tools|shell) (amd64, arm64)
# 8.0: mongodb-org-(tools|shell) (amd64, arm64)
# 8.1: mongodb-org-(tools|shell) (amd64, arm64)
# 8.2: mongodb-org-(tools|shell) (amd64, arm64)
mongo_client:
check: |
if echo '{{ php_version }}' | grep -E '^(5.2|5.3|5.4|5.5|5.6|7.0)$' >/dev/null; then \
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
mongofiles --version; \
fi \
else \
mongofiles --version; \
fi \
5.2:
pre: apt-get update
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
5.3:
pre: apt-get update
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
5.4:
pre: apt-get update
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
5.5:
pre: apt-get update
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
5.6:
pre: apt-get update
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients \
mongo-tools; \
else \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
7.0:
pre: apt-get update
command: |
if [ "$(dpkg-architecture --query DEB_BUILD_ARCH)" = "amd64" ]; then \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients \
mongo-tools; \
else \
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-clients; \
fi \
all:
pre: |
APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 20691EEC35216C63CAF66CE1656408E390CFB1F5 \
&& echo "deb http://repo.mongodb.org/apt/ubuntu {{ os_release[php_version].ubuntu }}/mongodb-org/4.4 multiverse" > /etc/apt/sources.list.d/mongo.list \
&& apt-get update \
command: |
apt-get install -y --no-install-recommends --no-install-suggests \
mongodb-org-tools \
mongodb-org-shell \
post: rm -rf /var/lib/apt/lists/*
awesomeci: awesomeci:
check: regex-grep --version | grep -E '[0-9][.0-9]+' check: regex-grep --version | grep -E '[0-9][.0-9]+'
all: all:
@@ -612,7 +1010,7 @@ software_available:
7.1: 7.1:
pre: DURL="https://github.com/hechoendrupal/drupal-console-launcher/releases/download/1.9.4/drupal.phar" pre: DURL="https://github.com/hechoendrupal/drupal-console-launcher/releases/download/1.9.4/drupal.phar"
all: all:
pre: DURL="https://github.com$(curl -sS 'https://github.com/hechoendrupal/drupal-console-launcher/releases' | grep -Eo 'href="/.+drupal.phar"' | head -1 | sed 's/^href="//g' | sed 's/"$//g')" pre: DURL="$(curl -s https://api.github.com/repos/hechoendrupal/drupal-console-launcher/releases/latest | awk -F\" '/download.*.phar/{print $(NF-1)}' | head -1)"
command: curl -sS -L --fail "${DURL}" -L -o /usr/local/bin/drupal command: curl -sS -L --fail "${DURL}" -L -o /usr/local/bin/drupal
post: chmod +x /usr/local/bin/drupal post: chmod +x /usr/local/bin/drupal
gitflow: gitflow:
@@ -697,25 +1095,14 @@ software_available:
command: | command: |
curl -sS -L --fail https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ curl -sS -L --fail https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \
&& chmod +x /usr/local/bin/linkcheck \ && chmod +x /usr/local/bin/linkcheck \
linuxbrew:
check: su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[0-9][.0-9]+'
all:
command: |
git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \
&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \
&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \
'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \
&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \
mhsendmail: mhsendmail:
all: all:
command: | command: |
curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \ if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& chmod +x mhsendmail_linux_amd64 \ curl -sS -L --fail https://github.com/devilbox/mhsendmail/releases/download/v0.3.0/mhsendmail_linux_amd64 > mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ && chmod +x mhsendmail_linux_amd64 \
&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail; \
fi \
mysqldumpsecure: mysqldumpsecure:
check: mysqldump-secure --version | grep -E 'Version:\s*[0-9][.0-9]+' check: mysqldump-secure --version | grep -E 'Version:\s*[0-9][.0-9]+'
all: all:
@@ -741,7 +1128,7 @@ software_available:
&& cd / \ && cd / \
&& rm -rf /usr/local/src/mysqldump-secure \ && rm -rf /usr/local/src/mysqldump-secure \
phalcon: phalcon:
disabled: [5.2, 8.0, 8.1, 8.2] disabled: [5.2, 7.4, 8.0, 8.1, 8.2]
check: phalcon commands | grep -E '[0-9][.0-9]+' check: phalcon commands | grep -E '[0-9][.0-9]+'
5.3: 5.3:
pre: | pre: |
@@ -930,59 +1317,95 @@ software_available:
&& chmod +x /usr/local/bin/phpunit \ && chmod +x /usr/local/bin/phpunit \
symfony: symfony:
disabled: [5.2, 5.3] disabled: [5.2, 5.3]
check: symfony -V | grep -Ei 'version\s*.*v[0-9][.0-9]+' check: symfony -V | grep -Ei 'version\s[0-9][.0-9]+'
all: all:
pre: SYMFONY_VERSION="$( curl -sS -L --fail https://get.symfony.com/cli/LATEST )" pre: VERSION="$(curl -s https://api.github.com/repos/symfony-cli/symfony-cli/releases/latest | awk -F\" '/symfony-cli_.*._amd64\.deb/{print $(NF-1)}' | head -1 | sed 's/^.*[^0-9]\([0-9]*\.[0-9]*\.[0-9]*\).*$/\1/')"
command: curl -sS -L --fail "https://github.com/symfony/cli/releases/download/v${SYMFONY_VERSION}/symfony_linux_amd64" > /usr/local/bin/symfony command: |
post: chmod +x /usr/local/bin/symfony curl -sS -L --fail -o /tmp/symfonycli.deb https://github.com/symfony-cli/symfony-cli/releases/download/v${VERSION}/symfony-cli_${VERSION}_$(dpkg-architecture --query DEB_HOST_ARCH).deb \
&& dpkg -i /tmp/symfonycli.deb \
&& rm -f /tmp/symfonycli.deb \
wkhtmltopdf: wkhtmltopdf:
check: wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)" check: if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then wkhtmltopdf --version | grep -E "^wkhtmltopdf [0-9][.0-9]+\s+\(.+patched.+\)"; fi
5.2:
pre: VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/wkhtmltopdf/releases | awk -F\" '/wkhtmltopdf.*.jessie_amd64\.deb/{print $(NF-1)}' | head -1 )"
command: |
if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
5.3:
pre: VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/wkhtmltopdf/releases | awk -F\" '/wkhtmltopdf.*.jessie_amd64\.deb/{print $(NF-1)}' | head -1 )"
command: |
if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
DEBIAN_FRONTEND=noninteractive apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
5.4: 5.4:
pre: VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" pre: VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/wkhtmltopdf/releases | awk -F\" '/wkhtmltopdf.*.jessie_amd64\.deb/{print $(NF-1)}' | head -1 )"
command: | command: |
DEBIAN_FRONTEND=noninteractive apt-get update -qq \ if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
5.5: 5.5:
pre: VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+jessie_amd64\.deb' | head -1 )" pre: VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/wkhtmltopdf/releases | awk -F\" '/wkhtmltopdf.*.jessie_amd64\.deb/{print $(NF-1)}' | head -1 )"
command: | command: |
DEBIAN_FRONTEND=noninteractive apt-get update -qq \ if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
5.6: 5.6:
command: | command: |
DEBIAN_FRONTEND=noninteractive apt-get update -qq \ if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
7.0: 7.0:
command: | command: |
DEBIAN_FRONTEND=noninteractive apt-get update -qq \ if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont1 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
all: all:
pre: VERSION="$( curl -sSL -L --fail https://github.com/wkhtmltopdf/wkhtmltopdf/releases | grep -Eo '/wkhtmltopdf/.+stretch_amd64\.deb' | head -1 )" pre: VERSION="$(curl -sSL -L --fail https://api.github.com/repos/wkhtmltopdf/packaging/releases | awk -F\" '/wkhtmltopdf.*.stretch_amd64\.deb/{print $(NF-1)}' | head -1 )"
command: | command: |
DEBIAN_FRONTEND=noninteractive apt-get update -qq \ if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ DEBIAN_FRONTEND=noninteractive apt-get update -qq \
libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \ && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \
&& curl -sS -L --fail -o /tmp/wkhtmltopdf.deb https://github.com/${VERSION} \ libfontenc1 libxfont2 xfonts-75dpi xfonts-base xfonts-encodings xfonts-utils \
&& dpkg -i /tmp/wkhtmltopdf.deb \ && curl -sS -L --fail -o /tmp/wkhtmltopdf.deb ${VERSION} \
&& rm -f /tmp/wkhtmltopdf.deb \ && dpkg -i /tmp/wkhtmltopdf.deb \
&& rm -f /tmp/wkhtmltopdf.deb; \
fi \
post: | post: |
DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ if [ "$(dpkg-architecture --query DEB_HOST_ARCH)" = "amd64" ]; then \
&& rm -rf /var/lib/apt/lists/* \ DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& rm -rf /var/lib/apt/lists/*; \
fi \
wpcli: wpcli:
disabled: [5.2] disabled: [5.2]
check: wp --allow-root --version | grep -E '[0-9][.0-9]+' check: wp --allow-root --version | grep -E '[0-9][.0-9]+'
@@ -998,24 +1421,3 @@ software_available:
all: all:
command: curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp command: curl -sS -L --fail https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp
post: chmod +x /usr/local/bin/wp post: chmod +x /usr/local/bin/wp
cleanup:
all:
command: |
rm -rf /home/${MY_USER}/.*json \
&& rm -rf /home/${MY_USER}/.cache \
&& rm -rf /home/${MY_USER}/.composer \
&& rm -rf /home/${MY_USER}/.config \
&& rm -rf /home/${MY_USER}/.drush \
&& rm -rf /home/${MY_USER}/.subversion \
&& rm -rf /home/${MY_USER}/.v8* \
\
&& rm -rf /root/.*json \
&& rm -rf /root/.cache \
&& rm -rf /root/.composer \
&& rm -rf /root/.config \
&& rm -rf /root/.drush \
&& rm -rf /root/.subversion \
&& rm -rf /root/.v8* \
\
&& rm -rf /tmp/* \
&& (rm -rf /tmp/.* || true) \

View File

@@ -8,27 +8,18 @@ set -o pipefail
# Get absolute directory of this script # Get absolute directory of this script
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
ARCH="${1:-linux/amd64}" IMAGE="${1}"
ARCH="${2}"
TAG_BASE="${3}"
TAG_MODS="${4}"
VERSION="${5:-}"
### ###
### Show Usage ### Show Usage
### ###
print_usage() { print_usage() {
echo "Usage: gen-readme.sh [<ARCH>]" echo "Usage: gen-readme.sh <IMAGE> <ARCH> <TAG_BASE> <TAG_MODS> [<VERSION>]"
echo " gen-readme.sh <ARCH> 5.2"
echo " gen-readme.sh <ARCH> 5.3"
echo " gen-readme.sh <ARCH> 5.4"
echo " gen-readme.sh <ARCH> 5.5"
echo " gen-readme.sh <ARCH> 5.6"
echo " gen-readme.sh <ARCH> 7.0"
echo " gen-readme.sh <ARCH> 7.1"
echo " gen-readme.sh <ARCH> 7.2"
echo " gen-readme.sh <ARCH> 7.3"
echo " gen-readme.sh <ARCH> 7.4"
echo " gen-readme.sh <ARCH> 8.0"
echo " gen-readme.sh <ARCH> 8.1"
echo " gen-readme.sh <ARCH> 8.2"
} }
@@ -36,25 +27,24 @@ print_usage() {
### Extract PHP modules in alphabetical order and comma separated in one line ### Extract PHP modules in alphabetical order and comma separated in one line
### ###
get_modules() { get_modules() {
tag="${1}" current_tag="${1}"
# Retrieve all modules # Retrieve all modules
PHP_MODULES="$( docker run --rm --platform "${ARCH}" $(tty -s && echo '-it' || echo) --entrypoint=php devilbox/php-fpm:${tag} -m )" PHP_MODULES="$( docker run --rm --platform "${ARCH}" "$(tty -s && echo '-it' || echo)" --entrypoint=php "${IMAGE}:${current_tag}" -m )"
ALL_MODULES= ALL_MODULES=
if docker run --rm --platform "${ARCH}" $(tty -s && echo '-it' || echo) --entrypoint=find devilbox/php-fpm:${tag} /usr/local/lib/php/extensions -name 'ioncube.so' | grep -q ioncube.so; then if docker run --rm --platform "${ARCH}" "$(tty -s && echo '-it' || echo)" --entrypoint=find "${IMAGE}:${current_tag}" /usr/local/lib/php/extensions -name 'ioncube.so' | grep -q ioncube.so; then
ALL_MODULES="${ALL_MODULES},ioncube"; ALL_MODULES="${ALL_MODULES},ioncube";
fi fi
if docker run --rm --platform "${ARCH}" $(tty -s && echo '-it' || echo) --entrypoint=find devilbox/php-fpm:${tag} /usr/local/lib/php/extensions -name 'blackfire.so' | grep -q blackfire.so; then if docker run --rm --platform "${ARCH}" "$(tty -s && echo '-it' || echo)" --entrypoint=find "${IMAGE}:${current_tag}" /usr/local/lib/php/extensions -name 'blackfire.so' | grep -q blackfire.so; then
ALL_MODULES="${ALL_MODULES},blackfire"; ALL_MODULES="${ALL_MODULES},blackfire";
fi fi
if docker run --rm --platform "${ARCH}" $(tty -s && echo '-it' || echo) --entrypoint=find devilbox/php-fpm:${tag} /usr/local/lib/php/extensions -name 'psr.so' | grep -q psr.so; then if docker run --rm --platform "${ARCH}" "$(tty -s && echo '-it' || echo)" --entrypoint=find "${IMAGE}:${current_tag}" /usr/local/lib/php/extensions -name 'psr.so' | grep -q psr.so; then
ALL_MODULES="${ALL_MODULES},psr"; ALL_MODULES="${ALL_MODULES},psr";
fi fi
if docker run --rm --platform "${ARCH}" $(tty -s && echo '-it' || echo) --entrypoint=find devilbox/php-fpm:${tag} /usr/local/lib/php/extensions -name 'phalcon.so' | grep -q phalcon.so; then if docker run --rm --platform "${ARCH}" "$(tty -s && echo '-it' || echo)" --entrypoint=find "${IMAGE}:${current_tag}" /usr/local/lib/php/extensions -name 'phalcon.so' | grep -q phalcon.so; then
ALL_MODULES="${ALL_MODULES},phalcon"; ALL_MODULES="${ALL_MODULES},phalcon";
fi fi
@@ -85,15 +75,15 @@ get_modules() {
update_readme() { update_readme() {
v="${1}" v="${1}"
# Those sections must exist in README.md, otherwise this script will exit with errors # Those sections must exist in README.md, otherwise this script will exit with errors
sed -i'' "s|<td id=\"${v//.}-base\">.*<\/td>|<td id=\"${v//.}-base\">$( get_modules "${v}-base" )<\/td>|g" "${CWD}/../README.md" sed -i'' "s|<td id=\"${v//.}-base\">.*<\/td>|<td id=\"${v//.}-base\">$( get_modules "${TAG_BASE}" )<\/td>|g" "${CWD}/../README.md"
sed -i'' "s|<td id=\"${v//.}-mods\">.*<\/td>|<td id=\"${v//.}-mods\">$( get_modules "${v}-mods" )<\/td>|g" "${CWD}/../README.md" sed -i'' "s|<td id=\"${v//.}-mods\">.*<\/td>|<td id=\"${v//.}-mods\">$( get_modules "${TAG_MODS}" )<\/td>|g" "${CWD}/../README.md"
} }
### ###
### Entrypoint ### Entrypoint
### ###
if [ "${#}" -eq "0" ] || [ "${#}" -eq "1" ]; then if [ "${VERSION}" = "" ]; then
# Update PHP modules for all versions at once # Update PHP modules for all versions at once
update_readme "5.2" update_readme "5.2"
update_readme "5.3" update_readme "5.3"
@@ -108,31 +98,26 @@ if [ "${#}" -eq "0" ] || [ "${#}" -eq "1" ]; then
update_readme "8.0" update_readme "8.0"
update_readme "8.1" update_readme "8.1"
update_readme "8.2" update_readme "8.2"
elif [ "${#}" -gt "2" ]; then
# Specifying more than 1 argument is wrong
echo "Error, invalid number of arguments."
print_usage
exit 1
else else
if [ "${2}" != "5.2" ] \ if [ "${VERSION}" != "5.2" ] \
&& [ "${2}" != "5.3" ] \ && [ "${VERSION}" != "5.3" ] \
&& [ "${2}" != "5.4" ] \ && [ "${VERSION}" != "5.4" ] \
&& [ "${2}" != "5.5" ] \ && [ "${VERSION}" != "5.5" ] \
&& [ "${2}" != "5.6" ] \ && [ "${VERSION}" != "5.6" ] \
&& [ "${2}" != "7.0" ] \ && [ "${VERSION}" != "7.0" ] \
&& [ "${2}" != "7.1" ] \ && [ "${VERSION}" != "7.1" ] \
&& [ "${2}" != "7.2" ] \ && [ "${VERSION}" != "7.2" ] \
&& [ "${2}" != "7.3" ] \ && [ "${VERSION}" != "7.3" ] \
&& [ "${2}" != "7.4" ] \ && [ "${VERSION}" != "7.4" ] \
&& [ "${2}" != "8.0" ] \ && [ "${VERSION}" != "8.0" ] \
&& [ "${2}" != "8.1" ] \ && [ "${VERSION}" != "8.1" ] \
&& [ "${2}" != "8.2" ]; then && [ "${VERSION}" != "8.2" ]; then
# Argument does not match any of the PHP versions # Argument does not match any of the PHP versions
echo "Error, invalid argument." echo "Error, invalid argument."
print_usage print_usage
exit 1 exit 1
else else
# Update PHP modules for one specific PHP version # Update PHP modules for one specific PHP version
update_readme "${2}" update_readme "${VERSION}"
fi fi
fi fi

View File

@@ -10,11 +10,11 @@ set -o pipefail
### ###
function run() { function run() {
local cmd="${1}" local cmd="${1}"
local to_stderr=0 local to_stdout=0
# Output to stderr instead? # Output to stdout instead?
if [ "${#}" -eq "2" ]; then if [ "${#}" -eq "2" ]; then
to_stderr="${2}" to_stdout="${2}"
fi fi
local red="\033[0;31m" local red="\033[0;31m"
@@ -22,24 +22,24 @@ function run() {
local yellow="\033[0;33m" local yellow="\033[0;33m"
local reset="\033[0m" local reset="\033[0m"
if [ "${to_stderr}" -eq "0" ]; then if [ "${to_stdout}" -eq "0" ]; then
printf "${yellow}[%s] ${red}%s \$ ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)"
else
printf "${yellow}[%s] ${red}%s \$ ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)" >&2 printf "${yellow}[%s] ${red}%s \$ ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)" >&2
else
printf "${yellow}[%s] ${red}%s \$ ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)"
fi fi
if sh -c "${cmd}"; then if sh -c "${cmd}"; then
if [ "${to_stderr}" -eq "0" ]; then if [ "${to_stdout}" -eq "0" ]; then
printf "${green}[%s]${reset}\n" "OK"
else
printf "${green}[%s]${reset}\n" "OK" >&2 printf "${green}[%s]${reset}\n" "OK" >&2
else
printf "${green}[%s]${reset}\n" "OK"
fi fi
return 0 return 0
else else
if [ "${to_stderr}" -eq "0" ]; then if [ "${to_stdout}" -eq "0" ]; then
printf "${red}[%s]${reset}\n" "NO"
else
printf "${red}[%s]${reset}\n" "NO" >&2 printf "${red}[%s]${reset}\n" "NO" >&2
else
printf "${red}[%s]${reset}\n" "NO"
fi fi
return 1 return 1
fi fi
@@ -49,11 +49,11 @@ function run() {
### ###
function run_fail() { function run_fail() {
local cmd="${1}" local cmd="${1}"
local to_stderr=0 local to_stdout=0
# Output to stderr instead? # Output to stdout instead?
if [ "${#}" -eq "2" ]; then if [ "${#}" -eq "2" ]; then
to_stderr="${2}" to_stdout="${2}"
fi fi
local red="\033[0;31m" local red="\033[0;31m"
@@ -61,29 +61,51 @@ function run_fail() {
local yellow="\033[0;33m" local yellow="\033[0;33m"
local reset="\033[0m" local reset="\033[0m"
if [ "${to_stderr}" -eq "0" ]; then if [ "${to_stdout}" -eq "0" ]; then
printf "${yellow}[%s] ${red}%s \$ ${yellow}[NOT] ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)"
else
printf "${yellow}[%s] ${red}%s \$ ${yellow}[NOT] ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)" >&2 printf "${yellow}[%s] ${red}%s \$ ${yellow}[NOT] ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)" >&2
else
printf "${yellow}[%s] ${red}%s \$ ${yellow}[NOT] ${green}${cmd}${reset}\n" "$(hostname)" "$(whoami)"
fi fi
if ! sh -c "${cmd}"; then if ! sh -c "${cmd}"; then
if [ "${to_stderr}" -eq "0" ]; then if [ "${to_stdout}" -eq "0" ]; then
printf "${green}[%s]${reset}\n" "OK"
else
printf "${green}[%s]${reset}\n" "OK" >&2 printf "${green}[%s]${reset}\n" "OK" >&2
else
printf "${green}[%s]${reset}\n" "OK"
fi fi
return 0 return 0
else else
if [ "${to_stderr}" -eq "0" ]; then if [ "${to_stdout}" -eq "0" ]; then
printf "${red}[%s]${reset}\n" "NO"
else
printf "${red}[%s]${reset}\n" "NO" >&2 printf "${red}[%s]${reset}\n" "NO" >&2
else
printf "${red}[%s]${reset}\n" "NO"
fi fi
return 1 return 1
fi fi
} }
###
### Print H2
###
function print_h2() {
local text="${1}"
local red="\033[0;31m"
local green="\033[0;32m"
local yellow="\033[0;33m"
local purple="\033[0;35m"
local reset="\033[0m"
echo
echo
printf "${purple}%s${reset}\n" "###"
printf "${purple}%s${reset}\n" "### ${text}"
printf "${purple}%s${reset}\n" "###"
echo
}
### ###
### Get 15 character random word ### Get 15 character random word
### ###
@@ -93,8 +115,8 @@ function get_random_name() {
local name= local name=
for i in {1..15}; do for i in {1..15}; do
rand="$( shuf -i 0-${len} -n 1 )" rand="$( shuf -i "0-${len}" -n 1 )"
rand=$(( rand - 1 )) rand="$(( rand - 1 ))"
name="${name}${chr[$rand]}" name="${name}${chr[$rand]}"
i="${i}" # simply to get rid of shellcheck complaints i="${i}" # simply to get rid of shellcheck complaints
done done
@@ -107,22 +129,34 @@ function get_random_name() {
### ###
function docker_run() { function docker_run() {
local image_name="${1}" local image_name="${1}"
local architecture="${2}"
shift shift
shift
local args="${*}" local args="${*}"
# Returns docker-id # Returns docker-id
did="$( run "docker run --rm -d --name $( get_random_name ) ${args} ${image_name}" "1" )" >&2 echo "------------------------------ [STARTING CONTAINER] ------------------------------"
sleep 10 name="$( get_random_name )"
run "docker run --rm --platform ${architecture} --name ${name} ${args} ${image_name} &" 1>&2
run "sleep 15"
# If it fails, start again in foreground to fail again, but show errors >&2 echo "[CHECK IF RUNNING] docker ps"
if ! docker exec $(tty -s && echo "-it" || echo ) ${did} ls >/dev/null 2>&1; then # Check docker ps if running
run "docker run --rm --name $( get_random_name ) ${args} ${image_name}" "1" if ! run "docker ps | grep '${name}'" 1>&2; then
docker_stop "${name}"
>&2 echo "------------------------------ [STARTING CONTAINER] FAILED ------------------------------"
return 1 return 1
fi fi
# Check if we can ls
# Only get 8 digits of docker id >&2 echo "[CHECK IF RUNNING] docker exec"
echo "${did}" | grep -Eo '^[0-9a-zA-Z]{8}' if ! run "docker exec $(tty -s && echo "-it" || echo ) ${name} id" 1>&2; then
docker_stop "${name}"
>&2 echo "------------------------------ [STARTING CONTAINER] FAILED ------------------------------"
return 1
fi
>&2 echo "------------------------------ [STARTING CONTAINER] OK ------------------------------"
echo "${name}"
} }
@@ -130,9 +164,9 @@ function docker_run() {
### Show Docker logs ### Show Docker logs
### ###
function docker_logs() { function docker_logs() {
local docker_id="${1}" local name="${1}"
run "docker logs ${docker_id}" run "docker logs ${name}"
} }
@@ -140,28 +174,13 @@ function docker_logs() {
### Docker exec ### Docker exec
### ###
function docker_exec() { function docker_exec() {
local did="${1}" local name="${1}"
local cmd="${2}" local cmd="${2}"
shift shift
shift shift
local args="${*}" local args="${*}"
run "docker exec ${args} $(tty -s && echo '-it' || echo) ${did} ${cmd}" run "docker exec ${args} $(tty -s && echo '-it' || echo) ${name} ${cmd}"
}
###
### Get docker name
###
function docker_name() {
local did="${1}"
local name=
name="$( docker ps | grep "${did}" | awk '{print $(NF)}' )"
if [ -z "${name}" ]; then
return 1
fi
echo "${name}"
} }
@@ -169,15 +188,59 @@ function docker_name() {
### Stop container ### Stop container
### ###
function docker_stop() { function docker_stop() {
local did="${1}" local name="${1}"
local name=
name="$( docker ps --no-trunc --format='{{.ID}} {{.Names}}' | grep "${did}" | head -1 | awk '{print $2}' )"
# Stop # Stop
run "docker stop ${did} >/dev/null" run "docker stop ${name}" || true
if docker ps | grep -q "${did}"; then run "docker kill ${name} || true" 2>/dev/null
run "docker kill ${did} >/dev/null" || true run "docker rm -f ${name} || true" 2>/dev/null
fi }
# Remove if still exist
run "docker rm ${name} >/dev/null 2>&1 || true" ###
### Check if PHP-FPM is up and running
###
function check_php_fpm_running() {
local name="${1}"
local retries="60"
local index="0"
>&2 echo
# PHP process
index=0
>&2 echo "Checking if PHP-FPM process is running..."
while ! run "docker exec ${name} ps auxwww | grep -E '(php-fpm|php-cgi)'"; do
>&2 printf "."
index="$(( index + 1 ))"
if [ "${index}" = "${retries}" ]; then
>&2 echo
run "docker exec ${name} ps auxwww"
>&2 echo "Failed to find PHP process after ${retries} seconds."
return 1
fi
sleep 1
done
>&2 echo
# Docker logs
index=0
>&2 echo "Checking if PHP-FPM shows success in docker logs..."
while ! run "docker logs ${name} 2>&1 | grep -E 'php-fpm entered RUNNING state|ready to handle connections|fpm is running'"; do
>&2 printf "."
index="$(( index + 1 ))"
if [ "${index}" = "${retries}" ]; then
>&2 echo
>&2 echo "Failed to find PHP success in docker logs after ${retries} seconds."
return 1
fi
sleep 1
done
>&2 echo
# Wait some more time for everyting else to settle
run "sleep 10"
# Echo newline and return
return 0
} }

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -22,76 +24,112 @@ FLAVOUR="${3}"
### ###
### Debug == 0 ### Debug == 0
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=0" )" print_h2 "DEBUG_ENTRYPOINT=0"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=0" )"; then
exit 1
fi
if ! run_fail "docker logs ${did} 2>&1 | grep 'Debug level'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! run_fail "docker logs ${did} 2>&1 | grep '\[INFO\]'"; then
docker_logs "${did}" || true # Start Tests
docker_stop "${did}" || true print_h2 "Testing..."
if ! run_fail "docker logs ${name} 2>&1 | grep '\[INFO\]'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! run_fail "docker logs ${did} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then if ! run_fail "docker logs ${name} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then
docker_logs "${did}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" docker_stop "${name}"
### ###
### Debug == 1 ### Debug == 1
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=1" )" print_h2 "DEBUG_ENTRYPOINT=1"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=1" )"; then
exit 1
fi
if ! run "docker logs ${did} 2>&1 | grep 'Debug level: 1'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! run "docker logs ${did} 2>&1 | grep '\[INFO\]'"; then
docker_logs "${did}" || true # Start Tests
docker_stop "${did}" || true print_h2 "Testing..."
if ! run "docker logs ${name} 2>&1 | grep 'Debug level: 1'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! run_fail "docker logs ${did} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then if ! run "docker logs ${name} 2>&1 | grep '\[INFO\]'"; then
docker_logs "${did}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" if ! run_fail "docker logs ${name} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"
### ###
### Debug == 2 ### Debug == 2
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2" )" print_h2 "DEBUG_ENTRYPOINT=2"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2" )"; then
exit 1
fi
if ! run "docker logs ${did} 2>&1 | grep 'Debug level: 2'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! run "docker logs ${did} 2>&1 | grep '\[INFO\]'"; then
docker_logs "${did}" || true # Start Tests
docker_stop "${did}" || true print_h2 "Testing..."
if ! run "docker logs ${name} 2>&1 | grep 'Debug level: 2'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! run_fail "docker logs ${did} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then if ! run "docker logs ${name} 2>&1 | grep '\[INFO\]'"; then
docker_logs "${did}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" if ! run_fail "docker logs ${name} 2>&1 | grep -E '\[(ERR|\?\?\?)\]'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -22,58 +24,100 @@ FLAVOUR="${3}"
### ###
### uid: 1005 (new uid) ### uid: 1005 (new uid)
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=1005" )" print_h2 "DEBUG_ENTRYPOINT=2 NEW_UID=1005"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=1005" )"; then
exit 1
fi
if ! run "docker logs ${did} 2>&1 | grep -q '1005'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! docker_exec "${did}" "id | grep 'uid=1005'" "--user=devilbox"; then
docker_logs "${did}" || true # Start Tests
docker_stop "${did}" || true print_h2 "Testing..."
if ! run "docker logs ${name} 2>&1 | grep -q '1005'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" if ! docker_exec "${name}" "id | grep 'uid=1005'" "--user=devilbox"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"
### ###
### uid: 1000 (same uid) ### uid: 1000 (same uid)
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=1000" )" print_h2 "DEBUG_ENTRYPOINT=2 NEW_UID=1000"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=1000" )"; then
exit 1
fi
if ! run "docker logs ${did} 2>&1 | grep -q '1000'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! docker_exec "${did}" "id | grep 'uid=1000'" "--user=devilbox"; then
docker_logs "${did}" || true # Start Tests
docker_stop "${did}" || true print_h2 "Testing..."
if ! run "docker logs ${name} 2>&1 | grep -q '1000'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" if ! docker_exec "${name}" "id | grep 'uid=1000'" "--user=devilbox"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"
### ###
### uid: 33 (existing uid) ### uid: 33 (existing uid)
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=33" )" print_h2 "DEBUG_ENTRYPOINT=2 NEW_UID=33"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=33" )"; then
exit 1
fi
if ! run "docker logs ${did} 2>&1 | grep -q '33'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! docker_exec "${did}" "id | grep 'uid=33'" "--user=devilbox"; then
docker_logs "${did}" || true # Start Tests
docker_stop "${did}" || true print_h2 "Testing..."
if ! run "docker logs ${name} 2>&1 | grep -q '33'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" if ! docker_exec "${name}" "id | grep 'uid=33'" "--user=devilbox"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -22,58 +24,100 @@ FLAVOUR="${3}"
### ###
### gid: 1005 (new gid) ### gid: 1005 (new gid)
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_GID=1005" )" print_h2 "DEBUG_ENTRYPOINT=2 NEW_GID=1005"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_GID=1005" )"; then
exit 1
fi
if ! run "docker logs ${did} 2>&1 | grep -q '1005'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! docker_exec "${did}" "id | grep 'gid=1005'" "--user=devilbox"; then
docker_logs "${did}" || true # Start Tests
docker_stop "${did}" || true print_h2 "Testing..."
if ! run "docker logs ${name} 2>&1 | grep -q '1005'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" if ! docker_exec "${name}" "id | grep 'gid=1005'" "--user=devilbox"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"
### ###
### gid: 1000 (same gid) ### gid: 1000 (same gid)
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_GID=1000" )" print_h2 "DEBUG_ENTRYPOINT=2 NEW_GID=1000"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_GID=1000" )"; then
exit 1
fi
if ! run "docker logs ${did} 2>&1 | grep -q '1000'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! docker_exec "${did}" "id | grep 'gid=1000'" "--user=devilbox"; then
docker_logs "${did}" || true # Start Tests
docker_stop "${did}" || true print_h2 "Testing..."
if ! run "docker logs ${name} 2>&1 | grep -q '1000'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" if ! docker_exec "${name}" "id | grep 'gid=1000'" "--user=devilbox"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"
### ###
### gid: 33 (existing gid) ### gid: 33 (existing gid)
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_GID=33" )" print_h2 "DEBUG_ENTRYPOINT=2 NEW_GID=33"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_GID=33" )"; then
exit 1
fi
if ! run "docker logs ${did} 2>&1 | grep -q '33'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! docker_exec "${did}" "id | grep 'gid=33'" "--user=devilbox"; then
docker_logs "${did}" || true # Start Tests
docker_stop "${did}" || true print_h2 "Testing..."
if ! run "docker logs ${name} 2>&1 | grep -q '33'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" if ! docker_exec "${name}" "id | grep 'gid=33'" "--user=devilbox"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -37,12 +39,26 @@ chmod 0777 "${CONFIG_HOST}"
chmod 0777 "${DOC_ROOT_HOST}" chmod 0777 "${DOC_ROOT_HOST}"
chmod 0644 "${DOC_ROOT_HOST}/index.php" chmod 0644 "${DOC_ROOT_HOST}/index.php"
# Pull Image # Pull Image
run "until docker pull ${CONTAINER}; do sleep 1; done" print_h2 "Pulling Nginx"
run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
# Start PHP-FPM # Start PHP-FPM
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT}" )" print_h2 "Starting PHP-FPM"
name="$( docker_name "${did}" )" if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT}" )"; then
exit 1
fi
# Check if PHP-FPM is running
print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Nginx.conf # Nginx.conf
{ {
@@ -62,8 +78,11 @@ name="$( docker_name "${did}" )"
} > "${CONFIG_HOST}/php.conf" } > "${CONFIG_HOST}/php.conf"
# Start Nginx # Start Nginx
ndid="$( docker_run "${CONTAINER}" "-v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${CONFIG_HOST}:${CONFIG_CONT} -p ${WWW_PORT}:80 --link ${name}" )" print_h2 "Starting Nginx"
if ! nginx_name="$( docker_run "${CONTAINER}" "${ARCH}" "-v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${CONFIG_HOST}:${CONFIG_CONT} -p ${WWW_PORT}:80 --link ${name}" )"; then
docker_stop "${name}" || true
exit 1
fi
# Wait for both containers to be up and running # Wait for both containers to be up and running
run "sleep 10" run "sleep 10"
@@ -71,18 +90,18 @@ run "sleep 10"
### ###
### Check correct PHP-FPM user ### Check correct PHP-FPM user
### ###
print_h2 "Check PHP-FPM user"
# On pm = ondemand, there will be no child process, so we need to create some traffic # On pm = ondemand, there will be no child process, so we need to create some traffic
# in order to have child proccesses spawn # in order to have child proccesses spawn
for i in $(seq 1 10); do for i in $(seq 1 10); do
curl http://127.0.0.1:${WWW_PORT}/index.php?${i} >/dev/null 2>&1 & curl "http://127.0.0.1:${WWW_PORT}/index.php?${i}" >/dev/null 2>&1 &
done done
if ! docker_exec "${did}" "ps auxw | grep -E '(php-fpm: pool|php-cgi)' | grep -v grep | awk '{ print \$1 }' | tail -1 | grep devilbox"; then if ! docker_exec "${name}" "ps auxw | grep -E '(php-fpm|php-cgi)' | grep -v grep | awk '{ print \$1 }' | tail -1 | grep devilbox"; then
docker_exec "${did}" "ps auxw" docker_exec "${name}" "ps auxw"
# Shutdown # Shutdown
docker_stop "${ndid}" || true docker_stop "${nginx_name}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
echo "Failed" echo "Failed"
@@ -94,6 +113,7 @@ fi
### ###
### Test Nginx with PHP-FPM ### Test Nginx with PHP-FPM
### ###
print_h2 "Test Nginx with PHP-FPM"
if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php 2>&1 | grep '${FINDME}'"; then if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php 2>&1 | grep '${FINDME}'"; then
# Info # Info
@@ -101,25 +121,25 @@ if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php 2>&1 | grep '${FINDM
run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php" || true run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php" || true
run "curl -6 http://127.0.0.1:${WWW_PORT}/index.php" || true run "curl -6 http://127.0.0.1:${WWW_PORT}/index.php" || true
run "docker ps --no-trunc" run "docker ps --no-trunc"
docker_exec "${ndid}" "nginx -t" docker_exec "${nginx_name}" "nginx -t"
# Show logs # Show logs
docker_logs "${ndid}" || true docker_logs "${nginx_name}" || true
docker_logs "${did}" || true docker_logs "${name}" || true
# Ensure file is available # Ensure file is available
docker_exec "${ndid}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${nginx_name}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${did}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${name}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${ndid}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${nginx_name}" "cat ${DOC_ROOT_CONT}/index.php"
docker_exec "${did}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${name}" "cat ${DOC_ROOT_CONT}/index.php"
# Nginx configuration # Nginx configuration
docker_exec "${ndid}" "cat ${CONFIG_CONT}/php.conf" docker_exec "${nginx_name}" "cat ${CONFIG_CONT}/php.conf"
# Shutdown # Shutdown
docker_stop "${ndid}" || true docker_stop "${nginx_name}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
echo "Failed" echo "Failed"
@@ -130,7 +150,8 @@ fi
### ###
### Clean-up ### Clean-up
### ###
docker_stop "${did}" print_h2 "Cleanup"
docker_stop "${ndid}" docker_stop "${nginx_name}"
docker_stop "${name}"
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -22,12 +24,26 @@ FLAVOUR="${3}"
### ###
### Ensuring 'apt update' works without any issues ### Ensuring 'apt update' works without any issues
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2" )" print_h2 "Ensure 'apt update' works"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2" )"; then
exit 1
fi
if ! docker_exec "${did}" "apt update"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}"
# Start Tests
print_h2 "Testing..."
if ! docker_exec "${name}" "apt update"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
@@ -21,7 +23,7 @@ FLAVOUR="${3}"
ERROR=0 ERROR=0
for dir in $( ls -1 "${CWD}/modules/" ); do for dir in $( ls -1 "${CWD}/modules/" ); do
if ! "${CWD}/modules.sh" "${IMAGE}" "${VERSION}" "${FLAVOUR}" "${dir}"; then if ! "${CWD}/modules.sh" "${IMAGE}" "${ARCH}" "${VERSION}" "${FLAVOUR}" "${TAG}" "${dir}"; then
ERROR="$(( ERROR + 1 ))" ERROR="$(( ERROR + 1 ))"
fi fi
done done

View File

@@ -6,15 +6,17 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
if [ "${#}" != "4" ]; then if [ "${#}" != "6" ]; then
>&2 echo "Error, requires 4 arguments: <IMAGE> <VERSION> <FLAVOUR> <MODULE>" >&2 echo "Error, requires 6 arguments: <IMAGE> <ARCH> <VERSION> <FLAVOUR> <TAG> <MODULE>"
exit 1 exit 1
fi fi
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
MODULE="${4}" FLAVOUR="${4}"
TAG="${5}"
MODULE="${6}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -47,13 +49,14 @@ fi
WORKDIR="/tmp/${MODULE}" WORKDIR="/tmp/${MODULE}"
docker run \ docker run \
--rm \ --rm \
--platform "${ARCH}" \
-e DEBUG_ENTRYPOINT=0 \ -e DEBUG_ENTRYPOINT=0 \
-e NEW_UID="$(id -u)" \ -e NEW_UID="$(id -u)" \
-e NEW_GID="$(id -g)" \ -e NEW_GID="$(id -g)" \
-v "${CWD}/modules/${MODULE}:${WORKDIR}" \ -v "${CWD}/modules/${MODULE}:${WORKDIR}" \
--entrypoint=sh \ --entrypoint=sh \
--workdir="${WORKDIR}" \ --workdir="${WORKDIR}" \
"${IMAGE}:${VERSION}-${FLAVOUR}" \ "${IMAGE}:${TAG}" \
-c 'find . -name "*.php" -type f -print0 | xargs -0 -n1 sh -c " -c 'find . -name "*.php" -type f -print0 | xargs -0 -n1 sh -c "
set -e set -e
set -u set -u

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -22,25 +24,39 @@ FLAVOUR="${3}"
### ###
### Europe/Berlin ### Europe/Berlin
### ###
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e TIMEZONE=Europe/Berlin" )" print_h2 "-e DEBUG_ENTRYPOINT=2 -e TIMEZONE=Europe/Berlin"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e TIMEZONE=Europe/Berlin" )"; then
exit 1
fi
if ! run "docker logs ${did} 2>&1 | grep -q 'Europe/Berlin'"; then # Check if PHP-FPM is running
docker_logs "${did}" || true print_h2 "Check if PHP-FPM is running"
docker_stop "${did}" || true if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! docker_exec "${did}" "date | grep -E 'CE(S)*T'"; then
docker_exec "${did}" "date" # Start Tests
docker_logs "${did}" || true print_h2 "Testing..."
docker_stop "${did}" || true if ! run "docker logs ${name} 2>&1 | grep -q 'Europe/Berlin'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! docker_exec "${did}" "php -i | grep -E 'date\.timezone' | grep 'Europe/Berlin'"; then if ! docker_exec "${name}" "date | grep -E 'CE(S)*T'"; then
docker_logs "${did}" || true docker_exec "${name}" "date"
docker_stop "${did}" || true docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
docker_stop "${did}" if ! docker_exec "${name}" "php -i | grep -E 'date\.timezone' | grep 'Europe/Berlin'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
docker_stop "${name}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -40,13 +42,28 @@ chmod 0777 -R "${CFG_DIR_HOST}"
chmod 0777 -R "${WWW_DIR_HOST}" chmod 0777 -R "${WWW_DIR_HOST}"
# Pull Image
print_h2 "Pulling Nginx"
run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
### ###
### Start container ### Start container
### ###
# Start PHP-FPM # Start PHP-FPM
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e DOCKER_LOGS=1 -v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${LOG_DIR_HOST}:/var/log/php" )" print_h2 "Starting PHP-FPM"
name="$( docker_name "${did}" )" if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e DOCKER_LOGS=1 -v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${LOG_DIR_HOST}:/var/log/php" )"; then
exit 1
fi
# Check if PHP-FPM is running
print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Nginx.conf # Nginx.conf
{ {
@@ -67,8 +84,11 @@ name="$( docker_name "${did}" )"
# Start Nginx # Start Nginx
ndid="$( docker_run "${CONTAINER}" "-v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${CFG_DIR_HOST}:${CFG_DIR_CONT} -p ${WWW_PORT}:80 --link ${name}" )" print_h2 "Starting Nginx"
if ! nginx_name="$( docker_run "${CONTAINER}" "${ARCH}" "-v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${CFG_DIR_HOST}:${CFG_DIR_CONT} -p ${WWW_PORT}:80 --link ${name}" )"; then
docker_stop "${name}" || true
exit 1
fi
# Wait for both containers to be up and running # Wait for both containers to be up and running
run "sleep 10" run "sleep 10"
@@ -76,6 +96,7 @@ run "sleep 10"
### ###
### Fire positive and error generating request ### Fire positive and error generating request
### ###
print_h2 "Fire curl requests"
run "curl http://localhost:${WWW_PORT}/ok.php" run "curl http://localhost:${WWW_PORT}/ok.php"
run "curl http://localhost:${WWW_PORT}/fail.php" run "curl http://localhost:${WWW_PORT}/fail.php"
@@ -83,10 +104,12 @@ run "curl http://localhost:${WWW_PORT}/fail.php"
### ###
### Run tests ### Run tests
### ###
if ! run "docker logs ${did} 2>&1 | grep -q 'DOCKER_LOGS'"; then print_h2 "Checking DOCKER_LOGS"
docker_logs "${did}" || true if ! run "docker logs ${name} 2>&1 | grep 'DOCKER_LOGS'"; then
docker_stop "${ndid}" || true docker_logs "${nginx_name}" || true
docker_stop "${did}" || true docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -94,13 +117,15 @@ if ! run "docker logs ${did} 2>&1 | grep -q 'DOCKER_LOGS'"; then
exit 1 exit 1
fi fi
if [ -f "${LOG_DIR_HOST}/php-fpm.access" ]; then print_h2 "Ensure php-fpm.access does not exist"
if ! run_fail "test -f ${LOG_DIR_HOST}/php-fpm.access"; then
echo "Access log should not exist: ${LOG_DIR_HOST}/php-fpm.access" echo "Access log should not exist: ${LOG_DIR_HOST}/php-fpm.access"
ls -lap ${LOG_DIR_HOST}/ ls -lap "${LOG_DIR_HOST}/"
cat "${LOG_DIR_HOST}/php-fpm.access" cat "${LOG_DIR_HOST}/php-fpm.access"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -108,13 +133,15 @@ if [ -f "${LOG_DIR_HOST}/php-fpm.access" ]; then
exit 1 exit 1
fi fi
if [ -f "${LOG_DIR_HOST}/php-fpm.error" ]; then print_h2 "Ensure php-fpm.error does not exist"
if ! run_fail "test -f ${LOG_DIR_HOST}/php-fpm.error"; then
echo "Error log should not exist: ${LOG_DIR_HOST}/php-fpm.error" echo "Error log should not exist: ${LOG_DIR_HOST}/php-fpm.error"
ls -lap ${LOG_DIR_HOST}/ ls -lap "${LOG_DIR_HOST}/"
cat "${LOG_DIR_HOST}/php-fpm.error" cat "${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -126,33 +153,39 @@ fi
### PHP 5.2 still does not show any errors ### PHP 5.2 still does not show any errors
### ###
if [ "${VERSION}" != "5.2" ]; then if [ "${VERSION}" != "5.2" ]; then
if ! run "docker logs ${did} 2>&1 | grep -q 'GET /ok.php'"; then print_h2 "Ensure stderr access logging is enabled"
if ! run "docker logs ${name} 2>&1 | grep 'GET /ok.php'"; then
echo "Error no access log string for 'GET /ok.php' found in stderr" echo "Error no access log string for 'GET /ok.php' found in stderr"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! run "docker logs ${did} 2>&1 | grep -q 'GET /fail.php'"; then print_h2 "Ensure stderr access logging is enabled"
if ! run "docker logs ${name} 2>&1 | grep 'GET /fail.php'"; then
echo "Error no access log string for 'GET /fail.php' found in stderr" echo "Error no access log string for 'GET /fail.php' found in stderr"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! run "docker logs ${did} 2>&1 | grep -q '/var/www/default/fail.php'"; then print_h2 "Ensure errors are logged to stderr"
if ! run "docker logs ${name} 2>&1 | grep '/var/www/default/fail.php'"; then
echo "Error no error message found in stderr" echo "Error no error message found in stderr"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -165,8 +198,9 @@ fi
### ###
### Shutdown ### Shutdown
### ###
docker_stop "${ndid}" || true print_h2 "Cleanup"
docker_stop "${did}" docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -40,13 +42,28 @@ chmod 0777 -R "${CFG_DIR_HOST}"
chmod 0777 -R "${WWW_DIR_HOST}" chmod 0777 -R "${WWW_DIR_HOST}"
# Pull Image
print_h2 "Pulling Nginx"
run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
### ###
### Start container ### Start container
### ###
# Start PHP-FPM # Start PHP-FPM
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e DOCKER_LOGS=0 -v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${LOG_DIR_HOST}:/var/log/php" )" print_h2 "Starting PHP-FPM"
name="$( docker_name "${did}" )" if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e DOCKER_LOGS=0 -v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${LOG_DIR_HOST}:/var/log/php" )"; then
exit 1
fi
# Check if PHP-FPM is running
print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Nginx.conf # Nginx.conf
{ {
@@ -67,7 +84,11 @@ name="$( docker_name "${did}" )"
# Start Nginx # Start Nginx
ndid="$( docker_run "${CONTAINER}" "-v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${CFG_DIR_HOST}:${CFG_DIR_CONT} -p ${WWW_PORT}:80 --link ${name}" )" print_h2 "Starting Nginx"
if ! nginx_name="$( docker_run "${CONTAINER}" "${ARCH}" "-v ${WWW_DIR_HOST}:${WWW_DIR_CONT} -v ${CFG_DIR_HOST}:${CFG_DIR_CONT} -p ${WWW_PORT}:80 --link ${name}" )"; then
docker_stop "${name}" || true
exit 1
fi
# Wait for both containers to be up and running # Wait for both containers to be up and running
run "sleep 10" run "sleep 10"
@@ -76,6 +97,7 @@ run "sleep 10"
### ###
### Fire positive and error generating request ### Fire positive and error generating request
### ###
print_h2 "Fire curl requests"
run "curl http://localhost:${WWW_PORT}/ok.php" run "curl http://localhost:${WWW_PORT}/ok.php"
run "curl http://localhost:${WWW_PORT}/fail.php" run "curl http://localhost:${WWW_PORT}/fail.php"
@@ -83,10 +105,11 @@ run "curl http://localhost:${WWW_PORT}/fail.php"
### ###
### Run tests ### Run tests
### ###
if ! run "docker logs ${did} 2>&1 | grep -q 'DOCKER_LOGS'"; then print_h2 "Checking DOCKER_LOGS"
docker_logs "${did}" || true if ! run "docker logs ${name} 2>&1 | grep 'DOCKER_LOGS'"; then
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -94,24 +117,29 @@ if ! run "docker logs ${did} 2>&1 | grep -q 'DOCKER_LOGS'"; then
exit 1 exit 1
fi fi
if [ ! -f "${LOG_DIR_HOST}/php-fpm.access" ]; then print_h2 "Ensure php-fpm.access exists"
if ! run "test -f ${LOG_DIR_HOST}/php-fpm.access"; then
echo "Access log does not exist: ${LOG_DIR_HOST}/php-fpm.access" echo "Access log does not exist: ${LOG_DIR_HOST}/php-fpm.access"
ls -lap ${LOG_DIR_HOST}/ ls -lap "${LOG_DIR_HOST}/"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if [ ! -r "${LOG_DIR_HOST}/php-fpm.access" ]; then
print_h2 "Ensure php-fpm.access is readable"
if ! run "test -r ${LOG_DIR_HOST}/php-fpm.access"; then
echo "Access log is not readable" echo "Access log is not readable"
ls -lap ${LOG_DIR_HOST}/ ls -lap "${LOG_DIR_HOST}/"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -119,24 +147,14 @@ if [ ! -r "${LOG_DIR_HOST}/php-fpm.access" ]; then
exit 1 exit 1
fi fi
if [ ! -f "${LOG_DIR_HOST}/php-fpm.error" ]; then print_h2 "Ensure php-fpm.error exists"
if ! run "test -f ${LOG_DIR_HOST}/php-fpm.error"; then
echo "Error log does not exist: ${LOG_DIR_HOST}/php-fpm.error" echo "Error log does not exist: ${LOG_DIR_HOST}/php-fpm.error"
ls -lap ${LOG_DIR_HOST}/ ls -lap "${LOG_DIR_HOST}/"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
rm -rf "${LOG_DIR_HOST}" docker_stop "${name}" || true
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
echo "Failed"
exit 1
fi
if [ ! -r "${LOG_DIR_HOST}/php-fpm.error" ]; then
echo "Error log is not readable"
ls -lap ${LOG_DIR_HOST}/
docker_logs "${did}" || true
docker_stop "${ndid}" || true
docker_stop "${did}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -144,40 +162,62 @@ if [ ! -r "${LOG_DIR_HOST}/php-fpm.error" ]; then
exit 1 exit 1
fi fi
# Ensure no access/error goes to stderr print_h2 "Ensure php-fpm.error is readable"
if run "docker logs ${did} 2>&1 | grep -q 'GET /ok.php'"; then if ! run "test -r ${LOG_DIR_HOST}/php-fpm.error"; then
echo "Error log is not readable"
ls -lap "${LOG_DIR_HOST}/"
docker_logs "${nginx_name}" || true
docker_logs "${name}" || true
docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}"
echo "Failed"
exit 1
fi
print_h2 "Ensure no access/error logging exists in stderr (ok.php)"
if run "docker logs ${name} 2>&1 | grep 'GET /ok.php'"; then
echo "Error access log string for 'GET /ok.php' found in stderr, but shold go to file" echo "Error access log string for 'GET /ok.php' found in stderr, but shold go to file"
run "cat ${LOG_DIR_HOST}/php-fpm.access" run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error" run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if run "docker logs ${did} 2>&1 | grep -q 'GET /fail.php'"; then
print_h2 "Ensure no access/error logging exists in stderr (fail.php)"
if run "docker logs ${name} 2>&1 | grep 'GET /fail.php'"; then
echo "Error access log string for 'GET /fail.php' found in stderr, but should go to file" echo "Error access log string for 'GET /fail.php' found in stderr, but should go to file"
run "cat ${LOG_DIR_HOST}/php-fpm.access" run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error" run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if run "docker logs ${did} 2>&1 | grep -q '/var/www/default/fail.php'"; then
print_h2 "Ensure no error message is present in stderr"
if run "docker logs ${name} 2>&1 | grep '/var/www/default/fail.php'"; then
echo "Error error message found in stderr, but should go to file" echo "Error error message found in stderr, but should go to file"
run "cat ${LOG_DIR_HOST}/php-fpm.access" run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error" run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -188,26 +228,31 @@ fi
# PHP-FPM 5.2 does not show access logs # PHP-FPM 5.2 does not show access logs
if [ "${VERSION}" != "5.2" ]; then if [ "${VERSION}" != "5.2" ]; then
# Test access and error file for correct content # Test access and error file for correct content
if ! run "grep -q 'GET /ok.php' ${LOG_DIR_HOST}/php-fpm.access"; then print_h2 "Test access logs in php-fpm.access (ok.php)"
if ! run "grep 'GET /ok.php' ${LOG_DIR_HOST}/php-fpm.access"; then
echo "Error no access log string for 'GET /ok.php' found in: ${LOG_DIR_HOST}/php-fpm.access" echo "Error no access log string for 'GET /ok.php' found in: ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.access" run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error" run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! run "grep -q 'GET /fail.php' ${LOG_DIR_HOST}/php-fpm.access"; then
print_h2 "Test access logs in php-fpm.access (fail.php)"
if ! run "grep 'GET /fail.php' ${LOG_DIR_HOST}/php-fpm.access"; then
echo "Error no access log string for 'GET /fail.php' found in: ${LOG_DIR_HOST}/php-fpm.access" echo "Error no access log string for 'GET /fail.php' found in: ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.access" run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error" run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -215,13 +260,16 @@ if [ "${VERSION}" != "5.2" ]; then
exit 1 exit 1
fi fi
fi fi
if ! run "grep -q '/var/www/default/fail.php' ${LOG_DIR_HOST}/php-fpm.error"; then
print_h2 "Ensiure error message is present in php-fpm.error"
if ! run "grep '/var/www/default/fail.php' ${LOG_DIR_HOST}/php-fpm.error"; then
echo "Error no error message found in: ${LOG_DIR_HOST}/php-fpm.error" echo "Error no error message found in: ${LOG_DIR_HOST}/php-fpm.error"
run "cat ${LOG_DIR_HOST}/php-fpm.access" run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error" run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_logs "${did}" || true docker_logs "${nginx_name}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${nginx_name}" || true
docker_stop "${name}" || true
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"
@@ -233,12 +281,13 @@ fi
### ###
### Shutdown ### Shutdown
### ###
docker_logs "${did}" || true print_h2 "Cleanup"
docker_logs "${name}" || true
run "ls -lap ${LOG_DIR_HOST}/" run "ls -lap ${LOG_DIR_HOST}/"
run "cat ${LOG_DIR_HOST}/php-fpm.access" run "cat ${LOG_DIR_HOST}/php-fpm.access"
run "cat ${LOG_DIR_HOST}/php-fpm.error" run "cat ${LOG_DIR_HOST}/php-fpm.error"
docker_stop "${ndid}" || true docker_stop "${nginx_name}" || true
docker_stop "${did}" docker_stop "${name}"
rm -rf "${LOG_DIR_HOST}" rm -rf "${LOG_DIR_HOST}"
rm -rf "${CFG_DIR_HOST}" rm -rf "${CFG_DIR_HOST}"
rm -rf "${WWW_DIR_HOST}" rm -rf "${WWW_DIR_HOST}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -23,12 +25,26 @@ FLAVOUR="${3}"
### Postfix ### Postfix
### ###
MOUNTPOINT="$( mktemp --directory )" MOUNTPOINT="$( mktemp --directory )"
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e ENABLE_MAIL=2 -v ${MOUNTPOINT}:/var/mail" )"
run "sleep 10"
if ! run "docker logs ${did} 2>&1 | grep -q 'ENABLE_MAIL'"; then print_h2 "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e ENABLE_MAIL=2 -v ${MOUNTPOINT}:/var/mail"
docker_logs "${did}" || true if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e ENABLE_MAIL=2 -v ${MOUNTPOINT}:/var/mail" )"; then
docker_stop "${did}" || true exit 1
fi
# Check if PHP-FPM is running
print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Start Tests
print_h2 "Testing..."
if ! run "docker logs ${name} 2>&1 | grep -q 'ENABLE_MAIL'"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
rm -rf "${MOUNTPOINT}" rm -rf "${MOUNTPOINT}"
echo "Failed" echo "Failed"
exit 1 exit 1
@@ -37,8 +53,8 @@ fi
if [ ! -f "${MOUNTPOINT}/devilbox" ]; then if [ ! -f "${MOUNTPOINT}/devilbox" ]; then
echo "Mail file does not exist: ${MOUNTPOINT}/devilbox" echo "Mail file does not exist: ${MOUNTPOINT}/devilbox"
ls -lap "${MOUNTPOINT}/" ls -lap "${MOUNTPOINT}/"
docker_logs "${did}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
rm -rf "${MOUNTPOINT}" rm -rf "${MOUNTPOINT}"
echo "Failed" echo "Failed"
exit 1 exit 1
@@ -46,25 +62,37 @@ fi
if [ ! -r "${MOUNTPOINT}/devilbox" ]; then if [ ! -r "${MOUNTPOINT}/devilbox" ]; then
echo "Mail file is not readable" echo "Mail file is not readable"
ls -lap "${MOUNTPOINT}/" ls -lap "${MOUNTPOINT}/"
docker_logs "${did}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
rm -rf "${MOUNTPOINT}" rm -rf "${MOUNTPOINT}"
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
# Send test email # Send test email
docker_exec "${did}" "php -r \"mail('mailtest@devilbox.org', 'the subject', 'the message');\"" print_h2 "Send test email"
run "sleep 5" docker_exec "${name}" "php -r \"mail('mailtest@devilbox.org', 'the subject', 'the message');\""
if ! run "grep 'the subject' ${MOUNTPOINT}/devilbox"; then
docker_logs "${did}" || true
docker_stop "${did}" || true
run "cat ${MOUNTPOINT}/devilbox"
rm -rf "${MOUNTPOINT}"
echo "Failed"
exit 1
fi
docker_stop "${did}" # Probe if email has been received
print_h2 "Probe for sent email"
RETRIES=60
INDEX=0
while ! run "grep 'the subject' ${MOUNTPOINT}/devilbox"; do
if [ "${RETRIES}" = "${INDEX}" ]; then
docker_logs "${name}" || true
docker_stop "${name}" || true
run "cat ${MOUNTPOINT}/devilbox"
rm -rf "${MOUNTPOINT}"
echo "Failed"
exit 1
fi
INDEX="$(( INDEX + 1 ))"
sleep 1
done
# Cleanup
print_h2 "Cleanup"
docker_stop "${name}"
rm -rf "${MOUNTPOINT}" rm -rf "${MOUNTPOINT}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -22,52 +24,70 @@ FLAVOUR="${3}"
### ###
### Socat forwarding ### Socat forwarding
### ###
CONTAINER="mysql:5.6" CONTAINER="devilbox/mysql:mysql-8.0"
# Pull Container # Pull Container
run "until docker pull ${CONTAINER}; do sleep 1; done" print_h2 "Pulling MySQL"
run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
# Start mysql container # Start mysql container
mdid="$( docker_run "${CONTAINER}" "-e MYSQL_ALLOW_EMPTY_PASSWORD=yes" )" print_h2 "Starting MySQL"
mname="$( docker_name "${mdid}" )" if ! name_mysql="$( docker_run "${CONTAINER}" "${ARCH}" "-e MYSQL_ALLOW_EMPTY_PASSWORD=yes" )"; then
run "sleep 5" exit 1
fi
run "sleep 60"
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e FORWARD_PORTS_TO_LOCALHOST=3306:${mname}:3306 --link ${mname}" )"
if ! run "docker logs ${did} 2>&1 | grep 'Forwarding ${mname}:3306'"; then # Start PHP-FPM
docker_logs "${did}" || true print_h2 "Start PHP-FPM"
docker_logs "${mdid}" || true if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e FORWARD_PORTS_TO_LOCALHOST=3306:${name_mysql}:3306 --link ${name_mysql}" )"; then
docker_stop "${did}" || true docker_stop "${name_mysql}" || true
docker_stop "${mdid}" || true exit 1
fi
# Check if PHP-FPM is running
print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
# Wait for both containers to come up print_h2 "Ensure forwarding info is present in docker logs"
run "sleep 10" if ! run "docker logs ${name} 2>&1 | grep 'Forwarding ${name_mysql}:3306'"; then
docker_logs "${name_mysql}" || true
docker_logs "${name}" || true
docker_stop "${name_mysql}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Test connectivity
#docker_exec "${did}" "ping -c 1 ${mname}"
#docker_exec "${did}" "echo | nc -w 1 ${mname} 3306"
#docker_exec "${did}" "echo | nc -w 1 127.0.0.1 3306"
# Only work container has mysql binary installed # Only work container has mysql binary installed
if [ "${FLAVOUR}" = "work" ]; then if [ "${FLAVOUR}" = "work" ]; then
if ! docker_exec "${did}" "mysql --user=root --password= --host=${mname} -e 'SHOW DATABASES;'"; then print_h2 "Test connectivity against hostname"
docker_logs "${did}" || true if ! docker_exec "${name}" "mysql --user=root --password= --host=${name_mysql} -e 'SHOW DATABASES;'"; then
docker_logs "${mdid}" || true docker_logs "${name_mysql}" || true
docker_stop "${did}" || true docker_logs "${name}" || true
docker_stop "${mdid}" || true docker_stop "${name_mysql}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
if ! docker_exec "${did}" "mysql --user=root --password= --host=127.0.0.1 -e 'SHOW DATABASES;'"; then print_h2 "Test connectivity against 127.0.0.1"
docker_logs "${did}" || true if ! docker_exec "${name}" "mysql --user=root --password= --host=127.0.0.1 -e 'SHOW DATABASES;'"; then
docker_logs "${mdid}" || true docker_logs "${name_mysql}" || true
docker_stop "${did}" || true docker_logs "${name}" || true
docker_stop "${mdid}" || true docker_stop "${name_mysql}" || true
docker_stop "${name}" || true
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
fi fi
docker_stop "${mdid}"
docker_stop "${did}"
print_h2 "Cleanup"
docker_stop "${name_mysql}"
docker_stop "${name}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -43,12 +45,25 @@ chmod 0777 "${PHP_INI_HOST}"
chmod 0777 "${DOC_ROOT_HOST}" chmod 0777 "${DOC_ROOT_HOST}"
chmod 0644 "${DOC_ROOT_HOST}/index.php" chmod 0644 "${DOC_ROOT_HOST}/index.php"
# Pull container # Pull container
run "until docker pull ${CONTAINER}; do sleep 1; done" print_h2 "Pulling Nginx"
run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
# Start PHP-FPM # Start PHP-FPM
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${PHP_INI_HOST}:${PHP_INI_CONT}" )" print_h2 "Starting PHP-FPM"
name="$( docker_name "${did}" )" if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${PHP_INI_HOST}:${PHP_INI_CONT}" )"; then
exit 1
fi
# Check if PHP-FPM is running
print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Nginx.conf # Nginx.conf
{ {
@@ -69,17 +84,21 @@ name="$( docker_name "${did}" )"
# Start Nginx # Start Nginx
ndid="$( docker_run "${CONTAINER}" "-v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${CONFIG_HOST}:${CONFIG_CONT} -p ${WWW_PORT}:80 --link ${name}" )" print_h2 "Starting Nginx"
if ! name_nginx="$( docker_run "${CONTAINER}" "${ARCH}" "-v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${CONFIG_HOST}:${CONFIG_CONT} -p ${WWW_PORT}:80 --link ${name}" )"; then
docker_stop "${name}" || true
exit 1
fi
# Wait for both containers to be up and running # Wait for both containers to be up and running
run "sleep 10" run "sleep 10"
# Check entrypoint # Check entrypoint
if ! run "docker logs ${did} | grep 'post.ini'"; then print_h2 "Checking entrypoint"
docker_logs "${ndid}" || true if ! run "docker logs ${name} | grep 'post.ini'"; then
docker_logs "${did}" || true docker_logs "${name_nginx}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${name_nginx}" || true
docker_stop "${name}" || true
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
rm -rf "${PHP_INI_HOST}" rm -rf "${PHP_INI_HOST}"
@@ -88,31 +107,32 @@ if ! run "docker logs ${did} | grep 'post.ini'"; then
fi fi
# Check PHP connectivity # Check PHP connectivity
print_h2 "Checking connectivity"
if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php >/dev/null 2>&1"; then if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php >/dev/null 2>&1"; then
# Info # Info
run "netstat -tuln" run "netstat -tuln"
run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php" || true run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php" || true
run "curl -6 http://127.0.0.1:${WWW_PORT}/index.php" || true run "curl -6 http://127.0.0.1:${WWW_PORT}/index.php" || true
run "docker ps --no-trunc" run "docker ps --no-trunc"
docker_exec "${ndid}" "nginx -t" docker_exec "${name_nginx}" "nginx -t"
# Show logs # Show logs
docker_logs "${ndid}" || true docker_logs "${name_nginx}" || true
docker_logs "${did}" || true docker_logs "${name}" || true
# Ensure file is available # Ensure file is available
docker_exec "${ndid}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${name_nginx}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${did}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${name}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${ndid}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${name_nginx}" "cat ${DOC_ROOT_CONT}/index.php"
docker_exec "${did}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${name}" "cat ${DOC_ROOT_CONT}/index.php"
# Nginx configuration # Nginx configuration
docker_exec "${ndid}" "cat ${CONFIG_CONT}/php.conf" docker_exec "${name_nginx}" "cat ${CONFIG_CONT}/php.conf"
# Shutdown # Shutdown
docker_stop "${ndid}" || true docker_stop "${name_nginx}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
rm -rf "${PHP_INI_HOST}" rm -rf "${PHP_INI_HOST}"
@@ -121,17 +141,18 @@ if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php >/dev/null 2>&1"; th
fi fi
# Check modified php.ini # Check modified php.ini
if ! docker_exec "${did}" "php -r \"echo ini_get('post_max_size');\" | grep '17M'"; then print_h2 "Checking modified php.ini"
if ! docker_exec "${name}" "php -r \"echo ini_get('post_max_size');\" | grep '17M'"; then
# Info # Info
docker_exec "${did}" "php -r \"echo ini_get('post_max_size');\"" docker_exec "${name}" "php -r \"echo ini_get('post_max_size');\""
# Show logs # Show logs
docker_logs "${ndid}" || true docker_logs "${name_nginx}" || true
docker_logs "${did}" || true docker_logs "${name}" || true
# Shutdown # Shutdown
docker_stop "${ndid}" || true docker_stop "${name_nginx}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
rm -rf "${PHP_INI_HOST}" rm -rf "${PHP_INI_HOST}"
@@ -140,31 +161,32 @@ if ! docker_exec "${did}" "php -r \"echo ini_get('post_max_size');\" | grep '17M
fi fi
# Check modified php.ini # Check modified php.ini
print_h2 "Checking modified php.ini"
if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php 2>/dev/null | grep post_max_size | grep '17M'"; then if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php 2>/dev/null | grep post_max_size | grep '17M'"; then
# Info # Info
run "netstat -tuln" run "netstat -tuln"
run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php" || true run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php" || true
run "curl -6 http://127.0.0.1:${WWW_PORT}/index.php" || true run "curl -6 http://127.0.0.1:${WWW_PORT}/index.php" || true
run "docker ps --no-trunc" run "docker ps --no-trunc"
docker_exec "${ndid}" "nginx -t" docker_exec "${name_nginx}" "nginx -t"
# Show logs # Show logs
docker_logs "${ndid}" || true docker_logs "${name_nginx}" || true
docker_logs "${did}" || true docker_logs "${name}" || true
# Ensure file is available # Ensure file is available
docker_exec "${ndid}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${name_nginx}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${did}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${name}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${ndid}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${name_nginx}" "cat ${DOC_ROOT_CONT}/index.php"
docker_exec "${did}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${name}" "cat ${DOC_ROOT_CONT}/index.php"
# Nginx configuration # Nginx configuration
docker_exec "${ndid}" "cat ${CONFIG_CONT}/php.conf" docker_exec "${name_nginx}" "cat ${CONFIG_CONT}/php.conf"
# Shutdown # Shutdown
docker_stop "${ndid}" || true docker_stop "${name_nginx}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
rm -rf "${PHP_INI_HOST}" rm -rf "${PHP_INI_HOST}"
@@ -174,8 +196,9 @@ fi
# Cleanup # Cleanup
docker_stop "${did}" print_h2 "Cleanup"
docker_stop "${ndid}" docker_stop "${name}"
docker_stop "${name_nginx}"
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
rm -rf "${PHP_INI_HOST}" rm -rf "${PHP_INI_HOST}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -49,11 +51,23 @@ chmod 0777 "${DOC_ROOT_HOST}"
chmod 0644 "${DOC_ROOT_HOST}/index.php" chmod 0644 "${DOC_ROOT_HOST}/index.php"
# Pull container # Pull container
run "until docker pull ${CONTAINER}; do sleep 1; done" print_h2 "Pulling Nginx"
run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
# Start PHP-FPM # Start PHP-FPM
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${PHP_CNF_HOST}:${PHP_CNF_CONT}" )" print_h2 "Starting PHP-FPM"
name="$( docker_name "${did}" )" if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${PHP_CNF_HOST}:${PHP_CNF_CONT}" )"; then
exit 1
fi
# Check if PHP-FPM is running
print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Nginx.conf # Nginx.conf
{ {
@@ -74,17 +88,21 @@ name="$( docker_name "${did}" )"
# Start Nginx # Start Nginx
ndid="$( docker_run "${CONTAINER}" "-v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${CONFIG_HOST}:${CONFIG_CONT} -p ${WWW_PORT}:80 --link ${name}" )" print_h2 "Starting Nginx"
if ! name_nginx="$( docker_run "${CONTAINER}" "${ARCH}" "-v ${DOC_ROOT_HOST}:${DOC_ROOT_CONT} -v ${CONFIG_HOST}:${CONFIG_CONT} -p ${WWW_PORT}:80 --link ${name}" )"; then
docker_stop "${name}" || true
exit 1
fi
# Wait for both containers to be up and running # Wait for both containers to be up and running
run "sleep 10" run "sleep 10"
# Check entrypoint # Check entrypoint
if ! run "docker logs ${did} | grep 'post.conf'"; then print_h2 "Checking entrypoint"
docker_logs "${ndid}" || true if ! run "docker logs ${name} | grep 'post.conf'"; then
docker_logs "${did}" || true docker_logs "${name_nginx}" || true
docker_stop "${ndid}" || true docker_logs "${name}" || true
docker_stop "${did}" || true docker_stop "${name_nginx}" || true
docker_stop "${name}" || true
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
rm -rf "${PHP_CNF_HOST}" rm -rf "${PHP_CNF_HOST}"
@@ -93,31 +111,32 @@ if ! run "docker logs ${did} | grep 'post.conf'"; then
fi fi
# Check PHP connectivity # Check PHP connectivity
print_h2 "Checking connectivity"
if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php >/dev/null 2>&1"; then if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php >/dev/null 2>&1"; then
# Info # Info
run "netstat -tuln" run "netstat -tuln"
run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php" || true run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php" || true
run "curl -6 http://127.0.0.1:${WWW_PORT}/index.php" || true run "curl -6 http://127.0.0.1:${WWW_PORT}/index.php" || true
run "docker ps --no-trunc" run "docker ps --no-trunc"
docker_exec "${ndid}" "nginx -t" docker_exec "${name_nginx}" "nginx -t"
# Show logs # Show logs
docker_logs "${ndid}" || true docker_logs "${name_nginx}" || true
docker_logs "${did}" || true docker_logs "${name}" || true
# Ensure file is available # Ensure file is available
docker_exec "${ndid}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${name_nginx}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${did}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${name}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${ndid}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${name_nginx}" "cat ${DOC_ROOT_CONT}/index.php"
docker_exec "${did}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${name}" "cat ${DOC_ROOT_CONT}/index.php"
# Nginx configuration # Nginx configuration
docker_exec "${ndid}" "cat ${CONFIG_CONT}/php.conf" docker_exec "${name_nginx}" "cat ${CONFIG_CONT}/php.conf"
# Shutdown # Shutdown
docker_stop "${ndid}" || true docker_stop "${name_nginx}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
rm -rf "${PHP_CNF_HOST}" rm -rf "${PHP_CNF_HOST}"
@@ -125,32 +144,32 @@ if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php >/dev/null 2>&1"; th
exit 1 exit 1
fi fi
# Check modified php-fpm.conf # Check modified php-fpm.conf
print_h2 "Checking modified php-fpm.conf"
if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php 2>/dev/null | grep memory_limit | grep '17M'"; then if ! run "curl -q -4 http://127.0.0.1:${WWW_PORT}/index.php 2>/dev/null | grep memory_limit | grep '17M'"; then
# Info # Info
run "netstat -tuln" run "netstat -tuln"
run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php | grep memory_limit" || true run "curl -4 http://127.0.0.1:${WWW_PORT}/index.php | grep memory_limit" || true
run "docker ps --no-trunc" run "docker ps --no-trunc"
docker_exec "${ndid}" "nginx -t" docker_exec "${name_nginx}" "nginx -t"
# Show logs # Show logs
docker_logs "${ndid}" || true docker_logs "${name_nginx}" || true
docker_logs "${did}" || true docker_logs "${name}" || true
# Ensure file is available # Ensure file is available
docker_exec "${ndid}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${name_nginx}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${did}" "ls -la ${DOC_ROOT_CONT}/" docker_exec "${name}" "ls -la ${DOC_ROOT_CONT}/"
docker_exec "${ndid}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${name_nginx}" "cat ${DOC_ROOT_CONT}/index.php"
docker_exec "${did}" "cat ${DOC_ROOT_CONT}/index.php" docker_exec "${name}" "cat ${DOC_ROOT_CONT}/index.php"
# Nginx configuration # Nginx configuration
docker_exec "${ndid}" "cat ${CONFIG_CONT}/php.conf" docker_exec "${name_nginx}" "cat ${CONFIG_CONT}/php.conf"
# Shutdown # Shutdown
docker_stop "${ndid}" || true docker_stop "${name_nginx}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
rm -rf "${PHP_CNF_HOST}" rm -rf "${PHP_CNF_HOST}"
@@ -160,8 +179,9 @@ fi
# Cleanup # Cleanup
docker_stop "${did}" print_h2 "Cleanup"
docker_stop "${ndid}" docker_stop "${name}"
docker_stop "${name_nginx}"
rm -rf "${DOC_ROOT_HOST}" rm -rf "${DOC_ROOT_HOST}"
rm -rf "${CONFIG_HOST}" rm -rf "${CONFIG_HOST}"
rm -rf "${PHP_CNF_HOST}" rm -rf "${PHP_CNF_HOST}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -33,24 +35,35 @@ printf "#!/bin/bash\\necho 'abcdefghijklmnopq';\\n" > "${RUN_SH_HOST}/myscript1.
chmod +x "${RUN_SH_HOST}/myscript1.sh" chmod +x "${RUN_SH_HOST}/myscript1.sh"
# Start PHP-FPM # Start PHP-FPM
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${RUN_SH_HOST}:${RUN_SH_CONT}" )" print_h2 "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${RUN_SH_HOST}:${RUN_SH_CONT}"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${RUN_SH_HOST}:${RUN_SH_CONT}" )"; then
exit 1
fi
# Wait for both containers to be up and running # Check if PHP-FPM is running
run "sleep 10" print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Check entrypoint for script run # Check entrypoint for script run
if ! run "docker logs ${did} | grep 'myscript1.sh'"; then print_h2 "Check docker logs for script run"
docker_logs "${did}" || true if ! run "docker logs ${name} | grep 'myscript1.sh'"; then
docker_stop "${did}" || true docker_logs "${name}" || true
docker_stop "${name}" || true
rm -rf "${RUN_SH_HOST}" rm -rf "${RUN_SH_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
# Check entrypoint for script output # Check entrypoint for script output
if ! run "docker logs ${did} | grep 'abcdefghijklmnopq'"; then print_h2 "Check docker logs for script output"
docker_logs "${did}" || true if ! run "docker logs ${name} | grep 'abcdefghijklmnopq'"; then
docker_stop "${did}" || true docker_logs "${name}" || true
docker_stop "${name}" || true
rm -rf "${RUN_SH_HOST}" rm -rf "${RUN_SH_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
@@ -58,5 +71,6 @@ fi
# Cleanup # Cleanup
docker_stop "${did}" print_h2 "Cleanup"
docker_stop "${name}"
rm -rf "${RUN_SH_HOST}" rm -rf "${RUN_SH_HOST}"

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -33,24 +35,35 @@ printf "#!/bin/bash\\necho 'abcdefghijklmnopq';\\n" > "${RUN_SH_HOST}/myscript1.
chmod +x "${RUN_SH_HOST}/myscript1.sh" chmod +x "${RUN_SH_HOST}/myscript1.sh"
# Start PHP-FPM # Start PHP-FPM
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${RUN_SH_HOST}:${RUN_SH_CONT}" )" print_h2 "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${RUN_SH_HOST}:${RUN_SH_CONT}"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -v ${RUN_SH_HOST}:${RUN_SH_CONT}" )"; then
exit 1
fi
# Wait for both containers to be up and running # Check if PHP-FPM is running
run "sleep 10" print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
# Check entrypoint for script run # Check entrypoint for script run
if ! run "docker logs ${did} | grep 'myscript1.sh'"; then print_h2 "Check docker logs for script run"
docker_logs "${did}" || true if ! run "docker logs ${name} | grep 'myscript1.sh'"; then
docker_stop "${did}" || true docker_logs "${name}" || true
docker_stop "${name}" || true
rm -rf "${RUN_SH_HOST}" rm -rf "${RUN_SH_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
fi fi
# Check entrypoint for script output # Check entrypoint for script output
if ! run "docker logs ${did} | grep 'abcdefghijklmnopq'"; then print_h2 "Check docker logs for script output"
docker_logs "${did}" || true if ! run "docker logs ${name} | grep 'abcdefghijklmnopq'"; then
docker_stop "${did}" || true docker_logs "${name}" || true
docker_stop "${name}" || true
rm -rf "${RUN_SH_HOST}" rm -rf "${RUN_SH_HOST}"
echo "Failed" echo "Failed"
exit 1 exit 1
@@ -58,5 +71,6 @@ fi
# Cleanup # Cleanup
docker_stop "${did}" print_h2 "Cleanup"
docker_stop "${name}"
rm -rf "${RUN_SH_HOST}" rm -rf "${RUN_SH_HOST}"

View File

@@ -30,8 +30,8 @@ CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
### ###
### Sanity check ### Sanity check
### ###
if [ "${#}" -ne "4" ]; then if [ "${#}" -ne "5" ]; then
echo "Usage: start.ci <image> <arch> <version> <flavour>" echo "Usage: start.ci <image> <arch> <version> <flavour> <tag>"
exit 1 exit 1
fi fi
@@ -39,47 +39,52 @@ IMAGE="${1}"
ARCH="${2}" ARCH="${2}"
VERSION="${3}" VERSION="${3}"
FLAVOUR="${4}" FLAVOUR="${4}"
TAG="${5}"
### ###
### Run tests ### Run tests
### ###
if [ "${FLAVOUR}" = "base" ] || [ "${FLAVOUR}" = "mods" ] || [ "${FLAVOUR}" = "prod" ] || [ "${FLAVOUR}" = "work" ]; then if [ "${FLAVOUR}" = "base" ] || [ "${FLAVOUR}" = "mods" ] || [ "${FLAVOUR}" = "prod" ] || [ "${FLAVOUR}" = "work" ]; then
TESTS="$( find ${CWD} -regex "${CWD}/base/[0-9].+.*\.sh" | sort -u )" TESTS="$( find "${CWD}" -regex "${CWD}/base/[0-9].+.*\.sh" | sort -u )"
for t in ${TESTS}; do for t in ${TESTS}; do
printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################" printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################"
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH}): ${t}" printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH})"
printf "\033[0;33m%s %s\033[0m\n" "#" "${t} ${IMAGE} ${ARCH} ${VERSION} ${FLAVOUR} ${TAG}"
printf "\033[0;33m%s\033[0m\n\n" "################################################################################" printf "\033[0;33m%s\033[0m\n\n" "################################################################################"
time ${t} "${IMAGE}" "${VERSION}" "${FLAVOUR}" time ${t} "${IMAGE}" "${ARCH}" "${VERSION}" "${FLAVOUR}" "${TAG}"
done done
fi fi
if [ "${FLAVOUR}" = "mods" ] || [ "${FLAVOUR}" = "prod" ] || [ "${FLAVOUR}" = "work" ]; then if [ "${FLAVOUR}" = "mods" ] || [ "${FLAVOUR}" = "prod" ] || [ "${FLAVOUR}" = "work" ]; then
TESTS="$( find ${CWD} -regex "${CWD}/mods/[0-9].+.*\.sh" | sort -u )" TESTS="$( find "${CWD}" -regex "${CWD}/mods/[0-9].+.*\.sh" | sort -u )"
for t in ${TESTS}; do for t in ${TESTS}; do
printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################" printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################"
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH}): ${t}" printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH})"
printf "\033[0;33m%s %s\033[0m\n" "#" "${t} ${IMAGE} ${ARCH} ${VERSION} ${FLAVOUR} ${TAG}"
printf "\033[0;33m%s\033[0m\n\n" "################################################################################" printf "\033[0;33m%s\033[0m\n\n" "################################################################################"
time ${t} "${IMAGE}" "${VERSION}" "${FLAVOUR}" time ${t} "${IMAGE}" "${ARCH}" "${VERSION}" "${FLAVOUR}" "${TAG}"
done done
fi fi
if [ "${FLAVOUR}" = "prod" ] || [ "${FLAVOUR}" = "work" ]; then if [ "${FLAVOUR}" = "prod" ] || [ "${FLAVOUR}" = "work" ]; then
TESTS="$( find ${CWD} -regex "${CWD}/prod/[0-9].+.*\.sh" | sort -u )" TESTS="$( find "${CWD}" -regex "${CWD}/prod/[0-9].+.*\.sh" | sort -u )"
for t in ${TESTS}; do for t in ${TESTS}; do
printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################" printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################"
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH}): ${t}" printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH})"
printf "\033[0;33m%s %s\033[0m\n" "#" "${t} ${IMAGE} ${ARCH} ${VERSION} ${FLAVOUR} ${TAG}"
printf "\033[0;33m%s\033[0m\n\n" "################################################################################" printf "\033[0;33m%s\033[0m\n\n" "################################################################################"
time ${t} "${IMAGE}" "${VERSION}" "${FLAVOUR}" time ${t} "${IMAGE}" "${ARCH}" "${VERSION}" "${FLAVOUR}" "${TAG}"
done done
fi fi
if [ "${FLAVOUR}" = "work" ]; then if [ "${FLAVOUR}" = "work" ]; then
TESTS="$( find ${CWD} -regex "${CWD}/work/[0-9].+.*\.sh" | sort -u )" TESTS="$( find "${CWD}" -regex "${CWD}/work/[0-9].+.*\.sh" | sort -u )"
for t in ${TESTS}; do for t in ${TESTS}; do
printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################" printf "\n\n\033[0;33m%s\033[0m\n" "################################################################################"
printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH}): ${t}" printf "\033[0;33m%s %s\033[0m\n" "#" "[${VERSION}-${FLAVOUR}] (${ARCH})"
printf "\033[0;33m%s %s\033[0m\n" "#" "${t} ${IMAGE} ${ARCH} ${VERSION} ${FLAVOUR} ${TAG}"
printf "\033[0;33m%s\033[0m\n\n" "################################################################################" printf "\033[0;33m%s\033[0m\n\n" "################################################################################"
time ${t} "${IMAGE}" "${VERSION}" "${FLAVOUR}" time ${t} "${IMAGE}" "${ARCH}" "${VERSION}" "${FLAVOUR}" "${TAG}"
done done
fi fi

View File

@@ -7,8 +7,10 @@ set -o pipefail
CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)" CWD="$(cd -P -- "$(dirname -- "$0")" && pwd -P)"
IMAGE="${1}" IMAGE="${1}"
VERSION="${2}" ARCH="${2}"
FLAVOUR="${3}" VERSION="${3}"
FLAVOUR="${4}"
TAG="${5}"
# shellcheck disable=SC1090 # shellcheck disable=SC1090
. "${CWD}/../.lib.sh" . "${CWD}/../.lib.sh"
@@ -24,35 +26,82 @@ FLAVOUR="${3}"
### ###
MYSQL_ROOT_PASSWORD="toor" MYSQL_ROOT_PASSWORD="toor"
MOUNTPOINT="$( mktemp --directory )" MOUNTPOINT="$( mktemp --directory )"
CONTAINER="mysql:5.6" CONTAINER="devilbox/mysql:mysql-8.0"
# Pull Container # Pull Container
run "until docker pull ${CONTAINER}; do sleep 1; done" print_h2 "Pulling MySQL"
run "until docker pull --platform ${ARCH} ${CONTAINER}; do sleep 1; done"
# Start mysql container # Start mysql container
mdid="$( docker_run "${CONTAINER}" "-e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" )" print_h2 "Starting MySQL"
mname="$( docker_name "${mdid}" )" if ! name_mysql="$( docker_run "${CONTAINER}" "${ARCH}" "-e MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}" )"; then
run "sleep 10" exit 1
fi
run "sleep 60"
# Start PHP-FPM container # Start PHP-FPM container
did="$( docker_run "${IMAGE}:${VERSION}-${FLAVOUR}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e FORWARD_PORTS_TO_LOCALHOST=3306:${mname}:3306 -e MYSQL_BACKUP_USER=root -e MYSQL_BACKUP_PASS=${MYSQL_ROOT_PASSWORD} -e MYSQL_BACKUP_HOST=127.0.0.1 -v ${MOUNTPOINT}:/shared/backups --link ${mname}" )" print_h2 "Start PHP-FPM"
if ! name="$( docker_run "${IMAGE}:${TAG}" "${ARCH}" "-e DEBUG_ENTRYPOINT=2 -e NEW_UID=$(id -u) -e NEW_GID=$(id -g) -e FORWARD_PORTS_TO_LOCALHOST=3306:${name_mysql}:3306 -e MYSQL_BACKUP_USER=root -e MYSQL_BACKUP_PASS=${MYSQL_ROOT_PASSWORD} -e MYSQL_BACKUP_HOST=127.0.0.1 -v ${MOUNTPOINT}:/shared/backups --link ${name_mysql}" )"; then
docker_stop "${name_mysql}" || true
exit 1
fi
docker_exec "${did}" mysqldump-secure # Check if PHP-FPM is running
print_h2 "Check if PHP-FPM is running"
if ! check_php_fpm_running "${name}"; then
docker_logs "${name}" || true
docker_stop "${name}" || true
echo "Failed"
exit 1
fi
if [ ! -d "${MOUNTPOINT}/mysql" ]; then print_h2 "Run mysqldump-secure"
echo "MySQL backup dir does not exist: ${MOUNTPOINT}/mysql" if ! docker_exec "${name}" "mysqldump-secure -vv"; then
ls -lap ${MOUNTPOINT}/ docker_logs "${name_mysql}" || true
docker_logs "${did}" || true docker_logs "${name}" || true
docker_logs "${mdid}" || true docker_stop "${name_mysql}" || true
docker_stop "${did}" || true docker_stop "${name}" || true
docker_stop "${mdid}" || true
rm -rf "${MOUNTPOINT}" rm -rf "${MOUNTPOINT}"
exit 1 exit 1
fi fi
run "ls -lap ${MOUNTPOINT}/mysql/ | grep -E 'mysql\.sql\.gz'"
run "ls -lap ${MOUNTPOINT}/mysql/ | grep -E 'mysql\.sql\.gz\.info'"
docker_stop "${did}" print_h2 "Test backup directory"
docker_stop "${mdid}" if ! run "test -d ${MOUNTPOINT}/mysql"; then
echo "MySQL backup dir does not exist: ${MOUNTPOINT}/mysql"
ls -lap "${MOUNTPOINT}/"
docker_logs "${name_mysql}" || true
docker_logs "${name}" || true
docker_stop "${name_mysql}" || true
docker_stop "${name}" || true
rm -rf "${MOUNTPOINT}"
exit 1
fi
print_h2 "Grep backup files"
if ! run "ls -lap ${MOUNTPOINT}/mysql/ | grep -E 'mysql\.sql\.gz'"; then
ls -lap "${MOUNTPOINT}/"
docker_logs "${name_mysql}" || true
docker_logs "${name}" || true
docker_stop "${name_mysql}" || true
docker_stop "${name}" || true
rm -rf "${MOUNTPOINT}"
exit 1
fi
print_h2 "Grep info files"
if ! run "ls -lap ${MOUNTPOINT}/mysql/ | grep -E 'mysql\.sql\.gz\.info'"; then
ls -lap "${MOUNTPOINT}/"
docker_logs "${name_mysql}" || true
docker_logs "${name}" || true
docker_stop "${name_mysql}" || true
docker_stop "${name}" || true
rm -rf "${MOUNTPOINT}"
exit 1
fi
print_h2 "Cleanup"
docker_stop "${name_mysql}"
docker_stop "${name}"
rm -rf "${MOUNTPOINT}" rm -rf "${MOUNTPOINT}"