Compare commits

...

255 Commits

Author SHA1 Message Date
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
Markus Opolka
597cf8b0cf Upgrading to Version 3.21.4+200108 2020-01-16 09:50:13 +01:00
Markus Opolka
07c937f620 Upgrading to Version 3.21.3+191219 2020-01-09 08:00:36 +01:00
Markus Opolka
65996ad6b8 Upgrading to Version 3.21.2+191216 2019-12-20 08:01:23 +01:00
Markus Opolka
cd55481064 Upgrading to Version 3.21.1+191210 2019-12-17 07:19:43 +01:00
Markus Opolka
dabd4ecce7 Upgrading to Version 3.21.0+191203 2019-12-09 12:28:07 +01:00
Markus Opolka
3454ed078a Upgrading to Version 3.20.2+191119 2019-12-02 22:13:52 +01:00
Markus Opolka
c2ee09bb8c Upgrading to Version 3.20.1+191114 2019-11-19 17:40:49 +01:00
Markus Opolka
8f1903aa15 Upgrading to Version 3.20.0+191112 2019-11-15 11:04:05 +01:00
Markus Opolka
a829071849 Upgrading to Version 3.19.3+191023 2019-11-11 17:46:46 +01:00
Markus Opolka
a968c01029 Fix Checksum for tarball 2019-10-24 07:30:41 +02:00
Markus Opolka
325416c959 Upgrading to Version 3.19.2+191017 2019-10-23 19:06:11 +02:00
Markus Opolka
44fac58a28 Upgrading to Version 3.19.1+191009 2019-10-17 18:42:08 +02:00
Markus Opolka
1a63aa37a7 Upgrading to Version 3.19.0+191008 2019-10-13 13:26:13 +02:00
Markus Opolka
e4d7e3550f Upgrading to Version 3.17.17+190918 2019-09-23 18:24:27 +02:00
Markus Opolka
26623a1d2c Upgrading to Version 3.17.16+190906 2019-09-19 06:35:28 +02:00
Markus Opolka
5b37d301ad Upgrading to Version 3.17.15+190903 2019-09-07 08:00:31 +02:00
Markus Opolka
9e5b903b28 Upgrading to Version 3.17.14+190902 2019-09-03 13:43:29 +02:00
Markus Opolka
69194ef8a8 Upgrading to Version 3.17.13+190824 2019-09-03 08:19:57 +02:00
Markus Opolka
4a6fd295f3 Upgrading to Version 3.17.12+190823 2019-08-23 19:43:30 +02:00
Markus Opolka
e75090d0fd Upgrading to Version 3.17.10+190821 2019-08-23 19:40:21 +02:00
Markus Opolka
93514b0fb9 Upgrading to Version 3.17.9+190731 2019-08-22 09:40:20 +02:00
Markus Opolka
2d23179e3e Merge pull request #21 from martialblog/fix-image-lib
Fix gd library configuration and update example docker-compose files
2019-08-15 14:04:34 +02:00
Markus Opolka
051a22eb41 Change example volume path in docker-compose files
- The previous setting did override the default Limesurvey directories
  - Also added a hint to the README
