mirror of
https://github.com/itzg/docker-minecraft-server.git
synced 2026-02-21 16:46:23 +00:00
Compare commits
834 Commits
test-20180
...
2021.21.0-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4149db7f11 | ||
|
|
0198c15b8c | ||
|
|
e813007f49 | ||
|
|
df2962bdb3 | ||
|
|
367f07b784 | ||
|
|
9de9ec2e34 | ||
|
|
6ad7773e2b | ||
|
|
8177dd9a5a | ||
|
|
81994ec3b3 | ||
|
|
666f538ad5 | ||
|
|
ecee4069f1 | ||
|
|
3713d9c4e8 | ||
|
|
c7f1d13f9b | ||
|
|
cc8d18d41f | ||
|
|
afd863ab89 | ||
|
|
46f6653b13 | ||
|
|
3237d1a996 | ||
|
|
386e34e05b | ||
|
|
4fd234e482 | ||
|
|
38fd0dac8b | ||
|
|
11ac111036 | ||
|
|
9803547967 | ||
|
|
1a0c7c4f85 | ||
|
|
7b7d5db796 | ||
|
|
145403ea54 | ||
|
|
34baf8a354 | ||
|
|
5392801ecd | ||
|
|
cc9e0fe1ef | ||
|
|
3dfd70d068 | ||
|
|
9c354d5775 | ||
|
|
2dce24c1bd | ||
|
|
6f80ce5584 | ||
|
|
c8df2d8e31 | ||
|
|
e5bc9b939f | ||
|
|
2e8f27a8ef | ||
|
|
e20dd63f76 | ||
|
|
3e62389325 | ||
|
|
f3c880f96a | ||
|
|
2c7796ea0b | ||
|
|
0daeeb70f7 | ||
|
|
86782865c4 | ||
|
|
ddcabb175a | ||
|
|
1b620d2d6d | ||
|
|
7b09e525e8 | ||
|
|
2eefb12e6b | ||
|
|
5777a248d4 | ||
|
|
97a6a4ba85 | ||
|
|
531d33af1c | ||
|
|
28d77853cb | ||
|
|
0618d690fa | ||
|
|
6aa3b1066f | ||
|
|
393544a194 | ||
|
|
4aea1753bd | ||
|
|
c42d8971ca | ||
|
|
ee7f2ee739 | ||
|
|
6008660a81 | ||
|
|
043d9778b8 | ||
|
|
8bf7c6cccd | ||
|
|
80d7efb365 | ||
|
|
32ed58692c | ||
|
|
63b919f1a9 | ||
|
|
57d9da96a1 | ||
|
|
ec97c67aca | ||
|
|
e5e9b0d928 | ||
|
|
2e37c16b2c | ||
|
|
bcdab80f41 | ||
|
|
c3cf892e40 | ||
|
|
1d41593a84 | ||
|
|
52452020dd | ||
|
|
65f2562d52 | ||
|
|
3482944ac8 | ||
|
|
9d03a1dc13 | ||
|
|
012d3e7b65 | ||
|
|
10d254bbbc | ||
|
|
8acb3f8a90 | ||
|
|
1b00a8692b | ||
|
|
814559bef8 | ||
|
|
8bac02bbcf | ||
|
|
7ef031e244 | ||
|
|
250d32e3dc | ||
|
|
bdeab5bb9c | ||
|
|
764e1e9363 | ||
|
|
72461546b8 | ||
|
|
98ad3b0f4a | ||
|
|
7afd2adacf | ||
|
|
4c52d0ec42 | ||
|
|
9f66622472 | ||
|
|
1f2f33d6c0 | ||
|
|
1a3c454d7f | ||
|
|
fa11d313fb | ||
|
|
20bc2a97d9 | ||
|
|
0cd49c4c81 | ||
|
|
6c1cd2537d | ||
|
|
cf31f24752 | ||
|
|
27523a1c45 | ||
|
|
e1d0fe6b92 | ||
|
|
d3f4a4991e | ||
|
|
296ddbdec5 | ||
|
|
f7cd34b8d8 | ||
|
|
7bafffbd06 | ||
|
|
201ec3be5a | ||
|
|
7d1d5af097 | ||
|
|
f9ce5bce4d | ||
|
|
748768c771 | ||
|
|
f307077636 | ||
|
|
179cd878a9 | ||
|
|
788548d1f4 | ||
|
|
0ae15c2b3c | ||
|
|
b5b4257032 | ||
|
|
657db124b2 | ||
|
|
f5ea43b3d3 | ||
|
|
01747510d5 | ||
|
|
ff8b160a2b | ||
|
|
28b7afda15 | ||
|
|
ecd253dd3e | ||
|
|
8d0dbcd50e | ||
|
|
327f21f1bb | ||
|
|
c96d6b2958 | ||
|
|
da8fb37317 | ||
|
|
4d7e29cb3a | ||
|
|
17099320e9 | ||
|
|
f3dbb4dd2d | ||
|
|
b3b3cdde08 | ||
|
|
b8cd510a0e | ||
|
|
0d5eb2ea9e | ||
|
|
2b0fd2e5c0 | ||
|
|
4168821ec4 | ||
|
|
6353488db7 | ||
|
|
b446d4cc3f | ||
|
|
16b2762025 | ||
|
|
c5a3e2e376 | ||
|
|
5018298c81 | ||
|
|
37b81aa0be | ||
|
|
6a3a0465a4 | ||
|
|
34d67d6018 | ||
|
|
9c4403d7ff | ||
|
|
3c0566cb87 | ||
|
|
4357066cdf | ||
|
|
67ca9a7fc4 | ||
|
|
9c9c295a79 | ||
|
|
daa3292000 | ||
|
|
2da5e2b2ec | ||
|
|
c5119ad27b | ||
|
|
4808507da8 | ||
|
|
11a286fe26 | ||
|
|
ca80b4730f | ||
|
|
80a8ce8a46 | ||
|
|
d804323cab | ||
|
|
cbaef446ac | ||
|
|
8aa1312ae2 | ||
|
|
7ec09fcfe9 | ||
|
|
c090095e08 | ||
|
|
f24bc00eb9 | ||
|
|
f91ee5d245 | ||
|
|
dd6700e659 | ||
|
|
ca8a27babe | ||
|
|
19cc894662 | ||
|
|
15320f0eb2 | ||
|
|
af758af51a | ||
|
|
9d231801da | ||
|
|
33c2154a98 | ||
|
|
f890b316da | ||
|
|
2e4cf0b731 | ||
|
|
f5a319b0b3 | ||
|
|
2533d2c694 | ||
|
|
b1fed81821 | ||
|
|
0064c0357f | ||
|
|
20cd8cce1d | ||
|
|
bc8af2784f | ||
|
|
e300810a16 | ||
|
|
33b48a8a4b | ||
|
|
6f2f1174e6 | ||
|
|
adbe75ae7e | ||
|
|
dae2add713 | ||
|
|
38946fd294 | ||
|
|
047ef107ae | ||
|
|
1bb2f92f5b | ||
|
|
727a1f29d1 | ||
|
|
012bd3a307 | ||
|
|
ae5b19b0aa | ||
|
|
81d9c55eee | ||
|
|
90cfe0e151 | ||
|
|
491800280c | ||
|
|
d60c2e0815 | ||
|
|
fb0babe261 | ||
|
|
e6bc8abdc1 | ||
|
|
fbee644b4e | ||
|
|
aaf327b308 | ||
|
|
d404e0f50e | ||
|
|
c5bb83c6d0 | ||
|
|
8bf3b64831 | ||
|
|
9ff04f8637 | ||
|
|
dd7953ab4c | ||
|
|
23fde3387a | ||
|
|
ecbdb2b18d | ||
|
|
373921777a | ||
|
|
2f489b04ae | ||
|
|
a2c393ccc5 | ||
|
|
73a11c91d2 | ||
|
|
8673f919fd | ||
|
|
1e32161652 | ||
|
|
38eb769c1b | ||
|
|
5e372ed9f4 | ||
|
|
e027a81317 | ||
|
|
0a51713bd7 | ||
|
|
d5cde03db1 | ||
|
|
449f2bfa09 | ||
|
|
c9815e2ccb | ||
|
|
9bd6bc64b0 | ||
|
|
a5fe016854 | ||
|
|
93cd299c77 | ||
|
|
e8f8d8b4d4 | ||
|
|
b806ea6871 | ||
|
|
cb17180dea | ||
|
|
78ec4ba2a7 | ||
|
|
317104de30 | ||
|
|
63412975c3 | ||
|
|
9c87f8749d | ||
|
|
5fc36516f4 | ||
|
|
c608c8a57e | ||
|
|
853a9884d7 | ||
|
|
ecafaf4ea1 | ||
|
|
eb490e92c3 | ||
|
|
98c7e43927 | ||
|
|
d8786d4785 | ||
|
|
02181021ce | ||
|
|
fa60f8c16e | ||
|
|
3084a2f409 | ||
|
|
f473cfc6f2 | ||
|
|
8a34aa5c45 | ||
|
|
cc204c297f | ||
|
|
bb210ff59e | ||
|
|
671e84bec9 | ||
|
|
fc2ba2df32 | ||
|
|
e5bee8e79b | ||
|
|
1b13ddcf32 | ||
|
|
de707049d4 | ||
|
|
e95ae2dbbb | ||
|
|
4606c27cdc | ||
|
|
ba88bf72ce | ||
|
|
75967cec02 | ||
|
|
0a35f661bd | ||
|
|
f141806fb4 | ||
|
|
d80f40075c | ||
|
|
44dbe80096 | ||
|
|
c7546ef08a | ||
|
|
6fe5bb4aa8 | ||
|
|
589a9aa3db | ||
|
|
2c8d1a9255 | ||
|
|
a8c11c0cdb | ||
|
|
34ae93f379 | ||
|
|
bd57d291c1 | ||
|
|
7310daf51d | ||
|
|
78d9d888db | ||
|
|
bccdc7f5e8 | ||
|
|
3854526389 | ||
|
|
74072847ca | ||
|
|
c5857bfc0b | ||
|
|
8b380894f9 | ||
|
|
b090737162 | ||
|
|
476abc9dad | ||
|
|
a2cbf07b6d | ||
|
|
2a67344b93 | ||
|
|
9ecb617d2e | ||
|
|
9381776345 | ||
|
|
5a47bb11ba | ||
|
|
4be4fc4808 | ||
|
|
d939be28e6 | ||
|
|
bb8c7756c7 | ||
|
|
3261fbd7e9 | ||
|
|
7164d2b885 | ||
|
|
185fccf712 | ||
|
|
0c860ade12 | ||
|
|
cfb2739cd9 | ||
|
|
b1bb3f38f3 | ||
|
|
0f0017b02d | ||
|
|
a99f7a494b | ||
|
|
65b3997e72 | ||
|
|
5e8f947ce5 | ||
|
|
3e9308d315 | ||
|
|
5f48a4e5e5 | ||
|
|
e593ca4bda | ||
|
|
b731eaaffb | ||
|
|
75f5a430e4 | ||
|
|
e0c721585e | ||
|
|
da21c2e0a7 | ||
|
|
2b989e4c39 | ||
|
|
7d6c80b941 | ||
|
|
a3039eea12 | ||
|
|
cbf9577a24 | ||
|
|
70ea32e89d | ||
|
|
10a3037ab3 | ||
|
|
9ccfca5061 | ||
|
|
52cbf1fb64 | ||
|
|
190e401452 | ||
|
|
b881a27c8d | ||
|
|
6fab527eed | ||
|
|
9690832247 | ||
|
|
60a68963a8 | ||
|
|
e5948081a7 | ||
|
|
7aa47e2a60 | ||
|
|
327538a98f | ||
|
|
f6c71e27d8 | ||
|
|
4628da7ea2 | ||
|
|
02ba96c421 | ||
|
|
87f6fe6b20 | ||
|
|
8049bd5b80 | ||
|
|
5225ba06c8 | ||
|
|
d695fc3fbc | ||
|
|
a2132292ac | ||
|
|
c31b191b96 | ||
|
|
c4b573f608 | ||
|
|
28810fcba3 | ||
|
|
8d1989a595 | ||
|
|
d022956e24 | ||
|
|
2bdaa4dc4e | ||
|
|
46bfbaada1 | ||
|
|
e659343821 | ||
|
|
44138564b0 | ||
|
|
3c77abbbab | ||
|
|
209c6e6dab | ||
|
|
6fa827e9a1 | ||
|
|
cd3ea7fd2e | ||
|
|
d3bd697cb2 | ||
|
|
6c6bf030c5 | ||
|
|
6e2b3ae0c7 | ||
|
|
9915929340 | ||
|
|
298bf5fb0a | ||
|
|
6ae431b2f0 | ||
|
|
44769b6001 | ||
|
|
ebabfeb669 | ||
|
|
5c1f176848 | ||
|
|
4186cfd91c | ||
|
|
457e9b53c7 | ||
|
|
861aec6bd6 | ||
|
|
21572d3547 | ||
|
|
89afba7437 | ||
|
|
53f5fbb77f | ||
|
|
9299f00d20 | ||
|
|
e5e97a3560 | ||
|
|
32bc0382d6 | ||
|
|
fa53abdfb7 | ||
|
|
0cbfb81b4c | ||
|
|
d47c801b18 | ||
|
|
c056b9d2dd | ||
|
|
92a15ea85d | ||
|
|
6fe022ccc8 | ||
|
|
f397dd71a9 | ||
|
|
b71eb666a7 | ||
|
|
02e0a47a52 | ||
|
|
b176be942d | ||
|
|
a2ab0d75ed | ||
|
|
60809fe5ad | ||
|
|
51c5902db0 | ||
|
|
c48f6c31ce | ||
|
|
b2d23edf6d | ||
|
|
31f25cfd1b | ||
|
|
7d4e4c167e | ||
|
|
4a8e416fe1 | ||
|
|
090e624ebc | ||
|
|
eb12030975 | ||
|
|
e46af9d54c | ||
|
|
861faaa285 | ||
|
|
8312233a93 | ||
|
|
959bf73485 | ||
|
|
ce4efd0b70 | ||
|
|
c8dc751b82 | ||
|
|
beeaf1a996 | ||
|
|
f856276d71 | ||
|
|
0300854c46 | ||
|
|
96aa1054dc | ||
|
|
7c862df92a | ||
|
|
e7937206af | ||
|
|
e49c1c2f01 | ||
|
|
081b2c11e4 | ||
|
|
f342f4aa98 | ||
|
|
57390b02ca | ||
|
|
f06e9f5ede | ||
|
|
4e73e69342 | ||
|
|
a698248dff | ||
|
|
c6ff80b71c | ||
|
|
37cad3f255 | ||
|
|
5700f36a6f | ||
|
|
34f800d815 | ||
|
|
b8ef6eba3f | ||
|
|
8d3ca813ed | ||
|
|
ffec50141a | ||
|
|
54027049d3 | ||
|
|
4c2829e3d2 | ||
|
|
69e308d420 | ||
|
|
ad46f10b55 | ||
|
|
cd0fdfc95b | ||
|
|
d95abfce82 | ||
|
|
942a125e04 | ||
|
|
cc5fe0859a | ||
|
|
e97a00e61d | ||
|
|
a3677d5aa8 | ||
|
|
f927933c46 | ||
|
|
8f15aac6fc | ||
|
|
b519c43e16 | ||
|
|
5ab83bcb21 | ||
|
|
84ce3b4b47 | ||
|
|
02c8393bc6 | ||
|
|
b07c43a32f | ||
|
|
9469291731 | ||
|
|
ce1b337f7f | ||
|
|
c29baf446d | ||
|
|
fdf5fb46bc | ||
|
|
8c6ca5e999 | ||
|
|
bb2b9eeea9 | ||
|
|
d1cbce3f89 | ||
|
|
55b5f6821f | ||
|
|
ee8e1b9322 | ||
|
|
f9b8db0715 | ||
|
|
2fb01b4adf | ||
|
|
02bce8c3a8 | ||
|
|
468671a3fa | ||
|
|
20bd5c4c36 | ||
|
|
ffb50cfe28 | ||
|
|
8ee650f38d | ||
|
|
3de2bf88df | ||
|
|
1fcbd8410f | ||
|
|
de082d0fb2 | ||
|
|
51e6d5dfbd | ||
|
|
3cc5cdbc06 | ||
|
|
842c69fd80 | ||
|
|
d40bbdc3a5 | ||
|
|
c458823014 | ||
|
|
61c291ae4e | ||
|
|
b69ec47b18 | ||
|
|
32abf1614f | ||
|
|
f613228619 | ||
|
|
51fc8e824d | ||
|
|
a916cc8320 | ||
|
|
ca9f883352 | ||
|
|
9d68fa3b88 | ||
|
|
d3a5885d95 | ||
|
|
c1db13c1f6 | ||
|
|
31b0f711b8 | ||
|
|
59ca1ce3a6 | ||
|
|
0f7bd5f4fd | ||
|
|
aff9031284 | ||
|
|
01130757d6 | ||
|
|
397d080da2 | ||
|
|
f97b3bf82e | ||
|
|
cb5d052829 | ||
|
|
b7bcd252d3 | ||
|
|
0908d21bed | ||
|
|
aa43926da2 | ||
|
|
a368f4cf57 | ||
|
|
08a4bde6c1 | ||
|
|
f68e979229 | ||
|
|
544b1f243d | ||
|
|
391e807c78 | ||
|
|
4099cde737 | ||
|
|
4d878985d4 | ||
|
|
e56a74dc81 | ||
|
|
34c45ec883 | ||
|
|
72d7d4a65e | ||
|
|
cb0add3b90 | ||
|
|
71a48ce10f | ||
|
|
31b8535854 | ||
|
|
ed1bb73c22 | ||
|
|
b7ac28e902 | ||
|
|
3cb72797b6 | ||
|
|
6f1f8d7806 | ||
|
|
b06f1115d4 | ||
|
|
777ad31de0 | ||
|
|
8b977f8786 | ||
|
|
7c3139226c | ||
|
|
0ddabf3089 | ||
|
|
6cfc7e45ef | ||
|
|
9ea675bc89 | ||
|
|
42f90c8806 | ||
|
|
c8b6eac8fe | ||
|
|
d78272c1fa | ||
|
|
48ccdf128f | ||
|
|
2322dffd49 | ||
|
|
8a5e5bf01e | ||
|
|
99ed83022e | ||
|
|
07185534fb | ||
|
|
9bacaa11d8 | ||
|
|
4fe55b5a28 | ||
|
|
bd503f224d | ||
|
|
b5c91647ca | ||
|
|
c359a0f2ac | ||
|
|
c7c4c7497a | ||
|
|
e442baab31 | ||
|
|
8101c8b51c | ||
|
|
49d9f4a89d | ||
|
|
aebe35c9d4 | ||
|
|
a26361c79f | ||
|
|
eba1ef6ab9 | ||
|
|
a486458a08 | ||
|
|
82b8401414 | ||
|
|
8b6ee91ec1 | ||
|
|
06cffd9e15 | ||
|
|
beaccbcf3b | ||
|
|
21ee5e2401 | ||
|
|
6462e1580c | ||
|
|
8b5552bb62 | ||
|
|
747c188824 | ||
|
|
692087dd25 | ||
|
|
6fe13e8654 | ||
|
|
3b2b98b9fe | ||
|
|
796f2fe14a | ||
|
|
4fef391b64 | ||
|
|
83f6cebd0b | ||
|
|
90183ae823 | ||
|
|
3c9df03584 | ||
|
|
367c6cfd92 | ||
|
|
5e75410e7c | ||
|
|
38028f7d0c | ||
|
|
3ca514f2b2 | ||
|
|
a07ae685e2 | ||
|
|
c07f899870 | ||
|
|
092b530537 | ||
|
|
cf691499a1 | ||
|
|
0bb9cccdc6 | ||
|
|
4cb12f6cae | ||
|
|
ecbdeb2096 | ||
|
|
9a7a532f7b | ||
|
|
825833c859 | ||
|
|
c4c3613874 | ||
|
|
e527fd9551 | ||
|
|
3a03156cb3 | ||
|
|
b3780186f8 | ||
|
|
c4654e44d8 | ||
|
|
9c6047e3fc | ||
|
|
260cc7d180 | ||
|
|
bbe930e552 | ||
|
|
a655fe860e | ||
|
|
ddf36aa879 | ||
|
|
34c31c561d | ||
|
|
3cc7d00d71 | ||
|
|
ed214b1382 | ||
|
|
f8405e298c | ||
|
|
539159ba50 | ||
|
|
f2c9d2f905 | ||
|
|
1b11331881 | ||
|
|
b71afff29f | ||
|
|
b4c6950f95 | ||
|
|
047a477f7b | ||
|
|
ec0329efb1 | ||
|
|
477caa12c3 | ||
|
|
8f82ff9b1d | ||
|
|
7d97fdcbec | ||
|
|
5ee0150154 | ||
|
|
1bcacfc474 | ||
|
|
34603184a4 | ||
|
|
78cb05adda | ||
|
|
8493252645 | ||
|
|
2ee5a25c91 | ||
|
|
60ef1b8867 | ||
|
|
3eaf756aa2 | ||
|
|
bc318fa185 | ||
|
|
f93c42a23f | ||
|
|
f5dde77efe | ||
|
|
2b7f923865 | ||
|
|
80099ad63d | ||
|
|
b273bf2947 | ||
|
|
2241ba8819 | ||
|
|
3cf58e3caf | ||
|
|
450442a916 | ||
|
|
8c866bd17d | ||
|
|
8deaf1850b | ||
|
|
6da2aca975 | ||
|
|
11989d17e3 | ||
|
|
aa42633ab2 | ||
|
|
5aa6e5c2a9 | ||
|
|
825398f4d4 | ||
|
|
ccac249c01 | ||
|
|
f2806d9335 | ||
|
|
b11806e341 | ||
|
|
9ec336283f | ||
|
|
71a7afab17 | ||
|
|
bbdb2c9b36 | ||
|
|
ede58d9159 | ||
|
|
48e09f42fc | ||
|
|
ec7d182d38 | ||
|
|
b271b529ea | ||
|
|
d24690ab8c | ||
|
|
89fa3ff8fe | ||
|
|
5c0a3a64ab | ||
|
|
b66629b951 | ||
|
|
de866a322f | ||
|
|
9c7c95cf4f | ||
|
|
e32ffd1819 | ||
|
|
79ac19937f | ||
|
|
08e8fcdc7c | ||
|
|
6941e63a2c | ||
|
|
c68997936a | ||
|
|
40547439b2 | ||
|
|
095c6ad099 | ||
|
|
691fe638e4 | ||
|
|
fbdee6a7a7 | ||
|
|
664f3d7eaa | ||
|
|
c2846fc586 | ||
|
|
e9b1332119 | ||
|
|
757a5146a1 | ||
|
|
f9defda106 | ||
|
|
e6a3ca0a1f | ||
|
|
14342c9632 | ||
|
|
1cf478f5b3 | ||
|
|
9ff94f9bd5 | ||
|
|
9842a52820 | ||
|
|
dbca9c30b0 | ||
|
|
220f2fbd79 | ||
|
|
8dbbdd8cd2 | ||
|
|
1c2a0c506c | ||
|
|
90a6707280 | ||
|
|
e7cc54092a | ||
|
|
cd70cbcbea | ||
|
|
f6df4d6694 | ||
|
|
7910005086 | ||
|
|
b8ace17b7c | ||
|
|
0406e89c2a | ||
|
|
f70814d6b6 | ||
|
|
8440e57118 | ||
|
|
29eda3530c | ||
|
|
558544f1e4 | ||
|
|
56c2f0b466 | ||
|
|
4bbc7d142f | ||
|
|
26cc3943ce | ||
|
|
5ef21e1ddf | ||
|
|
6521f45f0b | ||
|
|
414d5bd8ac | ||
|
|
d62c2ffb42 | ||
|
|
15ccf03b28 | ||
|
|
d131941b62 | ||
|
|
98f0b36cfc | ||
|
|
6465bca640 | ||
|
|
828a48998f | ||
|
|
4ad447ba6c | ||
|
|
736979c20b | ||
|
|
0c34a61332 | ||
|
|
67d58678a3 | ||
|
|
fb92a74084 | ||
|
|
8b5430ca44 | ||
|
|
f24827f558 | ||
|
|
f49b967d5a | ||
|
|
111ca85c4f | ||
|
|
4b590e03ff | ||
|
|
c73bedc63c | ||
|
|
6f67f76eef | ||
|
|
002ed4bc77 | ||
|
|
0db8780ad9 | ||
|
|
9d48e79c64 | ||
|
|
5b744176df | ||
|
|
ba7db26157 | ||
|
|
fc6129261b | ||
|
|
7702d98766 | ||
|
|
04ed016175 | ||
|
|
1aaaf95950 | ||
|
|
1e334ca7d5 | ||
|
|
20b15e0330 | ||
|
|
74df4b6a9c | ||
|
|
f63463e654 | ||
|
|
818539e3de | ||
|
|
f48741f65c | ||
|
|
e9e5af849f | ||
|
|
22d68f5c7c | ||
|
|
690598da60 | ||
|
|
a24b633ccb | ||
|
|
5b8cd8cdcc | ||
|
|
c35c85e9b5 | ||
|
|
2ffc1641a0 | ||
|
|
9d67dceff3 | ||
|
|
c449a31b37 | ||
|
|
efd3427fc0 | ||
|
|
88ed017ca7 | ||
|
|
30ba3a4b78 | ||
|
|
c8380daee5 | ||
|
|
8afb1651fd | ||
|
|
9560903c80 | ||
|
|
e94f6608d2 | ||
|
|
949faf1620 | ||
|
|
5b3259b1ef | ||
|
|
485d7b0612 | ||
|
|
94b037428e | ||
|
|
b401873298 | ||
|
|
1c9bbee3b3 | ||
|
|
5fa33c7813 | ||
|
|
581d5fde1d | ||
|
|
382336d39d | ||
|
|
5bd3a818a3 | ||
|
|
97874f3481 | ||
|
|
135bafefeb | ||
|
|
15b8c5a7e7 | ||
|
|
15990071d4 | ||
|
|
d00f9d3609 | ||
|
|
5ad745de75 | ||
|
|
b67580af2c | ||
|
|
2900062df5 | ||
|
|
67fe8931dd | ||
|
|
e6f593e8c4 | ||
|
|
8924740cfe | ||
|
|
34d4ae0b59 | ||
|
|
62a4541df5 | ||
|
|
401958c0d6 | ||
|
|
8859d223bf | ||
|
|
621962ad9c | ||
|
|
5c238af3df | ||
|
|
8e148095f0 | ||
|
|
3c55a05b1c | ||
|
|
d293a65f5e | ||
|
|
e6bfa01db5 | ||
|
|
4e122a67d3 | ||
|
|
b11863d3b2 | ||
|
|
93197ffb77 | ||
|
|
f02baa8761 | ||
|
|
19e39b84ec | ||
|
|
53800e460f | ||
|
|
e061cc7163 | ||
|
|
e61942f33e | ||
|
|
f8b97bf909 | ||
|
|
ed272da302 | ||
|
|
e8b7975295 | ||
|
|
cae1a20973 | ||
|
|
165150a852 | ||
|
|
ad2674bf8e | ||
|
|
b72266f7bf | ||
|
|
79c864ae19 | ||
|
|
451eec4db5 | ||
|
|
539f7ada70 | ||
|
|
c60156d245 | ||
|
|
281bd3660f | ||
|
|
5ffc37ac80 | ||
|
|
807f4cb32b | ||
|
|
f23925f87f | ||
|
|
511912acc1 | ||
|
|
1531e38ab6 | ||
|
|
4f3789ef96 | ||
|
|
e751369d38 | ||
|
|
3ddbbf41d8 | ||
|
|
47c3cd096a | ||
|
|
df9909a8e4 | ||
|
|
73843ec783 | ||
|
|
ede30188b0 | ||
|
|
b679edbd62 | ||
|
|
fe846d8f28 | ||
|
|
0abb9edad8 | ||
|
|
9ff1b18935 | ||
|
|
67b41bb356 | ||
|
|
77b34f4c2c | ||
|
|
a698c4127c | ||
|
|
35e2448f8e | ||
|
|
da1a3a47cd | ||
|
|
98cec98dd9 | ||
|
|
342907dcba | ||
|
|
0e209eacee | ||
|
|
098888cfc6 | ||
|
|
1148aa3fe3 | ||
|
|
0ca336505d | ||
|
|
be17faf065 | ||
|
|
a73c63f482 | ||
|
|
45d3ef288f | ||
|
|
8b253fe50e | ||
|
|
1f58f59335 | ||
|
|
b48a13ed1d | ||
|
|
5a8f2a7395 | ||
|
|
34b96e0b63 | ||
|
|
6a12c33c33 | ||
|
|
b29e76b128 | ||
|
|
40a26b8caf | ||
|
|
28467d44b6 | ||
|
|
da34a546b5 | ||
|
|
4d45618125 | ||
|
|
4d1a05ccb0 | ||
|
|
03cac08999 | ||
|
|
a316bd8f95 | ||
|
|
73046d7499 | ||
|
|
67cf80d70f | ||
|
|
b51b19b3c0 | ||
|
|
1cc902062a | ||
|
|
36f5857de3 | ||
|
|
aef8f54903 | ||
|
|
fe3df584ef | ||
|
|
a73d99c552 | ||
|
|
72328ca8bc | ||
|
|
f3d5e75c22 | ||
|
|
fff075cc68 | ||
|
|
cca23aa683 | ||
|
|
ae72f9ac70 | ||
|
|
2b2ec51206 | ||
|
|
6135feec56 | ||
|
|
b38c00881b | ||
|
|
301e33f224 | ||
|
|
22417858a3 | ||
|
|
5d55ce2b25 | ||
|
|
a994e67ebf | ||
|
|
57a840b069 | ||
|
|
a273ef1763 | ||
|
|
a63f474109 | ||
|
|
d368978949 | ||
|
|
90d721763d | ||
|
|
6fc9ba4996 | ||
|
|
10e08e172a | ||
|
|
46270f6bd5 | ||
|
|
1c9274ad96 | ||
|
|
542798f7a6 | ||
|
|
bcf95e5799 | ||
|
|
02332ee8cd | ||
|
|
da4911c668 | ||
|
|
829eeebb7e | ||
|
|
20885c6cf7 | ||
|
|
f6465b5dac | ||
|
|
bd084cc261 | ||
|
|
895b7d74f5 | ||
|
|
ddbd88c601 | ||
|
|
7e34cf5ac9 | ||
|
|
8c26947fbc | ||
|
|
091e79c550 | ||
|
|
a31e2a8506 | ||
|
|
52d4cae74d | ||
|
|
cc83007cea | ||
|
|
0d9c2d13f9 | ||
|
|
ccec190cb2 | ||
|
|
c3ac69a030 | ||
|
|
fd4e9d93e0 | ||
|
|
2e353c084a | ||
|
|
9b1272edac | ||
|
|
479be8016a | ||
|
|
3f3a2d8433 | ||
|
|
7be2020879 | ||
|
|
73974d1c40 | ||
|
|
a4a22f3bfc | ||
|
|
491abfc833 | ||
|
|
7dc699ffbb | ||
|
|
3fee3f0f41 | ||
|
|
cf8b6e5d05 | ||
|
|
3bac706b8a | ||
|
|
6e3761ae91 | ||
|
|
b88ae49c3b |
@@ -1,17 +0,0 @@
|
|||||||
version: 2
|
|
||||||
jobs:
|
|
||||||
minecraft_server:
|
|
||||||
docker:
|
|
||||||
- image: circleci/buildpack-deps:18.04
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- setup_remote_docker
|
|
||||||
- run:
|
|
||||||
name: Build image
|
|
||||||
command: docker build -t mc:$CIRCLE_BUILD_NUM minecraft-server
|
|
||||||
|
|
||||||
workflows:
|
|
||||||
version: 2
|
|
||||||
build:
|
|
||||||
jobs:
|
|
||||||
- minecraft_server
|
|
||||||
6
.dockerignore
Normal file
6
.dockerignore
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
data
|
||||||
|
testdata
|
||||||
|
examples
|
||||||
|
k8s-examples
|
||||||
|
.idea
|
||||||
|
.git
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
root = true
|
[start-*]
|
||||||
|
indent_size = 2
|
||||||
[*]
|
|
||||||
end_of_line = lf
|
|
||||||
indent_style = space
|
indent_style = space
|
||||||
|
end_of_line = lf
|
||||||
|
|||||||
5
.github/FUNDING.yml
vendored
Normal file
5
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
|
||||||
|
#github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||||
|
custom:
|
||||||
|
- https://www.buymeacoffee.com/itzg
|
||||||
|
- https://paypal.me/itzg
|
||||||
32
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
32
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: Bug Report
|
||||||
|
description: File a bug report
|
||||||
|
labels:
|
||||||
|
- bug
|
||||||
|
- status/needs triage
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to report a bug.
|
||||||
|
|
||||||
|
Please double check some things first:
|
||||||
|
- Do you just have a question about something? If so, asking in the [Q&A Discussions](https://github.com/itzg/docker-minecraft-server/discussions/categories/q-a) or asking on [the Discord server](https://discord.gg/DXfKpjB) would be best.
|
||||||
|
- Is this bug happening after the `[init]` prefixed logs and after the log that says "Starting the Minecraft server"? If so, please report the bug with Mojang or the respective server provider.
|
||||||
|
- Are you seeing a performance problem? If so, that is typically outside the scope of the image setup mechanims. Ask a question as above or contact the respective server provider.
|
||||||
|
- type: textarea
|
||||||
|
id: problem
|
||||||
|
attributes:
|
||||||
|
label: Describe the problem
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: container
|
||||||
|
attributes:
|
||||||
|
label: Container definition
|
||||||
|
description: Please provide the compose file or run command used to create the container
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: Container logs
|
||||||
|
description: |
|
||||||
|
Please provide container logs from the start of the container, which will be the ones prefixed with `[init]`. It is even better if you can set the variable `DEBUG` to "true" and provide those debug container logs.
|
||||||
29
.github/ISSUE_TEMPLATE/enhancement.yml
vendored
Normal file
29
.github/ISSUE_TEMPLATE/enhancement.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
name: Enhancement Request
|
||||||
|
description: Request an enhancement
|
||||||
|
labels:
|
||||||
|
- enhancement
|
||||||
|
- status/needs triage
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to request an enhancement.
|
||||||
|
|
||||||
|
Even if you plan on submitting a pull request with a contributed enhancement it is best to describe the enhancement here first. Somebody might already be working on a similar thing and could use your help.
|
||||||
|
- type: dropdown
|
||||||
|
id: type
|
||||||
|
attributes:
|
||||||
|
label: Enhancement Type
|
||||||
|
options:
|
||||||
|
- Improve an existing feature
|
||||||
|
- A completely new feature
|
||||||
|
- New server type
|
||||||
|
- Not sure
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Describe the enhancement
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
7
.github/dependabot.yml
vendored
Normal file
7
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
# Maintain dependencies for GitHub Actions
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "weekly"
|
||||||
86
.github/workflows/build-multiarch.yml
vendored
Normal file
86
.github/workflows/build-multiarch.yml
vendored
Normal file
@@ -0,0 +1,86 @@
|
|||||||
|
name: Build and publish multiarch
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- java8-multiarch
|
||||||
|
- java8-openj9
|
||||||
|
- java11*
|
||||||
|
- java16*
|
||||||
|
- java17*
|
||||||
|
- test/*
|
||||||
|
tags:
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+"
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-java8-multiarch"
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-java8-openj9"
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-java11*"
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-java16*"
|
||||||
|
paths-ignore:
|
||||||
|
- "*.md"
|
||||||
|
- "docs/**"
|
||||||
|
- "examples/**"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
docker-buildx:
|
||||||
|
if: github.repository == 'itzg/docker-minecraft-server'
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2.3.5
|
||||||
|
|
||||||
|
- name: Docker meta
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v3
|
||||||
|
with:
|
||||||
|
images: |
|
||||||
|
itzg/minecraft-server
|
||||||
|
tags: |
|
||||||
|
type=ref,event=branch
|
||||||
|
type=ref,event=tag
|
||||||
|
flavor: |
|
||||||
|
latest=${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}
|
||||||
|
|
||||||
|
- name: Setup Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
|
- name: Cache Docker layers
|
||||||
|
uses: actions/cache@v2.1.6
|
||||||
|
with:
|
||||||
|
path: /tmp/.buildx-cache
|
||||||
|
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-buildx-
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v1.2.0
|
||||||
|
|
||||||
|
- name: Login to DockerHub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USER }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
id: docker_build
|
||||||
|
uses: docker/build-push-action@v2.7.0
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
platforms: linux/amd64,linux/arm/v7,linux/arm64
|
||||||
|
push: ${{ github.event_name != 'pull_request' }}
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
# ensure latest base image is used
|
||||||
|
pull: true
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache-new
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
|
|
||||||
|
- name: Image digest
|
||||||
|
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||||
|
|
||||||
|
- # Temp fix
|
||||||
|
# https://github.com/docker/build-push-action/issues/252
|
||||||
|
# https://github.com/moby/buildkit/issues/1896
|
||||||
|
name: Move cache
|
||||||
|
run: |
|
||||||
|
rm -rf /tmp/.buildx-cache
|
||||||
|
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||||
21
.github/workflows/generate-toc.yml
vendored
Normal file
21
.github/workflows/generate-toc.yml
vendored
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
name: Generate README table of contents
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
paths:
|
||||||
|
- README.md
|
||||||
|
jobs:
|
||||||
|
generate:
|
||||||
|
if: github.repository == 'itzg/docker-minecraft-server'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
timeout-minutes: 5
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.3.5
|
||||||
|
- run: |
|
||||||
|
curl https://raw.githubusercontent.com/ekalinin/github-markdown-toc/master/gh-md-toc -o gh-md-toc
|
||||||
|
chmod a+x gh-md-toc
|
||||||
|
./gh-md-toc --insert --no-backup README.md
|
||||||
|
- uses: stefanzweifel/git-auto-commit-action@v4.12.0
|
||||||
|
with:
|
||||||
|
commit_message: "docs: Auto update markdown TOC"
|
||||||
100
.github/workflows/main.yml
vendored
Normal file
100
.github/workflows/main.yml
vendored
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
name: Build and Publish
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- java8
|
||||||
|
- openj9
|
||||||
|
- openj9-11
|
||||||
|
- adopt11
|
||||||
|
- test/alpine/*
|
||||||
|
tags:
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-java8"
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-openj9"
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-openj9-11"
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-openj9-nightly"
|
||||||
|
- "[0-9]+.[0-9]+.[0-9]+-adopt11"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.3.5
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
tests/test.sh
|
||||||
|
build:
|
||||||
|
needs:
|
||||||
|
- test
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.3.5
|
||||||
|
|
||||||
|
- name: Prepare
|
||||||
|
id: prep
|
||||||
|
run: |
|
||||||
|
DOCKER_IMAGE=itzg/minecraft-server
|
||||||
|
VERSION=edge
|
||||||
|
if [[ $GITHUB_REF == refs/tags/* ]]; then
|
||||||
|
VERSION=${GITHUB_REF#refs/tags/}
|
||||||
|
fi
|
||||||
|
if [[ $GITHUB_REF == refs/heads/* ]]; then
|
||||||
|
VERSION=${GITHUB_REF#refs/heads/}
|
||||||
|
if [[ $VERSION == master ]]; then
|
||||||
|
VERSION=latest
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
TAGS="${DOCKER_IMAGE}:${VERSION//\//-}"
|
||||||
|
echo ::set-output name=tags::${TAGS}
|
||||||
|
echo ::set-output name=version::${VERSION//\//-}
|
||||||
|
|
||||||
|
- name: Setup Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
|
||||||
|
- name: Cache Docker layers
|
||||||
|
uses: actions/cache@v2.1.6
|
||||||
|
with:
|
||||||
|
path: /tmp/.buildx-cache
|
||||||
|
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-buildx-
|
||||||
|
|
||||||
|
- name: Login to DockerHub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKER_USER }}
|
||||||
|
password: ${{ secrets.DOCKER_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
id: docker_build
|
||||||
|
uses: docker/build-push-action@v2.7.0
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./Dockerfile
|
||||||
|
# ensure latest base image is used
|
||||||
|
pull: true
|
||||||
|
# publish
|
||||||
|
push: true
|
||||||
|
# tags determined by prep step
|
||||||
|
tags: ${{ steps.prep.outputs.tags }}
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache-new
|
||||||
|
labels: |
|
||||||
|
org.opencontainers.image.documentation=https://github.com/itzg/docker-minecraft-server
|
||||||
|
org.opencontainers.image.version=${{ steps.prep.outputs.version }}
|
||||||
|
org.opencontainers.image.source=https://github.com/itzg/docker-minecraft-server
|
||||||
|
org.opencontainers.image.revision=${{ github.sha }}
|
||||||
|
|
||||||
|
- name: Image digest
|
||||||
|
run: echo ${{ steps.docker_build.outputs.digest }}
|
||||||
|
|
||||||
|
- # Temp fix
|
||||||
|
# https://github.com/docker/build-push-action/issues/252
|
||||||
|
# https://github.com/moby/buildkit/issues/1896
|
||||||
|
name: Move cache
|
||||||
|
run: |
|
||||||
|
rm -rf /tmp/.buildx-cache
|
||||||
|
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||||
16
.github/workflows/pr.yml
vendored
Normal file
16
.github/workflows/pr.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
name: Validate PR
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches: [ master ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v2.3.5
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
tests/test.sh
|
||||||
26
.github/workflows/stale-check.yml
vendored
Normal file
26
.github/workflows/stale-check.yml
vendored
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
name: Stale Check
|
||||||
|
|
||||||
|
on:
|
||||||
|
issue_comment:
|
||||||
|
schedule:
|
||||||
|
- cron: 0 2 * * *
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
check:
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
pull-requests: write
|
||||||
|
steps:
|
||||||
|
- name: Process Stale Issues
|
||||||
|
uses: actions/stale@v4.0.0
|
||||||
|
with:
|
||||||
|
stale-issue-label: status/stale
|
||||||
|
stale-pr-label: status/stale
|
||||||
|
stale-issue-message: >
|
||||||
|
This issue is stale because it has been open 30 days with no activity.
|
||||||
|
Please add a comment describing the reason to keep this issue open.
|
||||||
|
days-before-stale: 30
|
||||||
|
days-before-close: 5
|
||||||
|
exempt-issue-labels: 'enhancement,keep,status/needs triage'
|
||||||
|
|
||||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -1,2 +1,4 @@
|
|||||||
|
/data/
|
||||||
|
/.idea/
|
||||||
*.iml
|
*.iml
|
||||||
.idea
|
/gh-md-toc
|
||||||
11
BUILDING.md
Normal file
11
BUILDING.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
Ensure buildx/BuildKit support is enabled and run:
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
docker buildx build --platform=linux/arm64 --platform=linux/arm/v7 --platform=linux/amd64 --tag itzg/minecraft-server:multiarch --push .
|
||||||
|
```
|
||||||
|
|
||||||
|
To build for local testing, use:
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
docker buildx build --platform=linux/amd64 --tag mc-multiarch --load .
|
||||||
|
```
|
||||||
97
DEVELOPMENT.md
Normal file
97
DEVELOPMENT.md
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
## Adding a server type
|
||||||
|
|
||||||
|
Adding a new server `TYPE` can vary due to the complexity of obtaining and configuring each type; however, the addition of any server type includes at least the following steps:
|
||||||
|
|
||||||
|
1. Copy an existing "start-deploy*" script, such as [start-deployMohist](scripts/start-deployMohist) and rename it accordingly making sure to retain the "start-deploy" prefix
|
||||||
|
2. Modify the type-specific behavior between the "start-utils" preamble and the hand-off to `start-setupWorld` at the end of the script
|
||||||
|
3. Develop and test the changes using the [iterative process described below](#iterative-script-development)
|
||||||
|
4. Add a case-entry to the `case "${TYPE^^}"` in [start-configuration](scripts/start-configuration)
|
||||||
|
5. Add a section to the [README](README.md). It is recommended to copy-modify an existing section to retain a similar wording and level of detail
|
||||||
|
6. [Submit a pull request](https://github.com/itzg/docker-minecraft-server/pulls)
|
||||||
|
|
||||||
|
## Iterative script development
|
||||||
|
|
||||||
|
Individual scripts can be iteratively developed, debugged, and tested using the following procedure.
|
||||||
|
|
||||||
|
First, build a baseline of the image to include the packages needed by existing or new scripts:
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
docker build -t mc-dev .
|
||||||
|
```
|
||||||
|
|
||||||
|
Using the baseline image, an interactive container can be started to iteratively run the scripts to be developed. By attaching the current workspace directory, you can use the local editor of your choice to iteratively modify scripts while using the container to run them.
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
docker run -it --rm -v ${PWD}:/scripts -e SCRIPTS=/scripts/ --entrypoint bash mc-dev
|
||||||
|
```
|
||||||
|
|
||||||
|
From within the container you can run individual scripts via the attached `/scripts/` path; however, be sure to set any environment variables expected by the scripts by either `export`ing them manually:
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
export VANILLA_VERSION=1.12.2
|
||||||
|
/scripts/start-magma
|
||||||
|
```
|
||||||
|
|
||||||
|
...or pre-pending script execution:
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
VANILLA_VERSION=1.12.2 /scripts/start-magma
|
||||||
|
```
|
||||||
|
|
||||||
|
> NOTE: You may want to temporarily add an `exit` statement near the end of your script to isolate execution to just the script you're developing.
|
||||||
|
|
||||||
|
## Using development copy of mc-image-helper
|
||||||
|
|
||||||
|
In the cloned copy of [`mc-image-helper`](https://github.com/itzg/mc-image-helper), create an up-to-date snapshot build of the tgz distribution using:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
./gradlew distTar
|
||||||
|
```
|
||||||
|
|
||||||
|
Assuming [http-server](https://www.npmjs.com/package/http-server) is installed globally, start a static web server using:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
http-server ./build/distributions -p 0
|
||||||
|
```
|
||||||
|
|
||||||
|
Note the port that was selected by http-server and pass the build arguments, such as:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--build-arg MC_HELPER_VERSION=1.8.1-SNAPSHOT \
|
||||||
|
--build-arg MC_HELPER_BASE_URL=http://host.docker.internal:8080
|
||||||
|
```
|
||||||
|
|
||||||
|
Now the image can be built like normal and it will install mc-image-helper from the locally built copy.
|
||||||
|
|
||||||
|
## Multi-base-image variants
|
||||||
|
|
||||||
|
Several base-image variants are maintained in order to offer choices in JDK provider and version. The variants are maintained in their respective branches:
|
||||||
|
- openj9
|
||||||
|
- openj9-nightly
|
||||||
|
- adopt11
|
||||||
|
- adopt13
|
||||||
|
- multiarch
|
||||||
|
|
||||||
|
The [docker-versions-create.sh](docker-versions-create.sh) script is configured with the branches to maintain and is used to merge changes from the master branch into the mulit-base variant branches. The script also manages git tagging the master branch along with the merged branches. So a typical use of the script would be like:
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
./docker-versions-create.sh -s -t 1.2.0
|
||||||
|
```
|
||||||
|
|
||||||
|
> Most often the major version will be bumped unless a bug or hotfix needs to be published in which case the patch version should be incremented.
|
||||||
|
|
||||||
|
> The build and publishing of those branches and their tags is currently performed within Docker Hub.
|
||||||
|
|
||||||
|
## multiarch support
|
||||||
|
|
||||||
|
The [multiarch branch](https://github.com/itzg/docker-minecraft-server/tree/multiarch) supports running the image on amd64, arm64, and armv7 (aka RaspberryPi). Unlike the mainline branches, it is based on Ubuntu 18.04 since the openjdk package provided by Ubuntu includes full JIT support on all of the processor types.
|
||||||
|
|
||||||
|
The multiarch images are built and published by [a Github action](https://github.com/itzg/docker-minecraft-server/actions?query=workflow%3A%22Build+and+publish+multiarch%22), which [is configured in that branch](https://github.com/itzg/docker-minecraft-server/blob/multiarch/.github/workflows/build-multiarch.yml).
|
||||||
|
|
||||||
|
## Generating release notes
|
||||||
|
|
||||||
|
The following git command can be used to provide the bulk of release notes content:
|
||||||
|
|
||||||
|
```shell script
|
||||||
|
git log --invert-grep --grep "^ci:" --grep "^misc:" --grep "^docs:" --pretty="- %s" 1.1.0..1.2.0
|
||||||
|
```
|
||||||
93
Dockerfile
Normal file
93
Dockerfile
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
FROM eclipse-temurin:17-jdk
|
||||||
|
|
||||||
|
LABEL org.opencontainers.image.authors="Geoff Bourne <itzgeoff@gmail.com>"
|
||||||
|
|
||||||
|
RUN apt-get update \
|
||||||
|
&& DEBIAN_FRONTEND=noninteractive \
|
||||||
|
apt-get install -y \
|
||||||
|
imagemagick \
|
||||||
|
gosu \
|
||||||
|
sudo \
|
||||||
|
net-tools \
|
||||||
|
iputils-ping \
|
||||||
|
curl wget \
|
||||||
|
git \
|
||||||
|
jq \
|
||||||
|
dos2unix \
|
||||||
|
mysql-client \
|
||||||
|
tzdata \
|
||||||
|
rsync \
|
||||||
|
nano \
|
||||||
|
unzip \
|
||||||
|
knockd \
|
||||||
|
ttf-dejavu \
|
||||||
|
&& apt-get clean
|
||||||
|
|
||||||
|
RUN addgroup --gid 1000 minecraft \
|
||||||
|
&& adduser --system --shell /bin/false --uid 1000 --ingroup minecraft --home /data minecraft
|
||||||
|
|
||||||
|
COPY files/sudoers* /etc/sudoers.d
|
||||||
|
|
||||||
|
EXPOSE 25565 25575
|
||||||
|
|
||||||
|
# hook into docker BuildKit --platform support
|
||||||
|
# see https://docs.docker.com/engine/reference/builder/#automatic-platform-args-in-the-global-scope
|
||||||
|
ARG TARGETOS
|
||||||
|
ARG TARGETARCH
|
||||||
|
ARG TARGETVARIANT
|
||||||
|
|
||||||
|
ARG EASY_ADD_VER=0.7.1
|
||||||
|
ADD https://github.com/itzg/easy-add/releases/download/${EASY_ADD_VER}/easy-add_${TARGETOS}_${TARGETARCH}${TARGETVARIANT} /usr/bin/easy-add
|
||||||
|
RUN chmod +x /usr/bin/easy-add
|
||||||
|
|
||||||
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
|
--var version=1.2.0 --var app=restify --file {{.app}} \
|
||||||
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
|
--var version=1.5.1 --var app=rcon-cli --file {{.app}} \
|
||||||
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
|
--var version=0.10.1 --var app=mc-monitor --file {{.app}} \
|
||||||
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
|
--var version=1.8.0 --var app=mc-server-runner --file {{.app}} \
|
||||||
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
|
RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \
|
||||||
|
--var version=0.1.1 --var app=maven-metadata-release --file {{.app}} \
|
||||||
|
--from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz
|
||||||
|
|
||||||
|
ARG MC_HELPER_VERSION=1.9.6
|
||||||
|
ARG MC_HELPER_BASE_URL=https://github.com/itzg/mc-image-helper/releases/download/v${MC_HELPER_VERSION}
|
||||||
|
RUN curl -fsSL ${MC_HELPER_BASE_URL}/mc-image-helper-${MC_HELPER_VERSION}.tgz \
|
||||||
|
| tar -C /usr/share -zxf - \
|
||||||
|
&& ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/bin/mc-image-helper /usr/bin
|
||||||
|
|
||||||
|
VOLUME ["/data"]
|
||||||
|
WORKDIR /data
|
||||||
|
|
||||||
|
STOPSIGNAL SIGTERM
|
||||||
|
|
||||||
|
ENV UID=1000 GID=1000 \
|
||||||
|
MEMORY="1G" \
|
||||||
|
TYPE=VANILLA VERSION=LATEST \
|
||||||
|
ENABLE_RCON=true RCON_PORT=25575 RCON_PASSWORD=minecraft \
|
||||||
|
SERVER_PORT=25565 ONLINE_MODE=TRUE SERVER_NAME="Dedicated Server" \
|
||||||
|
ENABLE_AUTOPAUSE=false AUTOPAUSE_TIMEOUT_EST=3600 AUTOPAUSE_TIMEOUT_KN=120 AUTOPAUSE_TIMEOUT_INIT=600 \
|
||||||
|
AUTOPAUSE_PERIOD=10 AUTOPAUSE_KNOCK_INTERFACE=eth0
|
||||||
|
|
||||||
|
COPY scripts/start* /
|
||||||
|
COPY bin/ /usr/local/bin/
|
||||||
|
COPY bin/mc-health /health.sh
|
||||||
|
COPY files/server.properties /tmp/server.properties
|
||||||
|
COPY files/log4j2.xml /tmp/log4j2.xml
|
||||||
|
COPY files/autopause /autopause
|
||||||
|
|
||||||
|
RUN dos2unix /start* && chmod +x /start* \
|
||||||
|
&& dos2unix /autopause/* && chmod +x /autopause/*.sh
|
||||||
|
|
||||||
|
ENTRYPOINT [ "/start" ]
|
||||||
|
HEALTHCHECK --start-period=1m CMD mc-health
|
||||||
15
bin/mc-health
Executable file
15
bin/mc-health
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# shellcheck source=../start-utils
|
||||||
|
. ${SCRIPTS:-/}start-utils
|
||||||
|
|
||||||
|
if isTrue "${DISABLE_HEALTHCHECK}"; then
|
||||||
|
echo "Healthcheck disabled"
|
||||||
|
exit 0
|
||||||
|
elif isTrue "${ENABLE_AUTOPAUSE}" && [[ "$( ps -ax -o stat,comm | grep 'java' | awk '{ print $1 }')" =~ ^T.*$ ]]; then
|
||||||
|
echo "Java process suspended by Autopause function"
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
mc-monitor status --host localhost --port $SERVER_PORT
|
||||||
|
exit $?
|
||||||
|
fi
|
||||||
15
bin/mc-send-to-console
Executable file
15
bin/mc-send-to-console
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
: "${CONSOLE_IN_NAMED_PIPE:=/tmp/minecraft-console-in}"
|
||||||
|
|
||||||
|
if [ $# = 0 ]; then
|
||||||
|
echo "ERROR: pass console commands as arguments"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -p "${CONSOLE_IN_NAMED_PIPE}" ]; then
|
||||||
|
echo "ERROR: named pipe ${CONSOLE_IN_NAMED_PIPE} is missing"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$@" > "${CONSOLE_IN_NAMED_PIPE:-/tmp/minecraft-console-in}"
|
||||||
18
bin/mcstatus
Executable file
18
bin/mcstatus
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "WARNING: mcstatus is deprecated; calling mc-monitor instead"
|
||||||
|
|
||||||
|
##### mcstatus shim for mc-monitor
|
||||||
|
# handles translating calls to
|
||||||
|
# mcstatus (host:port) (command)
|
||||||
|
# where the actual command is ignore, but is typically ping or status
|
||||||
|
|
||||||
|
addr="$1"
|
||||||
|
|
||||||
|
IFS=':'
|
||||||
|
read -a parts <<< "${addr}"
|
||||||
|
if [[ ${#parts[*]} -gt 1 ]]; then
|
||||||
|
exec mc-monitor status --host ${parts[0]} --port ${parts[1]}
|
||||||
|
else
|
||||||
|
exec mc-monitor status --host ${parts[0]}
|
||||||
|
fi
|
||||||
12
build
12
build
@@ -1,12 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
pkgs=ubuntu-openjdk-7
|
|
||||||
pkgs="$pkgs minecraft-server"
|
|
||||||
pkgs="$pkgs elasticsearch"
|
|
||||||
pkgs="$pkgs kibana"
|
|
||||||
pkgs="$pkgs titan-gremlin"
|
|
||||||
|
|
||||||
for p in $pkgs
|
|
||||||
do
|
|
||||||
docker build -t itzg/$p $p
|
|
||||||
done
|
|
||||||
11
circle.yml
11
circle.yml
@@ -1,11 +0,0 @@
|
|||||||
machine:
|
|
||||||
services:
|
|
||||||
- docker
|
|
||||||
|
|
||||||
test:
|
|
||||||
override:
|
|
||||||
- ./build
|
|
||||||
|
|
||||||
notify:
|
|
||||||
webhooks:
|
|
||||||
- url: https://webhooks.gitter.im/e/4726bb683d8aed018486
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
FROM itzg/ubuntu-openjdk-7
|
|
||||||
|
|
||||||
RUN apt-get update
|
|
||||||
RUN DEBIAN_FRONTEND=noninteractive \
|
|
||||||
apt-get install -yq git curl wget unzip openjdk-7-jdk && \
|
|
||||||
apt-get clean
|
|
||||||
|
|
||||||
ENV MAVEN_VER 3.3.3
|
|
||||||
ENV NODEJS_VER 0.12.7
|
|
||||||
|
|
||||||
RUN wget -O /tmp/maven.tgz http://apache.mirrors.pair.com/maven/maven-3/$MAVEN_VER/binaries/apache-maven-$MAVEN_VER-bin.tar.gz
|
|
||||||
RUN tar xvf /tmp/maven.tgz && rm /tmp/maven.tgz
|
|
||||||
ENV M2_HOME /opt/apache-maven-$MAVEN_VER
|
|
||||||
ENV PATH $PATH:$M2_HOME/bin
|
|
||||||
|
|
||||||
RUN curl -s https://raw.githubusercontent.com/isaacs/nave/master/nave.sh > /usr/local/bin/nave
|
|
||||||
RUN chmod +x /usr/local/bin/nave
|
|
||||||
RUN nave usemain latest
|
|
||||||
|
|
||||||
RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
||||||
|
|
||||||
VOLUME ["/shared"]
|
|
||||||
|
|
||||||
RUN useradd -m -d /home/developer developer
|
|
||||||
|
|
||||||
USER developer
|
|
||||||
RUN curl -s get.gvmtool.net | bash
|
|
||||||
|
|
||||||
WORKDIR /home/developer
|
|
||||||
CMD bash
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
Provides a development/build environment for Java, Groovy, and NodeJS.
|
|
||||||
|
|
||||||
* Provides 'gvm' for Groovy (and more) installation management
|
|
||||||
* Provides 'nave' for NodeJS installation management
|
|
||||||
* Pre-installs the latest NodeJS via nave
|
|
||||||
|
|
||||||
## Using the persistent/shared workarea
|
|
||||||
|
|
||||||
Since devbox containers are intended to be disposable, the image is configured
|
|
||||||
with a "volume" at `/shared`.
|
|
||||||
|
|
||||||
There are a couple of ways you can leverage that volume. Either attach it to
|
|
||||||
a host-local directory:
|
|
||||||
|
|
||||||
docker run -it -v $(pwd)/workarea:/shared --rm itzg/devbox
|
|
||||||
|
|
||||||
or run a "base" container and mounts the `/shared` from that onto any
|
|
||||||
subsequent containers:
|
|
||||||
|
|
||||||
docker run --name devbox-base itzg/devbox touch /shared/READY
|
|
||||||
...later...
|
|
||||||
docker run -it --volumes-from devbox-base --rm itzg/devbox
|
|
||||||
|
|
||||||
**NOTE** I am using the `--rm` option so the devbox containers will be truly
|
|
||||||
"burn after use".
|
|
||||||
133
docker-versions-create.sh
Executable file
133
docker-versions-create.sh
Executable file
@@ -0,0 +1,133 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#set -x
|
||||||
|
# Use this variable to indicate a list of branches that docker hub is watching
|
||||||
|
branches_list=(
|
||||||
|
'java8'
|
||||||
|
'java8-multiarch'
|
||||||
|
'java8-openj9'
|
||||||
|
'java11'
|
||||||
|
'java11-openj9'
|
||||||
|
'java16'
|
||||||
|
'java16-openj9'
|
||||||
|
'java17'
|
||||||
|
)
|
||||||
|
|
||||||
|
function TrapExit {
|
||||||
|
echo "Checking out back in master"
|
||||||
|
git checkout master
|
||||||
|
}
|
||||||
|
|
||||||
|
batchMode=false
|
||||||
|
|
||||||
|
while getopts "hbt:s" arg
|
||||||
|
do
|
||||||
|
case $arg in
|
||||||
|
b)
|
||||||
|
batchMode=true
|
||||||
|
;;
|
||||||
|
t)
|
||||||
|
tag=${OPTARG}
|
||||||
|
;;
|
||||||
|
s)
|
||||||
|
tagArgs="-s -m 'Signed during docker-versions-create"
|
||||||
|
;;
|
||||||
|
h)
|
||||||
|
echo "
|
||||||
|
Usage $0 [options]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-b enable batch mode, which avoids interactive prompts and causes script to fail immediately
|
||||||
|
when any merge fails
|
||||||
|
-t TAG tag and push the current revision on master with the given tag
|
||||||
|
and apply respective tags to each branch
|
||||||
|
-s enable signed tags
|
||||||
|
-h display this help and exit
|
||||||
|
"
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unsupported arg $arg"
|
||||||
|
exit 2
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
${batchMode} && echo "Using batch mode"
|
||||||
|
|
||||||
|
trap TrapExit EXIT SIGTERM
|
||||||
|
|
||||||
|
test -d ./.git || { echo ".git folder was not found. Please start this script from root directory of the project!";
|
||||||
|
exit 1; }
|
||||||
|
|
||||||
|
# Making sure we are in master
|
||||||
|
git checkout master
|
||||||
|
git pull --all || { echo "Can't pull the repo!"; \
|
||||||
|
exit 1; }
|
||||||
|
if [[ $tag ]]; then
|
||||||
|
git tag $tag
|
||||||
|
git push origin $tag
|
||||||
|
fi
|
||||||
|
|
||||||
|
git_branches=$(git branch -a)
|
||||||
|
|
||||||
|
for branch in "${branches_list[@]}"; do
|
||||||
|
if [[ "$git_branches" != *"$branch"* ]]; then
|
||||||
|
echo "Can't update $branch because I can't find it in the list of branches."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "Branch $branch found. Working with it."
|
||||||
|
git checkout "$branch" || { echo "Can't checkout into the branch. Don't know the cause."; \
|
||||||
|
exit 1; }
|
||||||
|
proceed='False'
|
||||||
|
while [[ "$proceed" == "False" ]]; do
|
||||||
|
# Ensure local branch is aligned with remote since docker-versions-create may have been run elsewhere
|
||||||
|
git pull
|
||||||
|
|
||||||
|
if git merge -m 'Auto-merging via docker-versions-create' master; then
|
||||||
|
proceed="True"
|
||||||
|
echo "Branch $branch updated to current master successfully"
|
||||||
|
# pushing changes to remote for this branch
|
||||||
|
git commit -m "Auto merge branch with master" -a
|
||||||
|
# push may fail if remote doesn't have this branch yet. In this case - sending branch
|
||||||
|
git push || git push -u origin "$branch" || { echo "Can't push changes to the origin."; exit 1; }
|
||||||
|
if [[ $tag ]]; then
|
||||||
|
git tag "$tag-$branch"
|
||||||
|
git push origin "$tag-$branch"
|
||||||
|
fi
|
||||||
|
elif ${batchMode}; then
|
||||||
|
status=$?
|
||||||
|
echo "Git merge failed in batch mode"
|
||||||
|
exit ${status}
|
||||||
|
# and trap exit gets us back to master
|
||||||
|
else
|
||||||
|
cat<<EOL
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
Master merge in the branch $branch encountered an error!
|
||||||
|
You may try to fix the error and merge again. (Commit changes)
|
||||||
|
Or skip this branch merge completely.
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
EOL
|
||||||
|
printf "Should we try again? (y):"
|
||||||
|
read -r answer
|
||||||
|
if [[ "$answer" == '' ]] || [[ "$answer" == 'y' ]] || [[ "$answer" == 'Y' ]]; then
|
||||||
|
# If you use non-local editor or files are changed in repo
|
||||||
|
cat <<EOL
|
||||||
|
|
||||||
|
The following commands may encounter an error!
|
||||||
|
This is completely fine if the changes were made locally and remote branch doesn't know about them.
|
||||||
|
|
||||||
|
EOL
|
||||||
|
# Updating branch from remote before trying again
|
||||||
|
git checkout master
|
||||||
|
git fetch --all
|
||||||
|
git pull -a
|
||||||
|
git checkout "$branch"
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
done
|
||||||
0
docs/.gitkeep
Normal file
0
docs/.gitkeep
Normal file
BIN
docs/level-vs-world.drawio.png
Normal file
BIN
docs/level-vs-world.drawio.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 32 KiB |
BIN
docs/motd-example.png
Normal file
BIN
docs/motd-example.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 985 B |
BIN
docs/start-script-flow.drawio.png
Normal file
BIN
docs/start-script-flow.drawio.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 34 KiB |
BIN
docs/world-copy-compose-project.drawio.png
Normal file
BIN
docs/world-copy-compose-project.drawio.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 65 KiB |
@@ -1,5 +0,0 @@
|
|||||||
**This image is now deprecated. **
|
|
||||||
|
|
||||||
Please use [itzg/elasticsearch](https://registry.hub.docker.com/u/itzg/elasticsearch/)
|
|
||||||
instead. See the plugins configuration section for that image to see how
|
|
||||||
to install Marvel.
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
FROM openjdk:8u121-jre-alpine
|
|
||||||
|
|
||||||
LABEL maintainer "itzg"
|
|
||||||
|
|
||||||
RUN apk -U add bash
|
|
||||||
|
|
||||||
ARG ES_VERSION=5.5.2
|
|
||||||
# avoid conflicts with debian host systems when mounting to host volume
|
|
||||||
ARG DEFAULT_ES_USER_UID=1100
|
|
||||||
|
|
||||||
ADD https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-$ES_VERSION.tar.gz /tmp
|
|
||||||
# need to adapt to both Docker's new remote-unpack-ADD behavior and the old behavior
|
|
||||||
RUN cd /usr/share && \
|
|
||||||
if [ -f /tmp/elasticsearch-$ES_VERSION.tar.gz ]; then \
|
|
||||||
tar xf /tmp/elasticsearch-$ES_VERSION.tar.gz; \
|
|
||||||
else mv /tmp/elasticsearch-${ES_VERSION} /usr/share; \
|
|
||||||
fi && \
|
|
||||||
rm -f /tmp/elasticsearch-$ES_VERSION.tar.gz
|
|
||||||
|
|
||||||
EXPOSE 9200 9300
|
|
||||||
|
|
||||||
HEALTHCHECK --timeout=5s CMD wget -q -O - http://$HOSTNAME:9200/_cat/health
|
|
||||||
|
|
||||||
ENV ES_HOME=/usr/share/elasticsearch-$ES_VERSION \
|
|
||||||
DEFAULT_ES_USER=elasticsearch \
|
|
||||||
DEFAULT_ES_USER_UID=$DEFAULT_ES_USER_UID \
|
|
||||||
ES_JAVA_OPTS="-Xms1g -Xmx1g"
|
|
||||||
|
|
||||||
RUN adduser -S -s /bin/sh -u $DEFAULT_ES_USER_UID $DEFAULT_ES_USER
|
|
||||||
|
|
||||||
VOLUME ["/data","/conf"]
|
|
||||||
|
|
||||||
WORKDIR $ES_HOME
|
|
||||||
|
|
||||||
COPY java.policy /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/
|
|
||||||
COPY start /start
|
|
||||||
COPY log4j2.properties $ES_HOME/config/
|
|
||||||
|
|
||||||
CMD ["/start"]
|
|
||||||
@@ -1,258 +0,0 @@
|
|||||||
This Docker image provides an easily configurable Elasticsearch node. Via port mappings, it is easy to create an arbitrarily sized cluster of nodes. As long as the versions match, you can mix-and-match "real" Elasticsearch nodes with container-ized ones.
|
|
||||||
|
|
||||||
# NOTE for use on Linux hosts
|
|
||||||
|
|
||||||
Elasticsearch 5.x requires that the virtual memory mmap count is set sufficiently for stable,
|
|
||||||
production use. [Refer to this guide for more information](https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html).
|
|
||||||
|
|
||||||
# Basic Usage
|
|
||||||
|
|
||||||
To start an Elasticsearch data node that listens on the standard ports on your host's network interface:
|
|
||||||
|
|
||||||
docker run -d -p 9200:9200 -p 9300:9300 itzg/elasticsearch
|
|
||||||
|
|
||||||
You'll then be able to connect to the Elasticsearch HTTP interface to confirm it's alive:
|
|
||||||
|
|
||||||
http://DOCKERHOST:9200/
|
|
||||||
|
|
||||||
{
|
|
||||||
"status" : 200,
|
|
||||||
"name" : "Charon",
|
|
||||||
"version" : {
|
|
||||||
"number" : "1.3.5",
|
|
||||||
"build_hash" : "4a50e7df768fddd572f48830ae9c35e4ded86ac1",
|
|
||||||
"build_timestamp" : "2014-11-05T15:21:28Z",
|
|
||||||
"build_snapshot" : false,
|
|
||||||
"lucene_version" : "4.9"
|
|
||||||
},
|
|
||||||
"tagline" : "You Know, for Search"
|
|
||||||
}
|
|
||||||
|
|
||||||
Where `DOCKERHOST` would be the actual hostname of your host running Docker.
|
|
||||||
|
|
||||||
# Simple, multi-node cluster
|
|
||||||
|
|
||||||
To run a multi-node cluster (3-node in this example) on a single Docker machine use:
|
|
||||||
|
|
||||||
docker run -d --name es0 -p 9200:9200 itzg/elasticsearch
|
|
||||||
docker run -d --name es1 --link es0 -e UNICAST_HOSTS=es0 itzg/elasticsearch
|
|
||||||
docker run -d --name es2 --link es0 -e UNICAST_HOSTS=es0 itzg/elasticsearch
|
|
||||||
|
|
||||||
|
|
||||||
and then check the cluster health, such as http://192.168.99.100:9200/_cluster/health?pretty
|
|
||||||
|
|
||||||
{
|
|
||||||
"cluster_name" : "elasticsearch",
|
|
||||||
"status" : "green",
|
|
||||||
"timed_out" : false,
|
|
||||||
"number_of_nodes" : 3,
|
|
||||||
"number_of_data_nodes" : 3,
|
|
||||||
"active_primary_shards" : 0,
|
|
||||||
"active_shards" : 0,
|
|
||||||
"relocating_shards" : 0,
|
|
||||||
"initializing_shards" : 0,
|
|
||||||
"unassigned_shards" : 0
|
|
||||||
}
|
|
||||||
|
|
||||||
If you have a Docker Swarm cluster already initialized you can download this
|
|
||||||
[docker-compose.yml](https://raw.githubusercontent.com/itzg/dockerfiles/master/elasticsearch/docker-compose.yml) and deploy a cluster using:
|
|
||||||
|
|
||||||
docker stack deploy -c docker-compose.yml es
|
|
||||||
|
|
||||||
|
|
||||||
With a `docker service ls` you can confirm 1 master, 2 data, and 1 gateway nodes are running:
|
|
||||||
|
|
||||||
```
|
|
||||||
ID NAME MODE REPLICAS IMAGE
|
|
||||||
9nwnno8hbqgk es_kibana replicated 1/1 kibana:latest
|
|
||||||
f5x7nipwmvkr es_gateway replicated 1/1 es
|
|
||||||
om8rly2yxylw es_data replicated 2/2 es
|
|
||||||
tdvfilj370yn es_master replicated 1/1 es
|
|
||||||
```
|
|
||||||
|
|
||||||
As you can see, there is also a Kibana instance included and available at port 5601.
|
|
||||||
|
|
||||||
# Health Checks
|
|
||||||
|
|
||||||
This container declares a [HEALTHCHECK](https://docs.docker.com/engine/reference/builder/#/healthcheck) that queries the `_cat/health`
|
|
||||||
endpoint for a quick, one-line gauge of health every 30 seconds.
|
|
||||||
|
|
||||||
The current health of the container is shown in the `STATUS` column of `docker ps`, such as
|
|
||||||
|
|
||||||
Up 14 minutes (healthy)
|
|
||||||
|
|
||||||
You can also check the history of health checks from `inspect`, such as:
|
|
||||||
|
|
||||||
```
|
|
||||||
> docker inspect -f "{{json .State.Health}}" es
|
|
||||||
{"Status":"healthy","FailingStreak":0,"Log":[...
|
|
||||||
```
|
|
||||||
|
|
||||||
# Configuration Summary
|
|
||||||
|
|
||||||
## Ports
|
|
||||||
|
|
||||||
* `9200` - HTTP REST
|
|
||||||
* `9300` - Native transport
|
|
||||||
|
|
||||||
## Volumes
|
|
||||||
|
|
||||||
* `/data` - location of `path.data`
|
|
||||||
* `/conf` - location of `path.conf`
|
|
||||||
|
|
||||||
# Configuration Details
|
|
||||||
|
|
||||||
The following configuration options are specified using `docker run` environment variables (`-e`) like
|
|
||||||
|
|
||||||
docker run ... -e NAME=VALUE ... itzg/elasticsearch
|
|
||||||
|
|
||||||
Since Docker's `-e` settings are baked into the container definition, this image provides an extra feature to change any of the settings below for an existing container. Either create/edit the file `env` in the `/conf` volume mapping or edit within the running container's context using:
|
|
||||||
|
|
||||||
docker exec -it CONTAINER_ID vi /conf/env
|
|
||||||
|
|
||||||
replacing `CONTAINER_ID` with the container's ID or name.
|
|
||||||
|
|
||||||
The contents of the `/conf/env` file are standard shell
|
|
||||||
|
|
||||||
NAME=VALUE
|
|
||||||
|
|
||||||
entries where `NAME` is one of the variables described below.
|
|
||||||
|
|
||||||
Configuration options not explicitly supported below can be specified via the `OPTS` environment variable. For example, by default `OPTS` is set with
|
|
||||||
|
|
||||||
OPTS=-Dnetwork.bind_host=_non_loopback_
|
|
||||||
|
|
||||||
_NOTE: That option is a default since `bind_host` defaults to `localhost` as of 2.0, which isn't helpful for
|
|
||||||
port mapping out from the container_.
|
|
||||||
|
|
||||||
## Cluster Name
|
|
||||||
|
|
||||||
If joining a pre-existing cluster, then you may need to specify a cluster name different than the default "elasticsearch":
|
|
||||||
|
|
||||||
-e CLUSTER=dockers
|
|
||||||
|
|
||||||
## Zen Unicast Hosts
|
|
||||||
|
|
||||||
When joining a multi-physical-host cluster, multicast may not be supported on the physical network. In that case, your node can reference specific one or more hosts in the cluster via the [Zen Unicast Hosts](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-discovery-zen.html#unicast) capability as a comma-separated list of `HOST:PORT` pairs:
|
|
||||||
|
|
||||||
-e UNICAST_HOSTS=HOST:PORT[,HOST:PORT]
|
|
||||||
|
|
||||||
such as
|
|
||||||
|
|
||||||
-e UNICAST_HOSTS=192.168.0.100:9300
|
|
||||||
|
|
||||||
## Plugins
|
|
||||||
|
|
||||||
You can install one or more plugins before startup by passing a comma-separated list of plugins.
|
|
||||||
|
|
||||||
-e PLUGINS=ID[,ID]
|
|
||||||
|
|
||||||
In this example, it will install the Marvel plugin
|
|
||||||
|
|
||||||
-e PLUGINS=elasticsearch/marvel/latest
|
|
||||||
|
|
||||||
Many more plugins [are available here](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-plugins.html#known-plugins).
|
|
||||||
|
|
||||||
## Publish As
|
|
||||||
|
|
||||||
Since the container gives the Elasticsearch software an isolated perspective of its networking, it will most likely advertise its published address with a container-internal IP address. This can be overridden with a physical networking name and port using:
|
|
||||||
|
|
||||||
-e PUBLISH_AS=DOCKERHOST:9301
|
|
||||||
|
|
||||||
_Author Note: I have yet to hit a case where this was actually necessary. Other
|
|
||||||
than the cosmetic weirdness in the logs, Elasticsearch seems to be quite tolerant._
|
|
||||||
|
|
||||||
## Node Name
|
|
||||||
|
|
||||||
Rather than use the randomly assigned node name, you can indicate a specific one using:
|
|
||||||
|
|
||||||
-e NODE_NAME=Docker
|
|
||||||
|
|
||||||
## Node Type
|
|
||||||
|
|
||||||
If you refer to [the Node section](https://www.elastic.co/guide/en/elasticsearch/reference/2.3/modules-node.html)
|
|
||||||
of the Elasticsearch reference guide, you'll find that there's three main types of nodes: master-eligible, data, and client.
|
|
||||||
|
|
||||||
In larger clusters it is important to dedicate a small number (>= 3) of master nodes. There are also cases where a large cluster may need dedicated gateway nodes that are neither master nor data nodes and purely operate as "smart routers" and have large amounts of CPU and memory to handle client requests and search-reduce.
|
|
||||||
|
|
||||||
To simplify all that, this image provides a `TYPE` variable to let you amongst these combinations. The choices are:
|
|
||||||
|
|
||||||
* (not set, the default) : the default node type which is both master-eligible and a data node
|
|
||||||
* `MASTER` : master-eligible, but holds no data. It is good to have three or more of these in a
|
|
||||||
large cluster
|
|
||||||
* `DATA` (or `NON_MASTER`) : holds data and serves search/index requests. Scale these out for elastic-y goodness.
|
|
||||||
* `NON_DATA` : performs all duties except holding data
|
|
||||||
* `GATEWAY` (or `COORDINATING`) : only operates as a client node or a "smart router". These are the ones whose HTTP port 9200 will need to be exposed
|
|
||||||
* `INGEST` : operates only as an ingest node and is not master or data eligible
|
|
||||||
|
|
||||||
A [Docker Compose](https://docs.docker.com/compose/overview/) file will serve as a good example of these three node types:
|
|
||||||
|
|
||||||
```
|
|
||||||
version: '3'
|
|
||||||
|
|
||||||
services:
|
|
||||||
gateway:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
environment:
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
TYPE: GATEWAY
|
|
||||||
ports:
|
|
||||||
- "9200:9200"
|
|
||||||
|
|
||||||
master:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
environment:
|
|
||||||
UNICAST_HOSTS: gateway
|
|
||||||
TYPE: MASTER
|
|
||||||
MIN_MASTERS: 2
|
|
||||||
|
|
||||||
data:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
environment:
|
|
||||||
UNICAST_HOSTS: master,gateway
|
|
||||||
TYPE: DATA
|
|
||||||
|
|
||||||
kibana:
|
|
||||||
image: kibana
|
|
||||||
ports:
|
|
||||||
- "5601:5601"
|
|
||||||
environment:
|
|
||||||
ELASTICSEARCH_URL: http://gateway:9200
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
## Minimum Master Nodes
|
|
||||||
|
|
||||||
In combination with the `TYPE` variable above, you will also want to configure the minimum master nodes to [avoid split-brain](https://www.elastic.co/guide/en/elasticsearch/reference/2.3/modules-node.html#split-brain) during network outages.
|
|
||||||
|
|
||||||
The minimum, which can be calculated as `(master_eligible_nodes / 2) + 1`, can be set with the `MIN_MASTERS` variable.
|
|
||||||
|
|
||||||
Using the Docker Compose file above, a value of `2` is appropriate when scaling the cluster to 3 master nodes:
|
|
||||||
|
|
||||||
docker-compose scale master=3
|
|
||||||
|
|
||||||
## Multiple Network Binding, such as Swarm Mode
|
|
||||||
|
|
||||||
When using Docker Swarm mode the container is presented with multiple ethernet
|
|
||||||
devices. By default, all global, routable IP addresses are configured for
|
|
||||||
Elasticsearch to use as `network.host`.
|
|
||||||
|
|
||||||
That discovery can be overridden by providing a specific ethernet device name
|
|
||||||
to `DISCOVER_TRANSPORT_IP` and/or `DISCOVER_HTTP_IP`, such as
|
|
||||||
|
|
||||||
-e DISCOVER_TRANSPORT_IP=eth0
|
|
||||||
-e DISCOVER_HTTP_IP=eth2
|
|
||||||
|
|
||||||
## Heap size and other JVM options
|
|
||||||
|
|
||||||
By default this image will run Elasticsearch with a Java heap size of 1 GB. If that value
|
|
||||||
or any other JVM options need to be adjusted, then replace the `ES_JAVA_OPTS`
|
|
||||||
environment variable.
|
|
||||||
|
|
||||||
For example, this would allow for the use of 16 GB of heap:
|
|
||||||
|
|
||||||
-e ES_JAVA_OPTS="-Xms16g -Xmx16g"
|
|
||||||
|
|
||||||
Refer to [this page](https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html)
|
|
||||||
for more information about why both the minimum and maximum sizes were set to
|
|
||||||
the same value.
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# This composition is known to work on a Swarm cluster consisting of
|
|
||||||
# 3 VM nodes with 1GB allocated to each.
|
|
||||||
version: '3'
|
|
||||||
|
|
||||||
services:
|
|
||||||
master:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
environment:
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
MIN_MASTERS: 1
|
|
||||||
ES_JAVA_OPTS: -Xms756m -Xmx756m
|
|
||||||
TYPE: NON_DATA
|
|
||||||
ports:
|
|
||||||
- "9200:9200"
|
|
||||||
- "9300:9300"
|
|
||||||
deploy:
|
|
||||||
replicas: 1
|
|
||||||
update_config:
|
|
||||||
parallelism: 1
|
|
||||||
data:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
deploy:
|
|
||||||
mode: global
|
|
||||||
update_config:
|
|
||||||
parallelism: 1
|
|
||||||
environment:
|
|
||||||
TYPE: DATA
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
ES_JAVA_OPTS: -Xms512m -Xmx512m
|
|
||||||
kibana:
|
|
||||||
image: kibana
|
|
||||||
ports:
|
|
||||||
- "5601:5601"
|
|
||||||
environment:
|
|
||||||
ELASTICSEARCH_URL: http://master:9200
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
version: '3'
|
|
||||||
|
|
||||||
services:
|
|
||||||
master:
|
|
||||||
build: .
|
|
||||||
environment:
|
|
||||||
TYPE: MASTER
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
MIN_MASTERS: 1
|
|
||||||
data:
|
|
||||||
build: .
|
|
||||||
environment:
|
|
||||||
TYPE: DATA
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
gateway:
|
|
||||||
build: .
|
|
||||||
ports:
|
|
||||||
- "9200:9200"
|
|
||||||
- "9300:9300"
|
|
||||||
environment:
|
|
||||||
TYPE: GATEWAY
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
ingest:
|
|
||||||
build: .
|
|
||||||
ports:
|
|
||||||
- "9222:9200"
|
|
||||||
environment:
|
|
||||||
TYPE: INGEST
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
kibana:
|
|
||||||
image: kibana:5.5.1
|
|
||||||
ports:
|
|
||||||
- "5601:5601"
|
|
||||||
environment:
|
|
||||||
ELASTICSEARCH_URL: http://gateway:9200
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
version: '3'
|
|
||||||
|
|
||||||
services:
|
|
||||||
master:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
environment:
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
MIN_MASTERS: 1
|
|
||||||
ports:
|
|
||||||
- "9200:9200"
|
|
||||||
- "9300:9300"
|
|
||||||
deploy:
|
|
||||||
replicas: 1
|
|
||||||
update_config:
|
|
||||||
parallelism: 1
|
|
||||||
kibana:
|
|
||||||
image: kibana
|
|
||||||
ports:
|
|
||||||
- "5601:5601"
|
|
||||||
environment:
|
|
||||||
ELASTICSEARCH_URL: http://master:9200
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
version: '3'
|
|
||||||
|
|
||||||
services:
|
|
||||||
master:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
environment:
|
|
||||||
TYPE: MASTER
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
MIN_MASTERS: 1
|
|
||||||
deploy:
|
|
||||||
replicas: 1
|
|
||||||
update_config:
|
|
||||||
parallelism: 1
|
|
||||||
data:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
environment:
|
|
||||||
TYPE: DATA
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
deploy:
|
|
||||||
replicas: 2
|
|
||||||
update_config:
|
|
||||||
parallelism: 1
|
|
||||||
delay: 60s
|
|
||||||
gateway:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
ports:
|
|
||||||
- "9200:9200"
|
|
||||||
- "9300:9300"
|
|
||||||
environment:
|
|
||||||
TYPE: GATEWAY
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
ingest:
|
|
||||||
image: itzg/elasticsearch
|
|
||||||
ports:
|
|
||||||
- "9222:9200"
|
|
||||||
environment:
|
|
||||||
TYPE: INGEST
|
|
||||||
UNICAST_HOSTS: master
|
|
||||||
kibana:
|
|
||||||
image: kibana
|
|
||||||
ports:
|
|
||||||
- "5601:5601"
|
|
||||||
environment:
|
|
||||||
ELASTICSEARCH_URL: http://gateway:9200
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
grant {
|
|
||||||
// JMX Java Management eXtensions
|
|
||||||
permission javax.management.MBeanTrustPermission "register";
|
|
||||||
permission javax.management.MBeanServerPermission "createMBeanServer";
|
|
||||||
permission javax.management.MBeanPermission "-#-[-]", "queryNames";
|
|
||||||
};
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
status = error
|
|
||||||
|
|
||||||
# log action execution errors for easier debugging
|
|
||||||
logger.action.name = org.elasticsearch.action
|
|
||||||
logger.action.level = debug
|
|
||||||
|
|
||||||
appender.console.type = Console
|
|
||||||
appender.console.name = console
|
|
||||||
appender.console.layout.type = PatternLayout
|
|
||||||
appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%m%n
|
|
||||||
|
|
||||||
appender.rolling.type = RollingFile
|
|
||||||
appender.rolling.name = rolling
|
|
||||||
appender.rolling.fileName = ${sys:es.logs}.log
|
|
||||||
appender.rolling.layout.type = PatternLayout
|
|
||||||
appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%.10000m%n
|
|
||||||
appender.rolling.filePattern = ${sys:es.logs}-%d{yyyy-MM-dd}.log
|
|
||||||
appender.rolling.policies.type = Policies
|
|
||||||
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
|
|
||||||
appender.rolling.policies.time.interval = 1
|
|
||||||
appender.rolling.policies.time.modulate = true
|
|
||||||
|
|
||||||
rootLogger.level = info
|
|
||||||
rootLogger.appenderRef.console.ref = console
|
|
||||||
#rootLogger.appenderRef.rolling.ref = rolling
|
|
||||||
|
|
||||||
appender.deprecation_rolling.type = RollingFile
|
|
||||||
appender.deprecation_rolling.name = deprecation_rolling
|
|
||||||
appender.deprecation_rolling.fileName = ${sys:es.logs}_deprecation.log
|
|
||||||
appender.deprecation_rolling.layout.type = PatternLayout
|
|
||||||
appender.deprecation_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] %marker%.10000m%n
|
|
||||||
appender.deprecation_rolling.filePattern = ${sys:es.logs}_deprecation-%i.log.gz
|
|
||||||
appender.deprecation_rolling.policies.type = Policies
|
|
||||||
appender.deprecation_rolling.policies.size.type = SizeBasedTriggeringPolicy
|
|
||||||
appender.deprecation_rolling.policies.size.size = 1GB
|
|
||||||
appender.deprecation_rolling.strategy.type = DefaultRolloverStrategy
|
|
||||||
appender.deprecation_rolling.strategy.max = 4
|
|
||||||
|
|
||||||
logger.deprecation.name = org.elasticsearch.deprecation
|
|
||||||
logger.deprecation.level = warn
|
|
||||||
#logger.deprecation.appenderRef.deprecation_rolling.ref = deprecation_rolling
|
|
||||||
logger.deprecation.additivity = false
|
|
||||||
|
|
||||||
appender.index_search_slowlog_rolling.type = RollingFile
|
|
||||||
appender.index_search_slowlog_rolling.name = index_search_slowlog_rolling
|
|
||||||
appender.index_search_slowlog_rolling.fileName = ${sys:es.logs}_index_search_slowlog.log
|
|
||||||
appender.index_search_slowlog_rolling.layout.type = PatternLayout
|
|
||||||
appender.index_search_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %marker%.10000m%n
|
|
||||||
appender.index_search_slowlog_rolling.filePattern = ${sys:es.logs}_index_search_slowlog-%d{yyyy-MM-dd}.log
|
|
||||||
appender.index_search_slowlog_rolling.policies.type = Policies
|
|
||||||
appender.index_search_slowlog_rolling.policies.time.type = TimeBasedTriggeringPolicy
|
|
||||||
appender.index_search_slowlog_rolling.policies.time.interval = 1
|
|
||||||
appender.index_search_slowlog_rolling.policies.time.modulate = true
|
|
||||||
|
|
||||||
logger.index_search_slowlog_rolling.name = index.search.slowlog
|
|
||||||
logger.index_search_slowlog_rolling.level = trace
|
|
||||||
logger.index_search_slowlog_rolling.appenderRef.index_search_slowlog_rolling.ref = console
|
|
||||||
logger.index_search_slowlog_rolling.additivity = false
|
|
||||||
|
|
||||||
appender.index_indexing_slowlog_rolling.type = RollingFile
|
|
||||||
appender.index_indexing_slowlog_rolling.name = index_indexing_slowlog_rolling
|
|
||||||
appender.index_indexing_slowlog_rolling.fileName = ${sys:es.logs}_index_indexing_slowlog.log
|
|
||||||
appender.index_indexing_slowlog_rolling.layout.type = PatternLayout
|
|
||||||
appender.index_indexing_slowlog_rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %marker%.10000m%n
|
|
||||||
appender.index_indexing_slowlog_rolling.filePattern = ${sys:es.logs}_index_indexing_slowlog-%d{yyyy-MM-dd}.log
|
|
||||||
appender.index_indexing_slowlog_rolling.policies.type = Policies
|
|
||||||
appender.index_indexing_slowlog_rolling.policies.time.type = TimeBasedTriggeringPolicy
|
|
||||||
appender.index_indexing_slowlog_rolling.policies.time.interval = 1
|
|
||||||
appender.index_indexing_slowlog_rolling.policies.time.modulate = true
|
|
||||||
|
|
||||||
logger.index_indexing_slowlog.name = index.indexing.slowlog.index
|
|
||||||
logger.index_indexing_slowlog.level = trace
|
|
||||||
logger.index_indexing_slowlog.appenderRef.index_indexing_slowlog_rolling.ref = console
|
|
||||||
logger.index_indexing_slowlog.additivity = false
|
|
||||||
@@ -1,165 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
pre_checks() {
|
|
||||||
mmc=$(sysctl vm.max_map_count|sed 's/.*= //')
|
|
||||||
if [[ $mmc -lt 262144 ]]; then
|
|
||||||
echo "
|
|
||||||
ERROR: As of 5.0.0 Elasticsearch requires increasing mmap counts.
|
|
||||||
Refer to https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html
|
|
||||||
"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
discoverIpFromLink() {
|
|
||||||
dev=$1
|
|
||||||
mode=$2
|
|
||||||
ip=`ipaddr show dev $dev scope global|awk '$1 == "inet" { if (!match($2,"/32")) { gsub("/.*","",$2) ; print $2 } }'`
|
|
||||||
echo "Discovered $mode address $ip for $dev"
|
|
||||||
OPTS="$OPTS -E $mode.host=$ip"
|
|
||||||
}
|
|
||||||
|
|
||||||
discoverAllGlobalIps() {
|
|
||||||
if [ ${#IGNORE_NETWORK} -eq 0 ]
|
|
||||||
then
|
|
||||||
IGNORE_NETWORK='999.999.999.999'
|
|
||||||
fi
|
|
||||||
printf "Finding IPs"
|
|
||||||
while [ ${#ips} -eq 0 ]
|
|
||||||
do
|
|
||||||
printf "."
|
|
||||||
ips=`ipaddr show scope global| grep -v "inet ${IGNORE_NETWORK}" | awk '$1 == "inet" { if (!match($2,"/32")) { gsub("/.*","",$2) ; addrs[length(addrs)] = $2 } } END { for (i in addrs) { if (i>0) printf "," ; printf addrs[i] } }'`
|
|
||||||
sleep 1
|
|
||||||
done
|
|
||||||
echo " found! $ips"
|
|
||||||
OPTS="$OPTS -E network.host=$ips"
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_clustering() {
|
|
||||||
|
|
||||||
if [ -n "$CLUSTER" ]; then
|
|
||||||
OPTS="$OPTS -E cluster.name=$CLUSTER"
|
|
||||||
if [ -n "$CLUSTER_FROM" ]; then
|
|
||||||
if [ -d /data/$CLUSTER_FROM -a ! -d /data/$CLUSTER ]; then
|
|
||||||
echo "Performing cluster data migration from $CLUSTER_FROM to $CLUSTER"
|
|
||||||
mv /data/$CLUSTER_FROM /data/$CLUSTER
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$NODE_NAME" ]; then
|
|
||||||
OPTS="$OPTS -E node.name=$NODE_NAME"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$MULTICAST" ]; then
|
|
||||||
OPTS="$OPTS -E discovery.zen.ping.multicast.enabled=$MULTICAST"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$UNICAST_HOSTS" ]; then
|
|
||||||
OPTS="$OPTS -E discovery.zen.ping.unicast.hosts=$UNICAST_HOSTS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$PUBLISH_AS" ]; then
|
|
||||||
OPTS="$OPTS -E transport.publish_host=$(echo $PUBLISH_AS | awk -F: '{print $1}')"
|
|
||||||
OPTS="$OPTS -E transport.publish_port=$(echo $PUBLISH_AS | awk -F: '{if ($2) print $2; else print 9300}')"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$MIN_MASTERS" ]; then
|
|
||||||
OPTS="$OPTS -E discovery.zen.minimum_master_nodes=$MIN_MASTERS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
install_plugins() {
|
|
||||||
|
|
||||||
if [ -n "$PLUGINS" ]; then
|
|
||||||
for p in $(echo $PLUGINS | awk -v RS=, '{print}')
|
|
||||||
do
|
|
||||||
echo "Installing the plugin $p"
|
|
||||||
$ES_HOME/bin/elasticsearch-plugin install $p
|
|
||||||
done
|
|
||||||
else
|
|
||||||
mkdir -p $ES_HOME/plugins
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
setup_personality() {
|
|
||||||
|
|
||||||
if [ -n "$TYPE" ]; then
|
|
||||||
case $TYPE in
|
|
||||||
MASTER)
|
|
||||||
OPTS="$OPTS -E node.master=true -E node.data=false -E node.ingest=false"
|
|
||||||
;;
|
|
||||||
|
|
||||||
GATEWAY|COORDINATING)
|
|
||||||
OPTS="$OPTS -E node.master=false -E node.data=false -E node.ingest=false"
|
|
||||||
;;
|
|
||||||
|
|
||||||
INGEST)
|
|
||||||
OPTS="$OPTS -E node.master=false -E node.data=false -E node.ingest=true"
|
|
||||||
;;
|
|
||||||
|
|
||||||
DATA)
|
|
||||||
OPTS="$OPTS -E node.master=false -E node.data=true -E node.ingest=false"
|
|
||||||
;;
|
|
||||||
|
|
||||||
NON_MASTER)
|
|
||||||
OPTS="$OPTS -E node.master=false -E node.data=true -E node.ingest=true"
|
|
||||||
;;
|
|
||||||
|
|
||||||
NON_DATA)
|
|
||||||
OPTS="$OPTS -E node.master=true -E node.data=false -E node.ingest=true"
|
|
||||||
;;
|
|
||||||
|
|
||||||
*)
|
|
||||||
echo "Unknown node type. Please use MASTER|GATEWAY|DATA|NON_MASTER"
|
|
||||||
exit 1
|
|
||||||
esac
|
|
||||||
fi
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
pre_checks
|
|
||||||
|
|
||||||
if [ -f /conf/env ]; then
|
|
||||||
. /conf/env
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -e /conf/elasticsearch.* ]; then
|
|
||||||
cp $ES_HOME/config/elasticsearch.yml /conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -e /conf/log4j2.properties ]; then
|
|
||||||
cp $ES_HOME/config/log4j2.properties /conf
|
|
||||||
fi
|
|
||||||
|
|
||||||
OPTS="$OPTS \
|
|
||||||
-E path.conf=/conf \
|
|
||||||
-E path.data=/data \
|
|
||||||
-E path.logs=/data \
|
|
||||||
-E transport.tcp.port=9300 \
|
|
||||||
-E http.port=9200"
|
|
||||||
|
|
||||||
discoverAllGlobalIps
|
|
||||||
if [ "${DISCOVER_TRANSPORT_IP}" != "" ]; then
|
|
||||||
discoverIpFromLink $DISCOVER_TRANSPORT_IP transport
|
|
||||||
fi
|
|
||||||
if [ "${DISCOVER_HTTP_IP}" != "" ]; then
|
|
||||||
discoverIpFromLink $DISCOVER_HTTP_IP http
|
|
||||||
fi
|
|
||||||
|
|
||||||
setup_personality
|
|
||||||
setup_clustering
|
|
||||||
install_plugins
|
|
||||||
|
|
||||||
mkdir -p /conf/scripts
|
|
||||||
|
|
||||||
echo "Starting Elasticsearch with the options $OPTS"
|
|
||||||
CMD="$ES_HOME/bin/elasticsearch $OPTS"
|
|
||||||
if [ `id -u` = 0 ]; then
|
|
||||||
echo "Running as non-root..."
|
|
||||||
chown -R $DEFAULT_ES_USER /data /conf
|
|
||||||
su -c "$CMD" $DEFAULT_ES_USER
|
|
||||||
else
|
|
||||||
$CMD
|
|
||||||
fi
|
|
||||||
1
examples/.gitignore
vendored
Normal file
1
examples/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
/data/
|
||||||
3
examples/README.md
Normal file
3
examples/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# Deployment Examples
|
||||||
|
|
||||||
|
This directory contains various deployment examples of the [itzg/minecraft-server](https://hub.docker.com/r/itzg/minecraft-server/) Docker image.
|
||||||
21
examples/docker-compose-autopause.yml
Normal file
21
examples/docker-compose-autopause.yml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
minecraft:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
ports:
|
||||||
|
- "25565:25565"
|
||||||
|
volumes:
|
||||||
|
- "mc:/data"
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
ENABLE_AUTOPAUSE: "TRUE"
|
||||||
|
OVERRIDE_SERVER_PROPERTIES: "TRUE"
|
||||||
|
MAX_TICK_TIME: "-1"
|
||||||
|
# More aggressive settings for demo purposes
|
||||||
|
AUTOPAUSE_TIMEOUT_INIT: "30"
|
||||||
|
AUTOPAUSE_TIMEOUT_EST: "10"
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mc: {}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
version: '3'
|
version: '3.8'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
minecraft:
|
minecraft:
|
||||||
19
examples/docker-compose-curseforge.yml
Normal file
19
examples/docker-compose-curseforge.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
image: itzg/minecraft-server:${IMAGE_TAG:-java8}
|
||||||
|
volumes:
|
||||||
|
- ./modpacks:/modpacks:ro
|
||||||
|
- data:/data
|
||||||
|
environment:
|
||||||
|
EULA: "true"
|
||||||
|
TYPE: CURSEFORGE
|
||||||
|
CF_SERVER_MOD: https://media.forgecdn.net/files/3482/169/Valhelsia+3-3.4.4-SERVER.zip
|
||||||
|
# CF_SERVER_MOD: https://media.forgecdn.net/files/3012/800/SkyFactory-4_Server_4.2.2.zip
|
||||||
|
# CF_SERVER_MOD: /modpacks/${MODPACK:-SkyFactory_4_Server_4.1.0.zip}
|
||||||
|
ports:
|
||||||
|
- "25565:25565"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
data: {}
|
||||||
15
examples/docker-compose-fabric.yml
Normal file
15
examples/docker-compose-fabric.yml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
image: ${IMAGE:-itzg/minecraft-server}
|
||||||
|
environment:
|
||||||
|
EULA: "true"
|
||||||
|
TYPE: FABRIC
|
||||||
|
ports:
|
||||||
|
- 25565:25565
|
||||||
|
volumes:
|
||||||
|
- fabric:/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
fabric: {}
|
||||||
24
examples/docker-compose-forge.yml
Normal file
24
examples/docker-compose-forge.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
ports:
|
||||||
|
# expose the Minecraft server port outside of container
|
||||||
|
- "25565:25565"
|
||||||
|
environment:
|
||||||
|
# REQUIRED for all types
|
||||||
|
EULA: "TRUE"
|
||||||
|
# Set server type (vs the default of vanilla)
|
||||||
|
TYPE: FORGE
|
||||||
|
DEBUG: "true"
|
||||||
|
volumes:
|
||||||
|
# use a named, managed volume for data volume
|
||||||
|
- mc_forge:/data
|
||||||
|
# attach local host directory "mods" in same directory as this compose file
|
||||||
|
# all mods in this directory get copied into /data/mods at startup
|
||||||
|
- ./mods:/mods:ro
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# declared the named volume, but use default/local storage engine
|
||||||
|
mc_forge: {}
|
||||||
24
examples/docker-compose-ftba.yml
Normal file
24
examples/docker-compose-ftba.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
# FTBA support is only available in non-Alpine images
|
||||||
|
image: itzg/minecraft-server:${IMAGE_TAG:-java8-multiarch}
|
||||||
|
ports:
|
||||||
|
# expose the Minecraft server port outside of container
|
||||||
|
- 25565:25565
|
||||||
|
environment:
|
||||||
|
# REQUIRED for all types
|
||||||
|
EULA: "TRUE"
|
||||||
|
# Set server type (vs the default of vanilla)
|
||||||
|
TYPE: FTBA
|
||||||
|
# Use Pack ID from https://ftb.neptunepowered.org/pack/ftb-presents-direwolf20-1-12/
|
||||||
|
FTB_MODPACK_ID: "31"
|
||||||
|
FTB_MODPACK_VERSION_ID: ""
|
||||||
|
volumes:
|
||||||
|
# use a named, managed volume for data volume
|
||||||
|
- ftba:/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
# declared the named volume, but use default/local storage engine
|
||||||
|
ftba: {}
|
||||||
20
examples/docker-compose-generic-pack.yml
Normal file
20
examples/docker-compose-generic-pack.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
image: itzg/minecraft-server:${IMAGE_TAG:-latest}
|
||||||
|
volumes:
|
||||||
|
- data:/data
|
||||||
|
- ./modpacks:/modpacks:ro
|
||||||
|
environment:
|
||||||
|
EULA: "true"
|
||||||
|
TYPE: FORGE
|
||||||
|
DEBUG: "${DEBUG:-false}"
|
||||||
|
VERSION: ${VERSION:-1.17.1}
|
||||||
|
FORGEVERSION: ${FORGEVERSION:-37.0.90}
|
||||||
|
GENERIC_PACK: /modpacks/${MODPACK:-Server-Files-0.0.21.zip}
|
||||||
|
ports:
|
||||||
|
- "25565:25565"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
data: {}
|
||||||
19
examples/docker-compose-mods-file.yml
Normal file
19
examples/docker-compose-mods-file.yml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
environment:
|
||||||
|
EULA: "true"
|
||||||
|
TYPE: FORGE
|
||||||
|
VERSION: 1.15.2
|
||||||
|
MODS_FILE: /extras/mods.txt
|
||||||
|
REMOVE_OLD_MODS: "true"
|
||||||
|
ports:
|
||||||
|
- 25565:25565
|
||||||
|
volumes:
|
||||||
|
- data:/data
|
||||||
|
- ./mods.txt:/extras/mods.txt:ro
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
data:
|
||||||
17
examples/docker-compose-mohist.yml
Normal file
17
examples/docker-compose-mohist.yml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
ports:
|
||||||
|
- "25565:25565"
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
TYPE: MOHIST
|
||||||
|
VERSION: 1.12.2
|
||||||
|
DEBUG: "true"
|
||||||
|
volumes:
|
||||||
|
- data:/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
data: {}
|
||||||
18
examples/docker-compose-paper.yml
Normal file
18
examples/docker-compose-paper.yml
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
environment:
|
||||||
|
EULA: "true"
|
||||||
|
TYPE: PAPER
|
||||||
|
VERSION: 1.9.4
|
||||||
|
# needed for Paper versions before 1.14
|
||||||
|
CONSOLE: "false"
|
||||||
|
ports:
|
||||||
|
- 25565:25565
|
||||||
|
volumes:
|
||||||
|
- mc-paper:/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mc-paper:
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
version: '3'
|
version: '3.8'
|
||||||
|
|
||||||
services:
|
services:
|
||||||
mc:
|
mc:
|
||||||
27
examples/docker-compose-rlcraft.yml
Normal file
27
examples/docker-compose-rlcraft.yml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
version: '3.8'
|
||||||
|
|
||||||
|
services:
|
||||||
|
rlcraft:
|
||||||
|
image: itzg/minecraft-server:java8
|
||||||
|
container_name: rlcraft
|
||||||
|
volumes:
|
||||||
|
- rlcraft-modpack:/modpacks:ro
|
||||||
|
- rlcraft-data:/data
|
||||||
|
environment:
|
||||||
|
EULA: "true"
|
||||||
|
TYPE: "FORGE"
|
||||||
|
VERSION: "1.12.2"
|
||||||
|
FORGEVERSION: "14.23.5.2855"
|
||||||
|
DIFFICULTY: "hard"
|
||||||
|
MAX_TICK_TIME: "-1"
|
||||||
|
VIEW_DISTANCE: "6"
|
||||||
|
ALLOW_FLIGHT: "true"
|
||||||
|
MEMORY: "4G"
|
||||||
|
GENERIC_PACK: "/modpacks/RLCraft_Server_Pack_1.12.2_Beta_v2.8.2.zip"
|
||||||
|
ports:
|
||||||
|
- 25565:25565
|
||||||
|
restart: unless-stopped
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
rlcraft-data:
|
||||||
|
rlcraft-modpack:
|
||||||
12
examples/docker-compose-simple.yml
Normal file
12
examples/docker-compose-simple.yml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
ports:
|
||||||
|
- 25565:25565
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
volumes:
|
||||||
|
# attach the relative directory 'data' to the container's /data path
|
||||||
|
- ./data:/data
|
||||||
17
examples/docker-compose-spiget.yml
Normal file
17
examples/docker-compose-spiget.yml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
# Only using IMAGE variable to allow for local testing
|
||||||
|
image: ${IMAGE:-itzg/minecraft-server}
|
||||||
|
ports:
|
||||||
|
- 25565:25565
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
TYPE: SPIGOT
|
||||||
|
SPIGET_RESOURCES: 9089,34315,3836
|
||||||
|
volumes:
|
||||||
|
- data:/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
data: {}
|
||||||
34
examples/docker-compose-spongeforge.yml
Normal file
34
examples/docker-compose-spongeforge.yml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
version: '3.8'
|
||||||
|
# Forge with Sponge API support. THIS REQUIRES DOWNLOADING SPONGEFORGE.
|
||||||
|
# Place the SpongeForge jar file in /data/mods. Other Forge mods go here as well.
|
||||||
|
# Place Sponge mods in /data/mods/plugins. Yes, this is a directory inside the Forge mod directory. Do NOT use /data/plugins.
|
||||||
|
|
||||||
|
services:
|
||||||
|
minecraft:
|
||||||
|
image: itzg/minecraft-server:java8
|
||||||
|
ports:
|
||||||
|
- "25565:25565"
|
||||||
|
volumes:
|
||||||
|
- "mc:/data"
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
#VERSION: "1.12.2" (Ensure this is compatbile with the version of SpongeForge you are using!)
|
||||||
|
TYPE: "FORGE"
|
||||||
|
FORGEVERSION: "RECOMMENDED"
|
||||||
|
#FORGEVERSION: "14.23.5.2807"
|
||||||
|
CONSOLE: "false"
|
||||||
|
ENABLE_RCON: "true"
|
||||||
|
RCON_PASSWORD: "testing"
|
||||||
|
RCON_PORT: 28016
|
||||||
|
restart: unless-stopped
|
||||||
|
rcon:
|
||||||
|
image: itzg/rcon
|
||||||
|
ports:
|
||||||
|
- "4326:4326"
|
||||||
|
- "4327:4327"
|
||||||
|
volumes:
|
||||||
|
- "rcon:/opt/rcon-web-admin/db"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mc:
|
||||||
|
rcon:
|
||||||
11
examples/docker-compose-world-download.yml
Normal file
11
examples/docker-compose-world-download.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
version: "3.8"
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
ports:
|
||||||
|
- 25565:25565
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
VERSION: 1.7.2
|
||||||
|
WORLD: https://www.minecraftmaps.com/survival-maps/cube-survival/download
|
||||||
16
examples/docker-compose.yml
Normal file
16
examples/docker-compose.yml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
version: '3'
|
||||||
|
# Other docker-compose examples in /examples
|
||||||
|
|
||||||
|
services:
|
||||||
|
minecraft:
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
ports:
|
||||||
|
- "25565:25565"
|
||||||
|
volumes:
|
||||||
|
- "mc:/data"
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
restart: always
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
mc: {}
|
||||||
50
examples/k8s/using-statefulset.yml
Normal file
50
examples/k8s/using-statefulset.yml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: StatefulSet
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: example
|
||||||
|
name: example
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
serviceName: example
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: example
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: example
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: mc
|
||||||
|
image: itzg/minecraft-server
|
||||||
|
env:
|
||||||
|
- name: EULA
|
||||||
|
value: "TRUE"
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /data
|
||||||
|
name: data
|
||||||
|
volumeClaimTemplates:
|
||||||
|
- metadata:
|
||||||
|
name: data
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteOnce
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 1Gi
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
service: example
|
||||||
|
name: example
|
||||||
|
spec:
|
||||||
|
ports:
|
||||||
|
- port: 25565
|
||||||
|
targetPort: 25565
|
||||||
|
selector:
|
||||||
|
app: example
|
||||||
|
type: LoadBalancer
|
||||||
@@ -33,6 +33,22 @@ spec:
|
|||||||
ports:
|
ports:
|
||||||
- containerPort: 25565
|
- containerPort: 25565
|
||||||
name: main
|
name: main
|
||||||
|
readinessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- mcstatus
|
||||||
|
- localhost
|
||||||
|
- ping
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 5
|
||||||
|
livenessProbe:
|
||||||
|
exec:
|
||||||
|
command:
|
||||||
|
- mcstatus
|
||||||
|
- localhost
|
||||||
|
- ping
|
||||||
|
initialDelaySeconds: 5
|
||||||
|
periodSeconds: 5
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: mc-data
|
- name: mc-data
|
||||||
mountPath: /data
|
mountPath: /data
|
||||||
1
examples/modpacks/.gitignore
vendored
Normal file
1
examples/modpacks/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.zip
|
||||||
3
examples/modpacks/README.md
Normal file
3
examples/modpacks/README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Place server [modpacks downloaded from CurseForge](https://www.curseforge.com/minecraft/modpacks) in this directory.
|
||||||
|
|
||||||
|
The example [`docker-compose-curseforge.yml`](../docker-compose-curseforge.yml) references a modpack downloaded from <https://www.curseforge.com/minecraft/modpacks/skyfactory-4/files/3012800>.
|
||||||
80
examples/mods.txt
Normal file
80
examples/mods.txt
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
https://edge.forgecdn.net/files/2965/233/Bookshelf-1.15.2-5.6.40.jar
|
||||||
|
https://edge.forgecdn.net/files/2926/27/ProgressiveBosses-2.1.5-mc1.15.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3248/905/goblintraders-1.3.1-1.15.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3272/32/jei-1.15.2-6.0.3.16.jar
|
||||||
|
https://edge.forgecdn.net/files/2871/647/ToastControl-1.15.2-3.0.1.jar
|
||||||
|
https://edge.forgecdn.net/files/3101/903/Druidcraft-1.15-0.4.45.jar
|
||||||
|
https://edge.forgecdn.net/files/2880/426/DefaultOptions_1.15.2-11.0.1.jar
|
||||||
|
https://edge.forgecdn.net/files/2996/535/MekanismAdditions-1.15.2-9.10.9.422.jar
|
||||||
|
https://edge.forgecdn.net/files/3147/275/blockcarpentry-1.15-0.8.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3005/715/refinedstorageaddons-0.6.3.jar
|
||||||
|
https://edge.forgecdn.net/files/3140/146/rftoolsbase-1.15-1.1.10.jar
|
||||||
|
https://edge.forgecdn.net/files/3236/649/cc-tweaked-1.15.2-1.95.3.jar
|
||||||
|
https://edge.forgecdn.net/files/3048/970/light-overlay-4.7.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3015/904/randompatches-1.15.2-1.22.1.1.jar
|
||||||
|
https://edge.forgecdn.net/files/3131/439/engineersdecor-1.15.2-1.1.4.jar
|
||||||
|
https://edge.forgecdn.net/files/3051/255/carryon-1.15.2-1.13.0.5.jar
|
||||||
|
https://edge.forgecdn.net/files/3175/752/EnderStorage-1.15.2-2.5.2.164-universal.jar
|
||||||
|
https://edge.forgecdn.net/files/2997/84/Savage-and-Ravage-1.15.2-1.1.4.jar
|
||||||
|
https://edge.forgecdn.net/files/3053/840/PackMenu-1.15.2-1.2.8.jar
|
||||||
|
https://edge.forgecdn.net/files/3003/397/JEITweaker-1.15.2-1.0.1.3.jar
|
||||||
|
https://edge.forgecdn.net/files/3069/489/absentbydesign-1.15.2-1.1.1.jar
|
||||||
|
https://edge.forgecdn.net/files/2997/601/Upgrade-Aquatic-1.15.2-1.7.1.jar
|
||||||
|
https://edge.forgecdn.net/files/2950/766/ReAuth-1.14-1.15-3.8.1.jar
|
||||||
|
https://edge.forgecdn.net/files/3024/179/Powah-1.15.2-1.1.15.jar
|
||||||
|
https://edge.forgecdn.net/files/3092/975/StorageDrawers-1.15.2-7.0.3.jar
|
||||||
|
https://edge.forgecdn.net/files/2853/267/furniture-7.0.0-pre16-1.15.1.jar
|
||||||
|
https://edge.forgecdn.net/files/2987/251/AppleSkin-mc1.15.2-forge-1.0.14.jar
|
||||||
|
https://edge.forgecdn.net/files/2980/323/industrial-foregoing-1.15.2-2.3.3-e356e61.jar
|
||||||
|
https://edge.forgecdn.net/files/3024/178/Lollipop-1.15.2-1.0.16.jar
|
||||||
|
https://edge.forgecdn.net/files/3210/106/tablechair-1.4.jar
|
||||||
|
https://edge.forgecdn.net/files/3047/358/xercapaint-1.15.2-3.3.jar
|
||||||
|
https://edge.forgecdn.net/files/2873/657/BonsaiTrees-2.1.2.6.jar
|
||||||
|
https://edge.forgecdn.net/files/2938/583/config-2-3.0.jar
|
||||||
|
https://edge.forgecdn.net/files/2991/235/Waystones_1.15.2-6.0.2.jar
|
||||||
|
https://edge.forgecdn.net/files/2957/23/OpenLoader-1.15.2-4.0.5.jar
|
||||||
|
https://edge.forgecdn.net/files/3275/718/XaerosWorldMap_1.13.2_Forge_1.15.2.jar
|
||||||
|
https://edge.forgecdn.net/files/2876/104/AI-Improvements-1.15.2-0.3.0.jar
|
||||||
|
https://edge.forgecdn.net/files/3005/515/mysticallib-1.15.2-2.0.1.jar
|
||||||
|
https://edge.forgecdn.net/files/3008/867/WAWLA-1.15.2-3.0.4.jar
|
||||||
|
https://edge.forgecdn.net/files/2964/474/WailaHarvestability-mc1.15.2-1.1.12.jar
|
||||||
|
https://edge.forgecdn.net/files/3103/508/Kiwi-1.15.2-2.8.5.jar
|
||||||
|
https://edge.forgecdn.net/files/3128/662/Atum-1.15.2-2.1.12.jar
|
||||||
|
https://edge.forgecdn.net/files/2988/910/Buzzier-Bees-1.15.2-1.5.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3030/627/u_team_core-1.15.2-3.0.2.169.jar
|
||||||
|
https://edge.forgecdn.net/files/3003/984/SilentLib-1.15.2-4.6.6+59.jar
|
||||||
|
https://edge.forgecdn.net/files/2968/353/refinedpipes-0.4.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3140/149/rftoolsbuilder-1.15-2.1.16.jar
|
||||||
|
https://edge.forgecdn.net/files/3067/203/mightyarchitect-mc1.15.2_v0.5.jar
|
||||||
|
https://edge.forgecdn.net/files/2980/153/EquipmentTooltips-1.15.2-1.4.3+14.jar
|
||||||
|
https://edge.forgecdn.net/files/3103/510/FruitTrees-1.15.2-1.7.0.jar
|
||||||
|
https://edge.forgecdn.net/files/2989/38/Atmospheric-1.15.2-1.4.1.jar
|
||||||
|
https://edge.forgecdn.net/files/3096/836/rftoolscontrol-1.15-3.0.9.jar
|
||||||
|
https://edge.forgecdn.net/files/2989/662/Enhanced-Mushrooms-1.15.2-v1.2.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3227/891/SimpleStorageNetwork-1.15.2-1.0.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3217/290/minecolonies-0.13.645-RELEASE-universal.jar
|
||||||
|
https://edge.forgecdn.net/files/2935/384/SnowRealMagic-1.15.2-1.7.5.jar
|
||||||
|
https://edge.forgecdn.net/files/2988/584/aiotbotania-1.15.2-1.2.3.jar
|
||||||
|
https://edge.forgecdn.net/files/3255/408/mowziesmobs-1.5.15.jar
|
||||||
|
https://edge.forgecdn.net/files/3062/510/HealthOverlay-1.15.2-1.0.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3023/121/neoncraft-1.1.jar
|
||||||
|
https://edge.forgecdn.net/files/2997/617/Swamp-Expansion-1.15.2-1.7.3.jar
|
||||||
|
https://edge.forgecdn.net/files/2980/252/titanium-1.15.2-2.4.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3152/946/rftoolsutility-1.15-2.1.20.jar
|
||||||
|
https://edge.forgecdn.net/files/3083/277/swingthroughgrass-1.15.2-1.4.1.jar
|
||||||
|
https://edge.forgecdn.net/files/3138/530/SilentGear-1.15.2-1.11.4+187.jar
|
||||||
|
https://edge.forgecdn.net/files/3105/429/DarkUtilities-1.15.2-3.1.9.jar
|
||||||
|
https://edge.forgecdn.net/files/3099/23/ImmersiveEngineering-1.15.2-4.1.1-125.jar
|
||||||
|
https://edge.forgecdn.net/files/2856/529/FastFurnace-1.15.1-3.0.0.jar
|
||||||
|
https://edge.forgecdn.net/files/2988/999/BiomesOPlenty-1.15.2-10.0.0.366-universal.jar
|
||||||
|
https://edge.forgecdn.net/files/2989/95/The-Endergetic-Expansion-1.15.2-v1.3.2.jar
|
||||||
|
https://edge.forgecdn.net/files/2993/960/FluxNetworks-1.15.2-5.0.3-4.jar
|
||||||
|
https://edge.forgecdn.net/files/3028/611/ServerTabInfo-1.15.2-1.2.8.jar
|
||||||
|
https://edge.forgecdn.net/files/3134/277/fairylights-3.0.15-1.15.2.jar
|
||||||
|
https://edge.forgecdn.net/files/3048/54/useful_backpacks-1.15.2-1.10.3.77.jar
|
||||||
|
https://edge.forgecdn.net/files/3273/515/mcw-trapdoors-1.0.2-mc1.15.2.jar
|
||||||
|
https://edge.forgecdn.net/files/2986/639/CraftingTweaks_1.15.2-11.0.1.jar
|
||||||
|
https://edge.forgecdn.net/files/3261/454/create-mc1.15.2_v0.3.1a.jar
|
||||||
|
https://edge.forgecdn.net/files/3211/10/supermartijn642configlib-1.0.5-mc1.15.jar
|
||||||
|
https://edge.forgecdn.net/files/2995/786/TerraForged-1.15.2-0.0.15.jar
|
||||||
|
https://edge.forgecdn.net/files/2892/562/leavesdecayonotherleaves-1.1.jar
|
||||||
5
examples/paper-build-plugins/Dockerfile
Normal file
5
examples/paper-build-plugins/Dockerfile
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
FROM itzg/minecraft-server
|
||||||
|
|
||||||
|
ENV TYPE=PAPER
|
||||||
|
|
||||||
|
COPY plugins/*.jar /plugins/
|
||||||
11
examples/paper-build-plugins/docker-compose.yml
Normal file
11
examples/paper-build-plugins/docker-compose.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
version: '3.7'
|
||||||
|
|
||||||
|
services:
|
||||||
|
mc:
|
||||||
|
build: .
|
||||||
|
environment:
|
||||||
|
EULA: "TRUE"
|
||||||
|
ports:
|
||||||
|
- 25565:25565
|
||||||
|
stdin_open: true
|
||||||
|
tty: true
|
||||||
1
examples/paper-build-plugins/plugins/.gitignore
vendored
Normal file
1
examples/paper-build-plugins/plugins/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.jar
|
||||||
1
examples/paper-build-plugins/plugins/README.md
Normal file
1
examples/paper-build-plugins/plugins/README.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Download Bukkit/Spigot plugin jars, such as [WorldEdit](https://dev.bukkit.org/projects/worldedit/files) and place them here. At image build time the `COPY` step will place those jars in `/plugins`. At container startup, the contents of `/plugins` are sync'ed into `/data/plugins` for use with Bukkit/Spigot/Paper server types.
|
||||||
122
files/autopause/autopause-daemon.sh
Executable file
122
files/autopause/autopause-daemon.sh
Executable file
@@ -0,0 +1,122 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. /autopause/autopause-fcns.sh
|
||||||
|
|
||||||
|
. ${SCRIPTS:-/}start-utils
|
||||||
|
|
||||||
|
|
||||||
|
autopause_error_loop() {
|
||||||
|
logAutopause "Available interfaces within the docker container:"
|
||||||
|
INTERFACES=$(echo /sys/class/net/*)
|
||||||
|
INTERFACES=${INTERFACES//\/sys\/class\/net\//}
|
||||||
|
logAutopause " $INTERFACES"
|
||||||
|
logAutopause "Please set the environment variable AUTOPAUSE_KNOCK_INTERFACE to the interface that handles incoming connections."
|
||||||
|
logAutopause "If unsure which interface to choose, run the ifconfig command in the container."
|
||||||
|
logAutopause "Autopause failed to initialize. This log entry will be printed every 30 minutes."
|
||||||
|
while :
|
||||||
|
do
|
||||||
|
sleep 1800
|
||||||
|
logAutopause "Autopause failed to initialize."
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# wait for java process to be started
|
||||||
|
while :
|
||||||
|
do
|
||||||
|
if java_process_exists ; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
# check for interface existence
|
||||||
|
if [[ -z "$AUTOPAUSE_KNOCK_INTERFACE" ]] ; then
|
||||||
|
logAutopause "AUTOPAUSE_KNOCK_INTERFACE variable must not be empty!"
|
||||||
|
autopause_error_loop
|
||||||
|
fi
|
||||||
|
if ! [[ -d "/sys/class/net/$AUTOPAUSE_KNOCK_INTERFACE" ]] ; then
|
||||||
|
logAutopause "Selected interface \"$AUTOPAUSE_KNOCK_INTERFACE\" does not exist!"
|
||||||
|
autopause_error_loop
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo /usr/sbin/knockd -c /tmp/knockd-config.cfg -d -i "$AUTOPAUSE_KNOCK_INTERFACE"
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
logAutopause "Failed to start knockd daemon."
|
||||||
|
logAutopause "Probable cause: Unable to attach to interface \"$AUTOPAUSE_KNOCK_INTERFACE\"."
|
||||||
|
autopause_error_loop
|
||||||
|
fi
|
||||||
|
|
||||||
|
STATE=INIT
|
||||||
|
|
||||||
|
while :
|
||||||
|
do
|
||||||
|
case X$STATE in
|
||||||
|
XINIT)
|
||||||
|
# Server startup
|
||||||
|
if mc_server_listening ; then
|
||||||
|
TIME_THRESH=$(($(current_uptime)+$AUTOPAUSE_TIMEOUT_INIT))
|
||||||
|
logAutopause "MC Server listening for connections - stopping in $AUTOPAUSE_TIMEOUT_INIT seconds"
|
||||||
|
STATE=K
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
XK)
|
||||||
|
# Knocked
|
||||||
|
if java_clients_connected ; then
|
||||||
|
logAutopause "Client connected - waiting for disconnect"
|
||||||
|
STATE=E
|
||||||
|
else
|
||||||
|
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
||||||
|
logAutopause "No client connected since startup / knocked - stopping"
|
||||||
|
/autopause/pause.sh
|
||||||
|
STATE=S
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
XE)
|
||||||
|
# Established
|
||||||
|
if ! java_clients_connected ; then
|
||||||
|
TIME_THRESH=$(($(current_uptime)+$AUTOPAUSE_TIMEOUT_EST))
|
||||||
|
logAutopause "All clients disconnected - stopping in $AUTOPAUSE_TIMEOUT_EST seconds"
|
||||||
|
STATE=I
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
XI)
|
||||||
|
# Idle
|
||||||
|
if java_clients_connected ; then
|
||||||
|
logAutopause "Client reconnected - waiting for disconnect"
|
||||||
|
STATE=E
|
||||||
|
else
|
||||||
|
if [[ $(current_uptime) -ge $TIME_THRESH ]] ; then
|
||||||
|
logAutopause "No client reconnected - stopping"
|
||||||
|
/autopause/pause.sh
|
||||||
|
STATE=S
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
XS)
|
||||||
|
# Stopped
|
||||||
|
if rcon_client_exists ; then
|
||||||
|
/autopause/resume.sh
|
||||||
|
fi
|
||||||
|
if java_running ; then
|
||||||
|
if java_clients_connected ; then
|
||||||
|
logAutopause "Client connected - waiting for disconnect"
|
||||||
|
STATE=E
|
||||||
|
else
|
||||||
|
TIME_THRESH=$(($(current_uptime)+$AUTOPAUSE_TIMEOUT_KN))
|
||||||
|
logAutopause "Server was knocked - waiting for clients or timeout"
|
||||||
|
STATE=K
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
logAutopause "Error: invalid state: $STATE"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [[ "$STATE" == "S" ]] ; then
|
||||||
|
# before rcon times out
|
||||||
|
sleep 2
|
||||||
|
else
|
||||||
|
sleep $AUTOPAUSE_PERIOD
|
||||||
|
fi
|
||||||
|
done
|
||||||
31
files/autopause/autopause-fcns.sh
Executable file
31
files/autopause/autopause-fcns.sh
Executable file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
current_uptime() {
|
||||||
|
echo $(awk '{print $1}' /proc/uptime | cut -d . -f 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
java_running() {
|
||||||
|
[[ $( ps -ax -o stat,comm | grep 'java' | awk '{ print $1 }') =~ ^S.*$ ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
java_process_exists() {
|
||||||
|
[[ -n "$(ps -ax -o comm | grep 'java')" ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
rcon_client_exists() {
|
||||||
|
[[ -n "$(ps -ax -o comm | grep 'rcon-cli')" ]]
|
||||||
|
}
|
||||||
|
|
||||||
|
mc_server_listening() {
|
||||||
|
mc-monitor status --host localhost --port $SERVER_PORT --timeout 10s >& /dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
java_clients_connected() {
|
||||||
|
local connections
|
||||||
|
if java_running ; then
|
||||||
|
connections=$(mc-monitor status --host localhost --port $SERVER_PORT --show-player-count)
|
||||||
|
else
|
||||||
|
connections=0
|
||||||
|
fi
|
||||||
|
(( $connections > 0 ))
|
||||||
|
}
|
||||||
15
files/autopause/knockd-config.cfg
Normal file
15
files/autopause/knockd-config.cfg
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
[options]
|
||||||
|
logfile = /dev/null
|
||||||
|
[unpauseMCServer-server]
|
||||||
|
sequence = 25565
|
||||||
|
seq_timeout = 1
|
||||||
|
command = /usr/sbin/gosu minecraft:minecraft /autopause/resume.sh
|
||||||
|
tcpflags = syn
|
||||||
|
[unpauseMCServer-rcon]
|
||||||
|
sequence = 25575
|
||||||
|
seq_timeout = 1
|
||||||
|
command = /usr/sbin/gosu minecraft:minecraft /autopause/resume.sh
|
||||||
|
tcpflags = syn
|
||||||
|
[unpauseMCServer-bedrock]
|
||||||
|
sequence = 19132:udp
|
||||||
|
command = /usr/sbin/gosu minecraft:minecraft /autopause/resume.sh
|
||||||
21
files/autopause/pause.sh
Executable file
21
files/autopause/pause.sh
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. /start-utils
|
||||||
|
|
||||||
|
if [[ $( ps -ax -o stat,comm | grep 'java' | awk '{ print $1 }') =~ ^S.*$ ]] ; then
|
||||||
|
# save world
|
||||||
|
rcon-cli save-all >/dev/null
|
||||||
|
|
||||||
|
# wait until mc-monitor is no longer connected to the server
|
||||||
|
while :
|
||||||
|
do
|
||||||
|
if [[ -z "$(netstat -nt | grep "127.0.0.1:$SERVER_PORT" | grep 'ESTABLISHED')" ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
sleep 0.1
|
||||||
|
done
|
||||||
|
|
||||||
|
# finally pause the process
|
||||||
|
logAutopauseAction "Pausing Java process"
|
||||||
|
pkill -STOP java
|
||||||
|
fi
|
||||||
8
files/autopause/resume.sh
Executable file
8
files/autopause/resume.sh
Executable file
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
. /start-utils
|
||||||
|
|
||||||
|
if [[ $( ps -ax -o stat,comm | grep 'java' | awk '{ print $1 }') =~ ^T.*$ ]] ; then
|
||||||
|
logAutopauseAction "Knocked, resuming Java process"
|
||||||
|
pkill -CONT java
|
||||||
|
fi
|
||||||
34
files/log4j2.xml
Normal file
34
files/log4j2.xml
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Configuration status="WARN" packages="com.mojang.util">
|
||||||
|
<Appenders>
|
||||||
|
<Console name="SysOut" target="SYSTEM_OUT">
|
||||||
|
<PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" />
|
||||||
|
</Console>
|
||||||
|
<Queue name="ServerGuiConsole">
|
||||||
|
<PatternLayout pattern="[%d{HH:mm:ss} %level]: %msg%n" />
|
||||||
|
</Queue>
|
||||||
|
<RollingRandomAccessFile name="File" fileName="logs/latest.log" filePattern="logs/%d{yyyy-MM-dd}-%i.log.gz">
|
||||||
|
<PatternLayout pattern="[%d{HH:mm:ss}] [%t/%level]: %msg%n" />
|
||||||
|
<Policies>
|
||||||
|
<TimeBasedTriggeringPolicy />
|
||||||
|
<OnStartupTriggeringPolicy />
|
||||||
|
</Policies>
|
||||||
|
<DefaultRolloverStrategy>
|
||||||
|
<Delete basePath="logs">
|
||||||
|
<IfFileName glob="*.log.gz" />
|
||||||
|
<IfLastModified age="7d" />
|
||||||
|
</Delete>
|
||||||
|
</DefaultRolloverStrategy>
|
||||||
|
</RollingRandomAccessFile>
|
||||||
|
</Appenders>
|
||||||
|
<Loggers>
|
||||||
|
<Root level="info">
|
||||||
|
<filters>
|
||||||
|
<MarkerFilter marker="NETWORK_PACKETS" onMatch="DENY" onMismatch="NEUTRAL" />
|
||||||
|
</filters>
|
||||||
|
<AppenderRef ref="SysOut"/>
|
||||||
|
<AppenderRef ref="File"/>
|
||||||
|
<AppenderRef ref="ServerGuiConsole"/>
|
||||||
|
</Root>
|
||||||
|
</Loggers>
|
||||||
|
</Configuration>
|
||||||
@@ -22,6 +22,7 @@ snooper-enabled=true
|
|||||||
texture-pack=
|
texture-pack=
|
||||||
online-mode=true
|
online-mode=true
|
||||||
resource-pack=
|
resource-pack=
|
||||||
|
resource-pack-sha1=
|
||||||
pvp=true
|
pvp=true
|
||||||
difficulty=1
|
difficulty=1
|
||||||
enable-command-block=true
|
enable-command-block=true
|
||||||
@@ -36,3 +37,15 @@ motd=A Minecraft Server powered by Docker
|
|||||||
generator-settings=
|
generator-settings=
|
||||||
rcon.password=
|
rcon.password=
|
||||||
max-world-size=29999984
|
max-world-size=29999984
|
||||||
|
broadcast-console-to-ops=true
|
||||||
|
broadcast-rcon-to-ops=true
|
||||||
|
enable-jmx-monitoring=false
|
||||||
|
sync-chunk-writes=true
|
||||||
|
enable-status=true
|
||||||
|
entity-broadcast-range-percentage=100
|
||||||
|
function-permission-level=2
|
||||||
|
network-compression-threshold=256
|
||||||
|
op-permission-level=4
|
||||||
|
prevent-proxy-connections=false
|
||||||
|
use-native-transport=true
|
||||||
|
enforce-whitelist=false
|
||||||
2
files/sudoers-mc
Normal file
2
files/sudoers-mc
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
%minecraft ALL=(ALL) NOPASSWD:/usr/bin/pkill
|
||||||
|
%minecraft ALL=(ALL) NOPASSWD:/usr/sbin/knockd
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
FROM java:8
|
|
||||||
|
|
||||||
LABEL maintainer "itzg"
|
|
||||||
|
|
||||||
ENV GITBLIT_VERSION 1.7.1
|
|
||||||
|
|
||||||
RUN wget -qO /tmp/gitblit.tgz http://dl.bintray.com/gitblit/releases/gitblit-$GITBLIT_VERSION.tar.gz
|
|
||||||
|
|
||||||
RUN tar -C /opt -xvf /tmp/gitblit.tgz && \
|
|
||||||
rm /tmp/gitblit.tgz
|
|
||||||
|
|
||||||
VOLUME ["/data"]
|
|
||||||
|
|
||||||
ADD start.sh /start
|
|
||||||
|
|
||||||
ENV GITBLIT_PATH=/opt/gitblit-${GITBLIT_VERSION} \
|
|
||||||
GITBLIT_HTTPS_PORT=443 \
|
|
||||||
GITBLIT_HTTP_PORT=80 \
|
|
||||||
GITBLIT_BASE_FOLDER=/data \
|
|
||||||
GITBLIT_ADMIN_USER=admin \
|
|
||||||
GITBLIT_INITIAL_REPO=
|
|
||||||
WORKDIR $GITBLIT_PATH
|
|
||||||
|
|
||||||
EXPOSE 80 443
|
|
||||||
|
|
||||||
ENTRYPOINT ["/start"]
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
Provides a ready-to-use instance of [GitBlit](http://gitblit.com/).
|
|
||||||
|
|
||||||
## Basic usage
|
|
||||||
|
|
||||||
Start the GitBlit container using
|
|
||||||
|
|
||||||
docker run -d -p 80:80 -p 443:443 --name gitblit itzg/gitblit
|
|
||||||
|
|
||||||
Access its web interface at the mapped HTTP (80) or HTTPS (443) port of the
|
|
||||||
Docker host. Login with the default credentials __admin__ / __admin__ .
|
|
||||||
|
|
||||||
|
|
||||||
## Data volume
|
|
||||||
|
|
||||||
In order to allow for future upgrades, run the container with a volume mount of `/data`, such as:
|
|
||||||
|
|
||||||
-v /tmp/gitblit-data:/data
|
|
||||||
|
|
||||||
## Initial repository creation
|
|
||||||
|
|
||||||
As a convenience for cluster configuration management with git
|
|
||||||
(such as with [Spring Cloud Config](https://cloud.spring.io/spring-cloud-config/)),
|
|
||||||
you may specify the name of an initial repository to be owned by the 'admin' user.
|
|
||||||
This can be enabled by passing the name of that repository via the environment
|
|
||||||
variable `GITBLIT_INITIAL_REPO`, such as
|
|
||||||
|
|
||||||
-e GITBLIT_INITIAL_REPO=default
|
|
||||||
|
|
||||||
## Create repositories with content
|
|
||||||
|
|
||||||
In addition to the approach above, you can push repostories with existing
|
|
||||||
content by attaching them to sub-directories of `/repos`, such as
|
|
||||||
|
|
||||||
docker run -v $HOME/git/example:/repos/example ...
|
|
||||||
|
|
||||||
## Custom configuration
|
|
||||||
|
|
||||||
You can add or override any of the `*.properties` files for configuring GitBlit,
|
|
||||||
typically `gitblit.properties`, by placing those files in a volume attached at
|
|
||||||
`/config`, such as
|
|
||||||
|
|
||||||
-v $(pwd)/extra-config:/config
|
|
||||||
|
|
||||||
The property files in that configuration directory will be renamed with the
|
|
||||||
suffix `.applied` to avoid overwriting manually modified configuration on
|
|
||||||
the next container startup.
|
|
||||||
103
gitblit/start.sh
103
gitblit/start.sh
@@ -1,103 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
apply_base_data() {
|
|
||||||
contents=`ls $GITBLIT_BASE_FOLDER|wc -l`
|
|
||||||
|
|
||||||
if [ $contents = "0" ]; then
|
|
||||||
cp -r $GITBLIT_PATH/data/* $GITBLIT_BASE_FOLDER
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
apply_config() {
|
|
||||||
cp -rf /config/* $GITBLIT_BASE_FOLDER
|
|
||||||
}
|
|
||||||
|
|
||||||
create_repo() {
|
|
||||||
local repo_dir=$GITBLIT_BASE_FOLDER/git/$1.git
|
|
||||||
mkdir -p $repo_dir
|
|
||||||
cd $repo_dir
|
|
||||||
|
|
||||||
git init --bare
|
|
||||||
|
|
||||||
echo "
|
|
||||||
[gitblit]
|
|
||||||
description =
|
|
||||||
originRepository =
|
|
||||||
owner = $GITBLIT_ADMIN_USER
|
|
||||||
acceptNewPatchsets = true
|
|
||||||
acceptNewTickets = true
|
|
||||||
mergeTo = master
|
|
||||||
useIncrementalPushTags = false
|
|
||||||
allowForks = true
|
|
||||||
accessRestriction = PUSH
|
|
||||||
authorizationControl = AUTHENTICATED
|
|
||||||
verifyCommitter = false
|
|
||||||
showRemoteBranches = false
|
|
||||||
isFrozen = false
|
|
||||||
skipSizeCalculation = false
|
|
||||||
skipSummaryMetrics = false
|
|
||||||
federationStrategy = FEDERATE_THIS
|
|
||||||
isFederated = false
|
|
||||||
gcThreshold =
|
|
||||||
gcPeriod = 0
|
|
||||||
" >> config
|
|
||||||
|
|
||||||
git config --replace-all core.logallrefupdates false
|
|
||||||
|
|
||||||
echo "
|
|
||||||
CREATING repository '$1' with:
|
|
||||||
* read/clone access for all
|
|
||||||
* push access for authenticated users"
|
|
||||||
|
|
||||||
RET="file://$repo_dir"
|
|
||||||
}
|
|
||||||
|
|
||||||
apply_repos() {
|
|
||||||
for rdir in /repos/*; do
|
|
||||||
if [ -e $rdir/.git ]; then
|
|
||||||
r=$(basename $rdir)
|
|
||||||
create_repo $r
|
|
||||||
local url=$RET
|
|
||||||
cd $rdir
|
|
||||||
echo "* pushed existing content"
|
|
||||||
git push --all $url
|
|
||||||
fi
|
|
||||||
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
create_initial_repo() {
|
|
||||||
if [ -d $GITBLIT_INITIAL_REPO ]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
create_repo $GITBLIT_INITIAL_REPO
|
|
||||||
}
|
|
||||||
|
|
||||||
shopt -s nullglob
|
|
||||||
if [ ! -f /var/local/gitblit_firststart ]; then
|
|
||||||
FIRSTSTART=1
|
|
||||||
else
|
|
||||||
FIRSTSTART=0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $FIRSTSTART = 1 ]; then
|
|
||||||
apply_base_data
|
|
||||||
|
|
||||||
echo "
|
|
||||||
Applying configuration from /config
|
|
||||||
"
|
|
||||||
apply_config
|
|
||||||
touch /var/local/gitblit_firststart
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
if [[ -n $GITBLIT_INITIAL_REPO ]]; then
|
|
||||||
create_initial_repo
|
|
||||||
fi
|
|
||||||
apply_repos
|
|
||||||
|
|
||||||
cd $GITBLIT_PATH
|
|
||||||
$JAVA_HOME/bin/java -jar $GITBLIT_PATH/gitblit.jar \
|
|
||||||
--httpsPort $GITBLIT_HTTPS_PORT --httpPort $GITBLIT_HTTP_PORT \
|
|
||||||
--baseFolder $GITBLIT_BASE_FOLDER
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
FROM itzg/ubuntu-openjdk-7
|
|
||||||
|
|
||||||
LABEL maintainer "itzg"
|
|
||||||
|
|
||||||
RUN apt-get install -y curl unzip
|
|
||||||
|
|
||||||
RUN curl -s get.gvmtool.net | bash
|
|
||||||
|
|
||||||
ADD run /run
|
|
||||||
ONBUILD RUN ["/run", "selfupdate"]
|
|
||||||
|
|
||||||
ENTRYPOINT ["/run"]
|
|
||||||
1
jekyll-github-pages/.gitignore
vendored
1
jekyll-github-pages/.gitignore
vendored
@@ -1 +0,0 @@
|
|||||||
/site
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
FROM ubuntu:trusty
|
|
||||||
|
|
||||||
LABEL maintainer "itzg"
|
|
||||||
|
|
||||||
ENV APT_GET_UPDATE 2014-09-18
|
|
||||||
|
|
||||||
RUN apt-get update
|
|
||||||
RUN apt-get -y upgrade
|
|
||||||
|
|
||||||
RUN apt-get -y install ruby ruby-dev make patch nodejs
|
|
||||||
RUN gem install bundler
|
|
||||||
|
|
||||||
ADD Gemfile /tmp/Gemfile
|
|
||||||
WORKDIR /tmp
|
|
||||||
RUN bundle install
|
|
||||||
|
|
||||||
ADD template /site-template
|
|
||||||
|
|
||||||
VOLUME ["/site"]
|
|
||||||
EXPOSE 4000
|
|
||||||
|
|
||||||
ADD start.sh /start
|
|
||||||
CMD ["/start"]
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
source 'https://rubygems.org'
|
|
||||||
gem 'github-pages'
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
This container is pre-configured according to the
|
|
||||||
[GitHub Pages use of Jekyll](https://help.github.com/articles/using-jekyll-with-pages).
|
|
||||||
|
|
||||||
It serves up the generated content on port 4000 and the site is generated from
|
|
||||||
the container's `/site` volume. You can either bring your own site content or
|
|
||||||
let it generate some VERY simple content along with the standard Jekyll directory
|
|
||||||
layout.
|
|
||||||
|
|
||||||
A typical way to run this:
|
|
||||||
|
|
||||||
docker run -it -p 4000:4000 -v $(pwd)/site:/site itzg/jekyll-github-pages
|
|
||||||
|
|
||||||
where either it will load your content or initialize the content under
|
|
||||||
`site` in your current working directory.
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
if [ `ls /site/index.* 2> /dev/null | wc -l` = 0 ]; then
|
|
||||||
echo "Preparing /site with default content..."
|
|
||||||
cp -r /site-template/* /site
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ ! -e /site/Gemfile ]; then
|
|
||||||
cp /tmp/Gemfile /site/Gemfile
|
|
||||||
fi
|
|
||||||
|
|
||||||
cd /site
|
|
||||||
bundle exec jekyll serve
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
highlighter: pygments
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
<footer>
|
|
||||||
<i>Goodbye</i>
|
|
||||||
</footer>
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
<header>
|
|
||||||
<h1>{{ page.title }}</h1>
|
|
||||||
</header>
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en-US">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
||||||
|
|
||||||
<title>{{ page.title }}</title>
|
|
||||||
|
|
||||||
<!-- Latest compiled and minified CSS -->
|
|
||||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
|
|
||||||
|
|
||||||
<!-- Optional theme -->
|
|
||||||
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css">
|
|
||||||
|
|
||||||
<!-- Latest compiled and minified JavaScript -->
|
|
||||||
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
|
||||||
</head>
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
{% include top.html %}
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
{% include header.html %}
|
|
||||||
|
|
||||||
{{ content }}
|
|
||||||
|
|
||||||
{% include footer.html %}
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
---
|
|
||||||
layout: default
|
|
||||||
title: Powered by Jekyll
|
|
||||||
overview: true
|
|
||||||
---
|
|
||||||
This is where the content goes.
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
FROM java:openjdk-8u102-jdk
|
|
||||||
|
|
||||||
LABEL maintainer "itzg"
|
|
||||||
|
|
||||||
RUN apt-get update && \
|
|
||||||
DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
|
||||||
graphviz \
|
|
||||||
&& apt-get clean
|
|
||||||
|
|
||||||
ENV JENKINS_HOME=/data
|
|
||||||
|
|
||||||
VOLUME ["/data", "/root", "/opt/jenkins"]
|
|
||||||
EXPOSE 8080 38252
|
|
||||||
|
|
||||||
COPY download-and-start.sh /opt/download-and-start
|
|
||||||
|
|
||||||
CMD ["/opt/download-and-start"]
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
A self-upgrading [Jenkins CI](http://jenkins-ci.org/) server
|
|
||||||
|
|
||||||
# Basic Usage
|
|
||||||
|
|
||||||
To start Jenkins with the latest version:
|
|
||||||
|
|
||||||
ID=$(docker run -d -p 8080:8080 itzg/jenkins)
|
|
||||||
|
|
||||||
At a later time, you can upgrade by restarting the container:
|
|
||||||
|
|
||||||
docker stop $ID
|
|
||||||
docker start $ID
|
|
||||||
|
|
||||||
# Attaching host directory to Jenkins home directory
|
|
||||||
|
|
||||||
The Jenkins home directory is attachable at `/data`, so attaching to a host volume
|
|
||||||
would be:
|
|
||||||
|
|
||||||
ID=$(docker run -d -p 8080:8080 -v /SOME_HOST_DIR:/data itzg/jenkins
|
|
||||||
|
|
||||||
# Enabling Jenkins slave agents
|
|
||||||
|
|
||||||
By default, Jenkins will pick a random port to allow slave nodes launched
|
|
||||||
by JNLP. Since Docker networking is basically a firewall, a random port
|
|
||||||
won't work for us. Instead the fixed port **38252** was chosen (arbitrarily)
|
|
||||||
to be exposed by the container.
|
|
||||||
|
|
||||||
Launch your Jenkins container using
|
|
||||||
|
|
||||||
ID=$(docker run -d -p 8080:8080 -p 38252:38252 itzg/jenkins)
|
|
||||||
|
|
||||||
and configure the port in the Global Security settings:
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
# Image Parameters
|
|
||||||
|
|
||||||
## Volumes
|
|
||||||
|
|
||||||
* `/data` - a majority of the Jenkins content is maintained here, such as workspaces
|
|
||||||
* `/root` - some tools, such as Maven, utilize the home directory for default repository storage
|
|
||||||
* `/opt/jenkins` - the installed distribution is expanded here
|
|
||||||
|
|
||||||
## Ports
|
|
||||||
|
|
||||||
* `8080` - for the web UI
|
|
||||||
* `38252` - for slave incoming JMX access
|
|
||||||
|
|
||||||
## Environment Variables
|
|
||||||
|
|
||||||
* `JENKINS_OPTS` - passed to the initial Java invocation of Jenkins
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
mirrorUrl=http://mirrors.jenkins-ci.org/war/latest/jenkins.war
|
|
||||||
url=$(curl -s --head $mirrorUrl|awk -F': ' '$1 == "Location" { print $2 }' | sed 's/[[:space:]]*$//')
|
|
||||||
version=$(echo $url | sed 's#.*/war/\(.*\)/jenkins.war#\1#')
|
|
||||||
|
|
||||||
mkdir -p /opt/jenkins
|
|
||||||
trackingFile=/opt/jenkins/INSTALLED
|
|
||||||
|
|
||||||
installed=
|
|
||||||
if [ -f $trackingFile ]; then
|
|
||||||
installed=$(cat $trackingFile)
|
|
||||||
echo "Version installed is $installed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ $version != "$installed" ]; then
|
|
||||||
echo "Downloading $version from '$url'"
|
|
||||||
while ! curl -s -o /opt/jenkins/jenkins.war "$url"
|
|
||||||
do
|
|
||||||
echo "Trying again in 5 seconds"
|
|
||||||
sleep 5
|
|
||||||
done
|
|
||||||
|
|
||||||
echo $version > $trackingFile
|
|
||||||
fi
|
|
||||||
|
|
||||||
|
|
||||||
cd /opt/jenkins
|
|
||||||
exec java $JENKINS_OPTS -jar jenkins.war
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
FROM openjdk:8u111-jre
|
|
||||||
|
|
||||||
LABEL maintainer "itzg"
|
|
||||||
|
|
||||||
ENV KIBANA_VERSION 5.1.2
|
|
||||||
|
|
||||||
ADD https://artifacts.elastic.co/downloads/kibana/kibana-${KIBANA_VERSION}-linux-x86_64.tar.gz /tmp/kibana.tgz
|
|
||||||
|
|
||||||
RUN tar -C /opt -xzf /tmp/kibana.tgz && rm /tmp/kibana.tgz
|
|
||||||
|
|
||||||
ENV KIBANA_HOME /opt/kibana-$KIBANA_VERSION-linux-x86_64
|
|
||||||
|
|
||||||
# Simplify for cross-container
|
|
||||||
ENV ES_URL http://es:9200
|
|
||||||
|
|
||||||
WORKDIR $KIBANA_HOME
|
|
||||||
|
|
||||||
ADD start.sh /start
|
|
||||||
|
|
||||||
EXPOSE 5601
|
|
||||||
|
|
||||||
CMD ["/start"]
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
|
|
||||||
Provides a ready-to-run [Kibana](http://www.elasticsearch.org/overview/kibana/) server that can
|
|
||||||
easily hook into your [Elasticsearch containers](https://registry.hub.docker.com/u/itzg/elasticsearch/).
|
|
||||||
|
|
||||||
## Usage with Docker elasticsearch container
|
|
||||||
|
|
||||||
This is by far the easiest and most Docker'ish way to run Kibana.
|
|
||||||
|
|
||||||
Assuming you started one or more containers using something like
|
|
||||||
|
|
||||||
docker run -d --name your-es -p 9200:9200 itzg/elasticsearch
|
|
||||||
|
|
||||||
Start Kibana using
|
|
||||||
|
|
||||||
docker run -d -p 5601:5601 --link your-es:es itzg/kibana
|
|
||||||
|
|
||||||
Proceed to use Kibana starting from
|
|
||||||
[this point in the documentation](http://www.elasticsearch.org/guide/en/kibana/current/access.html)
|
|
||||||
|
|
||||||
## Usage with non-Docker elasticsearch
|
|
||||||
|
|
||||||
Start Kibana using
|
|
||||||
|
|
||||||
docker run -d -p 5601:5601 -e ES_URL=http://YOUR_ES:9200 itzg/kibana
|
|
||||||
|
|
||||||
Replacing `http://YOUR_ES:9200` with the appropriate URL for your system.
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
version: '2'
|
|
||||||
|
|
||||||
services:
|
|
||||||
es:
|
|
||||||
build: ../elasticsearch
|
|
||||||
ports:
|
|
||||||
- "9200:9200"
|
|
||||||
|
|
||||||
kibana:
|
|
||||||
build: .
|
|
||||||
ports:
|
|
||||||
- "5601:5601"
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
OPTS="-e $ES_URL -H $HOSTNAME"
|
|
||||||
|
|
||||||
exec bin/kibana $OPTS
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user