Compare commits

...

302 Commits

Author SHA1 Message Date
Markus Opolka
dfb5b39211 Upgrading to Version 5.2.11+220124 2022-02-01 08:11:21 +01:00
Markus Opolka
16175a30ac Upgrading to LTS Version 3.27.33+220125 2022-02-01 08:09:52 +01:00
Markus Opolka
69178ec686 Upgrading to Version 5.2.10+220118 2022-01-24 14:06:58 +01:00
Markus Opolka
822a936b36 Upgrading to LTS Version 3.27.32+220119 2022-01-24 14:06:16 +01:00
Markus Opolka
99f898aedc Upgrading to Version 5.2.9+220110 2022-01-18 16:52:59 +01:00
Markus Opolka
b3bfb6f2a3 Upgrading to LTS Version 3.27.31+220104 2022-01-18 16:49:41 +01:00
Markus Opolka
f2c65ebc44 Enable :latest Tag for Apache Image (#115) 2022-01-18 14:54:17 +01:00
Jack Henschel
80a9ca9173 Merge pull request #113 from martialblog/jacksgt-patch-1
Correct path to data volume of Postgres deployment
2022-01-11 11:35:45 +01:00
Jack Henschel
cb13a177b6 Correct path to data volume of Postgres deployment
Fixes https://github.com/martialblog/docker-limesurvey/issues/112
2022-01-10 08:31:20 +01:00
Markus Opolka
70a86c2301 Upgrading to Version 5.2.7+211221 2022-01-05 10:00:39 +01:00
Markus Opolka
bcd42d3f63 Upgrading to LTS Version 3.27.30+211222 2022-01-05 09:59:14 +01:00
Markus Opolka
0dbe244a9c Upgrading to Version 5.2.6+211213 2021-12-22 09:18:51 +01:00
Markus Opolka
41520cf155 Upgrading to LTS Version 3.27.29+211214 2021-12-22 09:17:55 +01:00
Markus Opolka
4554f13f3d Upgrading to Version 5.2.5+211207 2021-12-14 13:53:27 +01:00
Markus Opolka
edea222851 Upgrading to LTS Version 3.27.28+211208 2021-12-14 13:52:25 +01:00
Markus Opolka
0e35fa6d05 Upgrading to Version 5.2.4+211129 2021-12-07 11:57:55 +01:00
Markus Opolka
0650b759c0 Upgrading to LTS Version 3.27.27+211130 2021-12-07 11:57:04 +01:00
Jérôme Rautureau
7f87925fa7 Limesurvey not compatible with 8.1 docker image (#110)
Limesurvey not compatible with 8.1 docker image yet

* Causes PHP 8.1 deprecation notices and other stuff
* Set all image to PHP 8.0. 

Co-authored-by: Jérôme Rautureau <Jérôme Rautureau jerome.rautureau@agglo-larochelle.fr>
2021-12-03 09:00:40 +01:00
Markus Opolka
71fade66fe Merge pull request #109 from le-zell/patch-1
Update entrypoint.sh
2021-12-02 10:15:01 +01:00
Jérôme Rautureau
1ff7ea366d Update entrypoint.sh
corrections on entrypoint.sh (missing doucle quotes)
2021-12-02 09:32:51 +01:00
Markus Opolka
fadbe68076 Merge pull request #108 from martialblog/traefik-example
Add a Traefik example with subpath
2021-12-02 08:29:04 +01:00
Markus Opolka
c73949610f Add Traefik docker-compose example 2021-12-02 08:20:25 +01:00
Markus Opolka
79aea85bfe Upgrading to Version 5.2.3+211122 2021-11-29 12:29:37 +01:00
Markus Opolka
453cb4b1eb Upgrading to LTS Version 3.27.26+211123 2021-11-29 12:28:41 +01:00
Jack Henschel
58ad34b0bd Merge pull request #107 from martialblog/jack-fix-tags
Fix image tag generation
2021-11-28 14:57:38 +01:00
Jack Henschel
8f1b452789 Fix image tag generation
Previously, only the immutable tags would get generated (i.e.
`5.1.2-1234`), but not the rolling tags (`5-apache`), due to a
limitation of the docker metadata action.
Thus, now we use manual regex matching instead.
See the linked issue for details.

Fixes https://github.com/martialblog/docker-limesurvey/issues/105
2021-11-28 11:06:23 +01:00
Markus Opolka
19a387488a Move entrypoint to /usr/local/bin (#104)
* Move entrypoint to /usr/local/bin

 - so that it's not served by the webserver
2021-11-25 07:56:11 +01:00
Markus Opolka
19a1a0d044 Extend example nginx.conf to include more protected paths (#103) 2021-11-25 07:55:47 +01:00
Mark
624a17b9fc Add depends_on for nginx so it waits until the limesurvey app is ready (#102)
By adding a depends_on in lime-web, it will wait for the limesurvey app to be ready to accept connections.
2021-11-24 09:30:51 +01:00
Markus Opolka
21bc2e44a5 Upgrading to Version 5.2.2+211115 2021-11-23 08:05:51 +01:00
Markus Opolka
644d144f08 Upgrading to LTS Version 3.27.25+211116 2021-11-23 08:04:56 +01:00
Markus Opolka
21d3ffceff Upgrading to Version 5.2.1+211111 2021-11-17 18:38:29 +01:00
Markus Opolka
18f6a97ed3 Upgrading to LTS Version 3.27.24+211108 2021-11-17 18:37:20 +01:00
Markus Opolka
5d9c116b64 Upgrading to Version 5.2.0+211110 2021-11-12 08:04:59 +01:00
Markus Opolka
4b02c3c26d Upgrading to LTS Version 3.27.23+211102 2021-11-12 08:03:42 +01:00
Markus Opolka
1676677dfc Update entrypoint to enable an empty table prefix (#100)
Update entrypoint to enable an empty table prefix

 - Who are we to dictate a table prefix
 - Makes it easier to migrate existing databases that don't have a prefix
2021-11-08 20:38:35 +01:00
Markus Opolka
681f421d6f Upgrading to Version 5.1.17+211025 2021-11-04 07:58:35 +01:00
Markus Opolka
baab608bd9 Upgrading to LTS Version 3.27.22+211026 2021-11-04 07:57:54 +01:00
Markus Opolka
7e1fa3eedd Upgrading to Version 5.1.16+211020 2021-10-25 11:05:13 +02:00
Markus Opolka
5a401f33f7 Upgrading to LTS Version 3.27.21+211021 2021-10-25 11:04:21 +02:00
Alex Sears
c3a3e77b76 Add encryption nonce and secret box key to 5.0 images (#99)
Add encryption nonce and secret box key to 5.0 images

Signed-off-by: Alex Sears <me@alexsears.com>
2021-10-25 08:52:32 +02:00
Markus Opolka
d6af8e0a03 Remove trivy scan (#97)
- It's too verbose and we currently don't have time to review everyting
2021-10-18 09:47:55 +02:00
Markus Opolka
633893f9a8 Upgrading to Version 5.1.14+210927 2021-10-13 19:04:47 +02:00
Markus Opolka
3cc111f903 Upgrading to LTS Version 3.27.19+210928 2021-10-13 19:03:52 +02:00
Alex Sears
0d572c645c Update entrypoint to allow customization of MySQL engine (#96)
* Update entrypoint to allow customization of MySQL engine
* Update fpm images to customize MySQL engine
* Update README for MySQL engine values and default
2021-10-13 11:37:05 +02:00
Markus Opolka
bca073774f Upgrading to Version 5.1.13+210923 2021-09-28 08:33:24 +02:00
Markus Opolka
e580c1ef45 Upgrading to LTS Version 3.27.18+210921 2021-09-28 08:32:11 +02:00
Markus Opolka
abe42af3e2 Upgrading to Version 5.1.11+210920 2021-09-21 07:59:13 +02:00
Markus Opolka
8a8a8db556 Upgrading to LTS Version 3.27.17+210911 2021-09-21 07:58:39 +02:00
Lucas Benevides
7e3a9ad099 Include Hints to use in limesurvey 3. (#90)
This makes more clear for those who want to use the LTS version of limesurvey, that some adaptations are needed.
2021-09-15 14:04:21 +02:00
Markus Opolka
a57da625d7 Upgrading to Version 5.1.9+210912 2021-09-10 09:50:37 +02:00
Markus Opolka
87da3cea63 Upgrading to LTS Version 3.27.16+210909 2021-09-10 09:49:45 +02:00
Markus Opolka
b845a1d47f Upgrading to Version 5.1.7+210908 2021-09-08 09:19:00 +02:00
Markus Opolka
9d35a25170 Upgrading to LTS Version 3.27.15+210907 2021-09-08 09:17:34 +02:00
Markus Opolka
83b9ff0695 Upgrading to Version 5.1.5+210830 2021-09-07 10:03:09 +02:00
Markus Opolka
d12196e622 Upgrading to LTS Version 3.27.14+210831 2021-09-07 10:02:27 +02:00
Arjun Srivastava
9abf028503 Bug fixes for certbot-nginx config. (#87)
- added missing $ for variable
- removed ``"``` which lead to cert bot incorrrectly reading "-d example.com" as a whole as an argument, and throwing an error
2021-08-30 13:10:14 +02:00
Markus Opolka
b93f79bd4e Upgrading to Version 5.1.3+210817 2021-08-24 08:07:10 +02:00
Markus Opolka
cbae03e396 Upgrading to LTS Version 3.27.12+210816 2021-08-24 08:06:23 +02:00
Markus Opolka
5915942a26 Upgrading to Version 5.1.2+210813 2021-08-17 17:13:04 +02:00
Markus Opolka
57e3b84970 Upgrading to LTS Version 3.27.11+210809 2021-08-17 17:12:23 +02:00
Markus Opolka
70631e85bd Upgrading to Version 5.0.13+210804 2021-08-12 07:58:46 +02:00
Markus Opolka
452f6291c0 Upgrading to LTS Version 3.27.10+210803 2021-08-12 07:57:55 +02:00
Markus Opolka
0a8860911c Upgrading to Version 5.0.12+210729 2021-08-05 08:13:10 +02:00
Markus Opolka
1b174dafb7 Upgrading to LTS Version 3.27.9+210726 2021-08-05 08:12:14 +02:00
Markus Opolka
2c011a2de6 Upgrading to Version 5.0.11+210727 2021-07-30 07:59:57 +02:00
Markus Opolka
e63cd1ab2b Upgrading to Version 5.0.10+210723 2021-07-28 08:17:22 +02:00
Markus Opolka
2a7eebdc66 Upgrading to LTS Version 3.27.8+210721 2021-07-28 08:14:07 +02:00
Markus Opolka
52483b4656 Update Trivy config to only scan type 'os' (#85)
- since we are not in charge of the app
2021-07-27 10:20:42 +02:00
Markus Opolka
342d706142 Update README (#84) 2021-07-27 09:41:07 +02:00
Markus Opolka
da676f1998 Upgrading to Version 5.0.9+210722 2021-07-25 17:15:48 +02:00
Markus Opolka
6ecc2e30dd Upgrading to LTS Version 3.27.7+210713 2021-07-25 17:14:36 +02:00
Markus Opolka
e638fc36a0 Add Variable to Ignore User-Agent in Logs (#80)
* Set trivy scan to exit 0, until we cleanup those false positives
* Add variable to ignore logs for certain User-Agents. This allows us to have a clearer log when using regular health checks
2021-07-25 16:55:56 +02:00
Markus Opolka
bd836fd91f Merge pull request #82 from martialblog/update-contrib
Update CONTRIBUTING.md
2021-07-23 20:06:40 +02:00
Markus Opolka
d95fdafbd4 Update CONTRIBUTING.md 2021-07-23 20:01:16 +02:00
Markus Opolka
962f607a11 Merge pull request #77 from JensHeinrich/feature/shellCheck
Add suggestions from shellcheck
2021-07-23 16:16:20 +02:00
Jens Heinrich
7146b4d09e Add suggestions from shellcheck 2021-07-23 08:45:23 +02:00
Markus Opolka
dce4f4e100 Merge pull request #76 from martialblog/sessions
Add variable for setting table session
2021-07-22 16:53:06 +02:00
Markus Opolka
05ec82a41c Add variable for setting table session
- this allows LimeSurvey to scale horizontally
2021-07-22 16:32:08 +02:00
Markus Opolka
e3223f7a87 Upgrading to Version 5.0.7+210628 2021-07-15 18:45:37 +02:00
Markus Opolka
f29d671591 Upgrading to LTS Version 3.27.6+210629 2021-07-15 18:42:36 +02:00
Markus Opolka
745553a417 Upgrading to Version 5.0.6+210625 2021-06-29 08:01:59 +02:00
Markus Opolka
f313ba2581 Upgrading to LTS Version 3.27.5+210624 2021-06-29 08:00:55 +02:00
Markus Opolka
e7a859bc1a Upgrading to Version 5.0.5+210621 2021-06-25 08:18:56 +02:00
Markus Opolka
fdce9e0f97 Upgrading to LTS Version 3.27.4+210622 2021-06-25 08:17:47 +02:00
Markus Opolka
d0259b255b Add Trivy Scan and Structure Test (#71)
* Add Trivy Scan and Structure Tests
* Update README, fancy new Badges!
* Update Makefile, full-qualified Image names
2021-06-23 08:40:51 +02:00
Markus Opolka
0770ca63c7 Remove gchr.io comments 2021-06-22 10:32:33 +02:00
Markus Opolka
1e3009bf6c Update update.sh for new Tag Schema 2021-06-22 10:26:07 +02:00
Markus Opolka
bdcab55309 Upgrading to Version 5.0.4+210614 2021-06-22 07:53:53 +02:00
Markus Opolka
2755985321 Upgrading to LTS Version 3.27.3+210615 2021-06-22 07:46:01 +02:00
Jack Henschel
cb5b062980 Minor workflow fixes (#70)
* YAML indentation
* Correct image labels
2021-06-21 19:38:58 +02:00
Jack Henschel
3890f9f73a Build and push images with Github Actions to DockerHub (#68)
* Build and push images with Github Actions to DockerHub
* Remove Travis CI configuration

References:
* https://docs.github.com/en/actions/guides/publishing-docker-images
* https://github.com/docker/build-push-action/blob/master/docs/advanced/tags-labels.md
* https://github.com/docker/metadata-action

Note: docker / buildx does not support '+' in the image tag name.
> invalid tag "martialblog/limesurvey:0.0.0+test5-apache": invalid
reference format

Use underscores instead, like the images already have on Dockerhub.

Co-authored-by: Markus Opolka <markus.opolka@iis.fraunhofer.de>
2021-06-21 13:27:58 +02:00
Markus Opolka
c181f3a832 Upgrading to Version 5.0.3+210609 2021-06-15 08:13:04 +02:00
Markus Opolka
eda09e735e Upgrading to LTS Version 3.27.2+210608 2021-06-15 08:12:10 +02:00
Markus Opolka
80a5f95fab Upgrading to Version 5.0.2+210607 2021-06-09 07:44:57 +02:00
Nimrod Zimerman
65c1902247 Fix Apache LISTEN_PORT "sed" command to look for whole "Listen" command (#64)
Otherwise, if the replaced port number contains "80" (for example, "8080",
as is now the default), it is replaced over and over on each activation
2021-06-08 09:56:17 +02:00
Markus Opolka
387fcf11f4 Upgrading to Version 5.0.1+210532 2021-06-07 16:46:51 +02:00
Markus Opolka
3ffdb0d003 Upgrading to LTS Version 3.27.1+210531 2021-06-07 16:46:06 +02:00
Markus Opolka
4e99ca384c Upgrading to LTS Version 3.27.0+210525 2021-06-07 08:32:03 +02:00
Markus Opolka
30eef8abc1 Upgrade to LimeSurvey 5.0 (#62)
* Add Dockerfiles for LimeSurvey 5.0

 - This changes the default user to www-data in the Apache2 Images
 - Removed extra download layer
 - Add LS 5.0 Update Guide
 - Update base images to PHP 8.0
 - Add Variable for showScriptName
2021-06-07 07:59:53 +02:00
Markus Opolka
958ed57011 Upgrading to Version 4.6.3+210518 2021-05-25 18:52:23 +02:00
Markus Opolka
628cb942af Upgrading to LTS Version 3.26.5+210519 2021-05-25 18:51:31 +02:00
Markus Opolka
3165dffe31 Upgrading to Version 4.6.2+210512 2021-05-17 20:25:56 +02:00
Markus Opolka
bd28fb2796 Upgrading to LTS Version 3.26.3+210511 2021-05-17 20:25:11 +02:00
Markus Opolka
8830f66b10 Upgrading to Version 4.6.1+210510 2021-05-11 08:22:50 +02:00
Markus Opolka
456a2ab4d2 Upgrading to LTS Version 3.26.2+210503 2021-05-11 08:22:14 +02:00
Markus Opolka
fd744e5c46 Update README 2021-05-11 08:21:17 +02:00
Markus Opolka
f1b7efb2d5 Add configuration to run apache containers as www-data user (#61)
- in preparation for changing the default to www-data,
   which will happen at some time in the future
2021-05-09 11:35:41 +02:00
Markus Opolka
74b3f31ee4 Upgrading to Version 4.5.2+210426 2021-05-05 12:40:28 +02:00
Markus Opolka
fc6f655cf7 Upgrading to LTS Version 3.26.1+210427 2021-05-05 12:39:26 +02:00
Michael Prankl
01f6b41082 Customize Apache listen port (#59)
* Overwrite apache listen port in Apache configuration if configured via environment variable LISTEN_PORT
* Add documenation to README
* Add default value to ENV vars documentation

Co-authored-by: Michael Prankl <michael.prankl@muenchen.de>
2021-05-01 13:12:43 +02:00
Markus Opolka
c8d36cf425 Upgrading to Version 4.5.1+210420 2021-04-26 19:02:41 +02:00
Markus Opolka
0f7900e237 Upgrading to LTS Version 3.26.0+210419 2021-04-26 19:01:38 +02:00
Markus Opolka
a782896897 Upgrading to Version 4.5.0+210412 2021-04-19 17:53:54 +02:00
Markus Opolka
ce70ec3000 Upgrading to LTS Version 3.25.22+210413 2021-04-19 17:51:31 +02:00
Markus Opolka
0403aa1208 Upgrading to Version 4.4.16+210406 2021-04-12 17:02:11 +02:00
Markus Opolka
5a011e6818 Upgrading to LTS Version 3.25.21+210407 2021-04-12 17:01:30 +02:00
Markus Opolka
bb23531c6d Upgrading to Version 4.4.15+210329 2021-04-07 17:34:02 +02:00
Markus Opolka
69e8bcec7e Upgrading to LTS Version 3.25.20+210330 2021-04-07 17:33:18 +02:00
Markus Opolka
d26552bb6f Merge pull request #55 from PabloCastellano/master
Use docker volumes for postgres database
2021-04-04 07:26:02 +02:00
Pablo Castellano
1360fb8001 Use docker volumes for postgres database 2021-04-03 11:26:30 +02:00
Markus Opolka
fceae6b3cd Upgrading to Version 4.4.14+210322 2021-03-30 08:00:45 +02:00
Markus Opolka
b62a83ac83 Upgrading to LTS Version 3.25.19+210323 2021-03-30 07:59:56 +02:00
Markus Opolka
d106c2ceb6 Merge pull request #53 from martialblog/hadolint
Add Hadolint to CI
2021-03-22 20:14:46 +01:00
Markus Opolka
0c4690c97a Add hadolint to CI 2021-03-22 20:06:08 +01:00
Markus Opolka
ebb51363a1 Optimise nginx certbot example Dockerfile 2021-03-22 20:05:30 +01:00
Markus Opolka
debb4037a2 Upgrading to Version 4.4.13+210315 2021-03-22 19:45:58 +01:00
Markus Opolka
d7751f41d4 Upgrading to LTS Version 3.25.18+210316 2021-03-22 19:44:47 +01:00
Markus Opolka
47be732839 Merge pull request #52 from martialblog/fix-gd
Fix gd installation and add tidy/sodium lib
2021-03-22 19:43:58 +01:00
Markus Opolka
7da025f19a Fix gd installation and add tidy/sodium lib 2021-03-21 11:15:29 +01:00
Markus Opolka
cefd0a5c75 Upgrading to Version 4.4.12+210308 2021-03-16 06:29:22 +01:00
Markus Opolka
086903f0b4 Upgrading to LTS Version 3.25.17+210309 2021-03-16 06:28:36 +01:00
Markus Opolka
a619f5b8b7 Upgrading to Version 4.4.11+210301 2021-03-08 18:05:57 +01:00
Markus Opolka
f0c42a8bc2 Upgrading to LTS Version 3.25.16+210302 2021-03-08 18:05:00 +01:00
Markus Opolka
a6668c1fd2 Upgrading to Version 4.4.10+210222 2021-03-01 13:17:50 +01:00
Markus Opolka
ddcd2c868a Upgrading to LTS Version 3.25.15+210223 2021-03-01 13:17:08 +01:00
Markus Opolka
e3c0c3a9d0 Upgrading to Version 4.4.9+210219 2021-02-23 07:26:49 +01:00
Markus Opolka
eb1354a42a Upgrading to LTS Version 3.25.14+210218 2021-02-23 07:25:57 +01:00
Markus Opolka
448fb092a6 Upgrading to Version 4.4.8+210217 2021-02-17 16:16:10 +01:00
Markus Opolka
97c806aada Upgrading to LTS Version 3.25.12+210211 2021-02-17 16:15:11 +01:00
Markus Opolka
263b64e9f9 Upgrading to Version 4.4.6+210214 2021-02-12 17:33:54 +01:00
Markus Opolka
bab97c1eab Upgrading to Version 4.4.5+210213 2021-02-12 05:55:39 +01:00
Markus Opolka
064611ced5 Upgrading to Version 4.4.3+210209 2021-02-10 09:22:48 +01:00
Markus Opolka
c7ea723349 Upgrading to LTS Version 3.25.11+210210 2021-02-10 09:22:00 +01:00
Markus Opolka
81ec0452b9 Upgrading to Version 4.4.2+210208 2021-02-09 09:40:45 +01:00
Markus Opolka
eecb83fc99 Upgrading to LTS Version 3.25.10+210128 2021-02-09 09:38:44 +01:00
Markus Opolka
c2ad0c38cc Upgrading to Version 4.4.0+210129 2021-02-02 07:52:34 +01:00
Markus Opolka
b2f25dac02 Upgrading to Version 4.3.34+210119 2021-01-29 07:22:49 +01:00
Markus Opolka
64ad7966fd Upgrading to LTS Version 3.25.9+210125 2021-01-29 07:21:54 +01:00
Markus Opolka
9833519c9f Upgrading to LTS Version 3.25.8+210118 2021-01-26 07:51:00 +01:00
Markus Opolka
7438aecf40 Upgrading to LTS Version 3.25.7+210113 2021-01-18 18:45:11 +01:00
Markus Opolka
80ebadd26d Upgrading to Version 4.3.33+201228 2021-01-12 09:11:47 +01:00
Markus Opolka
d99c00d482 Upgrading to LTS Version 3.25.6+201229 2021-01-12 09:10:50 +01:00
Markus Opolka
a3d86a1779 Upgrading to LTS Version 3.25.5+201222 2020-12-29 18:19:22 +01:00
Markus Opolka
f008494a2d Upgrading to Version 4.3.32+201221 2020-12-23 05:47:42 +01:00
Markus Opolka
a44db5df62 Upgrading to Version 4.3.31+201214 2020-12-21 15:10:48 +01:00
Markus Opolka
03a0d9a16e Upgrading to LTS Version 3.25.4+201215 2020-12-21 15:09:51 +01:00
Markus Opolka
15f46a40b9 Upgrading to Version 4.3.30+201207 2020-12-14 17:47:06 +01:00
Markus Opolka
f7f8bbcbae Upgrading to LTS Version 3.25.3+201208 2020-12-14 17:46:21 +01:00
Markus Opolka
0f7d4ef58f Upgrading to Version 4.3.29+201130 2020-12-07 18:29:05 +01:00
Markus Opolka
54e0eea7ff Upgrading to LTS Version 3.25.2+201131 2020-12-07 18:27:44 +01:00
Markus Opolka
fb10ebaa8f Update README 2020-12-03 14:52:16 +01:00
Markus Opolka
2750dbecb0 Upgrading to Version 4.3.28+201123 2020-12-01 07:24:30 +01:00
Markus Opolka
3e4bdaf2ef Upgrading to LTS Version 3.25.1+201124 2020-12-01 07:23:19 +01:00
Markus Opolka
909d240306 Merge pull request #46 from MarkErik/remove-unused-security-LS3
Remove unused references to encryption for LS3 entrypoints
2020-12-01 07:21:56 +01:00
Mark
7f8ae6921a Remove unused references to encryption for LS3 entrypoints
Limesurvey 3.0 won't support the encyption introduced in LS4, so the variables and the check for security.php isn't necessary in the entrypoint.sh files.
2020-11-29 19:58:26 -05:00
Markus Opolka
17b72df441 Upgrading to Version 4.3.27+201116 2020-11-24 08:08:36 +01:00
Markus Opolka
0c90ce2487 Upgrading to LTS Version 3.25.0+201117 2020-11-24 08:07:40 +01:00
Markus Opolka
4b12d8a53c Upgrading to Version 4.3.26+201110 2020-11-16 10:40:22 +01:00
Markus Opolka
c90840d414 Upgrading to LTS Version 3.24.6+201109 2020-11-16 10:39:33 +01:00
Markus Opolka
89f15d94ba Upgrading to Version 4.3.25+201105 2020-11-10 07:37:10 +01:00
Markus Opolka
ab6da243fe Upgrading to LTS Version 3.24.5+201104 2020-11-10 07:35:55 +01:00
Markus Opolka
ce54275ddd Upgrading to Version 4.3.24+201102 2020-11-05 07:27:51 +01:00
Markus Opolka
b0b38440e4 Upgrading to LTS Version 3.24.4+201103 2020-11-05 07:26:37 +01:00
Markus Opolka
56b9a7e686 Merge pull request #44 from martialblog/php-upgrade
Update Base Images to PHP 7.4
2020-11-03 11:29:55 +01:00
Markus Opolka
41a275a59d Update Base Images to PHP 7.4 2020-11-03 10:43:39 +01:00
Markus Opolka
876145e009 Upgrading to Version 4.3.23+201026 2020-11-03 07:55:44 +01:00
Markus Opolka
4a9a8a9bc3 Upgrading to LTS Version 3.24.3+201027 2020-11-03 07:54:18 +01:00
Markus Opolka
a189f5eceb Merge pull request #42 from jwhb/compose-services
Simplify database host values with compose
2020-11-02 08:29:42 +01:00
jwhb
0c7e8947ca Simplify database host values with compose 2020-10-31 16:07:59 +01:00
Markus Opolka
7912d765ad Upgrading to Version 4.3.22+201019 2020-10-26 14:54:48 +01:00
Markus Opolka
245cd092ed Upgrading to LTS Version 3.24.2+201020 2020-10-26 14:53:07 +01:00
Markus Opolka
c897f9efbe Upgrading to Version 4.3.21+201015 2020-10-19 10:40:34 +02:00
Markus Opolka
ffe21eb987 Upgrading to LTS Version 3.24.1+201014 2020-10-19 10:39:39 +02:00
Markus Opolka
e4c997f148 Extend upgrade script
- now shows commit message template
2020-10-19 10:39:18 +02:00
Markus Opolka
ebfbaeb119 Upgrading to Version 4.3.20+201012 2020-10-14 18:17:53 +02:00
Markus Opolka
7df88e2980 Upgrading to LTS Version 3.24.0+201013 2020-10-14 18:17:06 +02:00
Markus Opolka
8737c5c99c Minor fix in Makefix 2020-10-14 16:11:46 +02:00
Markus Opolka
02f9309f25 Update Makefile 2020-10-14 15:50:28 +02:00
Markus Opolka
ea3a644bfe Update README
- Added details on Tags and Dockerfiles
 - Some markdown improvements
 - Minor spelling fixes
2020-10-14 15:18:19 +02:00
Markus Opolka
f0000f7448 Upgrading to Version 4.3.19+201005 2020-10-13 07:49:59 +02:00
Markus Opolka
6d71e4ecc2 Upgrading to LTS Version 3.23.7+201006 2020-10-13 07:48:55 +02:00
Markus Opolka
2d8e54191d Merge pull request #40 from martialblog/baseurl-param
Add BASE_URL Parameter to work with a Reverse Proxy
2020-10-08 13:03:45 +02:00
Markus Opolka
79047b6ef9 Add BASE_URL Parameter to work with a Reverse Proxy 2020-10-08 12:19:21 +02:00
Markus Opolka
1c3854fe28 Upgrading to Version 4.3.18+200928 2020-10-05 10:28:32 +02:00
Markus Opolka
5d9cad19a6 Upgrading to LTS Version 3.23.6+200929 2020-10-05 10:27:42 +02:00
Markus Opolka
e55d0b89fa Upgrading to Version 4.3.17+200921 2020-09-28 15:48:41 +02:00
Markus Opolka
94ea6bda5b Upgrading to LTS Version 3.23.5+200923 2020-09-28 15:47:50 +02:00
Markus Opolka
5bf70a5640 Upgrading to Version 3.23.4+200922 2020-09-23 07:21:04 +02:00
Markus Opolka
9fc0ccc03c Upgrading to Version 4.3.16+200915 2020-09-22 07:52:10 +02:00
Markus Opolka
4ab8956a4c Upgrading to LTS Version 3.23.3+200909 2020-09-22 07:51:16 +02:00
Markus Opolka
7a597d1cfe Upgrading to Version 4.3.15+200907 2020-09-15 20:46:57 +02:00
Markus Opolka
3a7c6d1328 Fix typo in README 2020-09-09 16:18:51 +02:00
Markus Opolka
c794a8fb3a Upgrading to LTS Version 3.23.2+200908 2020-09-08 09:42:13 +02:00
Markus Opolka
4430106edc Upgrading to Version 4.3.14+200826 2020-09-08 07:28:22 +02:00
Markus Opolka
9c9508ab1f Upgrading to LTS Version 3.23.1+200825 2020-09-08 07:27:27 +02:00
Markus Opolka
2f710a23c1 Update CONTRIBUTING.md 2020-08-28 20:57:02 +02:00
Markus Opolka
0b4d0affc1 Upgrading to Version 4.3.13+200824 2020-08-26 19:35:28 +02:00
Markus Opolka
eab3428bca Upgrading to Version 4.3.12+200820 2020-08-25 07:09:05 +02:00
Markus Opolka
411ac77814 Upgrading to LTS Version 3.23.0+200813 2020-08-25 07:07:52 +02:00
Markus Opolka
453160b3f2 Upgrading to Version 4.3.11+200817 2020-08-20 18:42:14 +02:00
Markus Opolka
62e27bdfeb Upgrading to Version 4.3.10+200812 2020-08-17 20:39:43 +02:00
Markus Opolka
20231d4131 Upgrading to Version 4.3.9+200806 2020-08-13 08:08:20 +02:00
Markus Opolka
5bf6128301 Upgrading to LTS Version 3.22.210+200804 2020-08-13 08:07:27 +02:00
Markus Opolka
f027de8442 Upgrading to Version 4.3.8+200803 2020-08-07 07:20:56 +02:00
Markus Opolka
088850e4f3 Upgrading to Version 4.3.7+200730 2020-08-03 18:41:43 +02:00
Markus Opolka
0996c4d310 Upgrading to LTS Version 3.22.29+200731 2020-08-03 18:40:45 +02:00
Markus Opolka
4704706cdd Upgrading to Version 4.3.6+200727 2020-07-31 07:51:58 +02:00
Markus Opolka
e81dd14138 Upgrading to LTS Version 3.22.28+200728 2020-07-31 07:50:32 +02:00
Markus Opolka
bb22b75637 Upgrading to Version 4.3.5+200721 2020-07-27 12:20:15 +02:00
Markus Opolka
7c5e1c8902 Upgrading to LTS Version 3.22.27+200720 2020-07-27 12:19:12 +02:00
Markus Opolka
03d0887bad Upgrading to Version 4.3.4+200713 2020-07-20 20:03:46 +02:00
Markus Opolka
f937ded8ce Upgrading to LTS Version 3.22.26+200714 2020-07-20 20:02:54 +02:00
Markus Opolka
05362c3532 Merge pull request #36 from muniter/patch-2
Update README.md
2020-07-20 07:18:50 +02:00
Javier Lopez
dba3c11a23 Update README.md
Hey! Thanks a lot for this repo. I think I'd be nice to add the link to the repo in the README so when people read that part in the Docker Hub, can just jump here straight away.
2020-07-19 19:41:30 -05:00
Markus Opolka
5366866a7b Merge pull request #34 from martialblog/refactor-entrypoint
Refactor entrypoint
2020-07-17 14:34:36 +02:00
Markus Opolka
79a4c3cbee Merge pull request #35 from martialblog/refactor-download
Change download of Limesurvey to curl
2020-07-16 19:08:26 +02:00
Markus Opolka
bf3e4b0378 Change download of Limesurvey to curl
- More secure than ADD
 - Makes better use of cache
2020-07-16 18:35:51 +02:00
Markus Opolka
e2998e2076 Update README 2020-07-16 18:35:04 +02:00
Markus Opolka
8322b5966f Refactor Entrypoint
- Simpler creation of config.php
 - Debug can now be set
 - Encryption Keys are now supported
2020-07-16 17:09:21 +02:00
Markus Opolka
a95a625725 Add exif installation 2020-07-14 09:42:49 +02:00
Markus Opolka
dd90a16086 Upgrading to Version 4.3.3+200707 2020-07-13 19:57:12 +02:00
Markus Opolka
d1699d3d85 Upgrading to LTS Version 3.22.25+200706 2020-07-13 19:56:11 +02:00
Markus Opolka
1707b30df2 Upgrading to Version 4.3.2+200629 2020-07-06 16:07:32 +02:00
Markus Opolka
3a55f6bfaf Upgrading to LTS Version 3.22.24+200630 2020-07-06 16:06:44 +02:00
Markus Opolka
da9fb16aab Upgrading to Version 4.3.1+200623 2020-06-29 21:16:51 +02:00
Markus Opolka
4af9e318fb Upgrading to LTS Version 3.22.23+200626 2020-06-29 21:15:51 +02:00
Markus Opolka
bcb66c5461 Upgrading to LTS Version 3.22.22+200625 2020-06-26 17:51:49 +02:00
Markus Opolka
a005f313a6 Upgrading to LTS Version 3.22.21+200622 2020-06-26 06:13:58 +02:00
Markus Opolka
0dda936f54 Upgrading to Version 4.3.0+200616 2020-06-22 18:37:34 +02:00
Markus Opolka
938e1540e7 Upgrading to LTS Version 3.22.20+200617 2020-06-22 18:36:32 +02:00
Markus Opolka
17f24f33b6 Upgrading to Version 4.2.8+200608 2020-06-16 12:56:33 +02:00
Markus Opolka
17e7553394 Upgrading to LTS Version 3.22.19+200605 2020-06-16 12:54:51 +02:00
Markus Opolka
ed7749da68 Upgrading to Version 4.2.7+200604 2020-06-08 13:46:18 +02:00
Markus Opolka
d02ccb7531 Upgrading to LTS Version 3.22.18+200603 2020-06-05 18:36:27 +02:00
Markus Opolka
50e4579f38 Upgrading to Version 4.2.6+200602 2020-06-05 07:39:18 +02:00
Markus Opolka
4821f97cdb Upgrading to Version 4.2.5+200526 2020-06-03 06:36:20 +02:00
Markus Opolka
430f189ce3 Upgrading to LTS Version 3.22.17+200525 2020-06-03 06:35:01 +02:00
Markus Opolka
b8d08e8fb7 Upgrading to Version 4.2.4+200520 2020-05-26 13:02:28 +02:00
Markus Opolka
58682a1ea2 Upgrading to LTS Version 3.22.16+200519 2020-05-25 13:27:14 +02:00
Markus Opolka
aff7605759 Upgrading to Version 4.2.3+200511 2020-05-19 21:38:58 +02:00
Markus Opolka
7dcf4d2b0f Upgrading to LTS Version 3.22.15+200505 2020-05-19 21:37:09 +02:00
Markus Opolka
b08f7275ef Upgrading to Version 4.2.2+200504 2020-05-11 17:27:58 +02:00
Markus Opolka
216b15a805 Merge pull request #31 from jsfan/master
Added configuration which adds Nginx with Letsencrypt certificate
2020-05-05 22:20:58 +02:00
Markus Opolka
ad281e9249 Upgrading to Version 4.2.1+200428 2020-05-04 17:06:33 +02:00
Markus Opolka
b1a3e04cbc Upgrading to LTS Version 3.22.14+200423 2020-05-04 17:05:29 +02:00
Markus Opolka
3639cc38e8 Fix nginx example config
- Fixes issue #30
2020-04-30 08:34:17 +02:00
Christian Lerrahn
334d781c10 Added description of FPM setup with https to README 2020-04-29 19:19:23 +10:00
Markus Opolka
0536ebf480 Upgrading to Version 4.2.0+200422 2020-04-28 15:04:16 +02:00
Christian Lerrahn
2c1390a146 Made host name consistent across config files 2020-04-28 18:49:07 +10:00
Christian Lerrahn
51f229262d Added configuration which adds Nginx with Letsencrypt certificate 2020-04-28 18:45:15 +10:00
Markus Opolka
4a44c06b6e Upgrading to LTS Version 3.22.13+200415 2020-04-24 10:23:19 +02:00
Markus Opolka
70bc819758 Upgrading to Version 4.1.18+200416 2020-04-22 21:15:16 +02:00
Markus Opolka
68c542a9e6 Upgrading to Version 4.1.17+200414 2020-04-17 09:17:18 +02:00
Markus Opolka
e2affcdcf9 Upgrading to Version 4.1.16+200407 2020-04-15 08:53:05 +02:00
Markus Opolka
b6ea4dd302 Upgrading to LTS Version 3.22.12+200406 2020-04-15 08:51:13 +02:00
Markus Opolka
0d98aab2b5 Upgrading to Version 4.1.15+200402 2020-04-08 08:02:14 +02:00
Markus Opolka
853d5d9528 Upgrading to LTS Version 3.22.11+200330 2020-04-06 18:04:37 +02:00
Markus Opolka
1b638a4f5f Upgrading to Version 4.1.14+200331 2020-04-03 08:21:41 +02:00
Markus Opolka
b697f94e29 Upgrading to Version 4.1.13+200325 2020-04-01 08:48:15 +02:00
Markus Opolka
fc67dc080b Upgrading to LTS Version 3.22.10+200323 2020-03-31 08:21:02 +02:00
Markus Opolka
14a816aa84 Upgrading to Version 4.1.12+200324 2020-03-26 09:09:47 +01:00
Markus Opolka
5b67ddda66 Upgrading to Version 4.1.11+200316 2020-03-24 18:39:03 +01:00
Markus Opolka
ff43a9e529 Upgrading to LTS Version 3.22.9+200317 2020-03-24 11:09:42 +01:00
Markus Opolka
5b88d7341e Update README 2020-03-24 11:09:28 +01:00
Markus Opolka
1c832d1af8 Update README.md 2020-03-23 10:55:34 +01:00
Markus Opolka
6e1a43a938 Update README 2020-03-23 10:54:41 +01:00
Markus Opolka
0ec273d058 Upgrading to Version 4.1.10+200311 2020-03-16 18:55:25 +01:00
Markus Opolka
983a55571b Upgrading to LTS Version 3.22.8+200309 2020-03-16 18:54:02 +01:00
Markus Opolka
b7c75d420d Upgrading to Version 4.1.9+200310 2020-03-10 08:14:32 +01:00
Markus Opolka
3d790f8d43 Upgrading to LTS Version 3.22.7+200225 2020-03-09 20:32:08 +01:00
Markus Opolka
8236234e60 Upgrading to Version 4.1.7+200224 2020-03-02 16:21:06 +01:00
Markus Opolka
01e8c78e5c Upgrading to Version 4.1.6+200220 2020-02-25 07:50:17 +01:00
Markus Opolka
85585bbfb6 Upgrading to LTS Version 3.22.6+200219 2020-02-25 07:49:05 +01:00
Markus Opolka
1d4ee64744 Upgrading to Version 4.1.5+200217 2020-02-21 07:45:12 +01:00
Markus Opolka
9748139ed4 Upgrading to LTS Version 3.22.5+200218 2020-02-21 07:44:15 +01:00
Markus Opolka
92addd6ec8 Upgrading to Version 4.1.4+200214 2020-02-18 08:42:16 +01:00
Markus Opolka
ea0ad22209 Upgrading to LTS Version 3.22.4+200212 2020-02-18 08:41:11 +01:00
Markus Opolka
5645da18bb Merge pull request #23 from lennard7001/master
New docker-compose.yml which doesn't depend on the git repo
2020-02-15 08:22:14 +01:00
Markus Opolka
efab6e6904 Upgrading to Version 4.1.3+200213 2020-02-14 08:24:51 +01:00
Markus Opolka
99e1f5a0c6 Upgrading to Version 4.1.2+200210 2020-02-12 08:03:33 +01:00
Markus Opolka
58ea2e58fb Upgrading to LTS Version 3.22.3+200211 2020-02-12 08:00:43 +01:00
lennard7001
647f274900 Create docker-compose.example.yml 2020-02-11 20:00:37 +01:00
Markus Opolka
f031145d17 Upgrading to Version 4.1.1+200203 2020-02-11 08:01:52 +01:00
Markus Opolka
2f60fe9155 Upgrading to LTS Version 3.22.2+200204 2020-02-11 07:59:46 +01:00
Markus Opolka
51a45cd565 Upgrading to Version 4.1.0+200128 2020-02-04 07:36:53 +01:00
Markus Opolka
f25581225c Upgrading to LTS Version 3.22.1+200129 2020-02-04 07:32:08 +01:00
Markus Opolka
cc58c840f0 Merge pull request #22 from martialblog/lts-refactor
Refactor to support LTS version
2020-01-31 18:08:08 +01:00
Markus Opolka
fb6bbf1992 Refactor to support LTS version 2020-01-31 18:02:27 +01:00
Markus Opolka
2392e89bde Upgrading to Version 3.22.0+200127 2020-01-29 10:59:59 +01:00
Markus Opolka
a75590b106 Upgrading to Version 3.21.6+200121 2020-01-27 16:26:30 +01:00
Markus Opolka
cbea63bc20 Upgrading to Version 4.0.0+200116 2020-01-20 21:23:07 +01:00
51 changed files with 2634 additions and 416 deletions

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
# force LF in entrypoint.sh
entrypoint.sh text eol=lf

View File

@@ -0,0 +1,103 @@
name: Publish Latest Container Images
on:
push:
tags:
- '5.*'
jobs:
lint_dockerfiles:
name: Lint Dockerfile with hadolint
runs-on: ubuntu-latest
strategy:
matrix:
dockerfile:
- 5.0/apache/Dockerfile
- 5.0/fpm-alpine/Dockerfile
- 5.0/fpm/Dockerfile
steps:
- uses: actions/checkout@v2
- uses: hadolint/hadolint-action@v1.5.0
with:
dockerfile: ${{ matrix.dockerfile }}
ignore: DL4006 DL3008 DL3018
push_images_to_registries:
name: Push Container Images to registries
runs-on: ubuntu-latest
needs: [lint_dockerfiles]
environment: docker-build
permissions:
packages: write
contents: read
steps:
- name: 'Check out the repo'
uses: actions/checkout@v2
- name: 'Set up Docker Buildx'
uses: docker/setup-buildx-action@v1
with:
buildkitd-flags: --debug
- name: 'Log in to DockerHub'
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: 'Apache variant metadata'
id: metadata-apache
uses: docker/metadata-action@v3
with:
images: |
docker.io/martialblog/limesurvey
tags: |
type=match,pattern=(.+),group=1
type=match,pattern=^(\d+),group=1
flavor: |
latest=true
suffix=-apache
- name: 'Build and push latest Apache container images'
uses: docker/build-push-action@v2
with:
context: 5.0/apache
push: true
tags: ${{ steps.metadata-apache.outputs.tags }}
labels: ${{ steps.metadata-apache.outputs.labels }}
- name: 'FPM variant metadata'
id: metadata-fpm
uses: docker/metadata-action@v3
with:
images: |
docker.io/martialblog/limesurvey
tags: |
type=match,pattern=(.+),group=1
type=match,pattern=^(\d+),group=1
flavor: |
latest=false
suffix=-fpm
- name: 'Build and push latest fpm container images'
uses: docker/build-push-action@v2
with:
context: 5.0/fpm
push: true
tags: ${{ steps.metadata-fpm.outputs.tags }}
labels: ${{ steps.metadata-fpm.outputs.labels }}
- name: 'FPM Alpine variant metadata'
id: metadata-fpm-alpine
uses: docker/metadata-action@v3
with:
images: |
docker.io/martialblog/limesurvey
tags: |
type=match,pattern=(.+),group=1
type=match,pattern=^(\d+),group=1
flavor: |
latest=false
suffix=-fpm-alpine
- name: 'Build and push latest fpm-alpine container images'
uses: docker/build-push-action@v2
with:
context: 5.0/fpm-alpine
push: true
tags: ${{ steps.metadata-fpm-alpine.outputs.tags }}
labels: ${{ steps.metadata-fpm-alpine.outputs.labels }}

View File

@@ -0,0 +1,103 @@
name: Publish LTS Container Images
on:
push:
tags:
- '3.*'
jobs:
lint_dockerfiles:
name: 'Lint Dockerfile with hadolint'
runs-on: ubuntu-latest
strategy:
matrix:
dockerfile:
- 3.0/apache/Dockerfile
- 3.0/fpm-alpine/Dockerfile
- 3.0/fpm/Dockerfile
steps:
- uses: actions/checkout@v2
- uses: hadolint/hadolint-action@v1.5.0
with:
dockerfile: ${{ matrix.dockerfile }}
ignore: DL4006 DL3008 DL3018
push_images_to_registries:
name: 'Push container images to registries'
runs-on: ubuntu-latest
needs: [lint_dockerfiles]
environment: docker-build
permissions:
packages: write
contents: read
steps:
- name: 'Check out the repo'
uses: actions/checkout@v2
- name: 'Set up Docker Buildx'
uses: docker/setup-buildx-action@v1
with:
buildkitd-flags: --debug
- name: 'Log in to DockerHub'
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_HUB_TOKEN }}
- name: 'Apache variant metadata'
id: metadata-apache
uses: docker/metadata-action@v3
with:
images: |
docker.io/martialblog/limesurvey
tags: |
type=match,pattern=(.+),group=1
type=match,pattern=^(\d+),group=1
flavor: |
latest=false
suffix=-apache
- name: 'Build and push LTS apache container images'
uses: docker/build-push-action@v2
with:
context: 3.0/apache
push: true
tags: ${{ steps.metadata-apache.outputs.tags }}
labels: ${{ steps.metadata-apache.outputs.labels }}
- name: 'FPM variant metadata'
id: metadata-fpm
uses: docker/metadata-action@v3
with:
images: |
docker.io/martialblog/limesurvey
tags: |
type=match,pattern=(.+),group=1
type=match,pattern=^(\d+),group=1
flavor: |
latest=false
suffix=-fpm
- name: 'Build and push LTS fpm container images'
uses: docker/build-push-action@v2
with:
context: 3.0/fpm
push: true
tags: ${{ steps.metadata-fpm.outputs.tags }}
labels: ${{ steps.metadata-apache.outputs.labels }}
- name: 'FPM Alpine variant metadata'
id: metadata-fpm-alpine
uses: docker/metadata-action@v3
with:
images: |
docker.io/martialblog/limesurvey
tags: |
type=match,pattern=(.+),group=1
type=match,pattern=^(\d+),group=1
flavor: |
latest=false
suffix=-fpm-alpine
- name: 'Build and push LTS fpm-alpine container images'
uses: docker/build-push-action@v2
with:
context: 3.0/fpm-alpine
push: true
tags: ${{ steps.metadata-fpm-alpine.outputs.tags }}
labels: ${{ steps.metadata-apache.outputs.labels }}

24
.github/workflows/lint-dockerfiles.yaml vendored Normal file
View File

@@ -0,0 +1,24 @@
---
name: Lint Dockerfile
on: [push, pull_request]
jobs:
lint:
name: Lint Dockerfile with hadolint
strategy:
matrix:
dockerfile:
- 3.0/apache/Dockerfile
- 3.0/fpm-alpine/Dockerfile
- 3.0/fpm/Dockerfile
- 5.0/apache/Dockerfile
- 5.0/fpm-alpine/Dockerfile
- 5.0/fpm/Dockerfile
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: hadolint/hadolint-action@v1.5.0
with:
dockerfile: ${{ matrix.dockerfile }}
ignore: DL4006 DL3008 DL3018

View File

@@ -0,0 +1,34 @@
name: Test Latest Container Images
on: [push, pull_request]
jobs:
test_images:
name: Test Latest Container Images with Trivy
runs-on: ubuntu-latest
strategy:
matrix:
context:
- apache
- fpm-alpine
- fpm
steps:
- name: 'Check out the repo'
uses: actions/checkout@v2
- name: 'Set up Docker Buildx'
uses: docker/setup-buildx-action@v1
- name: 'Build Container images'
uses: docker/build-push-action@v2
with:
context: 5.0/${{ matrix.context }}
push: false
load: true
tags: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
- name: 'Run Structure tests'
uses: plexsystems/container-structure-test-action@v0.2.0
with:
image: docker.io/martialblog/limesurvey:5-${{ matrix.context }}
config: tests/${{ matrix.context }}-tests.yaml

View File

@@ -0,0 +1,34 @@
name: Test LTS Container Images
on: [push, pull_request]
jobs:
test_images:
name: Test LTS Container Images with Trivy
runs-on: ubuntu-latest
strategy:
matrix:
context:
- apache
- fpm-alpine
- fpm
steps:
- name: 'Check out the repo'
uses: actions/checkout@v2
- name: 'Set up Docker Buildx'
uses: docker/setup-buildx-action@v1
- name: 'Build Container images'
uses: docker/build-push-action@v2
with:
context: 3.0/${{ matrix.context }}
push: false
load: true
tags: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
- name: 'Run Structure tests'
uses: plexsystems/container-structure-test-action@v0.2.0
with:
image: docker.io/martialblog/limesurvey:3-${{ matrix.context }}
config: tests/${{ matrix.context }}-tests.yaml

View File

@@ -1,13 +0,0 @@
sudo: required
language: bash
services:
- docker
matrix:
include:
- env: TAG=martialblog/limesurvey-apache
script: cd apache; docker build -q -t $TAG . && cd ..; ./tests/run.sh $TAG
- env: TAG=martialblog/limesurvey-fpm
script: cd fpm; docker build -q -t $TAG . && cd ..; ./tests/run.sh $TAG
- env: TAG=martialblog/limesurvey-alpine
script: cd fpm; docker build -q -t $TAG . && cd ..; ./tests/run.sh $TAG

82
3.0/apache/Dockerfile Normal file
View File

@@ -0,0 +1,82 @@
FROM php:8.0-apache
LABEL maintainer="markus@martialblog.de"
ARG version='3.27.33+220125'
ARG sha256_checksum='fce84dece7fd39c14c776833decbfe79efd45204bcba57c59be1c95b0d248add'
ARG USER=root
ARG LISTEN_PORT=80
# Install OS dependencies
RUN set -ex; \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
\
libldap2-dev \
libfreetype6-dev \
libjpeg-dev \
libonig-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
libzip-dev \
libtidy-dev \
libsodium-dev \
netcat \
\
&& apt-get -y autoclean; apt-get -y autoremove; \
rm -rf /var/lib/apt/lists/*
# Link LDAP library for PHP ldap extension
RUN set -ex; \
ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/
# Install PHP Plugins and Configure PHP imap plugin
RUN set -ex; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \
exif \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
# Apache configuration
RUN a2enmod headers rewrite remoteip; \
{\
echo RemoteIPHeader X-Real-IP ;\
echo RemoteIPTrustedProxy 10.0.0.0/8 ;\
echo RemoteIPTrustedProxy 172.16.0.0/12 ;\
echo RemoteIPTrustedProxy 192.168.0.0/16 ;\
} > /etc/apache2/conf-available/remoteip.conf;\
a2enconf remoteip
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R www-data:www-data /var/www/html /etc/apache2
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
COPY vhosts-access-log.conf /etc/apache2/conf-enabled/other-vhosts-access-log.conf
USER $USER
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["apache2-foreground"]

140
3.0/apache/entrypoint.sh Executable file
View File

@@ -0,0 +1,140 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
BASE_URL=${BASE_URL:-}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
SHOW_SCRIPT_NAME=${SHOW_SCRIPT_NAME:-'true'}
TABLE_SESSION=${TABLE_SESSION:-}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
LISTEN_PORT=${LISTEN_PORT:-"80"}
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
if [ "$LISTEN_PORT" != "80" ]; then
echo "Info: Customizing Apache Listen port to $LISTEN_PORT"
sed -i "s/Listen 80\$/Listen $LISTEN_PORT/" /etc/apache2/ports.conf /etc/apache2/sites-available/000-default.conf
fi
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if config already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
fi
if [ -n "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
DB_CONNECT='unix_socket'
else
echo 'Info: Using TCP connection'
DB_CONNECT='host'
fi
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
fi
cat <<EOF > application/config/config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
return array(
'components' => array(
'db' => array(
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
'emulatePrepare' => true,
'username' => '$DB_USERNAME',
'password' => '$DB_PASSWORD',
'charset' => '$DB_CHARSET',
'tablePrefix' => '${DB_TABLE_PREFIX//[[:space:]]/}',
),
//'session' => array (
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
//),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => $SHOW_SCRIPT_NAME,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
)
);
EOF
fi
# Enable Table Sessions if required
if [ -n "$TABLE_SESSION" ]; then
echo 'Info: Setting Table Session'
# Remove the comments in the config
sed -i "s/\/\///g" application/config/config.php
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -eq 0 ]; then
echo 'Info: Database already provisioned'
else
echo ''
echo 'Running console.php install'
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
fi
exec "$@"

View File

@@ -0,0 +1,3 @@
SetEnvIF User-Agent "(?i)(check|health|probe)" dontlog
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

57
3.0/fpm-alpine/Dockerfile Normal file
View File

@@ -0,0 +1,57 @@
FROM php:8.0-fpm-alpine
LABEL maintainer="markus@martialblog.de"
ARG version='3.27.33+220125'
ARG sha256_checksum='fce84dece7fd39c14c776833decbfe79efd45204bcba57c59be1c95b0d248add'
# Install OS dependencies
RUN set -ex; \
apk add --no-cache --virtual .build-deps \
freetype-dev \
libpng-dev \
libzip-dev \
libjpeg-turbo-dev \
tidyhtml-dev \
libsodium-dev \
openldap-dev \
oniguruma-dev \
imap-dev \
postgresql-dev && \
apk add --no-cache netcat-openbsd bash
# Install PHP Plugins
RUN set -ex; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-imap-ssl && \
docker-php-ext-install \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
\
rm -rf "/tmp/limesurvey.tar.gz" \
/var/www/html/docs \
/var/www/html/tests \
/var/www/html/*.md && \
chown -R www-data:root /var/www/ ; \
chmod -R g=u /var/www
EXPOSE 9000
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["php-fpm"]

133
3.0/fpm-alpine/entrypoint.sh Executable file
View File

@@ -0,0 +1,133 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
BASE_URL=${BASE_URL:-}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
SHOW_SCRIPT_NAME=${SHOW_SCRIPT_NAME:-'true'}
TABLE_SESSION=${TABLE_SESSION:-}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if config already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
fi
if [ -n "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
DB_CONNECT='unix_socket'
else
echo 'Info: Using TCP connection'
DB_CONNECT='host'
fi
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
fi
cat <<EOF > application/config/config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
return array(
'components' => array(
'db' => array(
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
'emulatePrepare' => true,
'username' => '$DB_USERNAME',
'password' => '$DB_PASSWORD',
'charset' => '$DB_CHARSET',
'tablePrefix' => '${DB_TABLE_PREFIX//[[:space:]]/}',
),
//'session' => array (
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
//),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => $SHOW_SCRIPT_NAME,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
)
);
EOF
fi
# Enable Table Sessions if required
if [ -n "$TABLE_SESSION" ]; then
echo 'Info: Setting Table Session'
# Remove the comments in the config
sed -i "s/\/\///g" application/config/config.php
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -eq 0 ]; then
echo 'Info: Database already provisioned'
else
echo ''
echo 'Running console.php install'
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
fi
exec "$@"

67
3.0/fpm/Dockerfile Normal file
View File

@@ -0,0 +1,67 @@
FROM php:8.0-fpm
LABEL maintainer="markus@martialblog.de"
ARG version='3.27.33+220125'
ARG sha256_checksum='fce84dece7fd39c14c776833decbfe79efd45204bcba57c59be1c95b0d248add'
# Install OS dependencies
RUN set -ex; \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
\
libldap2-dev \
libfreetype6-dev \
libjpeg-dev \
libonig-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
libzip-dev \
libtidy-dev \
libsodium-dev \
netcat \
\
&& apt-get -y autoclean; apt-get -y autoremove; \
rm -rf /var/lib/apt/lists/*
# Link LDAP library for PHP ldap extension
RUN set -ex; \
ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/
# Install PHP Plugins and Configure PHP imap plugin
RUN set -ex; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \
exif \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R www-data:www-data /var/www/html
EXPOSE 9000
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["php-fpm"]

133
3.0/fpm/entrypoint.sh Executable file
View File

@@ -0,0 +1,133 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
BASE_URL=${BASE_URL:-}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
SHOW_SCRIPT_NAME=${SHOW_SCRIPT_NAME:-'true'}
TABLE_SESSION=${TABLE_SESSION:-}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if config already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
fi
if [ -n "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
DB_CONNECT='unix_socket'
else
echo 'Info: Using TCP connection'
DB_CONNECT='host'
fi
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
fi
cat <<EOF > application/config/config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
return array(
'components' => array(
'db' => array(
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
'emulatePrepare' => true,
'username' => '$DB_USERNAME',
'password' => '$DB_PASSWORD',
'charset' => '$DB_CHARSET',
'tablePrefix' => '${DB_TABLE_PREFIX//[[:space:]]/}',
),
//'session' => array (
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
//),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => $SHOW_SCRIPT_NAME,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
)
);
EOF
fi
# Enable Table Sessions if required
if [ -n "$TABLE_SESSION" ]; then
echo 'Info: Setting Table Session'
# Remove the comments in the config
sed -i "s/\/\///g" application/config/config.php
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -eq 0 ]; then
echo 'Info: Database already provisioned'
else
echo ''
echo 'Running console.php install'
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
fi
exec "$@"

View File

@@ -1,7 +1,9 @@
FROM php:7.2-apache
FROM php:8.0-apache
LABEL maintainer="markus@martialblog.de"
ARG version='3.21.4+200108'
ARG sha256_checksum='4b3248b2cb674058556977c011d9a710de6e7b5d74a55df79e3d40192bd98636'
ARG version='4.6.3+210518'
ARG sha256_checksum='3c59afc13d0cf974c465c5f851cb8837117518e94031f5e3a28ba468ad734ce2'
ARG USER=root
ARG LISTEN_PORT=80
# Install OS dependencies
RUN set -ex; \
@@ -12,12 +14,17 @@ RUN set -ex; \
libldap2-dev \
libfreetype6-dev \
libjpeg-dev \
libonig-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
libzip-dev \
libtidy-dev \
libsodium-dev \
netcat \
curl \
\
&& apt-get -y autoclean; apt-get -y autoremove; \
rm -rf /var/lib/apt/lists/*
@@ -28,9 +35,10 @@ RUN set -ex; \
# Install PHP Plugins and Configure PHP imap plugin
RUN set -ex; \
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \
exif \
gd \
imap \
ldap \
@@ -39,6 +47,8 @@ RUN set -ex; \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
@@ -57,16 +67,16 @@ RUN a2enmod headers rewrite remoteip; \
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Download, unzip and chmod LimeSurvey from official GitHub repository
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp
RUN set -ex; \
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/${version}.tar.gz" && \
chown -R www-data:www-data /var/www/html
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R www-data:www-data /var/www/html /etc/apache2
WORKDIR /var/www/html
COPY entrypoint.sh entrypoint.sh
USER $USER
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["apache2-foreground"]

154
4.0/apache/entrypoint.sh Executable file
View File

@@ -0,0 +1,154 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
DB_MYSQL_ENGINE=${DB_MYSQL_ENGINE:-'MyISAM'}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
BASE_URL=${BASE_URL:-}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
LISTEN_PORT=${LISTEN_PORT:-"80"}
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
if [ "$LISTEN_PORT" != "80" ]; then
echo "Info: Customizing Apache Listen port to $LISTEN_PORT"
sed -i "s/Listen 80\$/Listen $LISTEN_PORT/" /etc/apache2/ports.conf /etc/apache2/sites-available/000-default.conf
fi
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if config already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
fi
if [ -n "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
DB_CONNECT='unix_socket'
else
echo 'Info: Using TCP connection'
DB_CONNECT='host'
fi
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
fi
cat <<EOF > application/config/config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
return array(
'components' => array(
'db' => array(
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
'emulatePrepare' => true,
'username' => '$DB_USERNAME',
'password' => '$DB_PASSWORD',
'charset' => '$DB_CHARSET',
'tablePrefix' => '$DB_TABLE_PREFIX',
),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => true,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ -n "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -eq 0 ]; then
echo 'Info: Database already provisioned'
else
echo ''
echo 'Running console.php install'
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
fi
exec "$@"

View File

@@ -1,24 +1,29 @@
FROM php:7.2-fpm-alpine
FROM php:8.0-fpm-alpine
LABEL maintainer="markus@martialblog.de"
ARG version='3.21.4+200108'
ARG sha256_checksum='4b3248b2cb674058556977c011d9a710de6e7b5d74a55df79e3d40192bd98636'
ARG version='4.6.3+210518'
ARG sha256_checksum='3c59afc13d0cf974c465c5f851cb8837117518e94031f5e3a28ba468ad734ce2'
# Install OS dependencies
RUN set -ex; \
apk add --no-cache --virtual .build-deps \
freetype-dev \
libpng-dev \
libzip-dev \
libjpeg-turbo-dev \
tidyhtml-dev \
libsodium-dev \
openldap-dev \
oniguruma-dev \
imap-dev \
postgresql-dev && \
apk add --no-cache netcat-openbsd bash
# Install PHP Plugins
RUN set -ex; \
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr ; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-imap-ssl && \
docker-php-ext-install \
exif \
gd \
imap \
ldap \
@@ -27,17 +32,18 @@ RUN set -ex; \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
# Download, unzip and chmod of LimeSurvey
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
\
rm -rf "/tmp/${version}.tar.gz" \
rm -rf "/tmp/limesurvey.tar.gz" \
/var/www/html/docs \
/var/www/html/tests \
/var/www/html/*.md && \
@@ -46,6 +52,7 @@ RUN set -ex; \
EXPOSE 9000
WORKDIR /var/www/html
COPY entrypoint.sh entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["php-fpm"]

147
4.0/fpm-alpine/entrypoint.sh Executable file
View File

@@ -0,0 +1,147 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
DB_MYSQL_ENGINE=${DB_MYSQL_ENGINE:-'MyISAM'}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
BASE_URL=${BASE_URL:-}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if config already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
fi
if [ -n "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
DB_CONNECT='unix_socket'
else
echo 'Info: Using TCP connection'
DB_CONNECT='host'
fi
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
fi
cat <<EOF > application/config/config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
return array(
'components' => array(
'db' => array(
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
'emulatePrepare' => true,
'username' => '$DB_USERNAME',
'password' => '$DB_PASSWORD',
'charset' => '$DB_CHARSET',
'tablePrefix' => '$DB_TABLE_PREFIX',
),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => true,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ -n "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -eq 0 ]; then
echo 'Info: Database already provisioned'
else
echo ''
echo 'Running console.php install'
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
fi
exec "$@"

View File

@@ -1,7 +1,7 @@
FROM php:7.2-fpm
FROM php:8.0-fpm
LABEL maintainer="markus@martialblog.de"
ARG version='3.21.4+200108'
ARG sha256_checksum='4b3248b2cb674058556977c011d9a710de6e7b5d74a55df79e3d40192bd98636'
ARG version='4.6.3+210518'
ARG sha256_checksum='3c59afc13d0cf974c465c5f851cb8837117518e94031f5e3a28ba468ad734ce2'
# Install OS dependencies
RUN set -ex; \
@@ -12,11 +12,15 @@ RUN set -ex; \
libldap2-dev \
libfreetype6-dev \
libjpeg-dev \
libonig-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
libzip-dev \
libtidy-dev \
libsodium-dev \
netcat \
\
&& apt-get -y autoclean; apt-get -y autoremove; \
@@ -28,9 +32,10 @@ RUN set -ex; \
# Install PHP Plugins and Configure PHP imap plugin
RUN set -ex; \
docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \
exif \
gd \
imap \
ldap \
@@ -39,22 +44,24 @@ RUN set -ex; \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from official GitHub repository
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp
RUN set -ex; \
echo "${sha256_checksum} /tmp/${version}.tar.gz" | sha256sum -c - && \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/${version}.tar.gz" && \
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R www-data:www-data /var/www/html
EXPOSE 9000
WORKDIR /var/www/html
COPY entrypoint.sh entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["php-fpm"]

147
4.0/fpm/entrypoint.sh Executable file
View File

@@ -0,0 +1,147 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
DB_MYSQL_ENGINE=${DB_MYSQL_ENGINE:-'MyISAM'}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
BASE_URL=${BASE_URL:-}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if config already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
fi
if [ -n "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
DB_CONNECT='unix_socket'
else
echo 'Info: Using TCP connection'
DB_CONNECT='host'
fi
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
fi
cat <<EOF > application/config/config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
return array(
'components' => array(
'db' => array(
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
'emulatePrepare' => true,
'username' => '$DB_USERNAME',
'password' => '$DB_PASSWORD',
'charset' => '$DB_CHARSET',
'tablePrefix' => '$DB_TABLE_PREFIX',
),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => true,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ -n "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -eq 0 ]; then
echo 'Info: Database already provisioned'
else
echo ''
echo 'Running console.php install'
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
fi
exec "$@"

85
5.0/apache/Dockerfile Normal file
View File

@@ -0,0 +1,85 @@
FROM php:8.0-apache
LABEL maintainer="markus@martialblog.de"
ARG version='5.2.11+220124'
ARG sha256_checksum='c4bdb9d165e1db83901392ff375fa842a240985f36a659c6f6607fb4ce8c4f4f'
ARG USER=www-data
ARG LISTEN_PORT=8080
# Install OS dependencies
RUN set -ex; \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
\
libldap2-dev \
libfreetype6-dev \
libjpeg-dev \
libonig-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
libzip-dev \
libtidy-dev \
libsodium-dev \
netcat \
curl \
\
&& apt-get -y autoclean; apt-get -y autoremove; \
rm -rf /var/lib/apt/lists/*
# Link LDAP library for PHP ldap extension
RUN set -ex; \
ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/
# Install PHP Plugins and Configure PHP imap plugin
RUN set -ex; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \
exif \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
# Apache configuration
RUN a2enmod headers rewrite remoteip; \
{\
echo RemoteIPHeader X-Real-IP ;\
echo RemoteIPTrustedProxy 10.0.0.0/8 ;\
echo RemoteIPTrustedProxy 172.16.0.0/12 ;\
echo RemoteIPTrustedProxy 192.168.0.0/16 ;\
} > /etc/apache2/conf-available/remoteip.conf;\
a2enconf remoteip
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R "$USER:$USER" /var/www/html /etc/apache2
EXPOSE $LISTEN_PORT
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
COPY vhosts-access-log.conf /etc/apache2/conf-enabled/other-vhosts-access-log.conf
USER $USER
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["apache2-foreground"]

172
5.0/apache/entrypoint.sh Executable file
View File

@@ -0,0 +1,172 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
DB_MYSQL_ENGINE=${DB_MYSQL_ENGINE:-'MyISAM'}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ENCRYPT_NONCE=${ENCRYPT_NONCE:-}
ENCRYPT_SECRET_BOX_KEY=${ENCRYPT_SECRET_BOX_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
BASE_URL=${BASE_URL:-}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
SHOW_SCRIPT_NAME=${SHOW_SCRIPT_NAME:-'true'}
TABLE_SESSION=${TABLE_SESSION:-}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
LISTEN_PORT=${LISTEN_PORT:-"8080"}
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
if [ "$LISTEN_PORT" != "80" ]; then
echo "Info: Customizing Apache Listen port to $LISTEN_PORT"
sed -i "s/Listen 80\$/Listen $LISTEN_PORT/" /etc/apache2/ports.conf /etc/apache2/sites-available/000-default.conf
fi
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if config already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
fi
if [ -n "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
DB_CONNECT='unix_socket'
else
echo 'Info: Using TCP connection'
DB_CONNECT='host'
fi
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
fi
cat <<EOF > application/config/config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
return array(
'components' => array(
'db' => array(
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
'emulatePrepare' => true,
'username' => '$DB_USERNAME',
'password' => '$DB_PASSWORD',
'charset' => '$DB_CHARSET',
'tablePrefix' => '${DB_TABLE_PREFIX//[[:space:]]/}',
),
//'session' => array (
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
//),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => $SHOW_SCRIPT_NAME,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
fi
# Enable Table Sessions if required
if [ -n "$TABLE_SESSION" ]; then
echo 'Info: Setting Table Session'
# Remove the comments in the config
sed -i "s/\/\///g" application/config/config.php
fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ -n "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
\$config['encryptionnonce'] = '$ENCRYPT_NONCE';
\$config['encryptionsecretboxkey'] = '$ENCRYPT_SECRET_BOX_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -eq 0 ]; then
echo 'Info: Database already provisioned'
else
echo ''
echo 'Running console.php install'
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
fi
exec "$@"

View File

@@ -0,0 +1,3 @@
SetEnvIF User-Agent "(?i)(check|health|probe)" dontlog
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined env=!dontlog

60
5.0/fpm-alpine/Dockerfile Normal file
View File

@@ -0,0 +1,60 @@
FROM php:8.0-fpm-alpine
LABEL maintainer="markus@martialblog.de"
ARG version='5.2.11+220124'
ARG sha256_checksum='c4bdb9d165e1db83901392ff375fa842a240985f36a659c6f6607fb4ce8c4f4f'
ARG USER=www-data
# Install OS dependencies
RUN set -ex; \
apk add --no-cache --virtual .build-deps \
freetype-dev \
libpng-dev \
libzip-dev \
libjpeg-turbo-dev \
tidyhtml-dev \
libsodium-dev \
openldap-dev \
oniguruma-dev \
imap-dev \
postgresql-dev && \
apk add --no-cache netcat-openbsd bash
# Install PHP Plugins
RUN set -ex; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-imap-ssl && \
docker-php-ext-install \
exif \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
\
rm -rf "/tmp/limesurvey.tar.gz" \
/var/www/html/docs \
/var/www/html/tests \
/var/www/html/*.md && \
chown -R "${USER}:root" /var/www/ ; \
chmod -R g=u /var/www
EXPOSE 9000
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
USER $USER
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["php-fpm"]

165
5.0/fpm-alpine/entrypoint.sh Executable file
View File

@@ -0,0 +1,165 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
DB_MYSQL_ENGINE=${DB_MYSQL_ENGINE:-'MyISAM'}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ENCRYPT_NONCE=${ENCRYPT_NONCE:-}
ENCRYPT_SECRET_BOX_KEY=${ENCRYPT_SECRET_BOX_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
BASE_URL=${BASE_URL:-}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
SHOW_SCRIPT_NAME=${SHOW_SCRIPT_NAME:-'true'}
TABLE_SESSION=${TABLE_SESSION:-}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if config already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
fi
if [ -n "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
DB_CONNECT='unix_socket'
else
echo 'Info: Using TCP connection'
DB_CONNECT='host'
fi
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
fi
cat <<EOF > application/config/config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
return array(
'components' => array(
'db' => array(
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
'emulatePrepare' => true,
'username' => '$DB_USERNAME',
'password' => '$DB_PASSWORD',
'charset' => '$DB_CHARSET',
'tablePrefix' => '${DB_TABLE_PREFIX//[[:space:]]/}',
),
//'session' => array (
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
//),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => $SHOW_SCRIPT_NAME,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
fi
# Enable Table Sessions if required
if [ -n "$TABLE_SESSION" ]; then
echo 'Info: Setting Table Session'
# Remove the comments in the config
sed -i "s/\/\///g" application/config/config.php
fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ -n "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
\$config['encryptionnonce'] = '$ENCRYPT_NONCE';
\$config['encryptionsecretboxkey'] = '$ENCRYPT_SECRET_BOX_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -eq 0 ]; then
echo 'Info: Database already provisioned'
else
echo ''
echo 'Running console.php install'
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
fi
exec "$@"

69
5.0/fpm/Dockerfile Normal file
View File

@@ -0,0 +1,69 @@
FROM php:8.0-fpm
LABEL maintainer="markus@martialblog.de"
ARG version='5.2.11+220124'
ARG sha256_checksum='c4bdb9d165e1db83901392ff375fa842a240985f36a659c6f6607fb4ce8c4f4f'
ARG USER=www-data
# Install OS dependencies
RUN set -ex; \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
\
libldap2-dev \
libfreetype6-dev \
libjpeg-dev \
libonig-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
libzip-dev \
libtidy-dev \
libsodium-dev \
netcat \
\
&& apt-get -y autoclean; apt-get -y autoremove; \
rm -rf /var/lib/apt/lists/*
# Link LDAP library for PHP ldap extension
RUN set -ex; \
ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/
# Install PHP Plugins and Configure PHP imap plugin
RUN set -ex; \
docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr && \
docker-php-ext-configure imap --with-kerberos --with-imap-ssl && \
docker-php-ext-install -j5 \
exif \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
sodium \
tidy \
zip
ENV LIMESURVEY_VERSION=$version
# Download, unzip and chmod LimeSurvey from official GitHub repository
RUN set -ex; \
curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz && \
echo "${sha256_checksum} /tmp/limesurvey.tar.gz" | sha256sum -c - && \
\
tar xzvf "/tmp/limesurvey.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm -f "/tmp/limesurvey.tar.gz" && \
chown -R "$USER:$USER" /var/www/html
EXPOSE 9000
WORKDIR /var/www/html
COPY entrypoint.sh /usr/local/bin/entrypoint.sh
USER $USER
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["php-fpm"]

165
5.0/fpm/entrypoint.sh Executable file
View File

@@ -0,0 +1,165 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
DB_MYSQL_ENGINE=${DB_MYSQL_ENGINE:-'MyISAM'}
ENCRYPT_KEYPAIR=${ENCRYPT_KEYPAIR:-}
ENCRYPT_PUBLIC_KEY=${ENCRYPT_PUBLIC_KEY:-}
ENCRYPT_SECRET_KEY=${ENCRYPT_SECRET_KEY:-}
ENCRYPT_NONCE=${ENCRYPT_NONCE:-}
ENCRYPT_SECRET_BOX_KEY=${ENCRYPT_SECRET_BOX_KEY:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-}
BASE_URL=${BASE_URL:-}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
SHOW_SCRIPT_NAME=${SHOW_SCRIPT_NAME:-'true'}
TABLE_SESSION=${TABLE_SESSION:-}
DEBUG=${DEBUG:-0}
DEBUG_SQL=${DEBUG_SQL:-0}
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 "$DB_HOST" "$DB_PORT"
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if config already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
fi
if [ -n "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
DB_CONNECT='unix_socket'
else
echo 'Info: Using TCP connection'
DB_CONNECT='host'
fi
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
fi
cat <<EOF > application/config/config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
return array(
'components' => array(
'db' => array(
'connectionString' => '$DB_TYPE:$DB_CONNECT=$DB_HOST;port=$DB_PORT;dbname=$DB_NAME;',
'emulatePrepare' => true,
'username' => '$DB_USERNAME',
'password' => '$DB_PASSWORD',
'charset' => '$DB_CHARSET',
'tablePrefix' => '${DB_TABLE_PREFIX//[[:space:]]/}',
),
//'session' => array (
// 'class' => 'application.core.web.DbHttpSession',
// 'connectionID' => 'db',
// 'sessionTableName' => '{{sessions}}',
//),
'urlManager' => array(
'urlFormat' => '$URL_FORMAT',
'rules' => array(),
'showScriptName' => $SHOW_SCRIPT_NAME,
),
'request' => array(
'baseUrl' => '$BASE_URL',
),
),
'config'=>array(
'publicurl'=>'$PUBLIC_URL',
'debug'=>$DEBUG,
'debugsql'=>$DEBUG_SQL,
'mysqlEngine' => '$DB_MYSQL_ENGINE',
)
);
EOF
fi
# Enable Table Sessions if required
if [ -n "$TABLE_SESSION" ]; then
echo 'Info: Setting Table Session'
# Remove the comments in the config
sed -i "s/\/\///g" application/config/config.php
fi
# Check if security config already provisioned
if [ -f application/config/security.php ]; then
echo 'Info: security.php already provisioned'
else
echo 'Info: Creating security.php'
if [ -n "$ENCRYPT_KEYPAIR" ]; then
cat <<EOF > application/config/security.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
\$config = array();
\$config['encryptionkeypair'] = '$ENCRYPT_KEYPAIR';
\$config['encryptionpublickey'] = '$ENCRYPT_PUBLIC_KEY';
\$config['encryptionsecretkey'] = '$ENCRYPT_SECRET_KEY';
\$config['encryptionnonce'] = '$ENCRYPT_NONCE';
\$config['encryptionsecretboxkey'] = '$ENCRYPT_SECRET_BOX_KEY';
return \$config;
EOF
else
echo >&2 'Warning: No encryption keys were provided'
echo >&2 'Warning: A security.php config will be created by the application'
echo >&2 'Warning: THIS FILE NEEDS TO BE PERSISTENT'
fi
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
PHP_UPDATEDB_EXIT_CODE=$?
if [ $PHP_UPDATEDB_EXIT_CODE -eq 0 ]; then
echo 'Info: Database already provisioned'
else
echo ''
echo 'Running console.php install'
php application/commands/console.php install "$ADMIN_USER" "$ADMIN_PASSWORD" "$ADMIN_NAME" "$ADMIN_EMAIL"
fi
exec "$@"

View File

@@ -4,31 +4,49 @@ Every Pull Request is welcome.
## Upgrading the Version
To upgrade the LimeSurvey Version the ARG variable needs to be changed.
The versions in this repository should correspond to the [GitHub LimeSurvey Releases](https://github.com/LimeSurvey/LimeSurvey/releases)
To update the version, simply update ARG variables for version and corresponding checksum:
```bash
$ grep Agrep ARG apache/Dockerfile
ARG version='3.7.0+180418'
# Version from GitHub Tags
# sha256 of tar.gz from GitHub Releases
$ grep ARG 4.0/apache/Dockerfile
ARG version='4.3.13+200824'
ARG sha256_checksum='4e9c6f20e'
```
Since this is a reoccuring and boring task, a script is provided.
It is best to use the upgrade shell script:
```bash
# Dependencies
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
./upgrade.sh 4.3.13+200824
# Check if sha256 is correct
# Upgrades to latest Limesurvey version
./upgrade.py
git add 4.0/ && git commit -m 'Upgrading to Version 4.3.13+200824'
git tag 4.3.13-200824
```
## Testing
In order to make sure the image works as promised, some tests are provided:
```bash
./tests/run.sh
```
In order to make sure the image works as promised, some container-structure-tests are provided. The tests require the `container-structure-test` tool to be installed.
For further information: https://github.com/GoogleContainerTools/container-structure-test
```bash
make apache-latest
container-structure-test test --image docker.io/martialblog/limesurvey:5-apache --config tests/apache-tests.yaml
```
```bash
make fpm-latest
container-structure-test test --image docker.io/martialblog/limesurvey:5-fpm-alpine --config tests/fpm-alpine-tests.yaml
```
```bash
make fpm-alpine-latest
container-structure-test test --image docker.io/martialblog/limesurvey:5-fpm --config tests/fpm-tests.yaml
```

14
Makefile Normal file
View File

@@ -0,0 +1,14 @@
# .PHONY: apache fpm fpm-alpine
apache-lts:
docker build --pull -t docker.io/martialblog/limesurvey:3-apache 3.0/apache
apache-latest:
docker build --pull -t docker.io/martialblog/limesurvey:5-apache 5.0/apache
fpm-alpine-lts:
docker build --pull -t docker.io/martialblog/limesurvey:3-fpm-alpine 3.0/fpm-alpine
fpm-alpine-latest:
docker build --pull -t docker.io/martialblog/limesurvey:5-fpm-alpine 5.0/fpm-alpine
fpm-lts:
docker build --pull -t docker.io/martialblog/limesurvey:3-fpm 3.0/fpm
fpm-latest:
docker build --pull -t docker.io/martialblog/limesurvey:5-fpm 5.0/fpm

141
README.md
View File

@@ -1,25 +1,53 @@
[![Build Status](https://travis-ci.org/martialblog/docker-limesurvey.svg?branch=master)](https://travis-ci.org/martialblog/docker-limesurvey)
[![Lint Dockerfile](https://github.com/martialblog/docker-limesurvey/actions/workflows/lint-dockerfiles.yaml/badge.svg)](https://github.com/martialblog/docker-limesurvey/actions/workflows/lint-dockerfiles.yaml)
[![Test LTS Container Images](https://github.com/martialblog/docker-limesurvey/actions/workflows/test-lts-container-images.yaml/badge.svg)](https://github.com/martialblog/docker-limesurvey/actions/workflows/test-lts-container-images.yaml)
[![Test Latest Container Images](https://github.com/martialblog/docker-limesurvey/actions/workflows/test-latest-container-images.yaml/badge.svg)](https://github.com/martialblog/docker-limesurvey/actions/workflows/test-latest-container-images.yaml)
[![](https://images.microbadger.com/badges/image/martialblog/limesurvey.svg)](https://microbadger.com/images/martialblog/limesurvey "Get your own image badge on microbadger.com")
# LimeSurvey Docker
Dockerfile to build a [LimeSurvey](https://limesurvey.org) Image for the Docker container platform.
# Using the apache image
## Quick reference
The apache image comes with an Apache Webserver and PHP installed.
- **Maintained by:** https://github.com/martialblog/
- **Where to get help:** [GitHub Issues](https://github.com/martialblog/docker-limesurvey/issues)
# Apache Configuration
## Supported tags and respective Dockerfile links
- [`5-apache`, `5.<BUILD-NUMBER>-apache`, `latest` ](https://github.com/martialblog/docker-limesurvey/blob/master/5.0/apache/Dockerfile)
- [`5-fpm`, `5.<BUILD-NUMBER>-fpm`](https://github.com/martialblog/docker-limesurvey/blob/master/5.0/fpm/Dockerfile)
- [`5-fpm-alpine`, `5.<BUILD-NUMBER>-fpm-alpine`](https://github.com/martialblog/docker-limesurvey/blob/master/5.0/fpm-alpine/Dockerfile)
- [`3-apache`, `3.<BUILD-NUMBER>-apache`](https://github.com/martialblog/docker-limesurvey/blob/master/3.0/apache/Dockerfile)
- [`3-fpm`, `3.<BUILD-NUMBER>-fpm`](https://github.com/martialblog/docker-limesurvey/blob/master/3.0/fpm/Dockerfile)
- [`3-fpm-alpine`, `3.<BUILD-NUMBER>-fpm-alpine`](https://github.com/martialblog/docker-limesurvey/blob/master/3.0/fpm-alpine/Dockerfile)
# Using the Apache Image
The `apache` image comes with an Apache Webserver and PHP installed.
This image is also available in a `rootless` variant with `www-data` as default user and Apache listening on 8080. Starting from 5.0, the `rootless` variant is the default for Apache images.
## Apache Configuration
To change to Apache Webserver configuration, mount a Volume into the Container at:
- /etc/apache2/sites-available/000-default.conf
- `/etc/apache2/sites-available/000-default.conf`
See the example configuration provided.
# Using the fpm image
The Apache port can be specified by setting the environment variable `LISTEN_PORT` (e.g. `LISTEN_PORT=8080`). Starting from 5.0, Apache defaults to listening on a non-privilged port (8080) in inside the container.
To use the fpm image, you need an additional web server that can proxy http-request to the fpm-port of the container. See *docker-compose.fpm.yml* for example
# Using the fpm Image
To use the fpm image, you need an additional web server that can proxy http-request to the fpm-port of the container. See *docker-compose.fpm.yml* for example.
## Using the fpm Image with HTTPS
If you would like to run the fpm setup with https, you can get a free certificate from Letsencrypt. As an example, the configuration in *docker-compose.fpm-certbot.yml*
will take care of getting a certificate and installing it. Please note that you will have to adjust the domain name in the file *examples/nginx-certbot.conf* to match
the domain used in the *HOSTNAMES* variable in the docker-compose configuration file. If you added both the a domain and the hostname *www* within the domain,
*nginx-certbot.conf* needs to contain the domain without the hostname. E.g. if you set *"HOSTNAMES=example.org www.example.org"*, the path in *nginx-certbot.conf* needs
to contain *example.org*.
# Using an external database
@@ -29,20 +57,45 @@ LimeSurvey requires an external database (MySQL, PostgreSQL) to run. See *docker
To preserve the uploaded files assign the upload folder into a volume. See *docker-compose.yml* for example.
Path: */var/www/html/upload/surveys*
Path: `/var/www/html/upload/surveys`
**Hint**: The mounted directory must be owned by the webserver user (e.g. www-data)
# LimeSurvey Configuration
# LimeSurvey configuration
The entrypoint will create a new config.php if none is provided and run the LimeSurvey command line interface for installation.
**Hint**: Changing the *ADMIN_* configuration has no effect after the initial configuration. It's best to do this within the application.
To change to LimeSurvey configuration, you can mount a Volume into the Container at:
- /my-data/config.php:/var/www/html/application/config/config.php
- `/my-data/config.php:/var/www/html/application/config/config.php`
**Hint**: If this configuration is present before the installation, the LimeSurvey Web Installer will not run automatically.
## Data encryption
LimeSurvey version 4.0 and newer support data encryption, this image give you these options:
* Provide a security.php file directly (volume)
* Provide encryption keys for the `security.php` file (environment variables)
* Provide nothing and get a non-persistent `security.php` file
For further details on the settings see: https://manual.limesurvey.org/Data_encryption
# Reverse Proxy configuration
## Traefik example
**Hint**: if you want to deploy LimeSurvey on a sub-path (e.g. https://example.com/limesurvey) you have to set the BASE_URL and adjust the Containers Webservers. See the docker-compose Traefik example in the repository.
```
# BASE_URL = /limesurvey
"traefik.http.routers.limesurvey.rule=PathPrefix(`/limesurvey`)",
"traefik.http.routers.limesurvey.middlewares=strip-limesurvey@docker",
"traefik.http.middlewares.strip-limesurvey.stripprefix.prefixes=/limesurvey",
```
# Environment Variables
| Parameter | Description |
@@ -52,21 +105,33 @@ To change to LimeSurvey configuration, you can mount a Volume into the Container
| DB_PORT | Database server port |
| DB_SOCK | Database unix socket instead of host/port |
| DB_NAME | Database name |
| DB_TABLE_PREFIX | Database table prefix |
| DB_TABLE_PREFIX | Database table prefix; set this to a single whitespace if you don't want a table prefix. |
| DB_MYSQL_ENGINE | MySQL engine used for survey tables (values: MyISAM, InnoDB, default: MyISAM) |
| DB_USERNAME | Database user |
| DB_PASSWORD | Database user's password |
| ADMIN_USER | LimeSurvey Admin User |
| ADMIN_NAME | LimeSurvey Admin Username |
| ADMIN_EMAIL | LimeSurvey Admin Email |
| ADMIN_PASSWORD | LimeSurvey Admin Password |
| ADMIN_USER | Initial LimeSurvey Admin User |
| ADMIN_NAME | Initial LimeSurvey Admin Username |
| ADMIN_EMAIL | Initial LimeSurvey Admin Email |
| ADMIN_PASSWORD | Initial LimeSurvey Admin Password |
| PUBLIC_URL | Public URL for public scripts |
| BASE_URL | Application Base URL |
| URL_FORMAT | URL Format. path or get |
| TABLE_SESSION | Enable table sessions (true) |
| SHOW_SCRIPT_NAME | Script name in URL (true|false). Default: true |
| DEBUG | Debug level (0, 1, 2). Default: 0 |
| DEBUG_SQL | SQL Debug level (0, 1, 2). Default 0 |
| ENCRYPT_KEYPAIR | Data encryption keypair |
| ENCRYPT_PUBLIC_KEY | Data encryption public key |
| ENCRYPT_SECRET_KEY | Data encryption secret key |
| ENCRYPT_NONCE | Data encryption nonce (used in 5.0) |
| ENCRYPT_SECRET_BOX_KEY | Data encryption secret box key (used in 5.0) |
| LISTEN_PORT | Apache: Listen port. Default: 8080 |
For further details on the settings see: https://manual.limesurvey.org/Optional_settings#Advanced_Path_Settings
# Running this image with docker-compose
# Running LimeSurvey with docker-compose
The easiest way to get a fully featured and functional setup is using a docker-compose file. Several examples are provided in the repository.
The easiest way to get a fully featured and functional setup is using a docker-compose file. Several examples are provided in the [repository](https://github.com/martialblog/docker-limesurvey).
```
docker-compose up
@@ -78,6 +143,48 @@ http://localhost:8080/
http://localhost:8080/index.php/admin
```
# Running LimeSurvey with Helm
A Helm Chart for this Image can be used for deployments. Please refer to the Helm Repository for further details:
https://github.com/martialblog/helm-charts
# Upgrade Guide
These guides are only referring to the Docker Image, for details on the application users should consult the [official LimeSurvey documentation](https://manual.limesurvey.org/Upgrading_from_a_previous_version) for details.
## Upgrading the FPM Images
If you are using docker-compose to run the FPM Images, you need to stop the application and webserver Containers and delete the application volume:
```
$ docker volume ls
DRIVER VOLUME NAME
local docker-limesurvey_lime
$ docker volume rm docker-limesurvey_lime
```
## Upgrading to 5.0 from 4.x
The default user in the Container will now be *www-data* (uid 33 in Debian, uid 82 in Alpine), any volumes mounted need the corresponding permissions:
```
# Debian
$ ls -ln upload/
total 4
drwxr-xr-x 3 33 33 4096 Jun 3 13:51 surveys
```
```
# Alpine
$ ls -ln upload/
total 4
drwxr-xr-x 3 82 82 4096 Jun 3 13:51 surveys
```
If you are using the Apache2 Images, the default port will now be **8080**. Depending on your setup the port configurations might need adjustment.
# References
- https://www.limesurvey.org/

View File

@@ -1,101 +0,0 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 $DB_HOST $DB_PORT
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
cp application/config/config-sample-mysql.php application/config/config.php
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
cp application/config/config-sample-pgsql.php application/config/config.php
fi
# Set Database config
if [ ! -z "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php
else
echo 'Info: Using TCP connection'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php
fi
sed -i "s#\('username' => \).*,\$#\\1'${DB_USERNAME}',#g" application/config/config.php
sed -i "s#\('password' => \).*,\$#\\1'${DB_PASSWORD}',#g" application/config/config.php
sed -i "s#\('charset' => \).*,\$#\\1'${DB_CHARSET}',#g" application/config/config.php
sed -i "s#\('tablePrefix' => \).*,\$#\\1'${DB_TABLE_PREFIX}',#g" application/config/config.php
# Set URL config
sed -i "s#\('urlFormat' => \).*,\$#\\1'${URL_FORMAT}',#g" application/config/config.php
# Set Public URL
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
fi
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned'
else
# Check if DB_PASSWORD is set
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
# Check if DB_PASSWORD is set
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
echo ''
echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL
fi
exec "$@"

View File

@@ -0,0 +1,36 @@
version: '3'
services:
limesurvey:
image: martialblog/limesurvey:latest
restart: always
environment:
- DB_TYPE=pgsql
- DB_PORT=5432
- DB_HOST=db
- DB_PASSWORD=example
- DB_NAME=limesurvey
- DB_USERNAME=limesurvey
- ADMIN_USER=admin
- ADMIN_NAME=Admin
- ADMIN_PASSWORD=example
- ADMIN_EMAIL=admin@example.com
- PUBLIC_URL=foobar.com
volumes:
- limesurvey:/var/www/html/upload/surveys
ports:
- 8080:8080
depends_on:
- db
db:
image: postgres:10-alpine
restart: always
volumes:
- db-data:/var/lib/postgresql
environment:
- POSTGRES_USER=limesurvey
- POSTGRES_DB=limesurvey
- POSTGRES_PASSWORD=example
volumes:
limesurvey:
db-data:

View File

@@ -0,0 +1,50 @@
version: "3.0"
services:
limesurvey:
build:
context: 5.0/fpm/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent
- /tmp/upload/surveys:/var/www/html/upload/surveys
- lime:/var/www/html
links:
- lime-db
depends_on:
- lime-db
environment:
- "DB_HOST=lime-db"
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-web:
build:
context: nginx-certbot/
dockerfile: Dockerfile
links:
- limesurvey
ports:
- "80:80"
- "443:443"
volumes:
- ./examples/nginx-certbot.conf:/etc/nginx/nginx.conf:ro
- ./certbot/conf:/etc/letsencrypt
- ./certbot/www:/var/www/certbot
- lime:/var/www/html
environment:
- "HOSTNAMES=www.example.com example.com"
certbot:
image: certbot/certbot
restart: unless-stopped
volumes:
- ./certbot/conf:/etc/letsencrypt
- ./certbot/www:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
lime-db:
image: mysql:5.7
environment:
- "MYSQL_USER=limesurvey"
- "MYSQL_DATABASE=limesurvey"
- "MYSQL_PASSWORD=secret"
- "MYSQL_ROOT_PASSWORD=secret"
volumes:
lime:

View File

@@ -2,9 +2,10 @@ version: "3.0"
services:
limesurvey:
build:
context: fpm-alpine/
context: 5.0/fpm-alpine/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent
- /tmp/upload/surveys:/var/www/html/upload/surveys
- lime:/var/www/html
links:
@@ -12,13 +13,15 @@ services:
depends_on:
- lime-db
environment:
- "DB_HOST=docker-limesurvey_lime-db_1"
- "DB_HOST=lime-db"
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-web:
image: nginx:alpine
links:
- limesurvey
depends_on:
- limesurvey
ports:
- "8080:80"
volumes:

View File

@@ -2,9 +2,10 @@ version: "3.0"
services:
limesurvey:
build:
context: fpm/
context: 5.0/fpm/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent
- /tmp/upload/surveys:/var/www/html/upload/surveys
- lime:/var/www/html
links:
@@ -12,7 +13,7 @@ services:
depends_on:
- lime-db
environment:
- "DB_HOST=docker-limesurvey_lime-db_1"
- "DB_HOST=lime-db"
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-web:

View File

@@ -2,25 +2,33 @@ version: "3.0"
services:
limesurvey:
build:
context: apache/
# Hint: Change it to 3.0/apache/ if you want to use LimeSurvey 3.*
context: 5.0/apache/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent
- /tmp/upload/surveys:/var/www/html/upload/surveys
links:
- lime-db
depends_on:
- lime-db
ports:
- "8080:80"
# Hint: Change it to 80:8080 if you are using LimeSurvey 3.*
- "8080:8080"
environment:
- "DB_TYPE=pgsql"
- "DB_PORT=5432"
- "DB_HOST=docker-limesurvey_lime-db_1"
- "DB_HOST=lime-db"
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-db:
image: postgres:10
volumes:
- db-data:/var/lib/postgresql/data
environment:
- "POSTGRES_USER=limesurvey"
- "POSTGRES_DB=limesurvey"
- "POSTGRES_PASSWORD=secret"
volumes:
db-data:

View File

@@ -0,0 +1,46 @@
version: "3.0"
services:
limesurvey:
build:
context: 5.0/apache/
dockerfile: Dockerfile
labels:
traefik.enable: 'true'
traefik.http.routers.limesurvey-http-router.entrypoints: "http"
traefik.http.routers.limesurvey-http-router.rule: "PathPrefix(`/limesurvey`)"
traefik.http.services.limesurvey-service.loadbalancer.server.port: "8080"
links:
- lime-db
depends_on:
- lime-db
volumes:
# Unfortunately the StripPrefix Function in Traefik won't work;
# Meaning, we will have to set 'Alias /limesurvey "/var/www/html"' in the Apache Config
- "./examples/apache-example.conf:/etc/apache2/sites-available/000-default.conf:ro"
environment:
- "DB_HOST=lime-db"
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
- "PUBLIC_URL=http://localhost:8888/limesurvey"
- "BASE_URL=http://localhost:8888/limesurvey"
traefik:
image: "traefik:v2.5"
container_name: "traefik"
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.http.address=:8888"
ports:
- "8888:8888"
- "8080:8080"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
lime-db:
image: mysql:5.7
environment:
- "MYSQL_USER=limesurvey"
- "MYSQL_DATABASE=limesurvey"
- "MYSQL_PASSWORD=secret"
- "MYSQL_ROOT_PASSWORD=secret"

View File

@@ -2,20 +2,23 @@ version: "3.0"
services:
limesurvey:
build:
context: apache/
context: 5.0/apache/
dockerfile: Dockerfile
volumes:
# Hint: This is just an example, change /tmp to something persistent
- /tmp/upload/surveys:/var/www/html/upload/surveys
links:
- lime-db
depends_on:
- lime-db
ports:
- "8080:80"
- "8080:8080"
environment:
- "DB_HOST=docker-limesurvey_lime-db_1"
- "DB_HOST=lime-db"
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
# If you require an empty table prefix, use a space as the DB_TABLE_PREFIX
# - "DB_TABLE_PREFIX= "
lime-db:
image: mysql:5.7
environment:

View File

@@ -1,7 +1,7 @@
<VirtualHost *:80>
<VirtualHost *:8080>
ServerAdmin foo@bar.com
DocumentRoot /var/www/html
Alias /lime "/var/www/html"
Alias /limesurvey "/var/www/html"
<Directory />
Options FollowSymLinks

View File

@@ -0,0 +1,57 @@
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
server {
listen 80;
server_name _;
server_tokens off;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
index index.php;
set $host_path "/var/www/html";
root /var/www/html;
server_name _;
charset utf-8;
include /etc/nginx/mime.types;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
try_files $uri /index.php?$args;
}
location ~ ^/(protected|framework|themes/\w+/views) {
deny all;
}
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {
try_files $uri =404;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(.*)$;
try_files $uri index.php;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_pass limesurvey:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
}

View File

@@ -12,13 +12,14 @@ http {
listen 80;
index index.php;
set $host_path "/var/www/html";
include /etc/nginx/mime.types;
root /var/www/html;
server_name localhost;
charset utf-8;
location / {
try_files $uri /index.php?$args;
}
location ~ ^/(protected|framework|themes/\w+/views) {
location ~ ^/(protected|application|framework|themes/\w+/views) {
deny all;
}
location ~ \.(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar)$ {

View File

@@ -1,101 +0,0 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 $DB_HOST $DB_PORT
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
cp application/config/config-sample-mysql.php application/config/config.php
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
cp application/config/config-sample-pgsql.php application/config/config.php
fi
# Set Database config
if [ ! -z "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php
else
echo 'Info: Using TCP connection'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php
fi
sed -i "s#\('username' => \).*,\$#\\1'${DB_USERNAME}',#g" application/config/config.php
sed -i "s#\('password' => \).*,\$#\\1'${DB_PASSWORD}',#g" application/config/config.php
sed -i "s#\('charset' => \).*,\$#\\1'${DB_CHARSET}',#g" application/config/config.php
sed -i "s#\('tablePrefix' => \).*,\$#\\1'${DB_TABLE_PREFIX}',#g" application/config/config.php
# Set URL config
sed -i "s#\('urlFormat' => \).*,\$#\\1'${URL_FORMAT}',#g" application/config/config.php
# Set Public URL
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
fi
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned'
else
# Check if DB_PASSWORD is set
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
# Check if DB_PASSWORD is set
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
echo ''
echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL
fi
exec "$@"

View File

@@ -1,101 +0,0 @@
#!/bin/bash
# Entrypoint for Docker Container
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
DB_SOCK=${DB_SOCK:-}
DB_NAME=${DB_NAME:-'limesurvey'}
DB_TABLE_PREFIX=${DB_TABLE_PREFIX:-'lime_'}
DB_USERNAME=${DB_USERNAME:-'limesurvey'}
DB_PASSWORD=${DB_PASSWORD:-}
ADMIN_USER=${ADMIN_USER:-'admin'}
ADMIN_NAME=${ADMIN_NAME:-'admin'}
ADMIN_EMAIL=${ADMIN_EMAIL:-'foobar@example.com'}
ADMIN_PASSWORD=${ADMIN_PASSWORD:-'-'}
PUBLIC_URL=${PUBLIC_URL:-}
URL_FORMAT=${URL_FORMAT:-'path'}
# Check if database is available
if [ -z "$DB_SOCK" ]; then
until nc -z -v -w30 $DB_HOST $DB_PORT
do
echo "Info: Waiting for database connection..."
sleep 5
done
fi
# Check if already provisioned
if [ -f application/config/config.php ]; then
echo 'Info: config.php already provisioned'
else
echo 'Info: Generating config.php'
if [ "$DB_TYPE" = 'mysql' ]; then
echo 'Info: Using MySQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8mb4'}
cp application/config/config-sample-mysql.php application/config/config.php
fi
if [ "$DB_TYPE" = 'pgsql' ]; then
echo 'Info: Using PostgreSQL configuration'
DB_CHARSET=${DB_CHARSET:-'utf8'}
cp application/config/config-sample-pgsql.php application/config/config.php
fi
# Set Database config
if [ ! -z "$DB_SOCK" ]; then
echo 'Info: Using unix socket'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:unix_socket=${DB_SOCK};dbname=${DB_NAME};',#g" application/config/config.php
else
echo 'Info: Using TCP connection'
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php
fi
sed -i "s#\('username' => \).*,\$#\\1'${DB_USERNAME}',#g" application/config/config.php
sed -i "s#\('password' => \).*,\$#\\1'${DB_PASSWORD}',#g" application/config/config.php
sed -i "s#\('charset' => \).*,\$#\\1'${DB_CHARSET}',#g" application/config/config.php
sed -i "s#\('tablePrefix' => \).*,\$#\\1'${DB_TABLE_PREFIX}',#g" application/config/config.php
# Set URL config
sed -i "s#\('urlFormat' => \).*,\$#\\1'${URL_FORMAT}',#g" application/config/config.php
# Set Public URL
if [ -z "$PUBLIC_URL" ]; then
echo 'Info: Setting PublicURL'
sed -i "s#\('debug'=>0,\)\$#'publicurl'=>'${PUBLIC_URL}',\n\t\t\\1 #g" application/config/config.php
fi
fi
# Check if LimeSurvey database is provisioned
echo 'Info: Check if database already provisioned. Nevermind the Stack trace.'
php application/commands/console.php updatedb
if [ $? -eq 0 ]; then
echo 'Info: Database already provisioned'
else
# Check if DB_PASSWORD is set
if [ -z "$DB_PASSWORD" ]; then
echo >&2 'Error: Missing DB_PASSWORD'
exit 1
fi
# Check if DB_PASSWORD is set
if [ -z "$ADMIN_PASSWORD" ]; then
echo >&2 'Error: Missing ADMIN_PASSWORD'
exit 1
fi
echo ''
echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL
fi
exec "$@"

View File

@@ -1,8 +0,0 @@
.PHONY: apache fpm fpm-alpine
apache:
docker build --pull -t limesurvey:apache apache
fpm-alpine:
docker build --pull -t limesurvey:fpm-alpine fpm-alpine
fpm:
docker build --pull -t limesurvey:fpm fpm

14
nginx-certbot/Dockerfile Normal file
View File

@@ -0,0 +1,14 @@
FROM nginx:stable
LABEL maintainer="markus@martialblog.de"
RUN set -ex; \
apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
certbot curl python-certbot-nginx && \
apt-get -y autoclean; apt-get -y autoremove; \
rm -rf /var/lib/apt/lists/*
COPY entrypoint.sh /entrypoint.sh
RUN chmod 700 /entrypoint.sh
CMD ["/entrypoint.sh"]

View File

@@ -0,0 +1,25 @@
#!/bin/sh
cert_path=/etc/letsencrypt/live/$(echo "$HOSTNAMES" | awk '{print $1}')
mkdir -p $cert_path
# if there is no certificate yet, get one
email="--email $CERT_EMAIL"
if [ -z "$CERT_EMAIL" ]
then
email='--register-unsafely-without-email'
fi
if [ ! -e "$cert_path/privkey.pem" ]
then
names=""
for h in $HOSTNAMES
do
names="$names -d $h"
done
echo "Getting new certificate..."
/usr/bin/curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot-nginx/certbot_nginx/_internal/tls_configs/options-ssl-nginx.conf > /etc/letsencrypt/options-ssl-nginx.conf
/usr/bin/curl -s https://raw.githubusercontent.com/certbot/certbot/master/certbot/certbot/ssl-dhparams.pem > /etc/letsencrypt/ssl-dhparams.pem
/usr/bin/certbot certonly --standalone $names --agree-tos "$email"
fi
nginx -g "daemon off;"

View File

@@ -9,7 +9,7 @@ fileContentTests:
path: '/var/www/html/admin/index.php'
expectedContents: ['LimeSurvey']
- name: 'Entrypoint file content'
path: '/var/www/html/entrypoint.sh'
path: '/usr/local/bin/entrypoint.sh'
expectedContents: ['console.php', 'ADMIN_USER']
fileExistenceTests:

View File

@@ -0,0 +1,57 @@
schemaVersion: "2.0.0"
globalEnvVars:
- key: "PATH"
value: "/env/bin:$PATH"
fileContentTests:
- name: 'Limesurvey admin file content'
path: '/var/www/html/admin/index.php'
expectedContents: ['LimeSurvey']
- name: 'Entrypoint file content'
path: '/usr/local/bin/entrypoint.sh'
expectedContents: ['console.php', 'ADMIN_USER']
fileExistenceTests:
- name: 'Limesurvey files'
path: '/var/www/html/index.php'
shouldExist: true
permissions: '-rw-rw-r--'
- name: 'Limesurvey admin files'
path: '/var/www/html/admin/index.php'
shouldExist: true
permissions: '-rw-rw-r--'
- name: "Dependencies - PHP - gd"
path: '/usr/local/etc/php/conf.d/docker-php-ext-gd.ini'
shouldExist: true
- name: "Dependencies - PHP - imap"
path: '/usr/local/etc/php/conf.d/docker-php-ext-imap.ini'
shouldExist: true
- name: "Dependencies - PHP - ldap"
path: '/usr/local/etc/php/conf.d/docker-php-ext-ldap.ini'
shouldExist: true
- name: "Dependencies - PHP - pgsql"
path: '/usr/local/etc/php/conf.d/docker-php-ext-pgsql.ini'
shouldExist: true
- name: "Dependencies - PHP - zip"
path: '/usr/local/etc/php/conf.d/docker-php-ext-zip.ini'
shouldExist: true
- name: "Dependencies - PHP - sodium"
path: '/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini'
shouldExist: true
- name: "Dependencies - PHP - pdo_mysql"
path: '/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini'
shouldExist: true
- name: "Dependencies - PHP - pdo_pgsql"
path: '/usr/local/etc/php/conf.d/docker-php-ext-pdo_pgsql.ini'
shouldExist: true
commandTests:
- name: "Dependencies - netcat"
command: "apk"
args: ["info", "-e", "netcat-openbsd"]
exitCode: 0
- name: "Dependencies - PHP Modules"
command: "php"
args: ["-m"]
expectedOutput: ["ldap", "zip", "pdo_mysql", "pdo_sqlite", "gd", "mbstring", "PDO", "imap"]

1
tests/fpm-tests.yaml Symbolic link
View File

@@ -0,0 +1 @@
apache-tests.yaml

View File

@@ -1,11 +0,0 @@
#!/usr/bin/env bash
IMAGE=$1
if [ ! -f container-structure-test ]; then
curl -LO https://storage.googleapis.com/container-structure-test/latest/container-structure-test-linux-amd64
mv container-structure-test-linux-amd64 container-structure-test
chmod +x container-structure-test
fi
./container-structure-test test --image $IMAGE --config tests/image_tests.yaml

View File

@@ -6,15 +6,19 @@ set -x
if [ $# -eq 0 ]
then
echo 'Pass new LimeSurvey Version tag:'
echo 'upgrade.sh 3.15.8+190130'
echo '> upgrade.sh 3.15.8+190130'
exit 1
fi
NEW_VERSION=$1
MAJOR_VERSION="${NEW_VERSION%%.*}.0"
NEW_TAG="${NEW_VERSION%+*}-${NEW_VERSION#*+}"
grep -qc $NEW_VERSION apache/Dockerfile fpm/Dockerfile fpm-alpine/Dockerfile
grep -qc "$NEW_VERSION" "$MAJOR_VERSION/apache/Dockerfile" "$MAJOR_VERSION/fpm/Dockerfile" "$MAJOR_VERSION/fpm-alpine/Dockerfile"
if [ $? -eq 0 ]
GREP_NEW_VERSION_EXIT_CODE=$?
if [ $GREP_NEW_VERSION_EXIT_CODE -eq 0 ]
then
echo "Already at version ${NEW_VERSION}"
exit 0
@@ -26,7 +30,9 @@ wget -P /tmp "https://github.com/LimeSurvey/LimeSurvey/archive/${NEW_VERSION}.ta
SHA256_CHECKSUM=$(sha256sum "/tmp/${NEW_VERSION}.tar.gz" | awk '{ print $1 }')
# Update lines in the files
sed -r -i -e "s/[0-9]+(\.[0-9]+)+\+[0-9]+/$NEW_VERSION/" apache/Dockerfile fpm/Dockerfile fpm-alpine/Dockerfile
sed -r -i -e "s/[A-Fa-f0-9]{64}/$SHA256_CHECKSUM/" apache/Dockerfile fpm/Dockerfile fpm-alpine/Dockerfile
sed -r -i -e "s/[0-9]+(\.[0-9]+)+\+[0-9]+/$NEW_VERSION/" "$MAJOR_VERSION/apache/Dockerfile" "$MAJOR_VERSION/fpm/Dockerfile" "$MAJOR_VERSION/fpm-alpine/Dockerfile"
sed -r -i -e "s/[A-Fa-f0-9]{64}/$SHA256_CHECKSUM/" "$MAJOR_VERSION/apache/Dockerfile" "$MAJOR_VERSION/fpm/Dockerfile" "$MAJOR_VERSION/fpm-alpine/Dockerfile"
# After that, check and commit
echo "git add 3.0 ; git commit -m 'Upgrading to LTS Version ${NEW_VERSION}' && git tag ${NEW_TAG}"
echo "git add 5.0 ; git commit -m 'Upgrading to Version ${NEW_VERSION}' && git tag ${NEW_TAG}"