2019-08-15 13:57:18 +02:00
Markus Opolka
2fdc20f862 Add gd config and dependencies 2019-08-14 18:33:44 +02:00
Markus Opolka
b35d566cda Upgrading to Version 3.17.8+190722 2019-07-31 15:21:13 +02:00
Markus Opolka
2ef998b0d7 Upgrading to Version 3.17.7+190627 2019-07-22 21:30:14 +02:00
Markus Opolka
02e2c9dc3a Update README 2019-07-18 11:08:43 +02:00
Markus Opolka
68881a29f1 More stable apt autoclean 2019-07-15 14:10:30 +02:00
Markus Opolka
10c98a5eb4 Upgrading to Version 3.17.6+190624 2019-06-28 09:44:23 +02:00
Markus Opolka
a665b512e4 Upgrading to Version 3.17.5+190604 2019-06-26 15:45:38 +02:00
Markus Opolka
0e5571811f Upgrading to Version 3.17.4+190529 2019-06-04 18:37:02 +02:00
Markus Opolka
26a95472a7 Upgrading to Version 3.17.3+190429 2019-05-31 09:03:27 +02:00
Markus Opolka
423f4c6133 Add makefile 2019-05-09 10:30:38 +02:00
Markus Opolka
80bc3f4319 Upgrading to Version 3.17.1+190408 2019-04-30 08:37:21 +02:00
Markus Opolka
c30e0878e2 Upgrading to 3.17.0+190402 2019-04-10 18:51:43 +02:00
Markus Opolka
b44b4c2371 Merge pull request #16 from martialblog/checksum
Fix sha256sum check
2019-04-04 09:10:31 +02:00
Markus Opolka
c655c4cf53 Fix sha256sum check
- Its two spaces... TWO SPACES!
 - https://github.com/gliderlabs/docker-alpine/issues/174#issuecomment-222951567
2019-04-04 09:02:47 +02:00
Markus Opolka
6f088023ae Upgrading to Version 3.16.1+190314 2019-04-04 08:36:55 +02:00
Markus Opolka
6531d6131f Upgrading to Version 3.16.1+190225 2019-03-15 14:48:29 +01:00
Markus Opolka
92548e8d6f Fix upgrade script 2019-03-15 14:46:48 +01:00
Markus Opolka
07a9d72c17 Upgrading to Version 3.15.9+190214 2019-02-26 08:50:00 +01:00
Markus Opolka
fcb52d4114 Merge pull request #15 from martialblog/sha-refactor
Add SHA Checksum and better shell debugging
2019-02-19 11:25:19 +01:00
Markus Opolka
9dcf0c94ea Add shell upgrade script 2019-02-19 11:13:21 +01:00
Markus Opolka
97a2506d3d Remove Python upgrade script 2019-02-19 10:40:50 +01:00
Markus Opolka
90c03f7b92 Add sha256 check, shell debug log and PHP production config 2019-02-19 10:40:29 +01:00
Markus Opolka
27a563868d Upgrading to Version 3.15.8+190130 2019-02-15 09:16:01 +01:00
Markus Opolka
1e66840c63 Enable apache mods rewrite, header and remoteip
- To ensure proper Apache config is possible
2019-02-08 16:26:29 +01:00
Markus Opolka
88db810ec2 Upgrading to Version 3.15.7+190124 2019-01-30 17:24:52 +01:00
Markus Opolka
63f4fb4bbb Upgrading to Version 3.15.6+190108 2019-01-23 16:05:17 +01:00
Markus Opolka
5fc47ca735 Upgrading to Version 3.15.5+181115 2019-01-10 08:10:57 +01:00
Markus Opolka
980e145ea4 Upgrading to Version 3.15.3+181108 2018-11-09 13:23:21 +01:00
Markus Opolka
e978fd0717 Upgrading to Version 3.15.1+181017 2018-11-08 09:33:09 +01:00
Markus Opolka
2fa1f94b20 Upgrading to Version 3.15.0+181008 2018-10-18 10:09:20 +02:00
Markus Opolka
cf09eeba7c Upgrading to Version 3.14.10+180926 2018-10-09 08:12:57 +02:00
Markus Opolka
75f9c151a7 Upgrading to Version 3.14.10+180924 2018-09-27 09:27:09 +02:00
Markus Opolka
a5f3d91340 Upgrading to Version 3.14.9+180917 2018-09-26 07:50:38 +02:00
Markus Opolka
55c23248bd Upgrading to Version 3.14.8+180829 2018-09-17 17:44:00 +02:00
Markus Opolka
91ab6439de Merge pull request #14 from martialblog/unix-socket
Add socket check before waiting for database connection
2018-09-15 14:11:12 +02:00
Jack Henschel
b443ca12a7 Add socket check before waiting for database connection
database connection checking with netcat is only possible when
using a TCP/IP connection, just launch the application when the
user chooses a unix socket
2018-09-14 13:41:47 +02:00
Markus Opolka
a05a2528c6 Merge pull request #13 from martialblog/unix-socket
Add option to use unix_socket instead of tcp connection for DB
2018-09-14 09:44:32 +02:00
Jack Henschel
610c377680 Add option to use unix_socket instead of tcp connection for DB 2018-09-14 09:21:04 +02:00
Markus Opolka
cc34159e53 Upgrading to Version 3.14.7+180827 2018-08-31 11:09:42 +02:00
Markus Opolka
cc6937054e Upgrading to Version 3.14.6+180821 2018-08-28 11:02:29 +02:00
Markus Opolka
8f9f1933eb Upgrading to version 3.14.5+180815 2018-08-21 14:38:15 +02:00
Markus Opolka
c59df8396e Add alpine to update script 2018-08-21 14:36:17 +02:00
Markus Opolka
54b9c6b533 Upgrading to Version 3.14.2+180807 2018-08-15 20:01:12 +02:00
Markus Opolka
92291c81ae Merge pull request #11 from martialblog/alpine-fpm
Add fpm-alpine Dockerfile
2018-08-15 14:40:22 +02:00
Markus Opolka
af02bb1f8c Add fpm-alpine Dockerfile 2018-08-15 14:36:32 +02:00
Markus Opolka
cd8f4b825e Updating to Version 3.14.2+180807 2018-08-09 19:23:17 +02:00
Markus Opolka
2683fcee3c Add example docker-compose.yaml for Postgres 2018-08-09 19:22:20 +02:00
Markus Opolka
bef4ac9ae3 Improve entrypoint to check if database is already provisioned 2018-08-09 19:22:17 +02:00
Markus Opolka
4279818967 Fix docker-compose files
- context needed to change
2018-08-08 09:04:17 +02:00
Markus Opolka
481e72194a Updating to Version 3.14.1+180731 2018-08-08 09:02:14 +02:00
Markus Opolka
3f2f632edd Updating to Version 3.14.0+180730 2018-07-31 19:25:16 +02:00
Markus Opolka
13064859d8 Fix Travis build 2018-07-30 10:38:55 +02:00
33 changed files with 1599 additions and 348 deletions

View File

@@ -2,10 +2,17 @@ sudo: required
language: bash
services:
- docker
matrix:
install:
jobs:
include:
- env: HADOLINT="${HOME}/hadolint"
script:
- curl -sL -o ${HADOLINT} "https://github.com/hadolint/hadolint/releases/download/v1.23.0/hadolint-$(uname -s)-$(uname -m)"
- chmod 700 ${HADOLINT}
- git ls-files --exclude='Dockerfile*' --ignored | xargs --max-lines=1 ${HADOLINT} --ignore DL4006 --ignore DL3008 --ignore DL3018
- env: TAG=martialblog/limesurvey-apache
script: docker build -q -t $TAG -f apache/Dockerfile . && tests/run.sh $TAG
script: cd 4.0/apache; docker build -q -t $TAG . && cd ../..; ./tests/run.sh $TAG
- env: TAG=martialblog/limesurvey-fpm
script: docker build -q -t $TAG -f fpm/Dockerfile . && tests/run.sh $TAG
script: cd 4.0/fpm; docker build -q -t $TAG . && cd ../..; ./tests/run.sh $TAG
- env: TAG=martialblog/limesurvey-alpine
script: cd 4.0/fpm; docker build -q -t $TAG . && cd ../..; ./tests/run.sh $TAG

79
3.0/apache/Dockerfile Normal file
View File

@@ -0,0 +1,79 @@
FROM php:7.4-apache
LABEL maintainer="markus@martialblog.de"
ARG version='3.25.19+210323'
ARG sha256_checksum='b57b142cceb4a689a99897e5a94c9146c1c6dc0d6351f7648af54c25edb27084'
# 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 curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \
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
WORKDIR /var/www/html
COPY entrypoint.sh entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["apache2-foreground"]

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

@@ -0,0 +1,118 @@
#!/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'}
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 [ ! -z "$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,
)
);
EOF
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
echo ''
echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL
fi
exec "$@"

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

@@ -0,0 +1,58 @@
FROM php:7.4-fpm-alpine
LABEL maintainer="markus@martialblog.de"
ARG version='3.25.19+210323'
ARG sha256_checksum='b57b142cceb4a689a99897e5a94c9146c1c6dc0d6351f7648af54c25edb27084'
# 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 of LimeSurvey
RUN curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \
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 entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["php-fpm"]

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

@@ -0,0 +1,118 @@
#!/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'}
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 [ ! -z "$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,
)
);
EOF
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
echo ''
echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL
fi
exec "$@"

68
3.0/fpm/Dockerfile Normal file
View File

@@ -0,0 +1,68 @@
FROM php:7.4-fpm
LABEL maintainer="markus@martialblog.de"
ARG version='3.25.19+210323'
ARG sha256_checksum='b57b142cceb4a689a99897e5a94c9146c1c6dc0d6351f7648af54c25edb27084'
# 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 curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \
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 entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["php-fpm"]

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

@@ -0,0 +1,118 @@
#!/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'}
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 [ ! -z "$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,
)
);
EOF
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
echo ''
echo 'Running console.php install'
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL
fi
exec "$@"

80
4.0/apache/Dockerfile Normal file
View File

@@ -0,0 +1,80 @@
FROM php:7.4-apache
LABEL maintainer="markus@martialblog.de"
ARG version='4.4.13+210315'
ARG sha256_checksum='f6a6af245aa4a318c7fca66a1db76add3580cd0cb56e0c4a5b1516600f214152'
# 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 curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \
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
WORKDIR /var/www/html
COPY entrypoint.sh entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["apache2-foreground"]

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

@@ -0,0 +1,143 @@
#!/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:-}
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 [ ! -z "$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,
)
);
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 [ ! -z "$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
if [ $? -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 "$@"

59
4.0/fpm-alpine/Dockerfile Normal file
View File

@@ -0,0 +1,59 @@
FROM php:7.4-fpm-alpine
LABEL maintainer="markus@martialblog.de"
ARG version='4.4.13+210315'
ARG sha256_checksum='f6a6af245aa4a318c7fca66a1db76add3580cd0cb56e0c4a5b1516600f214152'
# 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 of LimeSurvey
RUN curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \
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 entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["php-fpm"]

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

@@ -0,0 +1,143 @@
#!/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:-}
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 [ ! -z "$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,
)
);
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 [ ! -z "$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
if [ $? -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 "$@"

68
4.0/fpm/Dockerfile Normal file
View File

@@ -0,0 +1,68 @@
FROM php:7.4-fpm
LABEL maintainer="markus@martialblog.de"
ARG version='4.4.13+210315'
ARG sha256_checksum='f6a6af245aa4a318c7fca66a1db76add3580cd0cb56e0c4a5b1516600f214152'
# 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 curl -sSL "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" --output /tmp/limesurvey.tar.gz
RUN set -ex; \
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 entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["php-fpm"]

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

@@ -0,0 +1,143 @@
#!/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:-}
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 [ ! -z "$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,
)
);
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 [ ! -z "$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
if [ $? -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,23 +4,27 @@ 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

View File

@@ -1,25 +1,47 @@
[![Build Status](https://travis-ci.org/martialblog/docker-limesurvey.svg?branch=master)](https://travis-ci.org/martialblog/docker-limesurvey)
[![Build Status](https://travis-ci.com/martialblog/docker-limesurvey.svg?branch=master)](https://travis-ci.com/martialblog/docker-limesurvey)
[![](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
- **Maintained by:** https://github.com/martialblog/
- **Where to get help:** [GitHub Issues](https://github.com/martialblog/docker-limesurvey/issues)
## Supported tags and respective Dockerfile links
- [`4-apache`, `4.<BUILD-NUMBER>-apache`, `latest` ](https://github.com/martialblog/docker-limesurvey/blob/master/4.0/apache/Dockerfile)
- [`4-fpm`, `4.<BUILD-NUMBER>-fpm`](https://github.com/martialblog/docker-limesurvey/blob/master/4.0/fpm/Dockerfile)
- [`4-fpm-alpine`, `4.<BUILD-NUMBER>-fpm-alpine`](https://github.com/martialblog/docker-limesurvey/blob/master/4.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.
# Apache Configuration
## 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
# 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
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,38 +51,84 @@ 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/*
Path: `/var/www/html/upload/surveys`
# LimeSurvey Configuration
**Hint**: The mounted directory must be owned by the webserver user (e.g. www-data)
# 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 4 supports 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
```
# 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 |
| --------- | ----------- |
| DB_TYPE | Database Type to use. mysql or postgresql |
| DB_TYPE | Database Type to use. mysql or pgsql |
| DB_HOST | Database server hostname |
| 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_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 |
| 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 |
For further details on the settings see: https://manual.limesurvey.org/Optional_settings#Advanced_Path_Settings
# Running this Image 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](https://github.com/martialblog/docker-limesurvey).
```
docker-compose up
# Frontend
http://localhost:8080/
# Backend
http://localhost:8080/index.php/admin
```
# References
- https://www.limesurvey.org/

View File

@@ -1,45 +0,0 @@
FROM php:7.2-apache
LABEL maintainer="markus@martialblog.de"
ARG version='3.13.1+180629'
# Install OS dependencies
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
libldap2-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
netcat \
&& apt-get autoclean; apt-get autoremove && \
rm -rf /var/lib/apt/lists/*
# Link LDAP library for PHP ldap extension
RUN ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/
# Configure PHP imap plugin
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl
# Install PHP Plugins
RUN docker-php-ext-install -j5 \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
zip
# Download, unzip and chmod of LimeSurvey
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp
RUN tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm "/tmp/${version}.tar.gz" && \
chown -R www-data:www-data /var/www/html
COPY entrypoint.sh entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["apache2-foreground"]

View File

@@ -1,79 +0,0 @@
#!/bin/bash
set -e
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
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 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
# 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" = 'postgresql' ]; 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
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php
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
until nc -z -v -w30 $DB_HOST $DB_PORT
do
echo "Info: Waiting for database connection..."
sleep 5
done
echo 'Running console.php install'
# Hint: The console.php script seems to always exit with 1, so that is why
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL || true
exec "$@"

View File

@@ -0,0 +1,33 @@
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:80
depends_on:
- db
db:
image: postgres:9.6-alpine
restart: always
environment:
- POSTGRES_USER=limesurvey
- POSTGRES_DB=limesurvey
- POSTGRES_PASSWORD=example
volumes:
limesurvey:

View File

@@ -0,0 +1,49 @@
version: "3.0"
services:
limesurvey:
build:
context: 4.0/fpm/
dockerfile: Dockerfile
volumes:
- /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

@@ -0,0 +1,35 @@
version: "3.0"
services:
limesurvey:
build:
context: 4.0/fpm-alpine/
dockerfile: Dockerfile
volumes:
- /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:
image: nginx:alpine
links:
- limesurvey
ports:
- "8080:80"
volumes:
- ./examples/nginx.conf:/etc/nginx/nginx.conf:ro
- lime:/var/www/html
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,17 +2,17 @@ version: "3.0"
services:
limesurvey:
build:
context: .
dockerfile: fpm/Dockerfile
context: 4.0/fpm/
dockerfile: Dockerfile
volumes:
- /tmp/upload/:/var/www/html/upload/
- /tmp/upload/surveys:/var/www/html/upload/surveys
- lime:/var/www/html
links:
- lime-db
depends_on:
- lime-db
environment:
- "DB_HOST=docker-limesurvey_lime-db_1"
- "DB_HOST=lime-db"
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-web:

26
docker-compose.pgsql.yml Normal file
View File

@@ -0,0 +1,26 @@
version: "3.0"
services:
limesurvey:
build:
context: 4.0/apache/
dockerfile: Dockerfile
volumes:
- /tmp/upload/surveys:/var/www/html/upload/surveys
links:
- lime-db
depends_on:
- lime-db
ports:
- "8080:80"
environment:
- "DB_TYPE=pgsql"
- "DB_PORT=5432"
- "DB_HOST=lime-db"
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-db:
image: postgres:10
environment:
- "POSTGRES_USER=limesurvey"
- "POSTGRES_DB=limesurvey"
- "POSTGRES_PASSWORD=secret"

View File

@@ -2,10 +2,10 @@ version: "3.0"
services:
limesurvey:
build:
context: .
dockerfile: apache/Dockerfile
context: 4.0/apache/
dockerfile: Dockerfile
volumes:
- /tmp/upload/:/var/www/html/upload/
- /tmp/upload/surveys:/var/www/html/upload/surveys
links:
- lime-db
depends_on:
@@ -13,7 +13,7 @@ services:
ports:
- "8080:80"
environment:
- "DB_HOST=docker-limesurvey_lime-db_1"
- "DB_HOST=lime-db"
- "DB_PASSWORD=secret"
- "ADMIN_PASSWORD=foobar"
lime-db:

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,6 +12,7 @@ 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;

View File

@@ -1,47 +0,0 @@
FROM php:7.2-fpm
LABEL maintainer="markus@martialblog.de"
ARG version='3.13.1+180629'
# Install OS dependencies
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive \
apt-get install --no-install-recommends -y \
libldap2-dev \
zlib1g-dev \
libc-client-dev \
libkrb5-dev \
libpng-dev \
libpq-dev \
netcat \
&& apt-get autoclean; apt-get autoremove && \
rm -rf /var/lib/apt/lists/*
# Link LDAP library for PHP ldap extension
RUN ln -fs /usr/lib/x86_64-linux-gnu/libldap.so /usr/lib/
RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl
# Install PHP Plugins
RUN docker-php-ext-install -j5 \
gd \
imap \
ldap \
mbstring \
pdo \
pdo_mysql \
pdo_pgsql \
pgsql \
zip
# Download, unzip and chmod of LimeSurvey
ADD "https://github.com/LimeSurvey/LimeSurvey/archive/${version}.tar.gz" /tmp
RUN tar xzvf "/tmp/${version}.tar.gz" --strip-components=1 -C /var/www/html/ && \
rm "/tmp/${version}.tar.gz" && \
chown -R www-data:www-data /var/www/html
EXPOSE 9000
COPY entrypoint.sh entrypoint.sh
ENTRYPOINT ["/var/www/html/entrypoint.sh"]
CMD ["php-fpm"]

View File

@@ -1,79 +0,0 @@
#!/bin/bash
set -e
DB_TYPE=${DB_TYPE:-'mysql'}
DB_HOST=${DB_HOST:-'mysql'}
DB_PORT=${DB_PORT:-'3306'}
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 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
# 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" = 'postgresql' ]; 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
sed -i "s#\('connectionString' => \).*,\$#\\1'${DB_TYPE}:host=${DB_HOST};port=${DB_PORT};dbname=${DB_NAME};',#g" application/config/config.php
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
until nc -z -v -w30 $DB_HOST $DB_PORT
do
echo "Info: Waiting for database connection..."
sleep 5
done
echo 'Running console.php install'
# Hint: The console.php script seems to always exit with 1, so that is why
php application/commands/console.php install $ADMIN_USER $ADMIN_PASSWORD $ADMIN_NAME $ADMIN_EMAIL || true
exec "$@"

14
makefile Normal file
View File

@@ -0,0 +1,14 @@
.PHONY: apache fpm fpm-alpine
apache3:
docker build --pull -t martialblog/limesurvey:3-apache 3.0/apache
apache4:
docker build --pull -t martialblog/limesurvey:4-apache 4.0/apache
fpm-alpine3:
docker build --pull -t martialblog/limesurvey:3-fpm-alpine 3.0/fpm-alpine
fpm-alpine4:
docker build --pull -t martialblog/limesurvey:4-fpm-alpine 4.0/fpm-alpine
fpm3:
docker build --pull -t martialblog/limesurvey:3-fpm 3.0/fpm
fpm4:
docker build --pull -t martialblog/limesurvey:4-fpm 4.0/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=$(echo "$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

@@ -1 +0,0 @@
feedparser==5.2.1

View File

@@ -1,61 +0,0 @@
#!/usr/bin/env python3
import argparse
import feedparser
import sys
import subprocess
dockerfile_apache = 'apache/Dockerfile'
dockerfile_fpm = 'fpm/Dockerfile'
limesv_feed_url = 'https://github.com/LimeSurvey/LimeSurvey/releases.atom'
docker_feed_url = 'https://github.com/martialblog/docker-limesurvey/releases.atom'
limesv_feed = feedparser.parse(limesv_feed_url)
docker_feed = feedparser.parse(docker_feed_url)
limesv_current_release = limesv_feed.entries[0].title_detail.value
docker_current_release = docker_feed.entries[0].title_detail.value
argumentparser = argparse.ArgumentParser(description='Updates the LimeSurvey Version in the Dockerfiles')
argumentparser.add_argument('--noop', dest='noop', action="store_true", required=False, help="Don't push just commit")
argumentparser.add_argument('--check', dest='check', action="store_true", required=False, help="Only check if there's a new version available")
cmdargs = argumentparser.parse_args()
if limesv_current_release == docker_current_release:
print('Nothing to do.')
sys.exit(0)
print('New Version {} available.'.format(limesv_current_release))
if cmdargs.check:
sys.exit(0)
commit_message = 'Updating to Version {}'.format(limesv_current_release)
# Dockerfiles
regexp = 's/[0-9]+\.[0-9]+\.[0-9]+[0-9]*/{new_version}/'.format(new_version=limesv_current_release)
subprocess.call(['sed', '-i', '-e', regexp, dockerfile_apache])
subprocess.call(['sed', '-i', '-e', regexp, dockerfile_fpm])
print('> Updated Dockerfiles')
# Git Commit/Tag
# subprocess.call(['git', 'checkout', '-b', limesv_current_release])
subprocess.call(['git', 'add', dockerfile_apache])
subprocess.call(['git', 'add', dockerfile_fpm])
subprocess.call(['git', 'commit', '-m', commit_message])
subprocess.call(['git', 'tag', limesv_current_release])
print('> Created new Commit and Tag')
if cmdargs.noop:
sys.exit(0)
# Git Push
# subprocess.call(['git', 'push', 'origin', limesv_current_release])
subprocess.call(['git', 'push'])
subprocess.call(['git', 'push', 'origin', '--tags'])
print('> Pushed to new Branch')
sys.exit(0)

35
upgrade.sh Executable file
View File

@@ -0,0 +1,35 @@
#!/usr/bin/env bash
# Upgrade script
set -x
if [ $# -eq 0 ]
then
echo 'Pass new LimeSurvey Version tag:'
echo '> upgrade.sh 3.15.8+190130'
exit 1
fi
NEW_VERSION=$1
MAJOR_VERSION=$(echo $NEW_VERSION | cut -c 1 | awk '{print $1".0"}')
grep -qc $NEW_VERSION $MAJOR_VERSION/apache/Dockerfile $MAJOR_VERSION/fpm/Dockerfile $MAJOR_VERSION/fpm-alpine/Dockerfile
if [ $? -eq 0 ]
then
echo "Already at version ${NEW_VERSION}"
exit 0
fi
# Download, unzip and chmod LimeSurvey from official GitHub repository
wget -P /tmp "https://github.com/LimeSurvey/LimeSurvey/archive/${NEW_VERSION}.tar.gz"
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/" $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_VERSION}"
echo "git add 4.0 ; git commit -m 'Upgrading to Version ${NEW_VERSION}' && git tag ${NEW_VERSION}"