Compare commits
1443 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4484d0373 | ||
|
|
d9c520216a | ||
|
|
7d5e0868f4 | ||
|
|
86ce579680 | ||
|
|
7104d203bd | ||
|
|
32cd56faa5 | ||
|
|
360cbcf8b9 | ||
|
|
dd61cf9e8d | ||
|
|
b8e55331e1 | ||
|
|
0a3f7262a4 | ||
|
|
434a111976 | ||
|
|
cfd7b84c5e | ||
|
|
4593547e35 | ||
|
|
ef2d014ed6 | ||
|
|
882ca8781b | ||
|
|
5737286ac5 | ||
|
|
390a2254a0 | ||
|
|
5d5d56c560 | ||
|
|
cfc25bc9da | ||
|
|
62099db5fe | ||
|
|
2381069096 | ||
|
|
637221f450 | ||
|
|
7f14bb22b0 | ||
|
|
a3b99c5d0e | ||
|
|
17f71e1269 | ||
|
|
f4cf0e15b9 | ||
|
|
3705b5f847 | ||
|
|
ac4f576951 | ||
|
|
b790fd745a | ||
|
|
c8d7fb0aed | ||
|
|
5d4ac8179a | ||
|
|
097da0436e | ||
|
|
b7b5fa4f3c | ||
|
|
cd70c5279f | ||
|
|
86be96ad24 | ||
|
|
a95f077496 | ||
|
|
bf6c784b91 | ||
|
|
1cc6c1bc3e | ||
|
|
b75c7f3b8c | ||
|
|
6525f147c6 | ||
|
|
11bf30d744 | ||
|
|
2aabb209d9 | ||
|
|
bd03e45860 | ||
|
|
f4d2437922 | ||
|
|
8b5f134946 | ||
|
|
3f0cc989d0 | ||
|
|
ed0832370d | ||
|
|
a55d5a10e0 | ||
|
|
07695e9aac | ||
|
|
e28dd15881 | ||
|
|
3421d1082c | ||
|
|
bfb424dc09 | ||
|
|
fe47ebd906 | ||
|
|
f2e421daba | ||
|
|
6ec9bc800d | ||
|
|
b759230411 | ||
|
|
82829ab84c | ||
|
|
94eb2d0d8b | ||
|
|
54b7ab616a | ||
|
|
b0c2912453 | ||
|
|
3eeb9be292 | ||
|
|
c44d729831 | ||
|
|
e5280dbe34 | ||
|
|
64f4314df3 | ||
|
|
dc35a7876c | ||
|
|
a82c79d5b5 | ||
|
|
d3054c4908 | ||
|
|
9ea08636d4 | ||
|
|
33e559adf6 | ||
|
|
2aa319a81a | ||
|
|
2f196e5c9c | ||
|
|
38426ba304 | ||
|
|
38beed755b | ||
|
|
6bc410204e | ||
|
|
abcc7f00e1 | ||
|
|
0690265f71 | ||
|
|
cdb2d35adb | ||
|
|
3deee63036 | ||
|
|
bef36c3b7c | ||
|
|
12e6c71fb7 | ||
|
|
a05ef80d64 | ||
|
|
9887134a4e | ||
|
|
38a21b8c2f | ||
|
|
e8dc3c650a | ||
|
|
38db727e2f | ||
|
|
de6f998fbc | ||
|
|
2138a882a0 | ||
|
|
063750948d | ||
|
|
51cdcab328 | ||
|
|
db0ba7ad89 | ||
|
|
2597ec2c3d | ||
|
|
b3bbb30a6b | ||
|
|
0a56782780 | ||
|
|
201da01ae7 | ||
|
|
abf62bdf1f | ||
|
|
1b5332cd45 | ||
|
|
083cf3ac90 | ||
|
|
bdf87e32e8 | ||
|
|
410f1b3d23 | ||
|
|
e57a141b36 | ||
|
|
9b8faf2b27 | ||
|
|
1ae63ebe01 | ||
|
|
548e891004 | ||
|
|
9df8b7c25e | ||
|
|
95b237c3c7 | ||
|
|
0a0368864d | ||
|
|
203af51f02 | ||
|
|
98e8a9bd67 | ||
|
|
29cf81c45e | ||
|
|
aff910c85a | ||
|
|
4ac363cdb2 | ||
|
|
f011631c67 | ||
|
|
d26b5de742 | ||
|
|
a4078e97bd | ||
|
|
dc959d6a41 | ||
|
|
61bab89189 | ||
|
|
3a0d0c182c | ||
|
|
19f37b537a | ||
|
|
9e44195694 | ||
|
|
f45ad26429 | ||
|
|
86351887f4 | ||
|
|
8f99cd5f2b | ||
|
|
dc67a5cb5b | ||
|
|
e971ca3686 | ||
|
|
46e22ba573 | ||
|
|
f1aba77b1b | ||
|
|
05e6de4fe2 | ||
|
|
7e108de502 | ||
|
|
074de26cbd | ||
|
|
05637fa64b | ||
|
|
ebf20e9236 | ||
|
|
35d7597a25 | ||
|
|
f91b7154d4 | ||
|
|
fdbdbd50fc | ||
|
|
9ffa564abd | ||
|
|
a9df9cfd86 | ||
|
|
d226b02a49 | ||
|
|
fa9b5308cd | ||
|
|
60d8a667af | ||
|
|
328aa3779c | ||
|
|
b1b43f487c | ||
|
|
344cb39a44 | ||
|
|
bcefa92f30 | ||
|
|
245263d2ad | ||
|
|
dd7589323e | ||
|
|
4aed599d8c | ||
|
|
cd275138f3 | ||
|
|
476cc6045f | ||
|
|
553378085f | ||
|
|
2958f906e4 | ||
|
|
68f909b91d | ||
|
|
78bde7f817 | ||
|
|
e7964ee99d | ||
|
|
8f44a57158 | ||
|
|
d33393d3fd | ||
|
|
7595351b1d | ||
|
|
3edddac0c1 | ||
|
|
0a86ffe01b | ||
|
|
563365b712 | ||
|
|
b6fdd4511c | ||
|
|
b24035c80a | ||
|
|
58c6b137b0 | ||
|
|
fd6e56cc5f | ||
|
|
d0ffd7d9f9 | ||
|
|
272327af89 | ||
|
|
e83ba595aa | ||
|
|
04917b72d4 | ||
|
|
e0617b209d | ||
|
|
1b4e02eb62 | ||
|
|
5ae6c1c845 | ||
|
|
e034421ea9 | ||
|
|
1cbaabdda0 | ||
|
|
577f46153f | ||
|
|
3116880b75 | ||
|
|
5961306813 | ||
|
|
acf2c854d2 | ||
|
|
bf3b2d396b | ||
|
|
3c6796bd7b | ||
|
|
22c3d34877 | ||
|
|
b151192394 | ||
|
|
fb405c64ab | ||
|
|
3826f40c6f | ||
|
|
0156cffe0f | ||
|
|
a19741aba9 | ||
|
|
85eca2167b | ||
|
|
431e43ac6d | ||
|
|
936706e880 | ||
|
|
1ecf975b53 | ||
|
|
7859145409 | ||
|
|
77694de6ff | ||
|
|
83de73ccdb | ||
|
|
d8938ebf77 | ||
|
|
2d4039ab69 | ||
|
|
e584e336f8 | ||
|
|
27b5fd93fd | ||
|
|
249df86dfd | ||
|
|
ff01c3df7b | ||
|
|
2c30c03ef7 | ||
|
|
93f12c59e6 | ||
|
|
3cc29ff016 | ||
|
|
b336e3633d | ||
|
|
4a891f74bd | ||
|
|
27dbae3703 | ||
|
|
f7800adb68 | ||
|
|
c472c2a3c7 | ||
|
|
1b95e01ea3 | ||
|
|
6da9be2d65 | ||
|
|
fd2fb6c605 | ||
|
|
04b2643b4f | ||
|
|
c4d700c1b0 | ||
|
|
2bcfea9b2b | ||
|
|
8b07e92391 | ||
|
|
a2ac21130a | ||
|
|
ea6adbbf56 | ||
|
|
b11c72d0ae | ||
|
|
77970a6b0d | ||
|
|
6a0701fa65 | ||
|
|
a062e283fe | ||
|
|
624acb8e18 | ||
|
|
67311264d7 | ||
|
|
b97086a8bd | ||
|
|
ce0da53f86 | ||
|
|
1a27cdd0ea | ||
|
|
7b45131486 | ||
|
|
06de81b61b | ||
|
|
a331d27945 | ||
|
|
926176bbb6 | ||
|
|
5cd86d23e6 | ||
|
|
8e178f5895 | ||
|
|
9496b9cfaf | ||
|
|
6fc2d42fe0 | ||
|
|
1eb41f32dc | ||
|
|
bc75bffed2 | ||
|
|
944d808bc6 | ||
|
|
885178eed5 | ||
|
|
7e37f9dc79 | ||
|
|
7cd077a79b | ||
|
|
7c2df65514 | ||
|
|
2324cb888b | ||
|
|
4ae9cca6f1 | ||
|
|
ed851fe399 | ||
|
|
776013b0f4 | ||
|
|
6f0039ebf1 | ||
|
|
8d0c35f133 | ||
|
|
bc61d106e4 | ||
|
|
d0208b0ecc | ||
|
|
5df1d77c04 | ||
|
|
29dc0b5980 | ||
|
|
a4983f8d7d | ||
|
|
ecf852567c | ||
|
|
f9f931b2b6 | ||
|
|
024715fbf1 | ||
|
|
73be6989ff | ||
|
|
67003ed469 | ||
|
|
2758b3cc47 | ||
|
|
36da77a2ff | ||
|
|
b663f71878 | ||
|
|
398a78b2f6 | ||
|
|
2dea993804 | ||
|
|
7b0d3b14bc | ||
|
|
0d6199d0cb | ||
|
|
56d65bfaba | ||
|
|
d83978760e | ||
|
|
3e08a71a95 | ||
|
|
5ca09b0081 | ||
|
|
5e1f177d1c | ||
|
|
86a6b2e246 | ||
|
|
3a16724fbe | ||
|
|
5d1a3fb079 | ||
|
|
f0bf7aa0b6 | ||
|
|
4942ebaec1 | ||
|
|
9beab4d50d | ||
|
|
758d9f8a83 | ||
|
|
dd45bebc3e | ||
|
|
0263d37d43 | ||
|
|
d0b87936db | ||
|
|
0f4b5d4305 | ||
|
|
c0eb12f572 | ||
|
|
cc395b54dd | ||
|
|
80f35370ab | ||
|
|
98e7f467b7 | ||
|
|
d3ae9360ce | ||
|
|
b44ccae796 | ||
|
|
1060189d78 | ||
|
|
8eb8760a46 | ||
|
|
1486c5e170 | ||
|
|
10b31fcd4a | ||
|
|
82f3613ed7 | ||
|
|
3354effff0 | ||
|
|
3557de3485 | ||
|
|
5c3eea3ccb | ||
|
|
220443fc99 | ||
|
|
47f46fd930 | ||
|
|
bf6da2d971 | ||
|
|
ff5970e1ac | ||
|
|
343e19fcc7 | ||
|
|
6d38d0c04d | ||
|
|
a0eb35f989 | ||
|
|
603717eaa4 | ||
|
|
ec84e66722 | ||
|
|
df7194667e | ||
|
|
eeb686b4fe | ||
|
|
3869395513 | ||
|
|
0306a4a018 | ||
|
|
094ddfec46 | ||
|
|
2151dbecd6 | ||
|
|
c8775fb10b | ||
|
|
a85777ff02 | ||
|
|
918431f075 | ||
|
|
a24ed084b1 | ||
|
|
1c851d7b17 | ||
|
|
4a19bfebc4 | ||
|
|
034c139777 | ||
|
|
67f60c0859 | ||
|
|
8ad62e204a | ||
|
|
070485eb08 | ||
|
|
194678c7ba | ||
|
|
ca30bd4d7b | ||
|
|
6ce10b5be6 | ||
|
|
41ac56e54b | ||
|
|
6b8127ae84 | ||
|
|
f2e14cdddc | ||
|
|
3ae19a8364 | ||
|
|
6c4a0cbb34 | ||
|
|
71324ba5c1 | ||
|
|
69c3c62577 | ||
|
|
3cf05b40de | ||
|
|
40f9d9a318 | ||
|
|
4644c594f0 | ||
|
|
06cf2ebecf | ||
|
|
77825342f5 | ||
|
|
9ff17a93c1 | ||
|
|
85c857bbe0 | ||
|
|
6806007060 | ||
|
|
693bca5709 | ||
|
|
2a88463919 | ||
|
|
be63a22d2f | ||
|
|
f86d6975ad | ||
|
|
fd0ca02038 | ||
|
|
863566f1a0 | ||
|
|
74c1d25692 | ||
|
|
a633502675 | ||
|
|
ceacae003a | ||
|
|
bc4226990f | ||
|
|
e0470b7641 | ||
|
|
919916ea23 | ||
|
|
e137178765 | ||
|
|
112b77bb01 | ||
|
|
50d7ec3d29 | ||
|
|
ad9490efcb | ||
|
|
e45977e763 | ||
|
|
9c80367706 | ||
|
|
1f2ef9874d | ||
|
|
0701a091ef | ||
|
|
b6aeb4a028 | ||
|
|
5cadeb52bf | ||
|
|
597db38489 | ||
|
|
cfe9997452 | ||
|
|
8badedd49f | ||
|
|
5ed42b364f | ||
|
|
f52bc35465 | ||
|
|
82d1264634 | ||
|
|
61cfdc4a55 | ||
|
|
3cfbe4aa83 | ||
|
|
842c801b46 | ||
|
|
ca7332957a | ||
|
|
09024baefe | ||
|
|
2824665652 | ||
|
|
611c35110e | ||
|
|
14c74db96f | ||
|
|
f2f6618177 | ||
|
|
3ee983b98b | ||
|
|
4a477c7dd5 | ||
|
|
b0b4bdc74e | ||
|
|
7fae00435b | ||
|
|
870a5b4095 | ||
|
|
7ecbc27ea3 | ||
|
|
ee6945525e | ||
|
|
5f241919a3 | ||
|
|
fe3ef4e1f6 | ||
|
|
523759e650 | ||
|
|
b7c7dd5b91 | ||
|
|
5db8b32021 | ||
|
|
1485ef7e2d | ||
|
|
f100477484 | ||
|
|
b210e4bc35 | ||
|
|
f14c67f247 | ||
|
|
4f8cd30a21 | ||
|
|
ab671132f9 | ||
|
|
013b2b62d7 | ||
|
|
8c19fcf54a | ||
|
|
5d111795b5 | ||
|
|
7decbc7e6c | ||
|
|
ea26b9ba4a | ||
|
|
d2abbb002a | ||
|
|
b4c3c6fb71 | ||
|
|
6f9f65bf4d | ||
|
|
9bd20715f9 | ||
|
|
5aa81a3461 | ||
|
|
b236e4c97b | ||
|
|
8627439479 | ||
|
|
2b531fdbb2 | ||
|
|
7048164e25 | ||
|
|
5d79c895f8 | ||
|
|
5d822fd8a9 | ||
|
|
2e070e63b7 | ||
|
|
9e7a34e950 | ||
|
|
bb17d06f22 | ||
|
|
41c86ac8b6 | ||
|
|
9aba7a35be | ||
|
|
0b817f0313 | ||
|
|
eb20fff0ac | ||
|
|
7975c05395 | ||
|
|
1b65295161 | ||
|
|
9525db0f35 | ||
|
|
d40e28e340 | ||
|
|
c288001abf | ||
|
|
03b0239538 | ||
|
|
dfff84a92c | ||
|
|
fa4ea016b9 | ||
|
|
cb5bba1c14 | ||
|
|
bb0dd6e358 | ||
|
|
1234c49d13 | ||
|
|
d3e6057d92 | ||
|
|
66922986a2 | ||
|
|
04d8a37e55 | ||
|
|
21796aea67 | ||
|
|
c327239c1a | ||
|
|
13f8b029aa | ||
|
|
45f52b7a54 | ||
|
|
57ea516f86 | ||
|
|
f89e73dc19 | ||
|
|
d58292fc73 | ||
|
|
8cd5b372cf | ||
|
|
f02fd40538 | ||
|
|
0aa7f0297f | ||
|
|
f23e269bd8 | ||
|
|
98968e0eaf | ||
|
|
7b172f6bbd | ||
|
|
12b340d7c5 | ||
|
|
5b166271d3 | ||
|
|
1e6075037f | ||
|
|
e057d7d5b0 | ||
|
|
84a8de4574 | ||
|
|
739caf0b8c | ||
|
|
c917bbdcae | ||
|
|
5c1e61ccbb | ||
|
|
d2e138864a | ||
|
|
791d037220 | ||
|
|
cab578f7ef | ||
|
|
59ab1bac26 | ||
|
|
cfdcb037f6 | ||
|
|
7466e7452f | ||
|
|
701b0cdb86 | ||
|
|
4743814033 | ||
|
|
b36d4d3821 | ||
|
|
9ec97dab68 | ||
|
|
874a9b1dd1 | ||
|
|
4f6450eef9 | ||
|
|
995bd926ab | ||
|
|
7fe6be5052 | ||
|
|
8cb2301501 | ||
|
|
ec32883e46 | ||
|
|
c8d0dc6ba2 | ||
|
|
84e895c56d | ||
|
|
e8e7caa0d1 | ||
|
|
dbc04701b1 | ||
|
|
b37f2f36b4 | ||
|
|
0ab96218a6 | ||
|
|
8ac5de449f | ||
|
|
b44b55c08f | ||
|
|
4aca626164 | ||
|
|
961bc7e92a | ||
|
|
89e8564325 | ||
|
|
d1db19a441 | ||
|
|
e17733d680 | ||
|
|
95cbe155c5 | ||
|
|
e76aac1499 | ||
|
|
a5e784bfb0 | ||
|
|
ea7de5c045 | ||
|
|
5a3cd2d0c7 | ||
|
|
7f27af260d | ||
|
|
8aea3e273a | ||
|
|
b97e8f3601 | ||
|
|
9e2836fe7f | ||
|
|
0e470f0fee | ||
|
|
17edd856d3 | ||
|
|
833a96998b | ||
|
|
df0dee3269 | ||
|
|
672027dc7e | ||
|
|
cf953a0147 | ||
|
|
f1525b7cd9 | ||
|
|
55f395b593 | ||
|
|
7d5ff0910f | ||
|
|
92005c0fdb | ||
|
|
b982612903 | ||
|
|
86386450f0 | ||
|
|
6c979f7c2d | ||
|
|
7d221552ee | ||
|
|
5de1cd959a | ||
|
|
598509e7cd | ||
|
|
41f12df14b | ||
|
|
4e6dcc5f54 | ||
|
|
cfb6980ebd | ||
|
|
11f94739ab | ||
|
|
ed9d9e3268 | ||
|
|
fa55f38258 | ||
|
|
bb575d5839 | ||
|
|
c4270621c9 | ||
|
|
152081f15d | ||
|
|
80c78dab9f | ||
|
|
3b3bdb8c5d | ||
|
|
f44392f561 | ||
|
|
506763ad17 | ||
|
|
2e012cee38 | ||
|
|
61d017517a | ||
|
|
be024cb372 | ||
|
|
17531e646b | ||
|
|
f3c0187fb7 | ||
|
|
8a06e87a6c | ||
|
|
008d84d3e3 | ||
|
|
cf4b27d510 | ||
|
|
9458642eb9 | ||
|
|
c5847184c0 | ||
|
|
a6dd27ee7d | ||
|
|
70d2f24e1d | ||
|
|
96bb17d70c | ||
|
|
0249653e17 | ||
|
|
2107b6f147 | ||
|
|
a59584bb6e | ||
|
|
16ff43de75 | ||
|
|
d52eb382b8 | ||
|
|
f381dd768b | ||
|
|
77cfa63196 | ||
|
|
8faaef4a7b | ||
|
|
3985fdcca4 | ||
|
|
c7f35eb8a2 | ||
|
|
87cbbdbc9a | ||
|
|
ed58641d41 | ||
|
|
751a1a77cd | ||
|
|
b4f3741ac7 | ||
|
|
da166bc537 | ||
|
|
4ffbd357ee | ||
|
|
6007a95683 | ||
|
|
07bcc67597 | ||
|
|
c7141d7503 | ||
|
|
65dd4bc1e0 | ||
|
|
ed7ee5aacd | ||
|
|
888d1d4bf3 | ||
|
|
52c05558f9 | ||
|
|
c888ca5b58 | ||
|
|
d8e55f4b9b | ||
|
|
715875adf8 | ||
|
|
d9d6f1e044 | ||
|
|
07566b6484 | ||
|
|
0250627b3e | ||
|
|
a8786acf0d | ||
|
|
1d5fb5cb39 | ||
|
|
5ea2712d0a | ||
|
|
d5dc5d5367 | ||
|
|
d9033515d1 | ||
|
|
e15b54ebf3 | ||
|
|
9cea53f0aa | ||
|
|
3ef862a907 | ||
|
|
dcce797fc2 | ||
|
|
89bb0e2e7a | ||
|
|
62bf040f30 | ||
|
|
385d74ac5d | ||
|
|
883a814dea | ||
|
|
e974f5463b | ||
|
|
212b2fc1b7 | ||
|
|
f5076128be | ||
|
|
2432e5c914 | ||
|
|
15ded4312e | ||
|
|
5c80f3127d | ||
|
|
4a2d7689ac | ||
|
|
f164357478 | ||
|
|
c317734ad2 | ||
|
|
e49a1b3fbe | ||
|
|
6991fc5683 | ||
|
|
ce29efcc7b | ||
|
|
2a00f6bcb6 | ||
|
|
8f6131d3c8 | ||
|
|
c29023c32f | ||
|
|
0f8dd43382 | ||
|
|
d6a5c5ef11 | ||
|
|
89b7b2045a | ||
|
|
156861c34a | ||
|
|
5b8b9fcf1d | ||
|
|
8bab6408e0 | ||
|
|
be03852aa8 | ||
|
|
c562dbbb19 | ||
|
|
d47f2e2acc | ||
|
|
a8e8598b71 | ||
|
|
c759e395a2 | ||
|
|
e0dc9eb988 | ||
|
|
88b4d059ef | ||
|
|
10f32bce21 | ||
|
|
fab0a978c0 | ||
|
|
ec0868baf6 | ||
|
|
ff036770de | ||
|
|
05af9bce96 | ||
|
|
ff94827328 | ||
|
|
aa824a25ca | ||
|
|
8dd1a36e72 | ||
|
|
e502833abe | ||
|
|
1aafc1c083 | ||
|
|
099db8cf1e | ||
|
|
ca62aec622 | ||
|
|
5ba5a6fc9f | ||
|
|
4476cc3c3d | ||
|
|
b6f6267019 | ||
|
|
4c57e11d8f | ||
|
|
7992c89828 | ||
|
|
ffdd6a70f1 | ||
|
|
0f70dfbb61 | ||
|
|
cff4bac9c6 | ||
|
|
ca7e6922b3 | ||
|
|
988aaf421c | ||
|
|
880c3ecf57 | ||
|
|
2488331d42 | ||
|
|
1fdf8e2759 | ||
|
|
dd608c50d5 | ||
|
|
c007038152 | ||
|
|
fd0896a7c8 | ||
|
|
5eb22f717a | ||
|
|
d1bd31a4bc | ||
|
|
bea6267981 | ||
|
|
7cf045623f | ||
|
|
e35bfab126 | ||
|
|
54fe322b6d | ||
|
|
810936476f | ||
|
|
80785c39a6 | ||
|
|
ca5b3daf3d | ||
|
|
67107928c7 | ||
|
|
75b6be1725 | ||
|
|
5d9a6ffb52 | ||
|
|
9e4befec1c | ||
|
|
f3dd536f6a | ||
|
|
9a9aa7b7f7 | ||
|
|
fba97e0a54 | ||
|
|
3f4744daf2 | ||
|
|
250202c4f2 | ||
|
|
cbd6c84d42 | ||
|
|
eb02171890 | ||
|
|
9ab7ea9cd5 | ||
|
|
007e30cb80 | ||
|
|
8c9f9ee8ce | ||
|
|
8768660bb8 | ||
|
|
4b839dfa02 | ||
|
|
082725fe59 | ||
|
|
2ed4169aa7 | ||
|
|
f27c3760b5 | ||
|
|
91c6a4daf3 | ||
|
|
3d8b5e5494 | ||
|
|
262e79b220 | ||
|
|
2d434e6953 | ||
|
|
906e01185e | ||
|
|
8754684c48 | ||
|
|
54ce743e20 | ||
|
|
d7163a795d | ||
|
|
2a588fd8dd | ||
|
|
fa134f3c3d | ||
|
|
10c1b91ecc | ||
|
|
217e3c3d7e | ||
|
|
e1af6ad1f9 | ||
|
|
8e88a3b54a | ||
|
|
09759e06b0 | ||
|
|
4438188cc1 | ||
|
|
25cf28155e | ||
|
|
80552f69b7 | ||
|
|
8861812d22 | ||
|
|
363f424ec5 | ||
|
|
7d3671d207 | ||
|
|
39e96989c4 | ||
|
|
7267078670 | ||
|
|
1c98908d20 | ||
|
|
99aabafa01 | ||
|
|
c2696aad1a | ||
|
|
7013100660 | ||
|
|
b941988f6d | ||
|
|
c93c0ca5b4 | ||
|
|
658ef6e5cd | ||
|
|
d5a3d22c31 | ||
|
|
8b6585f9a3 | ||
|
|
e470fbfa72 | ||
|
|
2c49fe49d6 | ||
|
|
903588de7f | ||
|
|
8eeb18c79b | ||
|
|
5bec716fa4 | ||
|
|
b07c5d990a | ||
|
|
2dfc9408b7 | ||
|
|
3781626643 | ||
|
|
f9e5735edc | ||
|
|
70ee96cffe | ||
|
|
7e36112181 | ||
|
|
9f1817fd9c | ||
|
|
4245f13b69 | ||
|
|
5c8edd7337 | ||
|
|
8aa862d7ef | ||
|
|
6419acc71d | ||
|
|
abe46dfa18 | ||
|
|
02b064bc94 | ||
|
|
5cb0a3fbf7 | ||
|
|
3c0d6b6f23 | ||
|
|
b6e38e2cf8 | ||
|
|
56f9dfddad | ||
|
|
8a8be6660e | ||
|
|
2236a29aef | ||
|
|
018745b405 | ||
|
|
f25aba392b | ||
|
|
4958752d6f | ||
|
|
ec1ba0096f | ||
|
|
132d28b22a | ||
|
|
436f46a088 | ||
|
|
a16b62762d | ||
|
|
d2a88178cc | ||
|
|
7cc2773a10 | ||
|
|
f637fd145d | ||
|
|
689d2c74d3 | ||
|
|
54c333e64d | ||
|
|
a771b888b0 | ||
|
|
30379e879e | ||
|
|
dc7de12994 | ||
|
|
0ea4ccd793 | ||
|
|
dd8ddb6116 | ||
|
|
de889f3342 | ||
|
|
5cfaf7cdea | ||
|
|
444c110278 | ||
|
|
bc6f75fedd | ||
|
|
c59656f610 | ||
|
|
869f9a0346 | ||
|
|
60eab73c17 | ||
|
|
104d738cb9 | ||
|
|
230c6a017f | ||
|
|
4d96dca30f | ||
|
|
8fa83c3d9e | ||
|
|
46dd32aa01 | ||
|
|
e5c531edeb | ||
|
|
c57b0d3fdb | ||
|
|
0399650bc9 | ||
|
|
4697c902fd | ||
|
|
d717f5db4f | ||
|
|
0f8c27c703 | ||
|
|
bac5057a37 | ||
|
|
701b284c21 | ||
|
|
b7a5df624a | ||
|
|
1b8870dc68 | ||
|
|
024c84928d | ||
|
|
2c5f83bdc3 | ||
|
|
1e60dd17b4 | ||
|
|
7b3b35fcc5 | ||
|
|
62a72b6ab8 | ||
|
|
aff94d2e5e | ||
|
|
6432e55c7e | ||
|
|
7c79c659ea | ||
|
|
ea66b49e73 | ||
|
|
ccf693d517 | ||
|
|
41810fe9b7 | ||
|
|
fb4388b9e4 | ||
|
|
a0dc8fd44a | ||
|
|
63182e80e0 | ||
|
|
f786c8c0bc | ||
|
|
838beb4db3 | ||
|
|
e8d42810e6 | ||
|
|
9a32ecfa17 | ||
|
|
35f4ba710c | ||
|
|
7f664d6fc7 | ||
|
|
b93a47c35b | ||
|
|
6108c15a09 | ||
|
|
3f49c70176 | ||
|
|
78cd787622 | ||
|
|
bde2f2e43d | ||
|
|
819f9a84c9 | ||
|
|
ee516370d0 | ||
|
|
03fcac8d1f | ||
|
|
becba49c87 | ||
|
|
7522ca87d2 | ||
|
|
224103b181 | ||
|
|
fa32e922d3 | ||
|
|
68ceaa82e3 | ||
|
|
2e7e02b681 | ||
|
|
0febba6169 | ||
|
|
1aaaa84816 | ||
|
|
3e862a0b60 | ||
|
|
a957a6e543 | ||
|
|
240573d5ff | ||
|
|
c18695ea3b | ||
|
|
ebbc29b357 | ||
|
|
233e588c3b | ||
|
|
83ad01c37b | ||
|
|
3f25b7e247 | ||
|
|
ca3f5a5ebf | ||
|
|
5fcbd5bbde | ||
|
|
6d537f5d29 | ||
|
|
ed0ba7072f | ||
|
|
e5047bb27f | ||
|
|
f0df778b81 | ||
|
|
1cc50efb9d | ||
|
|
8bbbd12d3d | ||
|
|
6374bcef3f | ||
|
|
eff339a165 | ||
|
|
2de443b4fb | ||
|
|
31abb99698 | ||
|
|
443757125d | ||
|
|
f355a4e384 | ||
|
|
1739d5ec16 | ||
|
|
aa51c37774 | ||
|
|
dc57774f63 | ||
|
|
b25822189e | ||
|
|
28c1f63871 | ||
|
|
ba11994396 | ||
|
|
fe41d5c799 | ||
|
|
9d5ee0b9ac | ||
|
|
8cf519cf16 | ||
|
|
67147237e4 | ||
|
|
710384ef89 | ||
|
|
8f3f6c49f1 | ||
|
|
1d250748ca | ||
|
|
cd5527e07e | ||
|
|
3f131bb40d | ||
|
|
2491163e92 | ||
|
|
3005c3e722 | ||
|
|
4bf71f6a66 | ||
|
|
40f9687fd1 | ||
|
|
1f22d30eb2 | ||
|
|
2f7b01aa6f | ||
|
|
f5823abaa0 | ||
|
|
4ce2da89cb | ||
|
|
e00fbbeedb | ||
|
|
99a9fadcab | ||
|
|
4faa7180bc | ||
|
|
b28b86ad9f | ||
|
|
dfcba6cafc | ||
|
|
3bb9bc1e12 | ||
|
|
047fe169bb | ||
|
|
7cf5688273 | ||
|
|
d41e7f0f81 | ||
|
|
2c3e5c8eb7 | ||
|
|
868c8c3f3a | ||
|
|
f20a6a2563 | ||
|
|
2321f016d9 | ||
|
|
c479c73331 | ||
|
|
8d08687706 | ||
|
|
bfb95e632c | ||
|
|
43a771e35a | ||
|
|
f685b5cedc | ||
|
|
422fcfd9e3 | ||
|
|
1a7ddd1797 | ||
|
|
78bf7977f3 | ||
|
|
9979ee2eab | ||
|
|
a8487af7a5 | ||
|
|
4c7691dcfa | ||
|
|
ab232c3f27 | ||
|
|
3c0256c930 | ||
|
|
b387f54c4a | ||
|
|
a3bc436f53 | ||
|
|
a3644aa1ba | ||
|
|
54a73c8288 | ||
|
|
f2986195bd | ||
|
|
54303a4d00 | ||
|
|
7b09c726cc | ||
|
|
bd1779d53d | ||
|
|
5fbbb27a99 | ||
|
|
598cde07fb | ||
|
|
bfd5866cb0 | ||
|
|
2dcbdd601a | ||
|
|
50f8099ebb | ||
|
|
fcb590d227 | ||
|
|
1d48313dcf | ||
|
|
3f4206fe4e | ||
|
|
984aa362ed | ||
|
|
7db5937bb2 | ||
|
|
3e7fc28ab9 | ||
|
|
ddf82aa900 | ||
|
|
fc3716c0e9 | ||
|
|
d63e05f4ef | ||
|
|
dcdbe22d86 | ||
|
|
44eab143ab | ||
|
|
4c0f415bad | ||
|
|
6cb97e75c9 | ||
|
|
52f08ff793 | ||
|
|
cd9f72db09 | ||
|
|
56518de40b | ||
|
|
b9c2f8fd49 | ||
|
|
f2a4fe493a | ||
|
|
b98863b6a7 | ||
|
|
1751bf30ba | ||
|
|
7e406436fa | ||
|
|
62f25ad33f | ||
|
|
785af1611c | ||
|
|
f8d2768816 | ||
|
|
8aa311131e | ||
|
|
69f94f64f0 | ||
|
|
d211c6bbc9 | ||
|
|
8a773cdf66 | ||
|
|
851eb06d5e | ||
|
|
a74f47d19c | ||
|
|
08157dde81 | ||
|
|
ce1797cdb5 | ||
|
|
025c8f6ad1 | ||
|
|
14e2f003e2 | ||
|
|
96c535923d | ||
|
|
eea6a57e1f | ||
|
|
abb6ccf08d | ||
|
|
6a7e65dd82 | ||
|
|
326e52e5f8 | ||
|
|
e050f2437b | ||
|
|
c052ff5c9e | ||
|
|
c25d7932e7 | ||
|
|
df7acfdd89 | ||
|
|
aab41a7b2d | ||
|
|
587bd2239f | ||
|
|
d4f543dcf6 | ||
|
|
49b6522e3b | ||
|
|
9fbeab43f7 | ||
|
|
22afaf202d | ||
|
|
575dc41c30 | ||
|
|
472c5f9b44 | ||
|
|
b6f92bf7c2 | ||
|
|
3ef9ee3c60 | ||
|
|
1d93611ee7 | ||
|
|
044cc34b13 | ||
|
|
ecd603a9cf | ||
|
|
7a4df6cc1a | ||
|
|
9fc73d258f | ||
|
|
19a19f10d6 | ||
|
|
9c7ce581e7 | ||
|
|
c2f5609ea2 | ||
|
|
1bb1fbbc84 | ||
|
|
01345f2bbf | ||
|
|
fd2cfe8080 | ||
|
|
ef061ef32b | ||
|
|
50244bf8ea | ||
|
|
b509aa7df1 | ||
|
|
ec41dd2e70 | ||
|
|
2368161132 | ||
|
|
420656ea95 | ||
|
|
827adada11 | ||
|
|
adffab13d9 | ||
|
|
62125c5b72 | ||
|
|
c3a573229d | ||
|
|
b979a32abf | ||
|
|
66ca301ca9 | ||
|
|
7e4835801d | ||
|
|
2d109c7630 | ||
|
|
5d97f90fd8 | ||
|
|
84272b4725 | ||
|
|
49af0bf631 | ||
|
|
80cf483ded | ||
|
|
90a9d69cdf | ||
|
|
010952e9c0 | ||
|
|
0cb1adb38a | ||
|
|
e304fb11f2 | ||
|
|
ae0ce1510a | ||
|
|
f24009919e | ||
|
|
113ac52c4e | ||
|
|
fa63920938 | ||
|
|
014c9f518f | ||
|
|
128e4bf9da | ||
|
|
1e8154cde3 | ||
|
|
01b6281db0 | ||
|
|
806f509b79 | ||
|
|
a9d7bf8698 | ||
|
|
69bd70a61c | ||
|
|
7948a3cba7 | ||
|
|
061cec61f5 | ||
|
|
774fb546ef | ||
|
|
5e740012c7 | ||
|
|
07a036670b | ||
|
|
18d5c37fec | ||
|
|
f278fa2147 | ||
|
|
9801c5d11c | ||
|
|
3f28a79c69 | ||
|
|
fcd27a9506 | ||
|
|
04f8b6b4a1 | ||
|
|
d82c4687de | ||
|
|
f96a3b7330 | ||
|
|
ae78bb82b2 | ||
|
|
8f372838e7 | ||
|
|
bbb4bd1996 | ||
|
|
90e8cac12f | ||
|
|
778f563611 | ||
|
|
51b951643b | ||
|
|
82b3c9dda6 | ||
|
|
9cd6727d12 | ||
|
|
1fe5b8927a | ||
|
|
526ea43ae4 | ||
|
|
0130f7d984 | ||
|
|
75de6eb263 | ||
|
|
3f612da0ac | ||
|
|
b6549c401b | ||
|
|
aee62ebd2d | ||
|
|
4d06c80983 | ||
|
|
167089c194 | ||
|
|
ec5480f330 | ||
|
|
7dbda02e18 | ||
|
|
38b04d92bd | ||
|
|
e4e04113b0 | ||
|
|
3594ae0248 | ||
|
|
9ef0c35932 | ||
|
|
ae03ac9878 | ||
|
|
30a2da196b | ||
|
|
125d4584bb | ||
|
|
ed6ba797b1 | ||
|
|
c6dbc2f572 | ||
|
|
40ca1fc5e5 | ||
|
|
83960e51a2 | ||
|
|
23e4f9e92f | ||
|
|
35042af9ec | ||
|
|
b6f51bdae3 | ||
|
|
cb0b47bcd4 | ||
|
|
cdb188d7c8 | ||
|
|
6d3bb42783 | ||
|
|
8bed755ab9 | ||
|
|
724615fe3e | ||
|
|
92a2e9532b | ||
|
|
e43392d013 | ||
|
|
7473a74576 | ||
|
|
812b9ad97c | ||
|
|
109cda8c30 | ||
|
|
e47fc2d513 | ||
|
|
bf32aa52fa | ||
|
|
9c351ac215 | ||
|
|
ed3305ee14 | ||
|
|
b75286807d | ||
|
|
611006af73 | ||
|
|
7730ffda49 | ||
|
|
8fa3c30073 | ||
|
|
c69417664f | ||
|
|
4d7f779c28 | ||
|
|
07149fb846 | ||
|
|
1b330f5d76 | ||
|
|
6ce16a8796 | ||
|
|
87ca7a84af | ||
|
|
7c7a643cc3 | ||
|
|
ac367e92c1 | ||
|
|
8a9647ac3f | ||
|
|
a5b732c818 | ||
|
|
e472006efa | ||
|
|
c1665e0ca0 | ||
|
|
d1c79b8cd6 | ||
|
|
fd0cf263eb | ||
|
|
0ac5dbc79b | ||
|
|
7aee3b9601 | ||
|
|
8f7323e685 | ||
|
|
33d39f33d7 | ||
|
|
257cd69842 | ||
|
|
a8d057a164 | ||
|
|
86c6f8ab09 | ||
|
|
1a58432b86 | ||
|
|
4806f7a932 | ||
|
|
9a74b049dd | ||
|
|
4b72d4d7c4 | ||
|
|
f5aa90d1ab | ||
|
|
97a21ab738 | ||
|
|
1c68f7bdee | ||
|
|
dcebee8ca6 | ||
|
|
5a931fd592 | ||
|
|
d79910c0ae | ||
|
|
cf11f08698 | ||
|
|
a13a20b4e4 | ||
|
|
453a079aa6 | ||
|
|
9b8f207fde | ||
|
|
667e7b0d4e | ||
|
|
c76a634721 | ||
|
|
895db4a26a | ||
|
|
d389a8c4e2 | ||
|
|
affe2433a9 | ||
|
|
1b781d557e | ||
|
|
7fb3806693 | ||
|
|
437623e69c | ||
|
|
1cf8f60e75 | ||
|
|
c2d96b3788 | ||
|
|
bd2e365181 | ||
|
|
b5b3e9483d | ||
|
|
4831735a50 | ||
|
|
10a35d132a | ||
|
|
5567a55665 | ||
|
|
f08b01359d | ||
|
|
269bc59f5b | ||
|
|
093d371a83 | ||
|
|
10e00dc5bf | ||
|
|
13c8d0afa0 | ||
|
|
1dda883862 | ||
|
|
a016127afe | ||
|
|
6e10579633 | ||
|
|
a446ecd4fb | ||
|
|
8da55ec81c | ||
|
|
1caeaa0eb5 | ||
|
|
94aa642c30 | ||
|
|
fbf8a04728 | ||
|
|
a712949cd1 | ||
|
|
e0557192c4 | ||
|
|
ad914bf3b1 | ||
|
|
a7b91c19dd | ||
|
|
5aae42a2e4 | ||
|
|
034541671d | ||
|
|
355c98aa2a | ||
|
|
48234c908d | ||
|
|
e99ea77069 | ||
|
|
27ce6b622c | ||
|
|
24b5447ba7 | ||
|
|
9490034412 | ||
|
|
1abb180d1c | ||
|
|
b8b112cb7b | ||
|
|
fcb66a43cc | ||
|
|
4ec6fa3eb0 | ||
|
|
b9ebf2bcca | ||
|
|
03102cd681 | ||
|
|
e905503bb9 | ||
|
|
5857a937d5 | ||
|
|
ed4646153f | ||
|
|
34df653536 | ||
|
|
8954e51224 | ||
|
|
ab18225237 | ||
|
|
a7e2928f1e | ||
|
|
de33c7375b | ||
|
|
afe3ce4ab5 | ||
|
|
095995da87 | ||
|
|
5832523446 | ||
|
|
68be10b661 | ||
|
|
0a9ce752cc | ||
|
|
9d76265e33 | ||
|
|
4b30e33ce8 | ||
|
|
34bdd15364 | ||
|
|
caa7b10091 | ||
|
|
ac56a5ffdd | ||
|
|
aa74178622 | ||
|
|
61b7752cce | ||
|
|
0f8395365e | ||
|
|
2fd9de8456 | ||
|
|
a53d8cf5c7 | ||
|
|
551ca6771f | ||
|
|
04bae1efd9 | ||
|
|
e09a9185f5 | ||
|
|
fe89dc3ac4 | ||
|
|
66dbd22805 | ||
|
|
826be00fbc | ||
|
|
a88c9bfaac | ||
|
|
c8982fb2ab | ||
|
|
5e13865c5c | ||
|
|
e70169f591 | ||
|
|
c0eeea5c87 | ||
|
|
6e36390826 | ||
|
|
675c285dff | ||
|
|
e408250b7b | ||
|
|
235ae5b7c5 | ||
|
|
f326de9c68 | ||
|
|
fc56101afb | ||
|
|
2f66faa8aa | ||
|
|
2116736bac | ||
|
|
afb02b37f1 | ||
|
|
2eb1cffa8f | ||
|
|
4b18f648ec | ||
|
|
b268f4e453 | ||
|
|
72560736bd | ||
|
|
e038584f2b | ||
|
|
90960afe94 | ||
|
|
aaf203ded3 | ||
|
|
cf120047af | ||
|
|
fa3b1bb203 | ||
|
|
75ddd71585 | ||
|
|
242ff3bcda | ||
|
|
d98ed61bf9 | ||
|
|
ca3ef737e2 | ||
|
|
dfc7a9c75b | ||
|
|
c11112ac00 | ||
|
|
f88cb8e788 | ||
|
|
e88564dbf1 | ||
|
|
1543405443 | ||
|
|
2700ec010a | ||
|
|
7ec91cf4f1 | ||
|
|
469bea5b56 | ||
|
|
5c823e79e7 | ||
|
|
aed949724e | ||
|
|
e24e46eade | ||
|
|
8d49ce7cf4 | ||
|
|
8b71d81d23 | ||
|
|
7df5f1f4d3 | ||
|
|
5dc22b1d42 | ||
|
|
989212ee46 | ||
|
|
80eccc1057 | ||
|
|
f26fb3b5b7 | ||
|
|
1da3f83138 | ||
|
|
ca47fb50ce | ||
|
|
af51652b87 | ||
|
|
f925c1bec1 | ||
|
|
8cf203f6f3 | ||
|
|
c1bbbc4334 | ||
|
|
491bf56e6d | ||
|
|
eb90779d28 | ||
|
|
2832e3ab8c | ||
|
|
fc0693dbc1 | ||
|
|
2efb0154ce | ||
|
|
1388a7926f | ||
|
|
5be16235dd | ||
|
|
5c825755aa | ||
|
|
cb45b113fd | ||
|
|
fddb1809de | ||
|
|
2393271c03 | ||
|
|
aba51afc4b | ||
|
|
c800b2ff00 | ||
|
|
d28c115bbd | ||
|
|
fafd875493 | ||
|
|
36b5933866 | ||
|
|
d2f20b4e3f | ||
|
|
ed3e1fb7aa | ||
|
|
95bc70b440 | ||
|
|
2d9361b8f6 | ||
|
|
3355f16a30 | ||
|
|
4eb9586199 | ||
|
|
c25071f0b8 | ||
|
|
d6a69a838e | ||
|
|
b996114209 | ||
|
|
4c634b6fd0 | ||
|
|
8f18c3d581 | ||
|
|
47c1b3b295 | ||
|
|
6a22ae05d2 | ||
|
|
2c4eb67104 | ||
|
|
08f68c6634 | ||
|
|
5bb4de58d7 | ||
|
|
46c1e80c19 | ||
|
|
f72202c406 | ||
|
|
a72cb696f6 | ||
|
|
93452a0e80 | ||
|
|
ba2ddb8634 | ||
|
|
dc84d780c8 | ||
|
|
0be7965639 | ||
|
|
097fb4d819 | ||
|
|
e1c95ffaa7 | ||
|
|
3649168f15 | ||
|
|
0900ed204c | ||
|
|
4c85b1fad7 | ||
|
|
823a10712e | ||
|
|
85b79775ef | ||
|
|
13fb40defd | ||
|
|
830f2f2b01 | ||
|
|
02cfe5d653 | ||
|
|
c0c66e7d88 | ||
|
|
71b28721f7 | ||
|
|
880f32f4e2 | ||
|
|
9ec7631540 | ||
|
|
529b964ade | ||
|
|
b4058077c4 | ||
|
|
087f0e35a0 | ||
|
|
4958768ba7 | ||
|
|
b015d97d60 | ||
|
|
cc75b96e20 | ||
|
|
deb4891b2b | ||
|
|
58396b345d | ||
|
|
84aa0eca18 | ||
|
|
fb335107f6 | ||
|
|
0cfb447f42 | ||
|
|
386298a891 | ||
|
|
ebb5201416 | ||
|
|
fd59504781 | ||
|
|
d2dfcf2de5 | ||
|
|
e94866ce13 | ||
|
|
ec095578dd | ||
|
|
aa69d9bf11 | ||
|
|
122f355016 | ||
|
|
4c03199557 | ||
|
|
5b974d529e | ||
|
|
33208e663d | ||
|
|
8e853f5434 | ||
|
|
a594c517c8 | ||
|
|
b1406c6f65 | ||
|
|
4e927a1d1e | ||
|
|
d023f252c3 | ||
|
|
68e1bb08b9 | ||
|
|
43b27c90e4 | ||
|
|
7605c9a84a | ||
|
|
2eb5bf959c | ||
|
|
80fb3fea08 | ||
|
|
bbff88a8fb | ||
|
|
0633f491ba | ||
|
|
cacd6a9a14 | ||
|
|
ffd8fddff1 | ||
|
|
cda0e4150d | ||
|
|
50da726697 | ||
|
|
9110e2c365 | ||
|
|
ce1c7543d2 | ||
|
|
5b511a5f28 | ||
|
|
0a4f36c865 | ||
|
|
7334692d00 | ||
|
|
d55ba8e189 | ||
|
|
1f9e22eed2 | ||
|
|
5493ca5978 | ||
|
|
8a6c22ad6c | ||
|
|
b24d5f497d | ||
|
|
53f209b307 | ||
|
|
e8494f94ae | ||
|
|
62780a8112 | ||
|
|
e2978233bb | ||
|
|
d8ae741a94 | ||
|
|
cea4f5f444 | ||
|
|
76e3ef6749 | ||
|
|
1f175cacd6 | ||
|
|
3f7d12e35c | ||
|
|
b7de048b17 | ||
|
|
3f70b1238c | ||
|
|
3a42715095 | ||
|
|
960166b0f7 | ||
|
|
77ce64ff3f | ||
|
|
e1b0a0324d | ||
|
|
69580ac974 | ||
|
|
02553a7caa | ||
|
|
9965fa8540 | ||
|
|
86cadfd43e | ||
|
|
cb206eb2b7 | ||
|
|
45285761aa | ||
|
|
04a5818d21 | ||
|
|
8f5dbe61d9 | ||
|
|
b95cff8792 | ||
|
|
890359af58 | ||
|
|
eba37acafe | ||
|
|
3359c049e3 | ||
|
|
92ff40e650 | ||
|
|
c639387bfc | ||
|
|
6672f1a558 | ||
|
|
12648e0bc6 | ||
|
|
e5bf88a14d | ||
|
|
ab802cb4dd | ||
|
|
c9cf54b928 | ||
|
|
139dda07f9 | ||
|
|
26acf44cbe | ||
|
|
c5ac13977f | ||
|
|
7cdb059d34 | ||
|
|
77e9c8e4a9 | ||
|
|
c5a0935c45 | ||
|
|
adde8c49e0 | ||
|
|
8524ee3a3a | ||
|
|
8e2b4dc688 | ||
|
|
21594eb231 | ||
|
|
53cdcae9e9 | ||
|
|
480630323d | ||
|
|
c81bee11ed | ||
|
|
28510b8a4e | ||
|
|
56d48bc823 | ||
|
|
df2b4f0328 | ||
|
|
48aa3db82e | ||
|
|
4becb38c22 | ||
|
|
07ff716331 | ||
|
|
31d5abf02b | ||
|
|
93053a329f | ||
|
|
805c7ae08d | ||
|
|
c581a7ed57 | ||
|
|
7d17791fb8 | ||
|
|
ebdfca122e | ||
|
|
617257e540 | ||
|
|
ff2b0d34ce | ||
|
|
0c8aef2859 | ||
|
|
ef486091cf | ||
|
|
19fefee5e5 | ||
|
|
69db13338e | ||
|
|
ec088b2481 | ||
|
|
4f1fe5422e | ||
|
|
a93d2389cc | ||
|
|
d6939b3374 | ||
|
|
a2717d1111 | ||
|
|
d2143c79b2 | ||
|
|
d3997fb035 | ||
|
|
e4c731b48b | ||
|
|
a8637cffd9 | ||
|
|
4a32a517de | ||
|
|
8ad9343805 | ||
|
|
ee553bea11 | ||
|
|
127c80caf5 | ||
|
|
73cc13d786 | ||
|
|
f950d2f7b4 | ||
|
|
574ff6acea | ||
|
|
6271ae1c81 | ||
|
|
4d00399f21 | ||
|
|
0191634d61 | ||
|
|
f09131f5ca | ||
|
|
c79ed94aba | ||
|
|
f3556e8c99 | ||
|
|
8965be2fbf | ||
|
|
182a82773d | ||
|
|
1c73dee318 | ||
|
|
e32b697912 | ||
|
|
afd024c4c6 | ||
|
|
d9770441ff | ||
|
|
330aab9846 | ||
|
|
5f490e417e | ||
|
|
599fd346bf | ||
|
|
bbd5c039b5 | ||
|
|
4897d17671 | ||
|
|
d68d2380e1 | ||
|
|
b64eca4153 | ||
|
|
80035673ac | ||
|
|
d6b264b65e | ||
|
|
773a3191f5 | ||
|
|
1d72aa5c14 | ||
|
|
e2b561b2d5 | ||
|
|
2e7053e65c | ||
|
|
a45fab6c18 | ||
|
|
8d1c625d4b | ||
|
|
dfcb84c873 | ||
|
|
21f7fc13f4 | ||
|
|
3736159357 | ||
|
|
30400b2af3 | ||
|
|
0a1bc55d9b | ||
|
|
481df1acd5 | ||
|
|
91946a7adb | ||
|
|
c8b244f2b9 | ||
|
|
6a879a3f91 | ||
|
|
719f661d06 | ||
|
|
39f8edc395 | ||
|
|
115c381ea0 | ||
|
|
91eaa7ac03 | ||
|
|
05fe01e1cd | ||
|
|
32b37f9ee2 | ||
|
|
ce44d6c03a | ||
|
|
5d179987b2 | ||
|
|
40fe3fc25a | ||
|
|
6f66815874 | ||
|
|
98390818c2 | ||
|
|
339bc1c0d2 | ||
|
|
6bebcdeca5 | ||
|
|
ce4e56aef0 | ||
|
|
a925fb989f | ||
|
|
0335e0f752 | ||
|
|
f1c5d707d6 | ||
|
|
c9530db36e | ||
|
|
d49f0c7c92 | ||
|
|
ded19d6105 | ||
|
|
b7e2a4bd14 | ||
|
|
b3947dfbb7 | ||
|
|
1f50b7585e | ||
|
|
e5311f8921 | ||
|
|
f6bdf3e04a | ||
|
|
30a8db04ce | ||
|
|
c11af0bb10 | ||
|
|
362116d3b6 | ||
|
|
a8a33b1569 | ||
|
|
dd500512a1 | ||
|
|
888b787d9c | ||
|
|
afbad29c08 | ||
|
|
07fc0ef341 | ||
|
|
2eb4b9602f | ||
|
|
fe9a890243 |
10
.codacy.yml
10
.codacy.yml
@@ -1,10 +0,0 @@
|
||||
---
|
||||
engines:
|
||||
duplication:
|
||||
exclude_paths:
|
||||
- "*"
|
||||
exclude_paths:
|
||||
- vendor/**/*
|
||||
- tests/**/*
|
||||
- "**_test.go"
|
||||
- contrib/*
|
||||
@@ -2,7 +2,7 @@ FROM dokku/dokku:latest
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get install --no-install-recommends -y build-essential file nano && \
|
||||
apt-get install --no-install-recommends -y help2man shellcheck uuid-runtime wget xmlstarlet && \
|
||||
apt-get install --no-install-recommends -y software-properties-common help2man shellcheck uuid-runtime wget xmlstarlet && \
|
||||
apt-get clean autoclean && \
|
||||
apt-get autoremove --yes && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
"context": ".."
|
||||
},
|
||||
"containerEnv": {
|
||||
"DOKKU_HOSTNAME": "dokku.me",
|
||||
"DOKKU_HOST_ROOT": "${localWorkspaceFolder}/tmp/data/home/dokku",
|
||||
"DOKKU_LIB_HOST_ROOT": "${localWorkspaceFolder}/tmp/data/var/lib/dokku",
|
||||
"GO_ROOT_MOUNT": "${localWorkspaceFolder}:/go/src/github.com/dokku/dokku"
|
||||
},
|
||||
"customizations": {
|
||||
@@ -29,9 +31,10 @@
|
||||
],
|
||||
"overrideCommand": false,
|
||||
"postCreateCommand": "setup-dev-env",
|
||||
"postStartCommand": "printenv > .vscode/devcontainer.env",
|
||||
"runArgs": [
|
||||
"--init"
|
||||
],
|
||||
"workspaceFolder": "/root/go/src/github.com/dokku/dokku",
|
||||
"workspaceMount": "type=bind,source=${localWorkspaceFolder},target=/root/go/src/github.com/dokku/dokku,consistency=cached"
|
||||
}
|
||||
}
|
||||
28
.github/commands/bump-azure
vendored
28
.github/commands/bump-azure
vendored
@@ -18,7 +18,11 @@ main() {
|
||||
|
||||
cd tmp
|
||||
|
||||
$GH_FOLDER/bin/gh auth login --with-token <<<"$BOT_GITHUB_API_TOKEN"
|
||||
if [[ -n "$BOT_GITHUB_API_TOKEN" ]]; then
|
||||
$GH_FOLDER/bin/gh auth login --with-token <<<"$BOT_GITHUB_API_TOKEN"
|
||||
else
|
||||
echo "BOT_GITHUB_API_TOKEN is not set, skipping gh auth login"
|
||||
fi
|
||||
|
||||
echo "=====> Cloning quickstart templates"
|
||||
rm -rf azure-quickstart-templates >/dev/null
|
||||
@@ -35,15 +39,29 @@ main() {
|
||||
contents="$(jq --arg VERSION "$VERSION" '.parameters.dokkuVersion.defaultValue = $VERSION' application-workloads/dokku/dokku-vm/azuredeploy.json)"
|
||||
echo "${contents}" >application-workloads/dokku/dokku-vm/azuredeploy.json
|
||||
|
||||
# update the version in main.bicep
|
||||
# the line being updated looks like this:
|
||||
# param dokkuVersion string = '0.28.4'
|
||||
# we need to update the value of dokkuVersion to the new version
|
||||
sed -i "s/param dokkuVersion string = '[^']*'/param dokkuVersion string = '$VERSION'/" application-workloads/dokku/dokku-vm/main.bicep
|
||||
|
||||
echo "=====> Updating remote repository"
|
||||
git add application-workloads/dokku/dokku-vm
|
||||
git checkout -b dokku-$VERSION
|
||||
git commit -m "Update dokku-vm dokku version to $VERSION"
|
||||
git remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/azure-quickstart-templates.git"
|
||||
git push -f origin dokku-$VERSION
|
||||
if [[ -z "$BOT_GITHUB_API_TOKEN" ]] || [[ -z "$BOT_GITHUB_USERNAME" ]]; then
|
||||
echo "BOT_GITHUB_API_TOKEN or BOT_GITHUB_USERNAME is not set, skipping git remote set-url"
|
||||
else
|
||||
git remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/azure-quickstart-templates.git"
|
||||
git push -f origin dokku-$VERSION
|
||||
fi
|
||||
|
||||
echo "=====> Creating upstream pull request"
|
||||
../$GH_FOLDER/bin/gh pr create --head dokku:dokku-$VERSION --repo Azure/azure-quickstart-templates --title "Update dokku-vm dokku version to $VERSION" --body ''
|
||||
if [[ -z "$BOT_GITHUB_API_TOKEN" ]] || [[ -z "$BOT_GITHUB_USERNAME" ]]; then
|
||||
echo "BOT_GITHUB_API_TOKEN or BOT_GITHUB_USERNAME is not set, skipping gh pr create"
|
||||
else
|
||||
echo "=====> Creating upstream pull request"
|
||||
../$GH_FOLDER/bin/gh pr create --head dokku:dokku-$VERSION --repo Azure/azure-quickstart-templates --title "Update dokku-vm dokku version to $VERSION" --body ''
|
||||
fi
|
||||
|
||||
popd &>/dev/null
|
||||
}
|
||||
|
||||
1
.github/commands/ci-setup
vendored
1
.github/commands/ci-setup
vendored
@@ -1,6 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
set -x
|
||||
|
||||
DOKKU_DOMAIN=${DOKKU_DOMAIN:="dokku.me"}
|
||||
|
||||
|
||||
14
.github/dependabot.yml
vendored
14
.github/dependabot.yml
vendored
@@ -134,6 +134,13 @@ updates:
|
||||
open-pull-requests-limit: 2
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: gomod
|
||||
directory: "/plugins/scheduler-k3s"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 2
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: gomod
|
||||
directory: "/plugins/scheduler"
|
||||
schedule:
|
||||
@@ -267,6 +274,13 @@ updates:
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: npm
|
||||
directory: "/tests/apps/multi"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: npm
|
||||
directory: "/tests/apps/nodejs-express"
|
||||
schedule:
|
||||
|
||||
46
.github/workflows/ci.yml
vendored
46
.github/workflows/ci.yml
vendored
@@ -19,12 +19,12 @@ env:
|
||||
|
||||
jobs:
|
||||
check-commit:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
skip: ${{ steps.check-commit.outputs.skip }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
@@ -43,7 +43,7 @@ jobs:
|
||||
|
||||
build:
|
||||
name: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
needs: check-commit
|
||||
if: ${{ needs.check-commit.outputs.skip != 'true' }}
|
||||
outputs:
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
timeout-minutes: 45
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: set up qemu
|
||||
uses: docker/setup-qemu-action@v3
|
||||
@@ -70,7 +70,7 @@ jobs:
|
||||
- name: set matrix for build
|
||||
id: set-matrix
|
||||
run: |
|
||||
json=$(python .github/commands/matrix)
|
||||
json=$(python3 .github/commands/matrix)
|
||||
echo $json
|
||||
echo "matrix=$json" >> $GITHUB_OUTPUT
|
||||
|
||||
@@ -83,11 +83,11 @@ jobs:
|
||||
build-image-amd64:
|
||||
name: build-image.linux/amd64
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 20
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: build-image
|
||||
uses: ./.github/actions/build-image
|
||||
@@ -97,11 +97,11 @@ jobs:
|
||||
build-image-arm64:
|
||||
name: build-image.linux/arm64
|
||||
needs: build
|
||||
runs-on: buildjet-4vcpu-ubuntu-2204-arm
|
||||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 20
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: build-image
|
||||
uses: ./.github/actions/build-image
|
||||
@@ -111,16 +111,16 @@ jobs:
|
||||
unit-tests:
|
||||
name: unit.${{ matrix.index }}
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{fromJson(needs.build.outputs.matrix)}}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
@@ -151,15 +151,15 @@ jobs:
|
||||
docker-deploy-tests:
|
||||
name: docker
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
@@ -167,17 +167,21 @@ jobs:
|
||||
- name: ci-setup
|
||||
run: ./.github/commands/ci-setup
|
||||
|
||||
- name: docker-container-setup
|
||||
run: |
|
||||
./tests/ci/setup.sh docker
|
||||
|
||||
- name: test docker deploys
|
||||
shell: bash
|
||||
timeout-minutes: 20
|
||||
run: |
|
||||
./tests/ci/setup.sh docker
|
||||
docker exec dokku bash -c "cat /etc/sudoers.d/dokku-nginx"
|
||||
DOKKU_SSH_PORT=3022 sudo -E make -e test-ci-docker
|
||||
|
||||
go-tests:
|
||||
name: go.${{ matrix.index }}
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -186,10 +190,10 @@ jobs:
|
||||
GITHUB_NODE_INDEX: ${{ matrix.index }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
@@ -218,7 +222,7 @@ jobs:
|
||||
publish-test-results:
|
||||
name: publish-test-results
|
||||
needs: unit-tests
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
permissions:
|
||||
checks: write
|
||||
# the build-and-test job might be skipped, we don't need to run this job then
|
||||
@@ -226,7 +230,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: download test-results
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v5
|
||||
with:
|
||||
path: test-results
|
||||
|
||||
|
||||
4
.github/workflows/codeql-analysis.yml
vendored
4
.github/workflows/codeql-analysis.yml
vendored
@@ -30,7 +30,7 @@ concurrency:
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
# workaround for https://github.com/github/codeql/issues/14235
|
||||
- name: Remove go.work file
|
||||
|
||||
4
.github/workflows/docs.yml
vendored
4
.github/workflows/docs.yml
vendored
@@ -13,10 +13,10 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Cloning repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
32
.github/workflows/lint.yml
vendored
32
.github/workflows/lint.yml
vendored
@@ -17,20 +17,20 @@ concurrency:
|
||||
jobs:
|
||||
hadolint:
|
||||
name: hadolint
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Run hadolint
|
||||
uses: hadolint/hadolint-action@54c9adbab1582c2ef04b2016b760714a4bfde3cf
|
||||
# v3.0.0 => 4b5806eb9c6bee4954fc0e0cc3ad6175fc9782c1
|
||||
|
||||
markdown-lint:
|
||||
name: markdown-lint
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
@@ -44,10 +44,10 @@ jobs:
|
||||
|
||||
packer:
|
||||
name: packer
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Setup packer
|
||||
uses: hashicorp/setup-packer@main
|
||||
with:
|
||||
@@ -56,35 +56,29 @@ jobs:
|
||||
run: "make image/init/digitalocean"
|
||||
env:
|
||||
PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Get changed files in the docs folder
|
||||
id: changed-files-specific
|
||||
uses: tj-actions/changed-files@v44.5.5
|
||||
with:
|
||||
files: contrib/images/digitalocean/**
|
||||
- name: Run `packer validate`
|
||||
env:
|
||||
DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }}
|
||||
if: steps.changed-files-specific.outputs.any_changed == 'true'
|
||||
run: "make image/validate/digitalocean"
|
||||
|
||||
shellcheck:
|
||||
name: shellcheck
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Run shellcheck
|
||||
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38
|
||||
# 1.1.0 => 94e0aab03ca135d11a35e5bfc14e6746dc56e7e9
|
||||
|
||||
shfmt:
|
||||
name: shfmt
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Run shfmt
|
||||
uses: luizm/action-sh-checker@c6edb3de93e904488b413636d96c6a56e3ad671a
|
||||
uses: luizm/action-sh-checker@17bd25a6ee188d2b91f677060038f4ba37ba14b2
|
||||
# v0.5.0 => edd0e45ecff35b05f162052b50df50976c1b74fc
|
||||
env:
|
||||
SHFMT_OPTS: -l -bn -ci -i 2 -d
|
||||
@@ -93,10 +87,10 @@ jobs:
|
||||
|
||||
yamllint:
|
||||
name: yamllint
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Run yamllint
|
||||
uses: ibiqlik/action-yamllint@2576378a8e339169678f9939646ee3ee325e845c
|
||||
# v3.1.1 => 2576378a8e339169678f9939646ee3ee325e845c
|
||||
|
||||
37
.github/workflows/release.yml
vendored
37
.github/workflows/release.yml
vendored
@@ -19,13 +19,13 @@ on:
|
||||
jobs:
|
||||
release:
|
||||
name: release
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
env:
|
||||
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
outputs:
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -80,11 +80,11 @@ jobs:
|
||||
|
||||
build-digitalocean:
|
||||
name: build-digitalocean
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
needs: release
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup packer
|
||||
uses: hashicorp/setup-packer@main
|
||||
@@ -116,11 +116,11 @@ jobs:
|
||||
|
||||
bump-azure:
|
||||
name: bump-azure
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
needs: release
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Bump Azure Template
|
||||
env:
|
||||
BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
||||
@@ -136,6 +136,31 @@ jobs:
|
||||
runs-on: macos-latest
|
||||
needs: release
|
||||
steps:
|
||||
- name: Brew doctor
|
||||
run: |
|
||||
brew doctor || true
|
||||
- name: Brew cleanup
|
||||
run: |
|
||||
echo "====> Running brew cleanup"
|
||||
brew cleanup || true
|
||||
echo "====> Untapping homebrew/core"
|
||||
brew untap homebrew/core || true
|
||||
echo "====> Untapping homebrew/cask"
|
||||
brew untap homebrew/cask || true
|
||||
echo "====> Untapping aws/tap"
|
||||
brew untap aws/tap || true
|
||||
echo "====> Untapping hashicorp/tap"
|
||||
brew untap hashicorp/tap || true
|
||||
echo "====> Uninstalling openssl@1.1"
|
||||
brew uninstall openssl@1.1 || true
|
||||
echo "====> Uninstalling ruby@3.0"
|
||||
brew uninstall ruby@3.0 || true
|
||||
echo "====> Running brew cleanup"
|
||||
brew cleanup || true
|
||||
- name: Brew doctor
|
||||
run: brew doctor || true
|
||||
- name: Brew config
|
||||
run: brew config
|
||||
- name: Bump Homebrew Formula
|
||||
env:
|
||||
HOMEBREW_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -13,3 +13,4 @@ tmp
|
||||
coverage.out
|
||||
site
|
||||
go.work.sum
|
||||
node_modules
|
||||
1
.well-known/funding-manifest-urls
Normal file
1
.well-known/funding-manifest-urls
Normal file
@@ -0,0 +1 @@
|
||||
https://dokku.com/funding.json
|
||||
@@ -97,7 +97,7 @@ need to do
|
||||
|
||||
### Which branch to base the work
|
||||
|
||||
All changes should be be based on the latest master commit.
|
||||
All changes should be based on the latest master commit.
|
||||
|
||||
### Submitting Changes
|
||||
|
||||
|
||||
19
Dockerfile
19
Dockerfile
@@ -1,4 +1,4 @@
|
||||
FROM phusion/baseimage:focal-1.2.0
|
||||
FROM phusion/baseimage:noble-1.0.2
|
||||
|
||||
CMD ["/sbin/my_init"]
|
||||
|
||||
@@ -16,25 +16,32 @@ RUN addgroup --gid $DOKKU_GID dokku \
|
||||
COPY ./tests/dhparam.pem /tmp/dhparam.pem
|
||||
COPY ./build/package/ /tmp
|
||||
|
||||
ENV DOKKU_INIT_SYSTEM=sv
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
# hadolint ignore=DL3005,DL3008
|
||||
RUN mkdir -p /etc/apt/keyrings \
|
||||
&& mkdir -p /etc/apt/keyrings \
|
||||
&& apt-get remove -y systemd && apt-get autoremove -y && apt-get update && apt-get -y --no-install-recommends install gpg lsb-release openssl openssh-server rsync software-properties-common \
|
||||
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
|
||||
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \
|
||||
&& add-apt-repository ppa:cncf-buildpacks/pack-cli \
|
||||
&& apt-get update \
|
||||
&& apt-get -y --no-install-recommends install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \
|
||||
&& apt-get -y --no-install-recommends install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin pack-cli \
|
||||
&& curl -o /tmp/nixpacks.bash -sSL https://nixpacks.com/install.sh \
|
||||
&& chmod +x /tmp/nixpacks.bash \
|
||||
&& /tmp/nixpacks.bash \
|
||||
&& rm -rf /tmp/nixpacks.bash \
|
||||
&& echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections \
|
||||
&& echo "dokku dokku/skip_key_file boolean $DOKKU_SKIP_KEY_FILE" | debconf-set-selections \
|
||||
&& echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | debconf-set-selections \
|
||||
&& curl -sSL https://packagecloud.io/dokku/dokku/gpgkey | apt-key add - \
|
||||
&& echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ focal main" | tee /etc/apt/sources.list.d/dokku.list \
|
||||
&& echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ noble main" | tee /etc/apt/sources.list.d/dokku.list \
|
||||
&& mkdir -p /etc/nginx/ \
|
||||
&& cp /tmp/dhparam.pem /etc/nginx/dhparam.pem \
|
||||
&& apt-get update \
|
||||
&& apt-get upgrade -y \
|
||||
&& apt-get -y --no-install-recommends --only-upgrade install openssl openssh-server \
|
||||
&& apt-get -y --no-install-recommends install rsync "/tmp/dokku-$(dpkg --print-architecture).deb" \
|
||||
&& apt-get -y --no-install-recommends install lambda-builder "/tmp/dokku-$(dpkg --print-architecture).deb" \
|
||||
&& apt-get purge -y syslog-ng-core \
|
||||
&& apt-get autoremove -y \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
@@ -45,6 +52,7 @@ COPY ./docker .
|
||||
|
||||
RUN \
|
||||
rsync -a /tmp/ / \
|
||||
&& chmod +x /usr/local/bin/* \
|
||||
&& rm -rf /tmp/* \
|
||||
&& rm /etc/runit/runsvdir/default/sshd/down \
|
||||
&& chown -R dokku:dokku /home/dokku/ \
|
||||
@@ -59,7 +67,6 @@ RUN \
|
||||
&& ln -sf /mnt/dokku/var/lib/dokku/data /var/lib/dokku/data \
|
||||
&& ln -sf /mnt/dokku/var/lib/dokku/services /var/lib/dokku/services \
|
||||
&& mv /etc/my_init.d/00_regen_ssh_host_keys.sh /etc/my_init.d/15_regen_ssh_host_keys \
|
||||
&& rm -f /usr/bin/systemctl \
|
||||
&& rm -f /etc/nginx/sites-enabled/default /usr/share/nginx/html/index.html /etc/my_init.d/10_syslog-ng.init \
|
||||
&& rm -f /usr/local/openresty/nginx/conf/sites-enabled/default /usr/share/openresty/html/index.html \
|
||||
&& sed -i '/imklog/d' /etc/rsyslog.conf \
|
||||
|
||||
1142
HISTORY.md
1142
HISTORY.md
File diff suppressed because it is too large
Load Diff
8
Makefile
8
Makefile
@@ -11,7 +11,7 @@ PROCFILE_UTIL_URL ?= $(shell jq -r --arg name procfile-util --arg arch $(TARGET
|
||||
SIGIL_URL ?= $(shell jq -r --arg name gliderlabs-sigil --arg arch $(TARGETARCH) '.predependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||
SSHCOMMAND_URL ?= $(shell jq -r --arg name sshcommand --arg arch $(TARGETARCH) '.dependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||
STACK_URL ?= https://github.com/gliderlabs/herokuish.git
|
||||
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-22
|
||||
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-24
|
||||
DOKKU_LIB_ROOT ?= /var/lib/dokku
|
||||
PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/plugins
|
||||
CORE_PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/core-plugins
|
||||
@@ -54,7 +54,7 @@ go-build:
|
||||
basedir=$(PWD); \
|
||||
for dir in plugins/*; do \
|
||||
if [ -e $$dir/Makefile ]; then \
|
||||
$(MAKE) -e -C $$dir $(PLUGIN_MAKE_TARGET) || exit $$? ;\
|
||||
GO_ARGS='$(GO_ARGS)' CGO_ENABLED=0 GOOS=linux GOARCH=$(GOARCH) GOWORK=off $(MAKE) -e -C $$dir $(PLUGIN_MAKE_TARGET) || exit $$? ;\
|
||||
fi ;\
|
||||
done
|
||||
|
||||
@@ -64,7 +64,7 @@ ifndef PLUGIN_NAME
|
||||
$(error PLUGIN_NAME not specified)
|
||||
endif
|
||||
if [ -e plugins/$(PLUGIN_NAME)/Makefile ]; then \
|
||||
$(MAKE) -e -C plugins/$(PLUGIN_NAME) $(PLUGIN_MAKE_TARGET) || exit $$? ;\
|
||||
GO_ARGS='$(GO_ARGS)' CGO_ENABLED=0 GOOS=linux GOARCH=$(GOARCH) GOWORK=off $(MAKE) -e -C plugins/$(PLUGIN_NAME) $(PLUGIN_MAKE_TARGET) || exit $$? ;\
|
||||
fi
|
||||
|
||||
go-clean:
|
||||
@@ -131,7 +131,7 @@ plugin-dependencies: plugn procfile-util
|
||||
plugins: plugn procfile-util docker
|
||||
sudo -E dokku plugin:install --core
|
||||
|
||||
dependencies: apt-update docker-image-labeler docker-container-healthchecker lambda-builder netrc sshcommand plugn procfile-util docker help2man man-db sigil dos2unix jq parallel
|
||||
dependencies: apt-update jq docker-image-labeler docker-container-healthchecker lambda-builder netrc sshcommand plugn procfile-util docker help2man man-db sigil dos2unix parallel
|
||||
$(MAKE) -e stack
|
||||
|
||||
apt-update:
|
||||
|
||||
@@ -74,9 +74,8 @@ Support us with a monthly donation and help us continue our activities. [[Become
|
||||
|
||||
A fresh VM running any of the following operating systems:
|
||||
|
||||
- Ubuntu 20.04 / 22.04 x64 - Any currently supported release
|
||||
- Debian 10+ x64
|
||||
- Arch Linux x64 *(experimental)*
|
||||
- Ubuntu 22.04 / 24.04 (amd64/arm64) - Any currently supported release
|
||||
- Debian 11+ (amd64/arm64)
|
||||
|
||||
An SSH keypair that can be used for application deployment. If this exists before installation, it will be automatically imported into dokku.
|
||||
Otherwise, you will need to import the keypair manually after installation using `dokku ssh-keys:add`.
|
||||
@@ -86,8 +85,8 @@ Otherwise, you will need to import the keypair manually after installation using
|
||||
To install the latest stable release, run the following commands as a user who has access to `sudo`:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.7/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.7 bash bootstrap.sh
|
||||
wget -NP . https://dokku.com/install/v0.36.2/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.36.2 bash bootstrap.sh
|
||||
```
|
||||
|
||||
You can then proceed to configure your server domain (via `dokku domains:set-global`) and user access (via `dokku ssh-keys:add`) to complete the installation.
|
||||
|
||||
20
Vagrantfile
vendored
20
Vagrantfile
vendored
@@ -1,7 +1,7 @@
|
||||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
BOX_NAME = ENV["BOX_NAME"] || "bento/ubuntu-20.04"
|
||||
BOX_NAME = ENV["BOX_NAME"] || "bento/ubuntu-24.04"
|
||||
BOX_CPUS = ENV["BOX_CPUS"] || "1"
|
||||
BOX_MEMORY = ENV["BOX_MEMORY"] || "1024"
|
||||
DOKKU_DOMAIN = ENV["DOKKU_DOMAIN"] || "dokku.me"
|
||||
@@ -9,7 +9,7 @@ DOKKU_IP = ENV["DOKKU_IP"] || "10.0.0.2"
|
||||
PREBUILT_STACK_URL = File.exist?("#{File.dirname(__FILE__)}/stack.tgz") ? 'file:///root/dokku/stack.tgz' : nil
|
||||
PUBLIC_KEY_PATH = "#{Dir.home}/.ssh/id_rsa.pub"
|
||||
|
||||
make_cmd = "DEBIAN_FRONTEND=noninteractive make -e install"
|
||||
make_cmd = "TARGETARCH=$(dpkg --print-architecture) DEBIAN_FRONTEND=noninteractive make -e install"
|
||||
if PREBUILT_STACK_URL
|
||||
make_cmd = "PREBUILT_STACK_URL='#{PREBUILT_STACK_URL}' #{make_cmd}"
|
||||
end
|
||||
@@ -39,9 +39,11 @@ Vagrant::configure("2") do |config|
|
||||
end
|
||||
|
||||
config.vm.define "empty", autostart: false
|
||||
config.vm.synced_folder ".", "/vagrant", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
|
||||
|
||||
config.vm.define "dokku", primary: true do |vm|
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
|
||||
@@ -53,7 +55,7 @@ Vagrant::configure("2") do |config|
|
||||
vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
|
||||
end
|
||||
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git build-essential jq >/dev/null && cd /root/dokku && #{make_cmd}"
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git build-essential jq nginx >/dev/null && cd /root/dokku && #{make_cmd}"
|
||||
vm.vm.provision :shell do |s|
|
||||
s.inline = <<-EOT
|
||||
echo '"\e[5~": history-search-backward' > /root/.inputrc
|
||||
@@ -72,19 +74,19 @@ Vagrant::configure("2") do |config|
|
||||
config.vm.define "dokku-windows", autostart: false do |vm|
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git dos2unix >/dev/null"
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git dos2unix nginx >/dev/null"
|
||||
vm.vm.provision :shell, :inline => "cd /vagrant/ && export DOKKU_BRANCH=`git symbolic-ref -q --short HEAD 2>/dev/null` && export DOKKU_TAG=`git describe --tags --exact-match 2>/dev/null` && cd /root/ && cp /vagrant/bootstrap.sh ./ && dos2unix bootstrap.sh && bash bootstrap.sh"
|
||||
end
|
||||
|
||||
config.vm.define "dokku-deb", autostart: false do |vm|
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
vm.vm.provision :shell, :inline => "cd /root/dokku && make install-from-deb"
|
||||
end
|
||||
|
||||
config.vm.define "build", autostart: false do |vm|
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git >/dev/null && cd /root/dokku && #{make_cmd}"
|
||||
@@ -93,9 +95,9 @@ Vagrant::configure("2") do |config|
|
||||
|
||||
config.vm.define "build-arch", autostart: false do |vm|
|
||||
vm.vm.box = "bugyt/archlinux"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/dokku"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/dokku", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
if Pathname.new("#{File.dirname(__FILE__)}/../dokku-arch").exist?
|
||||
vm.vm.synced_folder "#{File.dirname(__FILE__)}/../dokku-arch", "/dokku-arch"
|
||||
vm.vm.synced_folder "#{File.dirname(__FILE__)}/../dokku-arch", "/dokku-arch", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
end
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
|
||||
22
bootstrap.sh
22
bootstrap.sh
@@ -3,7 +3,7 @@ set -eo pipefail
|
||||
[[ $TRACE ]] && set -x
|
||||
|
||||
# A script to bootstrap dokku.
|
||||
# It expects to be run on Ubuntu 20.04/22.04 via 'sudo`
|
||||
# It expects to be run on Ubuntu 22.04/24.04 via 'sudo`
|
||||
# If installing a tag higher than 0.3.13, it may install dokku via a package (so long as the package is higher than 0.3.13)
|
||||
# It checks out the dokku source code from GitHub into ~/dokku and then runs 'make install' from dokku source.
|
||||
|
||||
@@ -12,7 +12,7 @@ set -eo pipefail
|
||||
# That's good because it prevents our output overlapping with wget's.
|
||||
# It also means that we can't run a partially downloaded script.
|
||||
|
||||
SUPPORTED_VERSIONS="Debian [10, 11, 12], Ubuntu [18.04, 20.04, 22.04]"
|
||||
SUPPORTED_VERSIONS="Debian [11, 12], Ubuntu [22.04, 24.04]"
|
||||
|
||||
log-fail() {
|
||||
declare desc="log fail formatter"
|
||||
@@ -160,7 +160,7 @@ install-dokku-from-deb-package() {
|
||||
local NO_INSTALL_RECOMMENDS=${DOKKU_NO_INSTALL_RECOMMENDS:=""}
|
||||
local OS_ID
|
||||
|
||||
if ! in-array "$DOKKU_DISTRO_VERSION" "18.04" "20.04" "22.04" "10" "11" "12"; then
|
||||
if ! in-array "$DOKKU_DISTRO_VERSION" "22.04" "24.04" "10" "11" "12"; then
|
||||
log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
|
||||
fi
|
||||
|
||||
@@ -181,26 +181,26 @@ install-dokku-from-deb-package() {
|
||||
wget -nv -O - https://get.docker.com/ | sh
|
||||
fi
|
||||
|
||||
OS_ID="$(lsb_release -cs 2>/dev/null || echo "jammy")"
|
||||
OS_ID="$(lsb_release -cs 2>/dev/null || echo "noble")"
|
||||
if ! in-array "$DOKKU_DISTRO" "debian" "ubuntu" "raspbian"; then
|
||||
DOKKU_DISTRO="ubuntu"
|
||||
OS_ID="jammy"
|
||||
OS_ID="noble"
|
||||
fi
|
||||
|
||||
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
|
||||
OS_IDS=("focal" "jammy")
|
||||
OS_IDS=("jammy" "noble")
|
||||
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||
OS_ID="jammy"
|
||||
OS_ID="noble"
|
||||
fi
|
||||
elif [[ "$DOKKU_DISTRO" == "debian" ]]; then
|
||||
OS_IDS=("stretch" "buster" "bullseye" "bookworm")
|
||||
OS_IDS=("bullseye" "bookworm")
|
||||
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||
OS_ID="bullseye"
|
||||
OS_ID="bookworm"
|
||||
fi
|
||||
elif [[ "$DOKKU_DISTRO" == "raspbian" ]]; then
|
||||
OS_IDS=("buster" "bullseye")
|
||||
OS_IDS=("bullseye" "bookworm")
|
||||
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||
OS_ID="bullseye"
|
||||
OS_ID="bookworm"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
GO_ARGS ?=
|
||||
GO_PLUGIN_MAKE_TARGET ?= build
|
||||
GO_REPO_ROOT := /go/src/github.com/dokku/dokku
|
||||
BUILD_IMAGE := golang:1.21.6
|
||||
BUILD_IMAGE := golang:1.24.5
|
||||
GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache
|
||||
GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod
|
||||
GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT)
|
||||
|
||||
@@ -1,8 +1,24 @@
|
||||
FROM ubuntu:20.04
|
||||
FROM ubuntu:24.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update -qq && apt-get -qq -y --no-install-recommends install ca-certificates curl gcc git jq build-essential wget ruby-dev lintian python3 rpm help2man man-db sudo
|
||||
RUN curl -sL -o /usr/local/share/ca-certificates/GlobalSignRootCA_R3.crt https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
|
||||
RUN update-ca-certificates
|
||||
RUN apt-get update -qq && apt-get -qq -y --no-install-recommends install \
|
||||
adduser \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
coreutils \
|
||||
curl \
|
||||
gcc \
|
||||
git \
|
||||
help2man \
|
||||
jq \
|
||||
libc-bin \
|
||||
lintian \
|
||||
man-db \
|
||||
openssh-client \
|
||||
python3 \
|
||||
rpm \
|
||||
ruby-dev \
|
||||
sudo \
|
||||
wget
|
||||
RUN command -v fpm || gem install fpm
|
||||
|
||||
@@ -125,7 +125,7 @@ main() {
|
||||
|
||||
echo "====> Rebuild versions"
|
||||
if [[ -f "tmp/docs-build/versions.json" ]]; then
|
||||
python contrib/sort-mkdocs-versions
|
||||
python3 contrib/sort-mkdocs-versions
|
||||
else
|
||||
echo " No version file exists"
|
||||
fi
|
||||
|
||||
@@ -15,7 +15,7 @@ def download_file(filename, url):
|
||||
|
||||
|
||||
def upload_file(filename):
|
||||
versions = ["jammy"]
|
||||
versions = ["noble"]
|
||||
cmd_template = "package_cloud push dokku/dokku/ubuntu/{0} {1}"
|
||||
for version in versions:
|
||||
cmd = cmd_template.format(version, filename)
|
||||
@@ -25,7 +25,7 @@ def upload_file(filename):
|
||||
def main():
|
||||
auth = HTTPBasicAuth(PACKAGECLOUD_TOKEN, "")
|
||||
base = requests.get(
|
||||
"https://packagecloud.io/api/v1/repos/dokku/dokku/packages/deb/ubuntu/focal.json",
|
||||
"https://packagecloud.io/api/v1/repos/dokku/dokku/packages/deb/ubuntu/jammy.json",
|
||||
auth=auth,
|
||||
)
|
||||
data = base.json()
|
||||
|
||||
@@ -2,95 +2,95 @@
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "docker-container-healthchecker",
|
||||
"version": "0.11.0",
|
||||
"version": "0.14.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.11.0/docker-container-healthchecker-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.11.0/docker-container-healthchecker-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.14.0/docker-container-healthchecker-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.14.0/docker-container-healthchecker-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "docker-image-labeler",
|
||||
"version": "0.8.0",
|
||||
"version": "0.8.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.0/docker-image-labeler-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.0/docker-image-labeler-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.1/docker-image-labeler-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.1/docker-image-labeler-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lambda-builder",
|
||||
"version": "0.8.0",
|
||||
"version": "0.9.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/lambda-builder/releases/download/v0.8.0/lambda-builder-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/lambda-builder/releases/download/v0.8.0/lambda-builder-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/lambda-builder/releases/download/v0.9.1/lambda-builder-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/lambda-builder/releases/download/v0.9.1/lambda-builder-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netrc",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.2",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/netrc/releases/download/v0.10.0/netrc-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/netrc/releases/download/v0.10.0/netrc-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/netrc/releases/download/v0.10.2/netrc-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/netrc/releases/download/v0.10.2/netrc-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "procfile-util",
|
||||
"version": "0.19.0",
|
||||
"version": "0.20.3",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/procfile-util/releases/download/v0.19.0/procfile-util-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/procfile-util/releases/download/v0.19.0/procfile-util-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/procfile-util/releases/download/v0.20.3/procfile-util-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/procfile-util/releases/download/v0.20.3/procfile-util-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "sshcommand",
|
||||
"version": "0.18.0",
|
||||
"version": "0.20.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/sshcommand/releases/download/v0.18.0/sshcommand",
|
||||
"arm64": "https://github.com/dokku/sshcommand/releases/download/v0.18.0/sshcommand"
|
||||
"amd64": "https://github.com/dokku/sshcommand/releases/download/v0.20.0/sshcommand",
|
||||
"arm64": "https://github.com/dokku/sshcommand/releases/download/v0.20.0/sshcommand"
|
||||
}
|
||||
}
|
||||
],
|
||||
"predependencies": [
|
||||
{
|
||||
"name": "gliderlabs-sigil",
|
||||
"version": "0.11.0",
|
||||
"version": "0.11.4",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.0/sigil-linux-amd64",
|
||||
"arm64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.0/sigil-linux-arm64"
|
||||
"amd64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.4/sigil-linux-amd64",
|
||||
"arm64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.4/sigil-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "plugn",
|
||||
"version": "0.15.3",
|
||||
"version": "0.16.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/plugn/releases/download/v0.15.3/plugn-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/plugn/releases/download/v0.15.3/plugn-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/plugn/releases/download/v0.16.0/plugn-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/plugn/releases/download/v0.16.0/plugn-linux-arm64"
|
||||
}
|
||||
}
|
||||
],
|
||||
"recommendations": [
|
||||
{
|
||||
"name": "dokku-event-listener",
|
||||
"version": "0.17.0",
|
||||
"version": "0.17.2",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.0/dokku-event-listener-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.0/dokku-event-listener-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.2/dokku-event-listener-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.2/dokku-event-listener-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dokku-update",
|
||||
"version": "0.9.4",
|
||||
"version": "0.9.6",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/dokku-update/releases/download/v0.9.4/dokku-update",
|
||||
"arm64": "https://github.com/dokku/dokku-update/releases/download/v0.9.4/dokku-update"
|
||||
"amd64": "https://github.com/dokku/dokku-update/releases/download/v0.9.6/dokku-update",
|
||||
"arm64": "https://github.com/dokku/dokku-update/releases/download/v0.9.6/dokku-update"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "herokuish",
|
||||
"version": "0.9.2",
|
||||
"version": "0.11.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/gliderlabs/herokuish/releases/download/v0.9.2/herokuish_0.9.2_linux_x86_64.tgz",
|
||||
"arm64": "https://github.com/gliderlabs/herokuish/releases/download/v0.9.2/herokuish_0.9.2_linux_x86_64.tgz"
|
||||
"amd64": "https://github.com/gliderlabs/herokuish/releases/download/v0.11.0/herokuish_0.11.0_linux_x86_64.tgz",
|
||||
"arm64": "https://github.com/gliderlabs/herokuish/releases/download/v0.11.0/herokuish_0.11.0_linux_x86_64.tgz"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,7 @@ pkgs=(apache2-utils
|
||||
curl
|
||||
man-db
|
||||
|
||||
netcat
|
||||
netcat-traditional
|
||||
net-tools
|
||||
|
||||
parallel
|
||||
@@ -49,7 +49,7 @@ echo '--> Setting up dokku apt repository'
|
||||
curl -fsSL https://packagecloud.io/dokku/dokku/gpgkey -o /etc/apt/keyrings/dokku.asc
|
||||
|
||||
cat >/etc/apt/sources.list.d/dokku.list <<EOM
|
||||
deb [arch=amd64 signed-by=/etc/apt/keyrings/dokku.asc] https://packagecloud.io/dokku/dokku/ubuntu/ jammy main
|
||||
deb [arch=amd64 signed-by=/etc/apt/keyrings/dokku.asc] https://packagecloud.io/dokku/dokku/ubuntu/ noble main
|
||||
EOM
|
||||
|
||||
echo '--> Install dependencies for dokku from new repository'
|
||||
|
||||
@@ -355,7 +355,7 @@ function checkFirewall {
|
||||
elif [[ $OS == "CentOS Linux" ]] || [[ $OS == "CentOS Stream" ]] || [[ $OS == "Rocky Linux" ]] || [[ $OS == "AlmaLinux" ]]; then
|
||||
if [ -f /usr/lib/systemd/system/csf.service ]; then
|
||||
fw="csf"
|
||||
if [[ $(systemctl status $fw >/dev/null 2>&1) ]]; then
|
||||
if systemctl status $fw >/dev/null 2>&1; then
|
||||
|
||||
FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n"
|
||||
((PASS++))
|
||||
@@ -497,7 +497,7 @@ osv=0
|
||||
|
||||
if [[ $OS == "Ubuntu" ]]; then
|
||||
ost=1
|
||||
if [[ $VER == "22.10" ]] || [[ $VER == "22.04" ]] || [[ $VER == "20.04" ]] || [[ $VER == "18.04" ]] || [[ $VER == "16.04" ]]; then
|
||||
if [[ $VER == "24.04" ]] || [[ $VER == "22.10" ]] || [[ $VER == "22.04" ]] || [[ $VER == "20.04" ]] || [[ $VER == "18.04" ]] || [[ $VER == "16.04" ]]; then
|
||||
osv=1
|
||||
fi
|
||||
|
||||
@@ -513,6 +513,9 @@ elif [[ "$OS" =~ Debian.* ]]; then
|
||||
11)
|
||||
osv=1
|
||||
;;
|
||||
12)
|
||||
osv=1
|
||||
;;
|
||||
*)
|
||||
osv=2
|
||||
;;
|
||||
@@ -538,7 +541,7 @@ elif [[ $OS == "CentOS Stream" ]]; then
|
||||
fi
|
||||
elif [[ $OS == "Rocky Linux" ]]; then
|
||||
ost=1
|
||||
if [[ $VER =~ 8\. ]]; then
|
||||
if [[ $VER =~ 8\. ]] || [[ $VER =~ 9\. ]]; then
|
||||
osv=1
|
||||
else
|
||||
osv=2
|
||||
|
||||
@@ -12,7 +12,7 @@ variable "dokku_version" {
|
||||
}
|
||||
|
||||
source "digitalocean" "ubuntu" {
|
||||
image = "ubuntu-22-04-x64"
|
||||
image = "ubuntu-24-04-x64"
|
||||
region = "nyc1"
|
||||
size = "s-1vcpu-512mb-10gb"
|
||||
ssh_username = "root"
|
||||
@@ -30,6 +30,7 @@ build {
|
||||
"echo '--> Waiting until cloud-init is complete'",
|
||||
"/usr/bin/cloud-init status --wait",
|
||||
]
|
||||
valid_exit_codes = [0, 2]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
|
||||
@@ -134,7 +134,7 @@ fn-publish-package() {
|
||||
[[ "$RELEASE_TYPE" == "raspbian" ]] && DIST=raspbian
|
||||
|
||||
if [[ "$RELEASE_TYPE" == "raspbian" ]]; then
|
||||
OS_IDS=("buster" "bullseye")
|
||||
OS_IDS=("bullseye" "bookworm")
|
||||
for OS_ID in "${OS_IDS[@]}"; do
|
||||
log-info "(release-dokku) pushing deb to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||
@@ -144,7 +144,7 @@ fn-publish-package() {
|
||||
fi
|
||||
done
|
||||
elif [[ "$DIST" == "ubuntu" ]]; then
|
||||
OS_IDS=("focal" "jammy")
|
||||
OS_IDS=("jammy" "noble")
|
||||
for OS_ID in "${OS_IDS[@]}"; do
|
||||
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||
@@ -155,7 +155,7 @@ fn-publish-package() {
|
||||
done
|
||||
|
||||
DIST=debian
|
||||
OS_IDS=("buster" "bullseye" "bookworm")
|
||||
OS_IDS=("bullseye" "bookworm")
|
||||
for OS_ID in "${OS_IDS[@]}"; do
|
||||
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||
@@ -183,9 +183,9 @@ fn-replace-version() {
|
||||
|
||||
fn-repo-merged-requests() {
|
||||
declare desc="Retrieves all pull request ids since a given release of dokku"
|
||||
declare TAG="$1" IS_PATCH="$2"
|
||||
declare CURRENT_VERSION="$1" NEXT_VERSION="$2" IS_PATCH="$3"
|
||||
if [[ "$IS_PATCH" == "true" ]]; then
|
||||
git log "v${TAG}..HEAD" --oneline | grep "Merge pull request" | cut -d' ' -f 5 | cut -d '#' -f2
|
||||
git log "v${CURRENT_VERSION}..HEAD" --oneline | grep "Merge pull request" | cut -d' ' -f 5 | cut -d '#' -f2
|
||||
else
|
||||
curl -u "$RELEASE_GITHUB_USERNAME:$RELEASE_GITHUB_API_TOKEN" --fail -sS "https://api.github.com/search/issues?q=repo:dokku/dokku+milestone:v${NEXT_VERSION}+is:pr&per_page=100" | jq '.items[].number'
|
||||
fi
|
||||
@@ -225,14 +225,14 @@ fn-repo-update() {
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/development/release-process.md
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/getting-started/install/docker.md
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/getting-started/installation/index.md
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/home.html
|
||||
fn-replace-version "v$CURRENT_VERSION" "v$NEXT_VERSION" docs/home.html
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/template.html
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" README.md
|
||||
|
||||
if [[ "$RELEASE" == 'patch' ]]; then
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/assets/versions.json
|
||||
else
|
||||
versions=$(python -c 'import json,sys;d=json.load(sys.stdin);d["max-versions"].append("'"${NEXT_VERSION}"'"); print(json.dumps(d, indent=2, sort_keys=True))' <docs/assets/versions.json)
|
||||
versions=$(python3 -c 'import json,sys;d=json.load(sys.stdin);d["max-versions"].append("'"${NEXT_VERSION}"'"); print(json.dumps(d, indent=2, sort_keys=True))' <docs/assets/versions.json)
|
||||
echo "$versions" >docs/assets/versions.json
|
||||
git add docs/assets/versions.json
|
||||
fi
|
||||
@@ -256,7 +256,7 @@ fn-repo-update-history-and-commit() {
|
||||
|
||||
mkdir -p /tmp/github-data
|
||||
|
||||
for PULL_REQUEST_ID in $(fn-repo-merged-requests "$CURRENT_VERSION" "$IS_PATCH"); do
|
||||
for PULL_REQUEST_ID in $(fn-repo-merged-requests "$CURRENT_VERSION" "$NEXT_VERSION" "$IS_PATCH"); do
|
||||
ISSUE_FILE="/tmp/github-data/${PULL_REQUEST_ID}.json"
|
||||
if [[ ! -f "$ISSUE_FILE" ]]; then
|
||||
while true; do
|
||||
|
||||
@@ -70,7 +70,7 @@ def get_nav_from_selector(soup: BeautifulSoup, selector: str, docs_dir: str):
|
||||
children = os.listdir(docs_dir + "/" + child_dir)
|
||||
|
||||
children.sort(
|
||||
key=lambda x: list(map(int, x.split("-")[0].split("."))),
|
||||
key=lambda x: list(map(int, x.split("-")[0].split("."))) if "." in x else [-1, -1, -1],
|
||||
reverse=True,
|
||||
)
|
||||
children = [child_dir + c for c in children]
|
||||
|
||||
4
deb.mk
4
deb.mk
@@ -16,7 +16,7 @@ install-from-deb:
|
||||
|
||||
@echo "--> Installing dokku"
|
||||
wget -qO- https://packagecloud.io/dokku/dokku/gpgkey | sudo tee /etc/apt/trusted.gpg.d/dokku.asc
|
||||
@echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ $(shell lsb_release -cs 2>/dev/null || echo "focal") main" | sudo tee /etc/apt/sources.list.d/dokku.list
|
||||
@echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ $(shell lsb_release -cs 2>/dev/null || echo "noble") main" | sudo tee /etc/apt/sources.list.d/dokku.list
|
||||
sudo apt-get update -qq >/dev/null
|
||||
sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install dokku
|
||||
|
||||
@@ -27,7 +27,7 @@ deb-all: deb-setup deb-dokku
|
||||
deb-setup:
|
||||
@echo "-> Updating deb repository and installing build requirements"
|
||||
@sudo apt-get update -qq >/dev/null
|
||||
@sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install gcc git build-essential wget ruby-dev ruby1.9.1 lintian >/dev/null 2>&1
|
||||
@sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install gcc git build-essential wget ruby-dev lintian >/dev/null 2>&1
|
||||
@command -v fpm >/dev/null || sudo gem install fpm --no-ri --no-rdoc
|
||||
@ssh -o StrictHostKeyChecking=no git@github.com || true
|
||||
|
||||
|
||||
6
debian/control
vendored
6
debian/control
vendored
@@ -1,11 +1,11 @@
|
||||
Package: dokku
|
||||
Version: 0.34.7
|
||||
Version: 0.36.2
|
||||
Section: web
|
||||
Priority: optional
|
||||
Architecture: amd64
|
||||
Depends: apache2-utils, locales, git, cpio, curl, man-db, netcat, sshcommand, docker-engine-cs (>= 17.05.0) | docker-engine (>= 17.05.0) | docker-io (>= 17.05.0) | docker.io (>= 17.05.0) | docker-ce (>= 17.05.0) | docker-ee (>= 17.05.0) | moby-engine, docker-compose-plugin | moby-compose, docker-buildx-plugin | moby-buildx, docker-container-healthchecker, docker-image-labeler, lambda-builder, net-tools, netrc, parallel, procfile-util, rsync, rsyslog, dos2unix, jq, unzip, util-linux
|
||||
Depends: apache2-utils, locales, git, cpio, cron, curl, man-db, netcat, sshcommand, docker-engine-cs (>= 19.03.0) | docker-engine (>= 19.03.0) | docker-io (>= 19.03.0) | docker.io (>= 19.03.0) | docker-ce (>= 19.03.0) | docker-ee (>= 19.03.0) | moby-engine, docker-compose-plugin | moby-compose, docker-buildx-plugin | moby-buildx, docker-container-healthchecker, docker-image-labeler, lambda-builder, net-tools, netrc, parallel, procfile-util, rsync, dos2unix, jq, unzip, util-linux
|
||||
Recommends: herokuish, bash-completion, dokku-update, dokku-event-listener
|
||||
Pre-Depends: gliderlabs-sigil, nginx (>= 1.8.0) | openresty, bind9-dnsutils, cgroupfs-mount | cgroup-lite, plugn, sudo, python3, debconf
|
||||
Pre-Depends: gliderlabs-sigil, nginx (>= 1.8.0) | openresty, bind9-dnsutils, debconf, plugn, sudo, python3, rsyslog
|
||||
Maintainer: Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>
|
||||
Description: Docker-powered PaaS that helps build and manage the lifecycle of applications
|
||||
Dokku is an extensible, open source Platform as a Service
|
||||
|
||||
26
debian/prerm
vendored
26
debian/prerm
vendored
@@ -11,39 +11,39 @@ ps_backtrace() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
declare -i pid=$1
|
||||
declare -i pid="$1"
|
||||
ppid=0
|
||||
header_modifier=""
|
||||
while :; do
|
||||
if [ $ppid -ne 0 ]; then
|
||||
if [[ "$ppid" -ne 0 ]]; then
|
||||
header_modifier=h
|
||||
fi
|
||||
ppid=$(ps -o ppid= $pid)
|
||||
ps uww $header_modifier -p $pid
|
||||
if [ $pid -eq 1 ]; then
|
||||
ppid="$(ps -o ppid= "$pid")"
|
||||
ps uww $header_modifier -p "$pid"
|
||||
if [[ "$pid" -eq 1 ]] || [[ "$pid" -eq 0 ]]; then
|
||||
break
|
||||
fi
|
||||
pid=$ppid
|
||||
pid="$ppid"
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
# HACK: Ensure that we only delete data when purging dokku from the system
|
||||
if ps_backtrace $BASHPID 2>/dev/null | grep dpkg | grep -- "--purge" >/dev/null; then
|
||||
if ps_backtrace "$BASHPID" 2>/dev/null | grep dpkg | grep -- "--purge" >/dev/null; then
|
||||
echo "Processing purge"
|
||||
|
||||
echo "Destroying deployed applications"
|
||||
for app in $(DOKKU_QUIET_OUTPUT=1 dokku apps:list); do
|
||||
dokku --force apps:destroy $app
|
||||
dokku --force apps:destroy "$app"
|
||||
done
|
||||
|
||||
# HACK: Only disable core plugins, as we don't know what data users store in non-core plugin directories
|
||||
echo "Disabling all core plugins"
|
||||
find ${DOKKU_LIB_ROOT}/core-plugins/available -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
|
||||
if [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then
|
||||
rm ${DOKKU_LIB_ROOT}/plugins/available/$plugin
|
||||
PLUGIN_PATH=${DOKKU_LIB_ROOT}/core-plugins plugn disable $plugin
|
||||
PLUGIN_PATH=${DOKKU_LIB_ROOT}/plugins plugn disable $plugin
|
||||
find "${DOKKU_LIB_ROOT}/core-plugins/available" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
|
||||
if [[ ! -d "${DOKKU_LIB_ROOT}/plugins/available/$plugin" ]]; then
|
||||
rm "${DOKKU_LIB_ROOT}/plugins/available/$plugin"
|
||||
PLUGIN_PATH="${DOKKU_LIB_ROOT}/core-plugins" plugn disable "$plugin"
|
||||
PLUGIN_PATH="${DOKKU_LIB_ROOT}/plugins" plugn disable "$plugin"
|
||||
fi
|
||||
done
|
||||
else
|
||||
|
||||
4
docker/etc/cron.d/docker-builder-prune
Normal file
4
docker/etc/cron.d/docker-builder-prune
Normal file
@@ -0,0 +1,4 @@
|
||||
PATH=/usr/local/bin:/usr/bin:/bin
|
||||
SHELL=/bin/bash
|
||||
|
||||
5 4 * * * root /usr/local/bin/docker builder prune -f >>/var/log/dokku/builder-prune.log 2>&1
|
||||
@@ -20,7 +20,11 @@ log-warn() {
|
||||
support-userns() {
|
||||
chown 0:0 /usr/bin/sudo
|
||||
chmod 4755 /usr/bin/sudo
|
||||
chown 0:0 /usr/lib/sudo/sudoers.so
|
||||
if [[ -f /usr/lib/sudo/sudoers.so ]]; then
|
||||
chown 0:0 /usr/lib/sudo/sudoers.so
|
||||
elif [[ -f /usr/libexec/sudo/sudoers.so ]]; then
|
||||
chown 0:0 /usr/libexec/sudo/sudoers.so
|
||||
fi
|
||||
chown -R 0:0 /etc/sudoers
|
||||
chown -R 0:0 /etc/sudoers.d
|
||||
chown -R 0:0 /run/sshd
|
||||
@@ -54,6 +58,22 @@ main() {
|
||||
fi
|
||||
done
|
||||
|
||||
touch /etc/default/dokku
|
||||
echo "export DOKKU_INIT_SYSTEM=sv" >>/etc/default/dokku
|
||||
if [[ -x /usr/local/bin/docker ]]; then
|
||||
echo "export DOCKER_BIN=/usr/local/bin/docker" >>/etc/default/dokku
|
||||
fi
|
||||
|
||||
if [[ -n "$DOKKU_HOST_ROOT" ]]; then
|
||||
echo "export DOKKU_HOST_ROOT=$DOKKU_HOST_ROOT" >>/etc/default/dokku
|
||||
chown dokku:dokku /etc/default/dokku
|
||||
fi
|
||||
|
||||
if [[ -n "$DOKKU_LIB_HOST_ROOT" ]]; then
|
||||
echo "export DOKKU_LIB_HOST_ROOT=$DOKKU_LIB_HOST_ROOT" >>/etc/default/dokku
|
||||
chown dokku:dokku /etc/default/dokku
|
||||
fi
|
||||
|
||||
if [[ -f /mnt/dokku/plugin-list ]]; then
|
||||
while read line; do
|
||||
local plugin_name="$(echo "$line" | awk -F: '{print $1}')"
|
||||
@@ -65,22 +85,17 @@ main() {
|
||||
done </mnt/dokku/plugin-list
|
||||
fi
|
||||
|
||||
# run core install triggers to force create any folders that may be missing
|
||||
dokku plugin:install --core
|
||||
|
||||
if [[ -n "$DOKKU_HOSTNAME" ]]; then
|
||||
echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections
|
||||
echo "dokku dokku/vhost_enable boolean true" | debconf-set-selections
|
||||
dokku --quiet domains:set-global "$DOKKU_HOSTNAME"
|
||||
fi
|
||||
|
||||
if [[ -x /usr/local/bin/docker ]]; then
|
||||
mkdir -p /home/dokku/.dokkurc
|
||||
echo "export DOCKER_BIN=/usr/local/bin/docker" >"/home/dokku/.dokkurc/DOCKER_BIN"
|
||||
fi
|
||||
|
||||
if [[ -n "$DOKKU_HOST_ROOT" ]]; then
|
||||
touch /etc/default/dokku
|
||||
echo "export DOKKU_HOST_ROOT=$DOKKU_HOST_ROOT" >>/etc/default/dokku
|
||||
chown dokku:dokku /etc/default/dokku
|
||||
fi
|
||||
echo "dokku dokku/skip_key_file boolean true" | debconf-set-selections
|
||||
echo "dokku dokku/key_file string /root/.ssh/id_rsa.pub" | debconf-set-selections
|
||||
|
||||
NGINX_ROOT="/etc/nginx"
|
||||
if [[ -x /usr/bin/openresty ]]; then
|
||||
|
||||
133
docker/etc/ssh/sshd_config
Normal file
133
docker/etc/ssh/sshd_config
Normal file
@@ -0,0 +1,133 @@
|
||||
# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
|
||||
|
||||
# This is the sshd server system-wide configuration file. See
|
||||
# sshd_config(5) for more information.
|
||||
|
||||
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
|
||||
|
||||
# The strategy used for options in the default sshd_config shipped with
|
||||
# OpenSSH is to specify options with their default value where
|
||||
# possible, but leave them commented. Uncommented options change a
|
||||
# default value.
|
||||
|
||||
UseDNS no
|
||||
|
||||
Port 22
|
||||
Port 22333
|
||||
#AddressFamily any
|
||||
#ListenAddress 0.0.0.0
|
||||
#ListenAddress ::
|
||||
|
||||
# Disable legacy (protocol version 1) support in the server for new
|
||||
# installations. In future the default will change to require explicit
|
||||
# activation of protocol 1
|
||||
Protocol 2
|
||||
|
||||
# HostKey for protocol version 1
|
||||
#HostKey /etc/ssh_host_key
|
||||
# HostKeys for protocol version 2
|
||||
#HostKey /etc/ssh_host_rsa_key
|
||||
#HostKey /etc/ssh_host_dsa_key
|
||||
|
||||
# Lifetime and size of ephemeral version 1 server key
|
||||
#KeyRegenerationInterval 1h
|
||||
#ServerKeyBits 1024
|
||||
|
||||
# Logging
|
||||
# obsoletes QuietMode and FascistLogging
|
||||
SyslogFacility AUTHPRIV
|
||||
#LogLevel INFO
|
||||
|
||||
# Authentication:
|
||||
|
||||
#LoginGraceTime 2m
|
||||
#PermitRootLogin yes
|
||||
#StrictModes yes
|
||||
#MaxAuthTries 6
|
||||
#MaxSessions 10
|
||||
|
||||
#RSAAuthentication yes
|
||||
#PubkeyAuthentication yes
|
||||
#AuthorizedKeysFile .ssh/authorized_keys
|
||||
|
||||
# For this to work you will also need host keys in /etc/ssh_known_hosts
|
||||
#RhostsRSAAuthentication no
|
||||
# similar for protocol version 2
|
||||
#HostbasedAuthentication no
|
||||
# Change to yes if you don't trust ~/.ssh/known_hosts for
|
||||
# RhostsRSAAuthentication and HostbasedAuthentication
|
||||
#IgnoreUserKnownHosts no
|
||||
# Don't read the user's ~/.rhosts and ~/.shosts files
|
||||
#IgnoreRhosts yes
|
||||
|
||||
# To disable tunneled clear text passwords, change to no here! Also,
|
||||
# remember to set the UsePAM setting to 'no'.
|
||||
PasswordAuthentication no
|
||||
#PermitEmptyPasswords no
|
||||
|
||||
# SACL options
|
||||
# The default for the SACLSupport option is now "no", as this option has been
|
||||
# depreciated in favor of SACL enforcement in the PAM configuration (/etc/pam.d/sshd).
|
||||
#SACLSupport no
|
||||
|
||||
# Change to no to disable s/key passwords
|
||||
# Disabled for passenger-docker. We only allow key authentication.
|
||||
ChallengeResponseAuthentication no
|
||||
|
||||
# Kerberos options
|
||||
#KerberosAuthentication no
|
||||
#KerberosOrLocalPasswd yes
|
||||
#KerberosTicketCleanup yes
|
||||
|
||||
# GSSAPI options
|
||||
#GSSAPIAuthentication no
|
||||
#GSSAPICleanupCredentials yes
|
||||
#GSSAPIStrictAcceptorCheck yes
|
||||
#GSSAPIKeyExchange no
|
||||
|
||||
# Set this to 'yes' to enable PAM authentication, account processing,
|
||||
# and session processing. If this is enabled, PAM authentication will
|
||||
# be allowed through the ChallengeResponseAuthentication and
|
||||
# PasswordAuthentication. Depending on your PAM configuration,
|
||||
# PAM authentication via ChallengeResponseAuthentication may bypass
|
||||
# the setting of "PermitRootLogin without-password".
|
||||
# If you just want the PAM account and session checks to run without
|
||||
# PAM authentication, then enable this but set PasswordAuthentication
|
||||
# and ChallengeResponseAuthentication to 'no'.
|
||||
# Also, PAM will deny null passwords by default. If you need to allow
|
||||
# null passwords, add the " nullok" option to the end of the
|
||||
# securityserver.so line in /etc/pam.d/sshd.
|
||||
UsePAM yes
|
||||
|
||||
#AllowAgentForwarding yes
|
||||
#AllowTcpForwarding yes
|
||||
#GatewayPorts no
|
||||
X11Forwarding yes
|
||||
#X11DisplayOffset 10
|
||||
#X11UseLocalhost yes
|
||||
#PrintMotd yes
|
||||
#PrintLastLog yes
|
||||
#TCPKeepAlive yes
|
||||
#UseLogin no
|
||||
#UsePrivilegeSeparation yes
|
||||
#PermitUserEnvironment no
|
||||
#Compression delayed
|
||||
#ClientAliveInterval 0
|
||||
#ClientAliveCountMax 3
|
||||
#UseDNS yes
|
||||
#PidFile /var/run/sshd.pid
|
||||
#MaxStartups 10
|
||||
#PermitTunnel no
|
||||
#ChrootDirectory none
|
||||
|
||||
# no default banner path
|
||||
#Banner none
|
||||
|
||||
# override default of no subsystems
|
||||
Subsystem sftp /usr/lib/openssh/sftp-server
|
||||
|
||||
# Example of overriding settings on a per-user basis
|
||||
#Match User anoncvs
|
||||
# X11Forwarding no
|
||||
# AllowTcpForwarding no
|
||||
# ForceCommand cvs server
|
||||
@@ -1 +1 @@
|
||||
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-container-healthchecker,/usr/bin/docker-image-labeler,/usr/bin/pack
|
||||
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-container-healthchecker,/usr/bin/docker-image-labeler,/usr/bin/lambda-builder,/usr/bin/nixpacks,/usr/bin/pack
|
||||
|
||||
20
docker/usr/local/bin/lambda-builder
Normal file
20
docker/usr/local/bin/lambda-builder
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
[[ $TRACE ]] && set -x
|
||||
|
||||
main() {
|
||||
declare desc="re-runs lambda-builder commands as sudo"
|
||||
local LAMBDA_BUILDER_BIN=""
|
||||
if [[ -x "/usr/bin/lambda-builder" ]]; then
|
||||
LAMBDA_BUILDER_BIN="/usr/bin/lambda-builder"
|
||||
fi
|
||||
|
||||
if [[ -z "$LAMBDA_BUILDER_BIN" ]]; then
|
||||
echo "! No lambda-builder binary found" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo -E "$LAMBDA_BUILDER_BIN" "$@"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
20
docker/usr/local/bin/nixpacks
Normal file
20
docker/usr/local/bin/nixpacks
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
[[ $TRACE ]] && set -x
|
||||
|
||||
main() {
|
||||
declare desc="re-runs nixpacks commands as sudo"
|
||||
local NIXPACKS_BIN=""
|
||||
if [[ -x "/usr/bin/nixpacks" ]]; then
|
||||
NIXPACKS_BIN="/usr/bin/nixpacks"
|
||||
fi
|
||||
|
||||
if [[ -z "$NIXPACKS_BIN" ]]; then
|
||||
echo "! No nixpacks binary found" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo -E "$NIXPACKS_BIN" "$@"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
2
docs/_build/Dockerfile
vendored
2
docs/_build/Dockerfile
vendored
@@ -1,4 +1,4 @@
|
||||
FROM python:3.12.4-alpine
|
||||
FROM python:3.13.7-alpine
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
|
||||
2
docs/_build/entrypoint
vendored
2
docs/_build/entrypoint
vendored
@@ -3,7 +3,7 @@ set -eo pipefail
|
||||
|
||||
write-mkdocs() {
|
||||
if [[ -f /usr/src/source/contrib/write-mkdocs ]]; then
|
||||
if ! python /usr/src/source/contrib/write-mkdocs; then
|
||||
if ! python3 /usr/src/source/contrib/write-mkdocs; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
36
docs/_build/requirements.txt
vendored
36
docs/_build/requirements.txt
vendored
@@ -1,23 +1,23 @@
|
||||
beautifulsoup4==4.12.3
|
||||
click==8.1.7
|
||||
beautifulsoup4==4.13.4
|
||||
click==8.1.8
|
||||
ghp-import==2.1.0
|
||||
importlib-metadata==8.0.0
|
||||
Jinja2==3.1.4
|
||||
Markdown>=3.2.1,<3.7
|
||||
MarkupSafe==2.1.5
|
||||
importlib-metadata==8.7.0
|
||||
Jinja2==3.1.6
|
||||
Markdown>=3.2.1,<3.9
|
||||
MarkupSafe==3.0.2
|
||||
mergedeep==1.3.4
|
||||
mkdocs==1.6.0
|
||||
mkdocs==1.6.1
|
||||
mkdocs-exclude==1.0.2
|
||||
mkdocs-material==9.5.28
|
||||
mkdocs-material==9.6.17
|
||||
mkdocs-material-extensions==1.3.1
|
||||
packaging==24.1
|
||||
Pygments==2.18.0
|
||||
pymdown-extensions==10.8.1
|
||||
pyparsing==3.1.2
|
||||
packaging==25.0
|
||||
Pygments==2.19.2
|
||||
pymdown-extensions==10.16.1
|
||||
pyparsing==3.2.3
|
||||
python-dateutil==2.9.0.post0
|
||||
PyYAML==6.0.1
|
||||
pyyaml_env_tag==0.1
|
||||
six==1.16.0
|
||||
soupsieve==2.5
|
||||
watchdog==4.0.1
|
||||
zipp==3.19.2
|
||||
PyYAML==6.0.2
|
||||
pyyaml_env_tag==1.1
|
||||
six==1.17.0
|
||||
soupsieve==2.7
|
||||
watchdog==6.0.0
|
||||
zipp==3.23.0
|
||||
|
||||
@@ -56,14 +56,19 @@ Please keep the above in mind when utilizing deployment tasks.
|
||||
|
||||
### Changing the `app.json` location
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `app.json` file to use for a given app. This can be done via the `app-json:set` command. If a value is specified and that file does not exist within the repository, Dokku will continue the build process as if the repository has no `app.json` file.
|
||||
The `app.json` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
For deploys via the `git:from-image` and `git:load-image` commands, the `app.json` is extracted from the configured `WORKDIR` property of the image. For all other deploys - git push, `git:from-archive`, `git:sync` - will have the `app.json` extracted directly from the source code. Both cases will respect the configured `appjson-path` property value.
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `appjson-path` property:
|
||||
|
||||
```shell
|
||||
dokku app-json:set node-js-app appjson-path .dokku/app.json
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, Dokku will continue the build process as if the repository has no `app.json`.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
|
||||
@@ -3,57 +3,89 @@
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.3.17
|
||||
|
||||
Pass [container options](https://docs.docker.com/engine/reference/run/) to the `docker run` command during Dokku's `build`, `deploy` and `run` phases
|
||||
|
||||
```
|
||||
docker-options:add <app> <phase(s)> OPTION # Add Docker option to app for phase (comma-separated phase list)
|
||||
docker-options:clear <app> [<phase(s)>...] # Clear a docker options from application
|
||||
docker-options:clear <app> [<phase(s)>...] # Clear a docker options from app
|
||||
docker-options:remove <app> <phase(s)> OPTION # Remove Docker option from app for phase (comma-separated phase list)
|
||||
docker-options:report [<app>] [<flag>] # Displays a docker options report for one or more apps
|
||||
```
|
||||
|
||||
> When specifying multiple phases, they **must** be comma-separated _without_ spaces in between each phase, like so:
|
||||
>
|
||||
> ```shell
|
||||
> dokku docker-options:add node-js-app deploy,run "-v /var/log/node-js-app:/app/logs"
|
||||
> ```
|
||||
The `docker-options` plugin allows users to specify custom [container options](https://docs.docker.com/engine/reference/run/) for containers created by Dokku at various phases.
|
||||
|
||||
## About Dokku phases
|
||||
## Usage
|
||||
|
||||
Dokku deploys your application in multiple "phases" and the `docker-options` plugin allows you to pass arguments to their underlying docker container:
|
||||
### Background
|
||||
|
||||
- `build`: the container that executes the appropriate buildpack
|
||||
- `deploy`: the container that executes your running/deployed application
|
||||
- `run`: the container that executes any arbitrary command via `dokku run`
|
||||
#### Phases
|
||||
|
||||
Manipulation of docker options will not restart running containers. This enables multiple options to be set/unset before final application. As such, changing an app's docker options must be followed by a `dokku ps:rebuild` in order to take effect.
|
||||
Dokku deploys your app in multiple "phases" and the `docker-options` plugin allows you to pass arguments to their underlying docker container:
|
||||
|
||||
- `build`: The `build` phase is used to provide container options that are available during the build process for use by the various builders.
|
||||
- A given builder may strip out or ignore options that are unsupported by the builder in question - as an example, the `dockerfile` builder does not support mounted volumes.
|
||||
- `deploy`: The `deploy` phase is used to provide container options that are set on _deployed_ process types. This covers every process type specified in an app `Procfile` as well as any default processes your app may deploy.
|
||||
- The `deploy` phase is usually the correct phase to add options for running containers.
|
||||
- `run`: The `run` phase is used to provide container options to one-off containers created by `dokku run`, `dokku run:detached`, and any cron tasks specified in your `app.json`.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The `run` phase does _not_ correspond 1-to-1 to `docker run` or `docker container run` commands. Specifying a container option at the `run` phase will only be invoked on containers created by the `run` plugin and cron tasks. Please be sure to specify options at the correct phase for your use-case.
|
||||
|
||||
Adding or removing docker-options will not apply to any running containers, and only applies to containers created _after_ the options have been modified. As such, changing an app's docker options must be followed by a `dokku ps:rebuild` or a deploy in order to take effect.
|
||||
|
||||
#### Supported Docker Options
|
||||
|
||||
More information on supported Docker options can be found [here](https://docs.docker.com/engine/reference/commandline/run/).
|
||||
|
||||
Container options configured via the `docker-options` plugin are not used to modify the process a container runs. Container options are the `[OPTIONS]` portion of the following, where `[CONTAINER_COMMAND]` and `[ARG]` are the process and the arguments passed to it that are launched in the created container: `docker run [OPTIONS] [CONTAINER_COMMAND] [ARG...]`. Please see the documentation for [customizing the run command](/docs/deployment/builders/dockerfiles.md#customizing-the-run-command) or use a [Procfile](/docs/deployment/builders/dockerfiles.md#procfiles-and-multiple-processes) to modify the command used by a Dockerfile-based container.
|
||||
|
||||
## Examples
|
||||
#### Mounting volumes and host directories
|
||||
|
||||
### Add Docker options
|
||||
Docker supports volume and host directory mounting via the `-v` or `--volume` flags. In order to simplify usage, Dokku provides a `storage` plugin as an abstraction to interact with persistent storage. In most cases, the Dokku project recommends using the persistent storage plugin over directly manipulating docker options at different phases. See the [persistent storage documentation](/docs/advanced-usage/persistent-storage.md) for more information on how to attach persistent storage to your app.
|
||||
|
||||
Add some options for the deployed/running app and when executing [`dokku run`](/docs/processes/one-off-tasks.md):
|
||||
### Commands
|
||||
|
||||
#### Add Docker options
|
||||
|
||||
To add a docker option to an app, use the `docker-options:add` command. This takes an app name, a comma-separated list of phases, and the docker-option to add.
|
||||
|
||||
```shell
|
||||
# Mount a host volume in a Docker container: "-v /host/path:/container/path"
|
||||
dokku docker-options:add node-js-app deploy "-v /var/log/node-js-app:/app/logs"
|
||||
dokku docker-options:add node-js-app run "-v /var/log/node-js-app:/app/logs"
|
||||
dokku docker-options:add node-js-app deploy "--ulimit nofile=12"
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> When [mounting a host directory](https://docs.docker.com/engine/reference/run/#volume-shared-filesystems) in a Dokku app you should first create that directory as user `dokku` and then mount the directory under `/app` in the container using `docker-options` as above. Otherwise the app will lack write permission in the directory.
|
||||
|
||||
### Remove a Docker option
|
||||
Multiple phases can be specified by using a comma when specifying phases:
|
||||
|
||||
```shell
|
||||
dokku docker-options:remove node-js-app run "-v /var/log/node-js-app:/app/logs"
|
||||
dokku docker-options:add node-js-app deploy,run "--ulimit nofile=12"
|
||||
```
|
||||
|
||||
### Clear all Docker options for an app
|
||||
The `docker-options:add` does not support setting multiple options in a single call. To specify multiple options, call `docker-options:add` multiple times.
|
||||
|
||||
```shell
|
||||
dokku docker-options:add node-js-app deploy "--ulimit nofile=12"
|
||||
dokku docker-options:add node-js-app deploy "--shm-size 256m"
|
||||
```
|
||||
|
||||
#### Remove a Docker option
|
||||
|
||||
To remove docker options from an app, use the `docker-options:remove` command. This takes an app name, a comma-separated list of phases, and the docker-option to remove.
|
||||
|
||||
```shell
|
||||
dokku docker-options:remove node-js-app run ""--ulimit nofile=12"
|
||||
```
|
||||
|
||||
Multiple phases can be specified by using a comma when specifying phases:
|
||||
|
||||
```shell
|
||||
dokku docker-options:remove node-js-app deploy,run "--ulimit nofile=12"
|
||||
```
|
||||
|
||||
The `docker-options:remove` does not support setting multiple options in a single call. To specify multiple options, call `docker-options:remove` multiple times.
|
||||
|
||||
```shell
|
||||
dokku docker-options:remove node-js-app deploy "--ulimit nofile=12"
|
||||
dokku docker-options:remove node-js-app deploy "--shm-size 256m"
|
||||
```
|
||||
|
||||
#### Clear all Docker options for an app
|
||||
|
||||
Docker options can be removed for a specific app using the `docker-options:clear` command.
|
||||
|
||||
@@ -84,7 +116,7 @@ dokku docker-options:clear node-js-app build,run
|
||||
-----> Clearing docker-options for node-js-app on phase run
|
||||
```
|
||||
|
||||
### Displaying docker-options reports for an app
|
||||
#### Displaying docker-options reports for an app
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.8.1
|
||||
@@ -98,8 +130,8 @@ dokku docker-options:report
|
||||
```
|
||||
=====> node-js-app docker options information
|
||||
Docker options build:
|
||||
Docker options deploy: -v /var/log/node-js-app:/app/logs
|
||||
Docker options run: -v /var/log/node-js-app:/app/logs
|
||||
Docker options deploy: --ulimit nofile=12 --shm-size 256m
|
||||
Docker options run: --ulimit nofile=12 --shm-size 256m
|
||||
=====> python-sample docker options information
|
||||
Docker options build:
|
||||
Docker options deploy:
|
||||
|
||||
@@ -74,8 +74,8 @@ By default, permissions are set for usage with Herokuish buildpacks. These permi
|
||||
- This is used for apps deployed with Buildpacks via Herokuish.
|
||||
- `--chown heroku`: Use `1000:1000` as the folder permissions.
|
||||
- This is used for apps deployed with Cloud Native Buildpacks using the `heroku/builder` builder.
|
||||
- `--chown packeto`: Use `2000:2000` as the folder permissions.
|
||||
- This is used for apps deployed with Cloud Native Buildpacks using the `cloudfoundry/cnb` or `packeto` builders.
|
||||
- `--chown paketo`: Use `2000:2000` as the folder permissions.
|
||||
- This is used for apps deployed with Cloud Native Buildpacks using the `cloudfoundry/cnb` or `paketo` builders.
|
||||
- `--chown root`: Use `0:0` as the folder permissions.
|
||||
- This is used for containers that run their processes as root, as is typical for most Dockerfile or Docker image deploys.
|
||||
- `--chown false`: Skips the `chown` call.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
```
|
||||
plugin:disable <name> # Disable an installed plugin (third-party only)
|
||||
plugin:enable <name> # Enable a previously disabled plugin
|
||||
plugin:install [--core|--git-url] [--committish branch|commit|tag] [--name custom-plugin-name] # Optionally download git-url (and pin to the specified branch/commit/tag) & run install trigger for active plugins (or only core ones)
|
||||
plugin:install [--core|git-url] [--committish branch|commit|tag] [--name custom-plugin-name] # Optionally download git-url (and pin to the specified branch/commit/tag) & run install trigger for active plugins (or only core ones)
|
||||
plugin:installed <name> # Checks if a plugin is installed
|
||||
plugin:install-dependencies [--core] # Run install-dependencies trigger for active plugins (or only core ones)
|
||||
plugin:list # Print active plugins
|
||||
@@ -36,35 +36,35 @@ dokku plugin:list
|
||||
|
||||
```
|
||||
plugn: dev
|
||||
00_dokku-standard 0.34.7 enabled dokku core standard plugin
|
||||
20_events 0.34.7 enabled dokku core events logging plugin
|
||||
app-json 0.34.7 enabled dokku core app-json plugin
|
||||
apps 0.34.7 enabled dokku core apps plugin
|
||||
build-env 0.34.7 enabled dokku core build-env plugin
|
||||
buildpacks 0.34.7 enabled dokku core buildpacks plugin
|
||||
certs 0.34.7 enabled dokku core certificate management plugin
|
||||
checks 0.34.7 enabled dokku core checks plugin
|
||||
common 0.34.7 enabled dokku core common plugin
|
||||
config 0.34.7 enabled dokku core config plugin
|
||||
docker-options 0.34.7 enabled dokku core docker-options plugin
|
||||
domains 0.34.7 enabled dokku core domains plugin
|
||||
enter 0.34.7 enabled dokku core enter plugin
|
||||
git 0.34.7 enabled dokku core git plugin
|
||||
logs 0.34.7 enabled dokku core logs plugin
|
||||
network 0.34.7 enabled dokku core network plugin
|
||||
nginx-vhosts 0.34.7 enabled dokku core nginx-vhosts plugin
|
||||
plugin 0.34.7 enabled dokku core plugin plugin
|
||||
proxy 0.34.7 enabled dokku core proxy plugin
|
||||
ps 0.34.7 enabled dokku core ps plugin
|
||||
repo 0.34.7 enabled dokku core repo plugin
|
||||
resource 0.34.7 enabled dokku core resource plugin
|
||||
scheduler-docker-local 0.34.7 enabled dokku core scheduler-docker-local plugin
|
||||
shell 0.34.7 enabled dokku core shell plugin
|
||||
ssh-keys 0.34.7 enabled dokku core ssh-keys plugin
|
||||
storage 0.34.7 enabled dokku core storage plugin
|
||||
tags 0.34.7 enabled dokku core tags plugin
|
||||
tar 0.34.7 enabled dokku core tar plugin
|
||||
trace 0.34.7 enabled dokku core trace plugin
|
||||
00_dokku-standard 0.36.2 enabled dokku core standard plugin
|
||||
20_events 0.36.2 enabled dokku core events logging plugin
|
||||
app-json 0.36.2 enabled dokku core app-json plugin
|
||||
apps 0.36.2 enabled dokku core apps plugin
|
||||
build-env 0.36.2 enabled dokku core build-env plugin
|
||||
buildpacks 0.36.2 enabled dokku core buildpacks plugin
|
||||
certs 0.36.2 enabled dokku core certificate management plugin
|
||||
checks 0.36.2 enabled dokku core checks plugin
|
||||
common 0.36.2 enabled dokku core common plugin
|
||||
config 0.36.2 enabled dokku core config plugin
|
||||
docker-options 0.36.2 enabled dokku core docker-options plugin
|
||||
domains 0.36.2 enabled dokku core domains plugin
|
||||
enter 0.36.2 enabled dokku core enter plugin
|
||||
git 0.36.2 enabled dokku core git plugin
|
||||
logs 0.36.2 enabled dokku core logs plugin
|
||||
network 0.36.2 enabled dokku core network plugin
|
||||
nginx-vhosts 0.36.2 enabled dokku core nginx-vhosts plugin
|
||||
plugin 0.36.2 enabled dokku core plugin plugin
|
||||
proxy 0.36.2 enabled dokku core proxy plugin
|
||||
ps 0.36.2 enabled dokku core ps plugin
|
||||
repo 0.36.2 enabled dokku core repo plugin
|
||||
resource 0.36.2 enabled dokku core resource plugin
|
||||
scheduler-docker-local 0.36.2 enabled dokku core scheduler-docker-local plugin
|
||||
shell 0.36.2 enabled dokku core shell plugin
|
||||
ssh-keys 0.36.2 enabled dokku core ssh-keys plugin
|
||||
storage 0.36.2 enabled dokku core storage plugin
|
||||
tags 0.36.2 enabled dokku core tags plugin
|
||||
tar 0.36.2 enabled dokku core tar plugin
|
||||
trace 0.36.2 enabled dokku core trace plugin
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
|
||||
17
docs/appendices/0.35.0-migration-guide.md
Normal file
17
docs/appendices/0.35.0-migration-guide.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# 0.35.0 Migration Guide
|
||||
|
||||
## Changes
|
||||
|
||||
- The provided `dokku/dokku:latest` Docker image now runs Ubuntu 24.04 Noble. Users that install custom packages within their docker-based installations should be sure to check package compatibility with Ubuntu 24.04.
|
||||
- The default image used for Cloud Native Buildpack builds is now `heroku/builder:24`, and is based on both the `heroku-24` stack as well as Ubuntu 24.04. Users that wish to stick with the old, `heroku-22`/Ubuntu 22.04 builder may specify `heroku/buildpacks:22` as their builder image. Please see the [cloud native buildpack deployment documentation](/docs/deployment/builders/cloud-native-buildpacks.md#customizing-the-buildpack-stack-builder) for more information on how to specify a custom buildpack stack builder.
|
||||
- The default image used for Herokuish Buildpack builds is now `gliderlabs/herokuish:latest-24`, and is based on both the `heroku-24` stack as well as Ubuntu 24.04. Users that wish to stick with the old, `heroku-22`/Ubuntu 22.04 builder may specify `gliderlabs/herokuish:latest-22` as their builder image. Please see the [herokuish buildpack deployment documentation](/docs/deployment/builders/herokuish-buildpacks.md#customizing-the-buildpack-stack-builder) for more information on how to specify a custom buildpack stack builder.
|
||||
- The `vector` image used by Dokku for enhanced logging support has been upgraded from 0.39.x to 0.41.x. To take advantage of the new image, execute the following commands:
|
||||
```
|
||||
dokku logs:vector-stop
|
||||
dokku logs:vector-start
|
||||
```
|
||||
- The `openresty` image used by Dokku for proxying via openresty has been upgraded from 0.8.0 to 0.9.0. To take advantage of the new image, execute the following commands:
|
||||
```
|
||||
dokku openresty:stop
|
||||
dokku openresty:start
|
||||
```
|
||||
12
docs/appendices/0.36.0-migration-guide.md
Normal file
12
docs/appendices/0.36.0-migration-guide.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# 0.36.0 Migration Guide
|
||||
|
||||
## Changes
|
||||
|
||||
- Process stop timeouts are now configured via the `ps` property `stop-timeout-seconds`. Existing `DOKKU_DOCKER_STOP_TIMEOUT` environment variables will be automatically migrated to the new value.
|
||||
- Processes now default to a `30` second stop timeout.
|
||||
- The `domains:clear` command no longer runs domain setup after clearing the domains. Use `domains:reset` or run `domains:setup` manually to have the same effect.
|
||||
- The deprecated `DOKKU_DISABLE_ANSI_PREFIX_REMOVAL` setting has been removed. Dokku deploys no longer use shell escape codes to modify output, and thus deploy output may now contain `remote:` as a prefix in each lines output.
|
||||
|
||||
## Deprecations
|
||||
|
||||
Ubuntu 20.04 is now a deprecated installation target. The operating system will be considered EOL by Canonical in April 2025. Users are encouraged to upgrade to Ubuntu 24.04 or consider switching their instllation method to the [Docker-based installation method](/docs/getting-started/install/docker.md) to avoid any disruption in usage.
|
||||
153
docs/appendices/file-formats/app-json.md
Normal file
153
docs/appendices/file-formats/app-json.md
Normal file
@@ -0,0 +1,153 @@
|
||||
# app.json
|
||||
|
||||
`app.json` is a manifest format for describing web apps. It declares cron tasks, healthchecks, and other information required to run an app on Dokku. This document describes the schema in detail.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> While the `app.json` format used by Dokku is based on the one [supported by Heroku](https://devcenter.heroku.com/articles/app-json-schema), not all Heroku functionality is supported by Dokku.
|
||||
|
||||
## Cron
|
||||
|
||||
```json
|
||||
{
|
||||
"cron": [
|
||||
{
|
||||
"command": "echo 'hello'",
|
||||
"schedule": "0 1 * * *"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
(list, optional) A list of cron resources. Keys are the names of the process types. The values are an object containing one or more of the following properties:
|
||||
|
||||
- `command`: (string, required)
|
||||
- `schedule`: (string, required)
|
||||
|
||||
## Formation
|
||||
|
||||
```json
|
||||
{
|
||||
"formation": {
|
||||
"web": {
|
||||
"max_parallel": 1,
|
||||
"quantity": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(object, optional) A key-value object for process type configuration. Keys are the names of the process types. The values are an object containing one or more of the following properties:
|
||||
|
||||
- `autoscaling` (map of string to object, optional) autoscaling rules. See the autoscaling section for more details
|
||||
- `max_parallel`: (int, optional) number of instances to deploy in parallel at a given time
|
||||
- `quantity`: (int, optional) number of processes to maintain. Default 1 for web processes, 0 for all others.
|
||||
|
||||
### Autoscaling
|
||||
|
||||
```json
|
||||
{
|
||||
"formation": {
|
||||
"web": {
|
||||
"autoscaling": {
|
||||
"cooldown_period_seconds": 300,
|
||||
"max_quantity": 10,
|
||||
"min_quantity": 1,
|
||||
"polling_interval_seconds": 30,
|
||||
"triggers": {
|
||||
"http": {
|
||||
"metadata": {
|
||||
"url": "https://example.com/health"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(object, optional) A key-value object for autoscaling configuration. Keys are the names of the process types. The values are an object containing one or more of the following properties:
|
||||
|
||||
- `cooldown_period_seconds`: (int, optional)
|
||||
- `max_quantity`: (int, optional)
|
||||
- `min_quantity`: (int, optional)
|
||||
- `polling_interval_seconds`: (int, optional)
|
||||
- `triggers`: (object, optional)
|
||||
|
||||
An autoscaling trigger consists of the following properties:
|
||||
|
||||
- `name`: (string, optional)
|
||||
- `type`: (string, optional)
|
||||
- `metadata`: (object, optional)
|
||||
|
||||
## Healthchecks
|
||||
|
||||
```json
|
||||
{
|
||||
"healthchecks": {
|
||||
"web": [
|
||||
{
|
||||
"type": "startup",
|
||||
"name": "web check",
|
||||
"description": "Checking if the app responds to the /health/ready endpoint",
|
||||
"path": "/health/ready",
|
||||
"attempts": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(object, optional) A key-value object specifying healthchecks to run for a given process type.
|
||||
|
||||
- `attempts`: (int, optional)
|
||||
- `command`: (list of strings, optional)
|
||||
- `content`: (string, optional)
|
||||
- `httpHeaders`: (list of header objects, optional)
|
||||
- `initialDelay`: (int, optional)
|
||||
- `listening`: (boolean, optional)
|
||||
- `name`: (string, optional)
|
||||
- `path`: (string, optional)
|
||||
- `port`: (int, optional)
|
||||
- `scheme`: (string, optional)
|
||||
- `timeout`: (int, optional)
|
||||
- `type`: (string, optional)
|
||||
- `uptime`: (int, optional)
|
||||
- `wait`: (int, optional)
|
||||
- `warn`: (boolean, optional)
|
||||
- `onFailure`: (object, optional)
|
||||
|
||||
## Scripts
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"dokku": {
|
||||
"predeploy": "touch /app/predeploy.test",
|
||||
"postdeploy": "curl https://some.external.api.service.com/deployment?state=success"
|
||||
},
|
||||
"postdeploy": "curl https://some.external.api.service.com/created?state=success"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(object, optional) A key-value object specifying scripts or shell commands to execute at different stages in the build/release process.
|
||||
|
||||
- `dokku.predeploy`: (string, optional)
|
||||
- When to use: This should be used if your app does not support arbitrary build commands and you need to make changes to the built image.
|
||||
- Are changes committed to the image at this phase: Yes
|
||||
- Example use-cases
|
||||
- Bundling assets in a slightly different way
|
||||
- Installing a custom package from source or copying a binary into place
|
||||
- `dokku.postdeploy`: (string, optional)
|
||||
- When to use: This should be used in conjunction with external systems to signal the completion of your deploy.
|
||||
- Are changes committed to the image at this phase: No
|
||||
- Example use-cases
|
||||
- Notifying slack that your app is deployed
|
||||
- Coordinating traffic routing with a central load balancer
|
||||
- `postdeploy`: (string, optional)
|
||||
- When to use: This should be used when you wish to run a command _once_, after the app is created and not on subsequent deploys to the app.
|
||||
- Are changes committed to the image at this phase: No
|
||||
- Example use-cases
|
||||
- Setting up OAuth clients and DNS
|
||||
- Loading seed/test data into the app’s test database
|
||||
14
docs/appendices/file-formats/buildpacks-file.md
Normal file
14
docs/appendices/file-formats/buildpacks-file.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# .buildpacks
|
||||
|
||||
The `.buildpacks` file is used to specify the buildpacks for an application. It is a list of buildpack URLs.
|
||||
|
||||
```shell
|
||||
https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
When installed, a buildpack is checked to see if it is a git repository via `git ls-remote`. If it is not, the buildpack is checked to see if it ends in `.tgz`, `.tar.gz`, `.tbz`, `tar.bz`, or `.tar` and is downloaded/extracted before being executed.
|
||||
|
||||
If the buildpack is located on Github, a shorthand can be used in the form of `organization/buildpack-name`. This will be expanded to the `https://github.com/organization/heroku-buildpack-buildpack-name.git`. The `heroku-community` organization name is treated as `heroku`.
|
||||
|
||||
Comments are not allowed in the `.buildpacks` file.
|
||||
3
docs/appendices/file-formats/dockerfile.md
Normal file
3
docs/appendices/file-formats/dockerfile.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Dockerfile
|
||||
|
||||
A Dockerfile is used to build a Docker image for an application. Please refer to the [Dockerfile reference](https://docs.docker.com/reference/dockerfile/) for more information.
|
||||
16
docs/appendices/file-formats/lambda-yml.md
Normal file
16
docs/appendices/file-formats/lambda-yml.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# lambda.yml
|
||||
|
||||
The `lambda.yml` file is used to configure a Lambda application.
|
||||
|
||||
```yaml
|
||||
---
|
||||
build_image: mlupin/docker-lambda:dotnetcore3.1-build
|
||||
builder: dotnet
|
||||
run_image: mlupin/docker-lambda:dotnetcore3.1
|
||||
```
|
||||
|
||||
## Fields
|
||||
|
||||
`build_image`: A docker image that is accessible by the docker daemon. The `build_image` should be based on an existing Lambda image - builders may fail if they cannot run within the specified `build_image`. The build will fail if the image is inaccessible by the docker daemon.
|
||||
`builder`: The name of a builder. This may be used if multiple builders match and a specific builder is desired. If an invalid builder is specified, the build will fail.
|
||||
`run_image`: A docker image that is accessible by the docker daemon. The `run_image` should be based on an existing Lambda image - built images may fail to start if they are not compatible with the produced artifact. The generation of the `run_image` will fail if the image is inaccessible by the docker daemon.
|
||||
3
docs/appendices/file-formats/nginx-conf-sigil.md
Normal file
3
docs/appendices/file-formats/nginx-conf-sigil.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# nginx.conf.sigil
|
||||
|
||||
The `nginx.conf.sigil` file is used to configure the nginx server for an application. The default template can be found [here](https://github.com/dokku/dokku/blob/master/plugins/nginx-vhosts/templates/nginx.conf.sigil). Dokku uses a tool named [sigil](https://github.com/gliderlabs/sigil) to generate the nginx configuration based on the template provided.
|
||||
3
docs/appendices/file-formats/nixpacks-toml.md
Normal file
3
docs/appendices/file-formats/nixpacks-toml.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# nixpacks.toml
|
||||
|
||||
The `nixpacks.toml` file is used to configure an application when built with the `nixpacks` builder. Please refer to the [nixpacks.toml documentation](https://nixpacks.com/docs/configuration/file.md) for more information.
|
||||
48
docs/appendices/file-formats/procfile.md
Normal file
48
docs/appendices/file-formats/procfile.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Procfile
|
||||
|
||||
A Procfile is a file that was [promoted by Heroku](https://blog.heroku.com/the_new_heroku_1_process_model_procfile) for their platform as an easy way to specify one or more distinct processes to run within Heroku. This format has since been picked up by various other tools and platforms.
|
||||
|
||||
## General Overview
|
||||
|
||||
The `procfile-util` tool expects a Procfile to be defined as one or more lines containing one of:
|
||||
|
||||
- a comment (preceeded by a `#` symbol or two `//` characters)
|
||||
- a process-type/command combination (with optional trailing whitespace or trailing comment)
|
||||
- when there is a trailing comment, the `#` symbol/`//` characters _must_ be preceeded by one or more `whitespace` characters.
|
||||
- a blank line (with optional trailing whitespace)
|
||||
|
||||
Comments and blank lines are ignored, while process-type/command combinations look like the following:
|
||||
|
||||
```
|
||||
<process type>: <command>
|
||||
```
|
||||
|
||||
The syntax is defined as follows:
|
||||
|
||||
- `<process type>` – any character in the class `[A-Za-z0-9_-]+`, a process type is a name for your command, such as `web`, `worker`, `urgentworker`, `clock`, etc.
|
||||
- `<command>` – a command used to launch the process, such as `rake jobs:work`
|
||||
|
||||
Additional rules are as follows:
|
||||
|
||||
- contain at most 63 characters
|
||||
|
||||
A Procfile that does not match any of the above rules will be considered invalid, and not be processed. This is to avoid issues where a Procfile may contain merge conflicts or other improper content, thus resulting in unwanted runtime behavior for applications.
|
||||
|
||||
Finally, process types within a Procfile may not overlap and must be unique. Rather than assuming that the last or first specified is correct, `procfile-util` will fail to parse the Procfile with the relevant error.
|
||||
|
||||
### Strict Mode
|
||||
|
||||
> Strict mode can be triggered on `procfile-util` via the `--strict` flag.
|
||||
|
||||
In strict mode, the character set of a process type changes.
|
||||
|
||||
- `<process type>` – a valid DNS Label Name as per [RFC 1123](https://tools.ietf.org/html/rfc1123), a process type is a name for your command, such as `web`, `worker`, `urgentworker`, `clock`, etc.
|
||||
|
||||
This syntax differs common interpretations of valid `<process type>` values in that we define the process type as a DNS Label name, versus the regex `[A-Za-z0-9_]+`. The reason for this is that processes defined within Procfiles are commonly used in DNS entries. Rather than have a second level of platform-specific validation in place, this project implicitly defines the format for the process-type.
|
||||
|
||||
Given the above, a valid process type can be generalized to the following rules (as taken from the [Kubernetes documentation](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names)):
|
||||
|
||||
- contain at most 63 characters
|
||||
- contain only lowercase alphanumeric characters or '-'
|
||||
- start with an alphanumeric character
|
||||
- end with an alphanumeric character
|
||||
3
docs/appendices/file-formats/project-toml.md
Normal file
3
docs/appendices/file-formats/project-toml.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# project.toml
|
||||
|
||||
The project descriptor file allows app developers to provide configuration for apps deployed to Dokku via the `pack` builder. Please refer to the [project.toml documentation](https://buildpacks.io/docs/reference/config/project-descriptor/) for more information.
|
||||
@@ -2,10 +2,10 @@
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-70x70.png"/>
|
||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-150x150.png"/>
|
||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-310x310.png"/>
|
||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-310x150.png"/>
|
||||
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/mstile-70x70.png"/>
|
||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/mstile-150x150.png"/>
|
||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/mstile-310x310.png"/>
|
||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/mstile-310x150.png"/>
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
|
||||
@@ -2,37 +2,37 @@
|
||||
"name": "Dokku",
|
||||
"icons": [
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.36.2\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": "0.75"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.36.2\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": "1.0"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.36.2\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": "1.5"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.36.2\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": "2.0"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.36.2\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": "3.0"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.36.2\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": "4.0"
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
"0.31.5",
|
||||
"0.32.4",
|
||||
"0.33.9",
|
||||
"0.34.7"
|
||||
"0.34.9",
|
||||
"0.35.20",
|
||||
"0.36.2"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -28,26 +28,6 @@ gem install dokku-cli
|
||||
|
||||
See [documentation here](https://github.com/SebastianSzturo/dokku-cli) for more information.
|
||||
|
||||
## (ruby) DokkuClient
|
||||
|
||||
DokkuClient is another rubygem that acts as a client for your Dokku installation with built-in support for certain external plugins. You can install it via the following shell command (assuming you have ruby and rubygems installed):
|
||||
|
||||
```shell
|
||||
gem install dokku_client
|
||||
```
|
||||
|
||||
See [documentation here](https://github.com/netguru/dokku_client) for more information.
|
||||
|
||||
## (ruby) Dokkufy
|
||||
|
||||
Dokkufy is a rubygem that handles automation of certain tasks, such as Dokku setup, plugin installation, etc. You can install it via the following shell command (assuming you have ruby and rubygems installed):
|
||||
|
||||
```shell
|
||||
gem install dokkufy
|
||||
```
|
||||
|
||||
See [documentation here](https://github.com/cbetta/dokkufy) for more information.
|
||||
|
||||
## (ruby) Dockland
|
||||
|
||||
Dockland is a rubygem that acts as a client for your Dokku installation. You can install it via the following shell command (assuming you have ruby and rubygems installed):
|
||||
|
||||
@@ -123,8 +123,8 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
||||
| [Host post-build command hook](https://github.com/baikunz/dokku-post-deploy-script) | [baikunz][] | 0.4.0+ |
|
||||
| [Host pre-build command hook](https://github.com/fteychene/dokku-build-hook) | [fteychene][] | 0.4.0+ |
|
||||
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
|
||||
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
|
||||
| [HTTP Auth Secure Apps](https://github.com/matto1990/dokku-secure-apps) | [matto1990][] | 0.4.0+ |
|
||||
| [Image Size Limit](https://github.com/Tashows/dokku-image-size-limit) | [Tashows][] | |
|
||||
| [Litestream](https://github.com/AxelTheGerman/dokku-litestream)<sup>4</sup> | [AxelTheGerman][] | 0.27.0+ |
|
||||
| [Monit (Health Checks)](https://github.com/mbreit/dokku-monit) | [mbreit][] | 0.8.0+ |
|
||||
| [Monit](https://github.com/cjblomqvist/dokku-monit) | [cjblomqvist][] | 0.3.x |
|
||||
@@ -321,6 +321,7 @@ The following plugins are no longer maintained by their developers.
|
||||
[sekjun9878]: https://github.com/sekjun9878
|
||||
[statianzo]: https://github.com/statianzo
|
||||
[stuartpb]: https://github.com/stuartpb
|
||||
[Tashows]: https://github.com/Tashows
|
||||
[thrashr888]: https://github.com/thrashr888
|
||||
[wmluke]: https://github.com/wmluke
|
||||
[zenedith]: https://github.com/zenedith
|
||||
|
||||
@@ -13,6 +13,7 @@ domains:enable <app> # Enable VHOST support
|
||||
domains:remove <app> <domain> [<domain> ...] # Remove domains from app
|
||||
domains:remove-global <domain> [<domain> ...] # Remove global domain names
|
||||
domains:report [<app>|--global] [<flag>] # Displays a domains report for one or more apps
|
||||
domains:reset <app> # Reset app domains to global-configured domains
|
||||
domains:set <app> <domain> [<domain> ...] # Set domains for app
|
||||
domains:set-global <domain> [<domain> ...] # Set global domain names
|
||||
```
|
||||
@@ -33,7 +34,7 @@ If an FQDN such as `dokku.org` is used as the application name, the global virtu
|
||||
|
||||
You can optionally override this in a plugin by implementing the `nginx-hostname` plugin trigger. If the `nginx-hostname` plugin has no output, the normal hostname algorithm will be executed. See the [plugin trigger documentation](/docs/development/plugin-triggers.md#nginx-hostname) for more information.
|
||||
|
||||
## Disabling VHOSTS
|
||||
## Enabling and disabling VHOSTS
|
||||
|
||||
If desired, it is possible to disable vhosts with the domains plugin.
|
||||
|
||||
@@ -41,8 +42,21 @@ If desired, it is possible to disable vhosts with the domains plugin.
|
||||
dokku domains:disable node-js-app
|
||||
```
|
||||
|
||||
Vhosts can also be disabled for all apps:
|
||||
|
||||
```shell
|
||||
dokku domains:disable --all
|
||||
```
|
||||
|
||||
On subsequent deploys, the nginx virtualhost will be discarded. This is useful when deploying internal-facing services that should not be publicly routeable. As of 0.4.0, nginx will still be configured to proxy your app on some random high port. This allows internal services to maintain the same port between deployments. You may change this port by setting `DOKKU_PROXY_PORT` and/or `DOKKU_PROXY_SSL_PORT` (for services configured to use SSL.)
|
||||
|
||||
To re-enable, run the `domains:enable` subcommand:
|
||||
|
||||
```shell
|
||||
dokku domains:enable node-js-app
|
||||
dokku domains:enable --all
|
||||
```
|
||||
|
||||
The domains plugin allows you to specify custom domains for applications. This plugin is aware of any ssl certificates that are imported via `certs:add`. Be aware that disabling domains (with `domains:disable`) will override any custom domains.
|
||||
|
||||
```shell
|
||||
@@ -62,6 +76,9 @@ dokku domains:remove node-js-app dokku.me
|
||||
|
||||
# set all custom domains for app
|
||||
dokku domains:set node-js-app dokku.me dokku.org
|
||||
|
||||
# delete all app domains and configure available global domains on it
|
||||
dokku domains:reset node-js-app
|
||||
```
|
||||
|
||||
## Displaying domains reports for an app
|
||||
|
||||
@@ -39,7 +39,7 @@ dokku config:set node-js-app KEY="VAL\ WITH\ SPACES"
|
||||
Dokku can also read base64 encoded values. That's the easiest way to set a value with newlines or spaces. To set a value with newlines you need to base64 encode it first and pass the `--encoded` flag:
|
||||
|
||||
```shell
|
||||
dokku config:set --encoded node-js-app KEY="$(base64 ~/.ssh/id_rsa)"
|
||||
dokku config:set --encoded node-js-app KEY="$(base64 -w 0 ~/.ssh/id_rsa)"
|
||||
```
|
||||
|
||||
When setting or unsetting environment variables, you may wish to avoid an application restart. This is useful when developing plugins or when setting multiple environment variables in a scripted manner. To do so, use the `--no-restart` flag:
|
||||
@@ -101,7 +101,6 @@ The following config variables have special meanings and can be set in a variety
|
||||
| `DOKKU_APP_PROXY_TYPE` | `nginx` | `dokku proxy:set` | |
|
||||
| `DOKKU_APP_RESTORE` | `1` | `dokku config:set` <br /> `dokku ps:stop` | |
|
||||
| `DOKKU_APP_SHELL` | `/bin/bash` | `dokku config:set` | Allows users to change the default shell used by Dokku for `dokku enter` and execution of deployment tasks. |
|
||||
| `DOKKU_APP_TYPE` | `herokuish` | Auto-detected by using buildpacks or dockerfile | |
|
||||
| `DOKKU_CHECKS_DISABLED` | none | `dokku checks:disable` | |
|
||||
| `DOKKU_CHECKS_ENABLED` | none | `dokku checks:enable` | |
|
||||
| `DOKKU_CHECKS_SKIPPED` | none | `dokku checks:skip` | |
|
||||
@@ -110,9 +109,7 @@ The following config variables have special meanings and can be set in a variety
|
||||
| `DOKKU_CHECKS_ATTEMPTS` | `5` | `dokku config:set` | Number of retries for to run for a specific check before marking it as a failure
|
||||
| `DOKKU_DEFAULT_CHECKS_WAIT` | `10` | `dokku config:set` | If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running. |
|
||||
| `DOKKU_DISABLE_PROXY` | none | `dokku proxy:disable` <br /> `dokku proxy:enable` | Disables the proxy in front of your application, resulting in publicly routing the docker container. |
|
||||
| `DOKKU_DISABLE_ANSI_PREFIX_REMOVAL` | none | `dokku config:set` <br /> `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Disables removal of the ANSI prefix during deploys. Can be used in cases where the client deployer does not understand ansi escape codes. |
|
||||
| `DOKKU_DISABLE_APP_AUTOCREATION` | none | `dokku config:set` | Disables automatic creation of a non-existent app on deploy. |
|
||||
| `DOKKU_DOCKER_STOP_TIMEOUT` | `10` | `dokku config:set` | Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands _also_ respect this value. If not specified, the docker defaults for the [docker stop command](https://docs.docker.com/engine/reference/commandline/stop/) will be used.|
|
||||
| `DOKKU_DOCKERFILE_CACHE_BUILD` | none | `dokku config:set` | |
|
||||
| `DOKKU_DOCKERFILE_START_CMD` | none | `dokku config:set` | |
|
||||
| `DOKKU_PARALLEL_ARGUMENTS`. | none | `dokku config:set` | Allows passing custom arguments to parallel for `ps:*all` commands |
|
||||
|
||||
@@ -128,7 +128,7 @@ dokku certs:report node-js-app --ssl-enabled
|
||||
|
||||
## HSTS Header
|
||||
|
||||
The [HSTS header](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) is an HTTP header that can inform browsers that all requests to a given site should be made via HTTPS. Dokku does enables this header by default for HTTPS requests.
|
||||
The [HSTS header](https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security) is an HTTP header that can inform browsers that all requests to a given site should be made via HTTPS. Dokku enables this header by default for HTTPS requests.
|
||||
|
||||
See the [NGINX HSTS documentation](/docs/networking/proxies/nginx.md#hsts-header) for more information on how the HSTS configuration can be managed for your application.
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Builds will proceed with the `pack` cli for the app from then on.
|
||||
|
||||
### Caveats
|
||||
|
||||
As this functionality is highly experimental, there are a number of caveats. Please note that not all issuesare listed below.
|
||||
As this functionality is highly experimental, there are a number of caveats. Please note that not all issues are listed below.
|
||||
|
||||
- Specifying specific buildpacks is not currently possible.
|
||||
- A future release will add support for specifying buildpacks via the `buildpacks` plugin.
|
||||
@@ -62,14 +62,19 @@ dokku builder:set node-js-app selected pack
|
||||
|
||||
### Changing the `project.toml` location
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `project.toml` file to use for a given app. This can be done via the `builder-pack:set` command. If a value other than `project.toml` is specified and that file does not exist in the app's build directory, Dokku will continue the build process as if the repository has no `project.toml`.
|
||||
The `project.toml` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
For deploys via the `git:from-image` and `git:load-image` commands, the `project.toml` is extracted from the configured `WORKDIR` property of the image. For all other deploys - git push, `git:from-archive`, `git:sync` - will have the `project.toml` extracted directly from the source code. Both cases will respect the configured `projecttoml-path` property value.
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `projecttoml-path` property:
|
||||
|
||||
```shell
|
||||
dokku builder-pack:set node-js-app projecttoml-path .dokku/project.toml
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, Dokku will continue the build process as if the repository has no `project.toml`.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
@@ -142,7 +147,7 @@ project2.toml
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.23.0
|
||||
|
||||
The default stack builder in use by CNB buildpacks in Dokku is based on `heroku/builder:22`. Users may desire to switch the stack builder to a custom version, either to update the operating system or to customize packages included with the stack builder. This can be performed via the `buildpacks:set-property` command.
|
||||
The default stack builder in use by CNB buildpacks in Dokku is based on `heroku/builder:24`. Users may desire to switch the stack builder to a custom version, either to update the operating system or to customize packages included with the stack builder. This can be performed via the `buildpacks:set-property` command.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:set-property node-js-app stack paketobuildpacks/build:base-cnb
|
||||
@@ -156,7 +161,7 @@ dokku buildpacks:set-property node-js-app stack
|
||||
|
||||
A change in the stack builder value will execute the `post-stack-set` trigger.
|
||||
|
||||
Finally, stack builders can be set or unset globally as a fallback. This will take precedence over a globally set `DOKKU_CNB_BUILDER` environment variable (`heroku/builder:22` by default).
|
||||
Finally, stack builders can be set or unset globally as a fallback. This will take precedence over a globally set `DOKKU_CNB_BUILDER` environment variable (`heroku/builder:24` by default).
|
||||
|
||||
```shell
|
||||
# set globally
|
||||
|
||||
@@ -37,14 +37,19 @@ dokku ports:clear node-js-app
|
||||
|
||||
> The previous method to perform this - via `docker-options:add` - should be removed in favor of the `builder-dockerfile:set` command outlined here.
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `Dockerfile` file to use for a given app. This can be done via the `builder-dockerfile:set` command. If a value is specified and that file does not exist in the app's build directory, then the build will fail.
|
||||
The `Dockerfile` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
For git push, `git:from-archive`, and `git:sync` workflows, the `Dockerfile` is extracted directly from the source code, respecting the configured `dockerfile-path` property value.
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `dockerfile-path` property:
|
||||
|
||||
```shell
|
||||
dokku builder-dockerfile:set node-js-app dockerfile-path Dockerfile2
|
||||
dokku builder-dockerfile:set node-js-app dockerfile-path .dokku/Dockerfile
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, the build will fail.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
@@ -125,7 +130,7 @@ dokku docker-options:add node-js-app build '--build-arg NODE_ENV'
|
||||
Once set, the Dockerfile usage would be as follows:
|
||||
|
||||
```Dockerfile
|
||||
FROM ubuntu:20.04
|
||||
FROM ubuntu:24.04
|
||||
|
||||
# set the argument default
|
||||
ARG NODE_ENV=production
|
||||
@@ -137,7 +142,7 @@ RUN echo $NODE_ENV
|
||||
You may also set the argument as an environment variable
|
||||
|
||||
```Dockerfile
|
||||
FROM ubuntu:20.04
|
||||
FROM ubuntu:24.04
|
||||
|
||||
# set the argument default
|
||||
ARG NODE_ENV=production
|
||||
|
||||
@@ -166,7 +166,7 @@ dokku buildpacks:set-property node-js-app stack
|
||||
|
||||
A change in the stack builder value will execute the `post-stack-set` trigger.
|
||||
|
||||
Finally, stack builders can be set or unset globally as a fallback. This will take precedence over a globally set `DOKKU_IMAGE` environment variable (`gliderlabs/herokuish:latest-22` by default).
|
||||
Finally, stack builders can be set or unset globally as a fallback. This will take precedence over a globally set `DOKKU_IMAGE` environment variable (`gliderlabs/herokuish:latest-24` by default).
|
||||
|
||||
```shell
|
||||
# set globally
|
||||
@@ -218,17 +218,17 @@ dokku buildpacks:report
|
||||
```
|
||||
=====> node-js-app buildpacks information
|
||||
Buildpacks computed stack: gliderlabs/herokuish:v0.7.0-22
|
||||
Buildpacks global stack: gliderlabs/herokuish:latest-22
|
||||
Buildpacks global stack: gliderlabs/herokuish:latest-24
|
||||
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
Buildpacks stack: gliderlabs/herokuish:v0.7.0-20
|
||||
=====> python-sample buildpacks information
|
||||
Buildpacks computed stack: gliderlabs/herokuish:latest-22
|
||||
Buildpacks global stack: gliderlabs/herokuish:latest-22
|
||||
Buildpacks computed stack: gliderlabs/herokuish:latest-24
|
||||
Buildpacks global stack: gliderlabs/herokuish:latest-24
|
||||
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git,https://github.com/heroku/heroku-buildpack-python.git
|
||||
Buildpacks stack:
|
||||
=====> ruby-sample buildpacks information
|
||||
Buildpacks computed stack: gliderlabs/herokuish:latest-22
|
||||
Buildpacks global stack: gliderlabs/herokuish:latest-22
|
||||
Buildpacks computed stack: gliderlabs/herokuish:latest-24
|
||||
Buildpacks global stack: gliderlabs/herokuish:latest-24
|
||||
Buildpacks list:
|
||||
Buildpacks stack:
|
||||
```
|
||||
|
||||
@@ -42,14 +42,19 @@ The `lambda` builder plugin delegates all build logic to [lambda-builder](https:
|
||||
|
||||
### Changing the `lambda.yml` location
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `lambda.yml` file to use for a given app. This can be done via the `builder-lambda:set` command. If a value is specified and that file does not exist in the app's build directory, then the build will fail.
|
||||
The `lambda.yml` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
For deploys via the `git:from-image` and `git:load-image` commands, the `lambda.yml` is extracted from the configured `WORKDIR` property of the image. For all other deploys - git push, `git:from-archive`, `git:sync` - will have the `lambda.yml` extracted directly from the source code. Both cases will respect the configured `lambdayml-path` property value.
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `lambdayml-path` property:
|
||||
|
||||
```shell
|
||||
dokku builder-lambda:set node-js-app lambdayml-path .dokku/lambda.yml
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, the build will fail.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
|
||||
@@ -47,12 +47,19 @@ dokku docker-options:add node-js-app build '--env NODE_ENV=production'
|
||||
|
||||
### Changing the `nixpacks.toml` location
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `nixpacks.toml` file to use for a given app. This can be done via the `builder-nixpacks:set` command. If a value is specified and that file does not exist in the app's build directory, then the build will fail.
|
||||
The `nixpacks.toml` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `nixpackstoml-path` property:
|
||||
|
||||
```shell
|
||||
dokku builder-nixpacks:set node-js-app nixpackstoml-path nixpacks2.toml
|
||||
dokku builder-nixpacks:set node-js-app nixpackstoml-path .dokku/nixpacks.toml
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, the build will fail.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.25.0
|
||||
|
||||
The `null` builder does nothing, and is useful for routing to services not managed by Dokku. It should not be used in normal operation. Please see the [network documentation](/docs/networking/network.md#routing-an-app-to-a-known-ip:port-combination) for more information on the aforementioned use case.
|
||||
The `null` builder does nothing, and is useful for routing to services not managed by Dokku. It should not be used in normal operation. Please see the [network documentation](/docs/networking/network.md#routing-an-app-to-a-known-ipport-combination) for more information on the aforementioned use case.
|
||||
|
||||
## Usage
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ Assuming a Docker image can be run as a CI task with environment variables injec
|
||||
- [gitlab-ci](https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/)
|
||||
- [semaphoreci](https://semaphoreci.com/)
|
||||
- [travisci](https://travis-ci.com/)
|
||||
- [woodpecker ci](https://woodpecker-ci.org/)
|
||||
|
||||
## Simple Usage
|
||||
|
||||
|
||||
@@ -13,10 +13,10 @@ on:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Cloning repo
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
29
docs/deployment/continuous-integration/woodpecker-ci.md
Normal file
29
docs/deployment/continuous-integration/woodpecker-ci.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Woodpecker CI
|
||||
|
||||
[Woodpecker CI](https://woodpecker-ci.org/docs/intro) can be used to automatically deploy a Dokku application via the official [dokku/ci-docker-image](https://github.com/dokku/ci-docker-image). The simplest example is as follows:
|
||||
|
||||
```yaml
|
||||
when:
|
||||
- event: push
|
||||
branch: main
|
||||
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
partial: false
|
||||
depth: 0
|
||||
|
||||
steps:
|
||||
- name: deploy
|
||||
image: dokku/ci-docker-image
|
||||
environment:
|
||||
GIT_REMOTE_URL: ssh://dokku@dokku.me:22/appname
|
||||
SSH_PRIVATE_KEY:
|
||||
from_secret: DOKKU_ME_SSH_DEPLOY_KEY
|
||||
commands:
|
||||
- dokku-deploy
|
||||
```
|
||||
|
||||
- The standard `clone` stage is replaced with one that performs a complete clone of the repository (the default is a shallow clone, which dokku would reject).
|
||||
- A `GIT_REMOTE_URL` and a `SSH_PRIVATE_KEY` (with help of the `from_secret` directive) suffice to carry out a deployment.
|
||||
@@ -116,10 +116,12 @@ dokku logs:vector-start --vector-image timberio/vector:latest-debian
|
||||
|
||||
The `vector` container will be started with the following volume mounts:
|
||||
|
||||
- `/var/lib/dokku/data/logs/vector.json:/etc/vector/vector.json`
|
||||
- `/var/lib/dokku/data/logs:/etc/vector`
|
||||
- `/var/run/docker.sock:/var/run/docker.sock`
|
||||
- `/var/log/dokku/apps:/var/log/dokku/apps`
|
||||
|
||||
The `/etc/vector` mount includes the `vector.json` configuration file, but also may be used to provide extra files to the vector container.
|
||||
|
||||
The final volume mount - `/var/log/dokku/apps` - may be used for users that wish to ship logs to a file on disk that may be later logrotated. This directory is owned by the `dokku` user and group, with permissions set to `0755`. At this time, log-rotation is not configured for this directory.
|
||||
|
||||
#### Stopping the Vector container
|
||||
@@ -233,3 +235,33 @@ dokku logs:set test vector-sink "http://?uri=https%3A//loggerservice.com%3A1234/
|
||||
```
|
||||
|
||||
Please read the [sink documentation](https://vector.dev/docs/reference/configuration/sinks/) for your sink of choice to configure the sink as desired.
|
||||
|
||||
##### Configuring the app label
|
||||
|
||||
Logs shipped by vector include the label `com.dokku.app-name`, which is an alias for the app name. This can be changed via the `app-label-alias` logs property with the `logs:set` command. Specifying a new alias will reload any running vector container.
|
||||
|
||||
```shell
|
||||
# setting the sink value in quotes is encouraged to avoid
|
||||
# issues with ampersand encoding in shell commands
|
||||
dokku logs:set node-js-app app-label-alias "app-name"
|
||||
```
|
||||
|
||||
An alias may be removed by setting an empty value, which will also reload the running vector container.
|
||||
|
||||
```shell
|
||||
dokku logs:set node-js-app app-label-alias
|
||||
```
|
||||
|
||||
Only one alias may be specified on a per-app basis at a given time.
|
||||
|
||||
App label aliases can also be specified globally by specifying the `--global` flag to `logs:set` with no app name specified:
|
||||
|
||||
```shell
|
||||
dokku logs:set --global app-label-alias "app-name"
|
||||
```
|
||||
|
||||
As with app-specific label alias settings, the global value may also be cleared by setting no value.
|
||||
|
||||
```shell
|
||||
dokku logs:set --global app-label-alias
|
||||
```
|
||||
|
||||
@@ -10,6 +10,7 @@ scheduler-k3s:autoscaling-auth:report <app|--global> [--format stdout|json] [--i
|
||||
scheduler-k3s:cluster-add [ssh://user@host:port] # Adds a server node to a Dokku-managed cluster
|
||||
scheduler-k3s:cluster-list # Lists all nodes in a Dokku-managed cluster
|
||||
scheduler-k3s:cluster-remove [node-id] # Removes client node to a Dokku-managed cluster
|
||||
scheduler-k3s:ensure-charts # Ensures the k3s charts are installed
|
||||
scheduler-k3s:initialize # Initializes a cluster
|
||||
scheduler-k3s:labels:set <app|--global> <property> (<value>) [--process-type PROCESS_TYPE] <--resource-type RESOURCE_TYPE>, Set or clear a label for a given app/process-type/resource-type combination
|
||||
scheduler-k3s:report [<app>] [<flag>] # Displays a scheduler-k3s report for one or more apps
|
||||
@@ -61,7 +62,7 @@ By default, Dokku will attempt to auto-detect the IP address of the server. In c
|
||||
dokku scheduler-k3s:initialize --server-ip 192.168.20.15
|
||||
```
|
||||
|
||||
Dokku's k3s integration natively uses `nginx` as it's ingress load balancer via [ingress-nginx](https://github.com/kubernetes/ingress-nginx). Properties set by the `nginx` plugin will be respected, either by turning them into annotations or creating a custom server/location snippet that the `ingress-nginx` project can use.
|
||||
Dokku's k3s integration natively uses `nginx` as it's ingress load balancer via [ingress-nginx](https://github.com/kubernetes/ingress-nginx). Properties set by the `nginx` plugin will be respected, either by turning them into annotations or creating a custom server/location snippet that the `ingress-nginx` project can use. A `ps:restart` is required after changing nginx properties in order to have them apply to running resources.
|
||||
|
||||
Dokku can also use Traefik on cluster initialization via the [Traefik's CRDs](https://doc.traefik.io/traefik/providers/kubernetes-crd/). To change the ingress, set the `--ingress-class` flag:
|
||||
|
||||
@@ -133,110 +134,43 @@ When attaching an worker or server node, the K3s plugin will look at the IP asso
|
||||
dokku scheduler-k3s:set --global network-interface eth1
|
||||
```
|
||||
|
||||
### Changing deploy timeouts
|
||||
### Changing deployment settings
|
||||
|
||||
By default, app deploys will timeout after 300s. To customize this value, set the `deploy-timeout` property via `scheduler-k3s:set`:
|
||||
The k3s plugin provides a number of settings that can be used to managed deployments on a per-app basis. The following table outlines ones not covered elsewhere:
|
||||
|
||||
| Name | Description | Global Default |
|
||||
|-----------------------|---------------------------------------------------|--------------------|
|
||||
| `deploy-timeout` | Controls when app deploys will timeout in seconds | `300s` |
|
||||
| `kustomize-root-path` | Controls the folder context from the deployed repository used for Kustomize | `config/kustomize` |
|
||||
| `image-pull-secrets` | Name of a kubernetes secret used to auth against a registry | Contents of `~/.docker/config.json` from Dokku server |
|
||||
| `namespace` | Controls the namespace used for resource creation | `default` |
|
||||
| `rollback-on-failure` | Whether to rollback failed deploys | `false` |
|
||||
| `shm-size` | Default shared memory size for pods | Kubernetes default |
|
||||
|
||||
All settings can be set via the `scheduler-k3s:set` command. Using `deploy-timeout` as an example:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app deploy-timeout 60s
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
The default value may be set by passing an empty value for the option in question:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app deploy-timeout
|
||||
```
|
||||
|
||||
The `deploy-timeout` property can also be set globally. The global default is `300s`.
|
||||
Properties can also be set globally. If not set for an app, the global value will apply.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global deploy-timeout 60s
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
The global default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global deploy-timeout
|
||||
```
|
||||
|
||||
### Customizing the namespace
|
||||
|
||||
By default, app deploys will run against the `default` Kubernetes namespace. To customize this value, set the `namespace` property via `scheduler-k3s:set`:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app namespace lollipop
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app namespace
|
||||
```
|
||||
|
||||
The `namespace` property can also be set globally. The global default is `default`.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global namespace 60s
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global namespace
|
||||
```
|
||||
|
||||
### Enabling rollback on failure
|
||||
|
||||
By default, app deploys do not rollback on failure. To enable this functionality, set the `rollback-on-failure` property via `scheduler-k3s:set`:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app rollback-on-failure true
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app rollback-on-failure
|
||||
```
|
||||
|
||||
The `rollback-on-failure` property can also be set globally. The global default is `false`.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global rollback-on-failure false
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global rollback-on-failure
|
||||
```
|
||||
|
||||
### Using image pull secrets
|
||||
|
||||
When authenticating against a registry via `registry:login`, the scheduler-k3s plugin will authenticate all servers in the cluster against the registry specified. If desired, an image pull secret can be used instead. To customize this value, set the `image-pull-secrets` property via `scheduler-k3s:set`:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app image-pull-secrets lollipop
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app image-pull-secrets
|
||||
```
|
||||
|
||||
The `image-pull-secrets` property can also be set globally. The global default is empty string, and k3s will use Dokku's locally configured `~/.docker/config.json` for any private registry pulls.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global image-pull-secrets 60s
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global image-pull-secrets
|
||||
```
|
||||
|
||||
### SSL Certificates
|
||||
|
||||
#### Enabling letsencrypt integration
|
||||
@@ -312,6 +246,8 @@ The following resource types are supported:
|
||||
- `traefik_ingressroute`
|
||||
- `traefik_middleware`
|
||||
|
||||
A `ps:restart` is required after setting annotations in order to have them apply to running resources.
|
||||
|
||||
#### Removing an annotation
|
||||
|
||||
To unset an annotation, pass an empty value:
|
||||
@@ -321,6 +257,8 @@ dokku scheduler-k3s:annotations:set node-js-app annotation.key --resource-type d
|
||||
dokku scheduler-k3s:annotations:set node-js-app annotation.key --resource-type deployment --process-type web
|
||||
```
|
||||
|
||||
A `ps:restart` is required after removing annotations in order to remove them from running resources.
|
||||
|
||||
#### Setting Labels
|
||||
|
||||
Dokku injects certain labels into each created resource by default, but it may be necessary to inject others for tighter integration with third-party tools. The `scheduler-k3s:labels:set` command can be used to perform this task. The command takes an app name and a required `--resource-type` flag.
|
||||
@@ -349,6 +287,8 @@ The following resource types are supported:
|
||||
- `traefik_ingressroute`
|
||||
- `traefik_middleware`
|
||||
|
||||
A `ps:restart` is required after setting labels in order to have them apply to running resources.
|
||||
|
||||
#### Removing a label
|
||||
|
||||
To unset an label, pass an empty value:
|
||||
@@ -358,6 +298,8 @@ dokku scheduler-k3s:annotations:set node-js-app label.key --resource-type deploy
|
||||
dokku scheduler-k3s:labels:set node-js-app label.key --resource-type deployment --process-type web
|
||||
```
|
||||
|
||||
A `ps:restart` is required after removing labels in order to remove them from running resources.
|
||||
|
||||
### Autoscaling
|
||||
|
||||
#### Workload Autoscaling
|
||||
@@ -408,6 +350,55 @@ Each value in the `metadata` stanza can use the following interpolated strings:
|
||||
- `DOKKU_PROCESS_TYPE`: The name of the process being scaled
|
||||
- `DOKKU_APP_NAME`: The name of the app being scaled
|
||||
|
||||
##### HTTP Autoscaling
|
||||
|
||||
In addition to the built-in scalers that Keda provides, Dokku also supports Keda's HTTP Add On. This requires that the addon be properly installed and configured. For existing k3s clusters, this can be performed by the `scheduler-k3s:ensure-charts` command:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:ensure-charts
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> Users who wish to use this functionality on a cluster not managed by Dokku will need to manually install the `keda-http-add-on` into the `keda` namespace. Please consult the `keda-http-add-on` [install documentation](https://kedacore.github.io/http-add-on/install.html) for further details.
|
||||
|
||||
> [!WARNING]
|
||||
> If the `keda-http-add-on` chart is not installed, then this trigger will be ignored.
|
||||
|
||||
Once the chart is configured, an `http` trigger can be specified like so:
|
||||
|
||||
```json
|
||||
{
|
||||
"formation": {
|
||||
"web": {
|
||||
"autoscaling": {
|
||||
"min_quantity": 1,
|
||||
"max_quantity": 10,
|
||||
"triggers": [
|
||||
{
|
||||
"type": "http",
|
||||
"metadata": {
|
||||
"scaledown_period_seconds": "150",
|
||||
"request_rate_target_value": "50"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The following metadata properties are supported with the http autoscaler:
|
||||
|
||||
- `scale_by`: (default: `request_rate`) whether to scale by `concurrency` or `request_rate`.
|
||||
- `scaledown_period_seconds`: (default: `300`) period to wait after the last reported active before scaling the resource back to 0.
|
||||
- `request_rate_granularity_seconds`: (default: `1`) granualarity of the aggregated requests for the request rate calculation.
|
||||
- `request_rate_target_value`: (default: `100`) target value for the request rate.
|
||||
- `request_rate_window_seconds`: (default: `60`) aggregation window for the request rate calculation.
|
||||
- `concurrency_target_value`: (default: `100`) target value for the request concurrency.
|
||||
|
||||
Note that due to Keda limitations, scaling is done by _either_ `concurrency` or `request_rate`.
|
||||
|
||||
#### Workload Autoscaling Authentication
|
||||
|
||||
Most Keda triggers require some form of authentication to query for data. In the Kubernetes API, they are represented by `TriggerAuthentication` and `ClusterTriggerAuthentication` resources. Dokku can manage these via the `scheduler-k3s:autoscaling-auth` commands, and includes generated resources with each helm release generated by a deploy.
|
||||
@@ -470,6 +461,30 @@ dokku scheduler-k3s:autoscaling-auth:report node-js-app --include-metadata
|
||||
Datadog datadogSite: us5.datadoghq.com
|
||||
```
|
||||
|
||||
### Integrating Kustomize
|
||||
|
||||
Dokku supports integration with [Kustomize](https://kustomize.io/) to further customize the generated helm charts for app deployments. For example, a `config/kustomize/kustomization.yaml` file with the following contents will override the scale for each process deployed to `3`:
|
||||
|
||||
```yaml
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- rendered.yaml
|
||||
patches:
|
||||
- patch: |-
|
||||
- op: replace
|
||||
path: /spec/replicas
|
||||
value: 3
|
||||
target:
|
||||
group: apps
|
||||
version: v1
|
||||
kind: Deployment
|
||||
```
|
||||
|
||||
When using Kustomize with Dokku, all Kustomize-files _must_ be placed in the `config/kustomize` folder, with a `kustomization.yaml` file being the entrypoint to Kustomize. Dokku will render the helm chart to a `rendered.yaml` file, and then execute Kustomize with the `config/kustomize` folder as the context.
|
||||
|
||||
See the [Kustomize](https://kustomize.io/) website for more details on how to use Kustomize.
|
||||
|
||||
### Using kubectl remotely
|
||||
|
||||
> [!WARNING]
|
||||
@@ -513,6 +528,35 @@ dokku scheduler-k3s:set --global kube-context
|
||||
|
||||
The default value for the `kube-context` is an empty string, and will result in Dokku using the current context within the kubeconfig.
|
||||
|
||||
### Customizing Helm Chart Properties
|
||||
|
||||
Dokku includes a number of helm charts by default with settings that are optimized for Dokku. That said, it may be useful to further customize the charts for a given environment. Users can customize which charts are installed by setting properties prefixed with `chart.$CHART_NAME.` with the `--global` flag.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global chart.cert-manager.version 1.13.3
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> Properties follow dot-notation, and are expanded according to Helm's internal logic. See the [Helm documentation](https://helm.sh/docs/helm/helm_install/#helm-install) for `helm install` for further details.
|
||||
|
||||
To unset a chart property, omit the value from the `scheduler-k3s:set` call:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global chart.cert-manager.version
|
||||
```
|
||||
|
||||
A `scheduler-k3s:ensure-charts` command with the `--force` flag is required after changing any chart properties in order to have them apply. This will install all charts, not just the ones that have changed.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:ensure-charts --force
|
||||
```
|
||||
|
||||
Alternatively, a comma separated list of chart names can be specified to only force install the specified charts:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:ensure-charts --charts cert-manager
|
||||
```
|
||||
|
||||
## Scheduler Interface
|
||||
|
||||
The following sections describe implemented and unimplemented scheduler functionality for the `k3s` scheduler.
|
||||
@@ -528,13 +572,17 @@ This plugin implements various functionality through `plugn` triggers to integra
|
||||
- `enter`
|
||||
- `deploy`
|
||||
- healthchecks
|
||||
- Due to Kubernetes limitations, only a single healthcheck is supported for each of the `liveness`, `readiness`, and `startup` healthchecks
|
||||
- Due to Kubernetes limitations, content checks are not supported
|
||||
- Ports specified in the `app.json` are ignored in favor of the container port on the port mapping detected
|
||||
- Due to Kubernetes limitations, only a single healthcheck is supported for each of the `liveness`, `readiness`, and `startup` healthchecks
|
||||
- Due to Kubernetes limitations, content checks are not supported
|
||||
- Ports specified in the `app.json` are ignored in favor of the container port on the port mapping detected
|
||||
- `logs`
|
||||
- `nginx`
|
||||
- Properties set by the `nginx` plugin will be respected, either by turning them into annotations or creating a custom server/location snippet that the `ingress-nginx` project can use. A `ps:restart` after changing any nginx properties is required in order to have them apply.
|
||||
- The `nginx:access-logs` and `nginx:error-logs` commands will fetch logs from one running `ingress-nginx` pod.
|
||||
- The `nginx:show-config` command will retrieve any `server` blocks associated with a domain attached to the app from one running `ingress-nginx` pod.
|
||||
- `ps:stop`
|
||||
- `run`
|
||||
- The `scheduler-post-run` trigger is not always triggered
|
||||
- The `scheduler-post-run` trigger is not always triggered
|
||||
- `run:detached`
|
||||
- `run:list`
|
||||
|
||||
@@ -550,7 +598,19 @@ The following Dokku functionality is not implemented at this time.
|
||||
|
||||
### Logging support
|
||||
|
||||
App logs for the `logs` command are fetched by Dokku from running containers via the `kubectl` cli. Persisting logs via Vector is not implemented at this time. Users may choose to configure the Vector Kubernetes integration directly by following [this guide](https://vector.dev/docs/setup/installation/platforms/kubernetes/).
|
||||
App logs for the `logs` command are fetched by Dokku from running containers via the Kubernetes api. While the `k3s` scheduler does not integrate with the `logs:vector-*` subcommands, it does respect the global `vector-sink` logs property. When that property is set, the `scheduler-k3s:ensure-charts` command can be utilized to reconfigure vector to ship kubernetes logs to the provided sink.
|
||||
|
||||
To setup log shipping, configure the global `vector-sink` property for the `logs` plugin.. Note that this can be run before _or_ after the `scheduler-k3s:ensure-charts` command - if run before, the `scheduler-k3s:ensure-charts` subcommand will pick up the value.
|
||||
|
||||
```shell
|
||||
dokku logs:set --global vector-sink "console://?encoding[codec]=json"
|
||||
```
|
||||
|
||||
Next, run the `scheduler-k3s:ensure-charts` command with the `vector` chart to force the `k3s` scheduler to reconfigure vector with the specified sink:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:ensure-charts --charts vector
|
||||
```
|
||||
|
||||
### Supported Resource Management Properties
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ At this time, the following dokku commands are used to implement a complete sche
|
||||
- `apps:clone`: handles app cloning
|
||||
- triggers: post-app-clone-setup
|
||||
- `cron`: generates cron tasks for the app
|
||||
- triggers: cron-write
|
||||
- triggers: scheduler-cron-write
|
||||
- `deploy`: deploys app proceses and checks the status of a deploy
|
||||
- triggers: scheduler-app-status, scheduler-deploy, scheduler-is-deployed, scheduler-logs-failed
|
||||
- `enter`: enters a running container
|
||||
@@ -112,7 +112,9 @@ At this time, the following dokku commands are used to implement a complete sche
|
||||
- `run:logs`: fetches running container logs
|
||||
- triggers: scheduler-run-logs
|
||||
- `ps:stop`: stops app processes
|
||||
- triggers: scheduler-stop
|
||||
- triggers: scheduler-stop, scheduler-cron-write
|
||||
- `ps:start`: starts app processes
|
||||
- triggers: scheduler-deploy, scheduler-cron-write
|
||||
- `ps:inspect`: outputs inspect output for processes in an app
|
||||
- triggers: scheduler-inspect
|
||||
|
||||
|
||||
@@ -36,12 +36,15 @@ dokku checks:set node-js-app wait-to-retire 30
|
||||
|
||||
Defaults to `60`.
|
||||
|
||||
## Setting stop grace period
|
||||
|
||||
You can set the `stop-timeout-seconds` property on the `ps` plugin to change this value (default: `30`). See the [process management documentation](/docs/processes/process-management.md#changing-process-management-settings) for more information.
|
||||
|
||||
## Configuring check settings using the `config` plugin
|
||||
|
||||
There are certain settings that can be configured via environment variables:
|
||||
|
||||
- `DOKKU_DEFAULT_CHECKS_WAIT`: (default: `10`) If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running.
|
||||
- `DOKKU_DOCKER_STOP_TIMEOUT`: (default: `10`) Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands *also* respect this value. If not specified, the Docker defaults for the [`docker stop` command](https://docs.docker.com/engine/reference/commandline/stop/) will be used.
|
||||
|
||||
The following settings may also be specified in the `app.json` file, though are available as environment variables in order to ease application reuse.
|
||||
|
||||
@@ -150,13 +153,13 @@ One or more healthchecks can be defined in the `app.json` file - see the [deploy
|
||||
{
|
||||
"healthchecks": {
|
||||
"web": [
|
||||
{
|
||||
"type": "startup",
|
||||
"name": "web check",
|
||||
"description": "Checking if the app responds to the /health/ready endpoint",
|
||||
"path": "/health/ready",
|
||||
"attempts": 3
|
||||
}
|
||||
{
|
||||
"type": "startup",
|
||||
"name": "web check",
|
||||
"description": "Checking if the app responds to the /health/ready endpoint",
|
||||
"path": "/health/ready",
|
||||
"attempts": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,6 +119,21 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `app-json-is-valid`
|
||||
|
||||
- Description: Checks to see if the provided app.json file is valid
|
||||
- Invoked by: Appjson extraction during deployment
|
||||
- Arguments: `$APP $APP_JSON_PATH`
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `app-maybe-create`
|
||||
|
||||
- Description: Creates an app (gated by whether this is globally enabled or not)
|
||||
@@ -583,22 +598,6 @@ DOKKU_SCHEDULER="$1"
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `cron-write`
|
||||
|
||||
- Description: Force triggers writing out cron entries
|
||||
- Invoked by:
|
||||
- Arguments:
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `dependencies`
|
||||
|
||||
- Description: Used to install system-level dependencies.
|
||||
@@ -1700,7 +1699,7 @@ curl "http://httpstat.us/200"
|
||||
### `post-domains-update`
|
||||
|
||||
- Description: Allows you to run commands once the domain for an app has been updated. It also sends in the command that has been used. This can be "add", "clear" or "remove". The third argument will be the optional list of domains
|
||||
- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`, `dokku domains:set`
|
||||
- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`, `dokku domains:reset`, `dokku domains:set`
|
||||
- Arguments: `$APP` `action name` `domains`
|
||||
- Example:
|
||||
|
||||
@@ -2051,7 +2050,9 @@ CMD="cat > gm && \
|
||||
dpkg -s graphicsmagick &>/dev/null || \
|
||||
(apt-get update -qq && apt-get -qq -y --no-install-recommends install graphicsmagick && apt-get clean)"
|
||||
|
||||
CID=$(docker run $DOKKU_GLOBAL_RUN_ARGS -i -a stdin $IMAGE /bin/bash -c "$CMD")
|
||||
CID_FILE=/tmp/cid-file
|
||||
docker run $DOKKU_GLOBAL_RUN_ARGS -i -a stdin --cidfile /tmp/cid-file "$IMAGE" /bin/bash -c "$CMD"
|
||||
CID="$(cat "$CID_FILE")"
|
||||
test $(docker wait $CID) -eq 0
|
||||
DOCKER_COMMIT_LABEL_ARGS=("--change" "LABEL org.label-schema.schema-version=1.0" "--change" "LABEL org.label-schema.vendor=dokku" "--change" "LABEL com.dokku.app-name=$APP")
|
||||
docker commit "${DOCKER_COMMIT_LABEL_ARGS[@]}" $CID $IMAGE >/dev/null
|
||||
@@ -2443,6 +2444,26 @@ DOKKU_SCHEDULER="$1"; APP="$2";
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-cron-write`
|
||||
|
||||
> [!WARNING]
|
||||
> The scheduler plugin trigger apis are under development and may change
|
||||
> between minor releases until the 1.0 release.
|
||||
|
||||
- Description: Force triggers writing out cron entries. Arguments are optional.
|
||||
- Invoked by: `ps:start`, `ps:stop`, `cron:set`
|
||||
- Arguments: `$DOKKU_SCHEDULER $APP`
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-deploy`
|
||||
|
||||
> [!WARNING]
|
||||
@@ -2583,6 +2604,26 @@ DOKKU_SCHEDULER="$1"; APP="$2";
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-proxy-logs`
|
||||
|
||||
> [!WARNING]
|
||||
> The scheduler plugin trigger apis are under development and may change
|
||||
> between minor releases until the 1.0 release.
|
||||
|
||||
- Description: Allows you to run scheduler commands when retrieving failed container logs
|
||||
- Invoked by: `dokku nginx:access-logs` and `dokku nginx:error-logs`
|
||||
- Arguments: `$DOKKU_SCHEDULER $APP $PROXY_TYPE $LOG_TYPE $TAIL $NUM_LINES`
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
DOKKU_SCHEDULER="$1"; APP="$2"; $PROXY_TYPE="$3"; LOG_TYPE="$4"; TAIL="$5"; NUM_LINES="$6"
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-pre-restore`
|
||||
|
||||
> [!WARNING]
|
||||
|
||||
@@ -29,7 +29,7 @@ The workflow looks like this:
|
||||
```shell
|
||||
# having dokku-arch in ../dokku-arch
|
||||
vagrant up build-arch
|
||||
# wait for "==> build-arch: ==> Finished making: dokku 0.34.7-2 (Mon Feb 22 23:20:37 CET 2016)"
|
||||
# wait for "==> build-arch: ==> Finished making: dokku 0.36.2-2 (Mon Feb 22 23:20:37 CET 2016)"
|
||||
cd ../dokku-arch
|
||||
git add PKGBUILD .SRCINFO
|
||||
git commit -m 'Update to dokku 0.9.9'
|
||||
|
||||
@@ -9,11 +9,11 @@ We maintain the Dokku test harness within the `tests` directory:
|
||||
|
||||
## Continuous Integration
|
||||
|
||||
All pull requests have tests run against them on [GitHub Actions](https://github.com/features/actions), a continuous integration platform that provides Docker support for Ubuntu Focal 20.04.
|
||||
All pull requests have tests run against them on [GitHub Actions](https://github.com/features/actions), a continuous integration platform that provides Docker support for Ubuntu Noble 24.04.
|
||||
|
||||
If you wish to skip tests for a particular commit, e.g. documentation changes, you may add the `[ci skip]` designator to your commit message. Commits that _should_ be tested but have the above designator will not be merged.
|
||||
|
||||
While we do provide official packages for a variety of platforms, as our test suite currently runs on Ubuntu Focal 20.04, we only provide official installation support for that platform and the latest LTS release of Ubuntu (currently 20.04).
|
||||
While we do provide official packages for a variety of platforms, as our test suite currently runs on Ubuntu Noble 24.04, we only provide official installation support for that platform and the supported LTS releases of Ubuntu (currently 22.04, and 24.04).
|
||||
|
||||
## Local Test Execution
|
||||
|
||||
|
||||
@@ -89,6 +89,7 @@ cd /var
|
||||
touch swap.img
|
||||
chmod 600 swap.img
|
||||
|
||||
swapoff /var/swap.img
|
||||
dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
|
||||
mkswap /var/swap.img
|
||||
swapon /var/swap.img
|
||||
@@ -96,5 +97,8 @@ free
|
||||
|
||||
echo "/var/swap.img none swap sw 0 0" >> /etc/fstab
|
||||
```
|
||||
Note: it may be necessary to call swapoff, mkswap and swapon explicitly: `sudo /sbin/swapoff /var/swap.img`, etc.
|
||||
|
||||
[Reference](https://www.digitalocean.com/community/tutorials/how-to-configure-virtual-memory-swap-file-on-a-vps)
|
||||
|
||||
[Add'l Reference](https://serverfault.com/questions/994297/increase-swap-file-size-that-already-exists-ec-2-linux)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
1. Login to your [DigitalOcean](https://m.do.co/c/fe06b043a083) account.
|
||||
2. Click **Create a Droplet**.
|
||||
3. Under **Choose an image > Marketplace**, search latest **Dokku** release for Ubuntu 20.04 _(version numbers may vary)_.
|
||||
3. Under **Choose an image > Marketplace**, search latest **Dokku** release for Ubuntu 24.04 _(version numbers may vary)_.
|
||||
4. Under **Choose a size**, select your machine spec.
|
||||
5. Under **Choose a datacenter region**, select your region.
|
||||
6. Add an SSH Key.
|
||||
@@ -32,5 +32,3 @@
|
||||
# replace dokku.me with a hostname pointed at your server
|
||||
dokku domains:set-global dokku.me
|
||||
```
|
||||
|
||||
13. Once the web UI has been submitted, you will be redirected to our [application deployment tutorial](/docs/deployment/application-deployment.md), which will guide you through deploying a sample application to your Dokku server.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Pull the dokku/dokku image:
|
||||
|
||||
```shell
|
||||
docker pull dokku/dokku:0.34.7
|
||||
docker pull dokku/dokku:0.36.2
|
||||
```
|
||||
|
||||
Next, run the image.
|
||||
@@ -19,17 +19,15 @@ docker container run -d \
|
||||
--publish 8443:443 \
|
||||
--volume /var/lib/dokku:/mnt/dokku \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
dokku/dokku:0.34.7
|
||||
dokku/dokku:0.36.2
|
||||
```
|
||||
|
||||
Alternatively, you can use `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
dokku:
|
||||
image: dokku/dokku:0.34.7
|
||||
image: dokku/dokku:0.36.2
|
||||
container_name: dokku
|
||||
network_mode: bridge
|
||||
ports:
|
||||
@@ -85,7 +83,7 @@ redis: https://github.com/dokku/dokku-redis.git
|
||||
The alternative is to build a custom docker image via a custom Dockerfile. This Dockerfile can run any `plugin:install` command. Note that the version installed at that time will be the one that persists. Below is an example Dockerfile showing this method.
|
||||
|
||||
```Dockerfile
|
||||
FROM dokku/dokku:0.34.7
|
||||
FROM dokku/dokku:0.36.2
|
||||
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
|
||||
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git redis
|
||||
```
|
||||
|
||||
@@ -19,7 +19,7 @@ source openrc.sh # Set the environment variables for DreamHost Cloud
|
||||
|
||||
This allows OpenStack client to connect to DreamHost API endpoints.
|
||||
The command below creates a new server instance named `my-dokku-instance`
|
||||
based on Ubuntu 20.04, with 2 GB RAM and 1 CPU (the flavor called
|
||||
based on Ubuntu 24.04, with 2 GB RAM and 1 CPU (the flavor called
|
||||
`supersonic`), opening network port access to HTTP and SSH (the
|
||||
`default` security group), and the name of the chosen SSH key. This
|
||||
key will be automatically added to the new server in the
|
||||
@@ -28,7 +28,7 @@ be reused by Dokku.
|
||||
|
||||
```sh
|
||||
openstack server create \
|
||||
--image Ubuntu-20.04 \
|
||||
--image Ubuntu-24.04 \
|
||||
--flavor gp1.supersonic \
|
||||
--security-group default \
|
||||
--key-name $YOUR_SSH_KEYNAME \
|
||||
|
||||
@@ -9,8 +9,8 @@ Dokku is an extensible, open source Platform as a Service that runs on a single
|
||||
To start using Dokku, you'll need a system that meets the following minimum requirements:
|
||||
|
||||
- A fresh installation of any of the following operating systems:
|
||||
- [Ubuntu 20.04/22.04](https://www.ubuntu.com/download)
|
||||
- [Debian 10+ x64](https://www.debian.org/distrib/)
|
||||
- [Ubuntu 22.04/24.04](https://www.ubuntu.com/download)
|
||||
- [Debian 11+ x64](https://www.debian.org/distrib/)
|
||||
- A server with one of the following architectures
|
||||
- AMD64 (alternatively known as `x86_64`), commonly used for Intel cloud servers
|
||||
- ARMV8 (alternatively known as `arm64`), commonly used for Raspberry PI and AWS Graviton
|
||||
@@ -37,8 +37,8 @@ To install the latest stable version of Dokku, you can run the following shell c
|
||||
|
||||
```shell
|
||||
# for debian systems, installs Dokku via apt-get
|
||||
wget -NP . https://dokku.com/install/v0.34.7/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.7 bash bootstrap.sh
|
||||
wget -NP . https://dokku.com/install/v0.36.2/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.36.2 bash bootstrap.sh
|
||||
```
|
||||
|
||||
The installation process takes about 5-10 minutes, depending upon internet connection speed.
|
||||
|
||||
@@ -226,11 +226,21 @@ sudo ufw disable
|
||||
|
||||
### I can't connect to my application because the server is sending an invalid response, or can't provide a secure connection
|
||||
|
||||
This isn't usually an issue with Dokku, but rather an app config problem. This can happen when your application is configured to enforce secure connections/HSTS, but you don't have SSL set up for the app.
|
||||
This is normally a config problem with your app, rather than an issue with Dokku.
|
||||
|
||||
In Rails at least, if your `application.rb` or `environmnents/production.rb` include the line `configure.force_ssl = true` which includes HSTS, try commenting that out and redeploying.
|
||||
One common cause is an application configured to enforce secure connections/HSTS, but SSL is not set up. In Ruby on Rails, if your `application.rb` or `config/environments/production.rb` include the line `configure.force_ssl = true`, try commenting that line out and redeploying. If this solves the issue temporarily, longer-term you should consider [configuring SSL](/docs/configuration/ssl.md).
|
||||
|
||||
|
||||
### I deployed a new application, but an existing application is being served when I visit it
|
||||
|
||||
This problem has the same cause as the previous issue: your application is attempting to enforce SSL, but SSL is not configured. Disabling SSL enforcement should solve the problem.
|
||||
|
||||
The underlying cause is best understood with an example. Let's say you already have `https://apples.example.com/` working, and you're trying to deploy `bananas.example.com/`. But whenever you visit `bananas.example.com` you see `apples.example.com` instead. This is caused by `bananas.example.com` forcing SSL:
|
||||
|
||||
1. Your browser sends a request to `http://bananas.example.com`.
|
||||
1. `bananas.example.com` issues a redirect to `https://bananas.example.com`.
|
||||
1. Your browser sends a request to `https://bananas.example.com`. But you haven't configured SSL for `bananas.example.com` yet! So this request ends up routed to `https://apples.example.com`, which _does_ have an SSL config.
|
||||
|
||||
If this solves the issue temporarily, longer term you should consider [configuring SSL](/docs/configuration/ssl.md).
|
||||
|
||||
### My application deploys properly, but won't load in browser "connection refused"
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ Docker releases updates periodically to their engine. We recommend reading their
|
||||
|
||||
Before upgrading, check the migration guides to get comfortable with new features and prepare your deployment to be upgraded.
|
||||
|
||||
- [Upgrading to 0.35](/docs/appendices/0.35.0-migration-guide.md)
|
||||
- [Upgrading to 0.34](/docs/appendices/0.34.0-migration-guide.md)
|
||||
- [Upgrading to 0.33](/docs/appendices/0.33.0-migration-guide.md)
|
||||
- [Upgrading to 0.32](/docs/appendices/0.32.0-migration-guide.md)
|
||||
@@ -40,7 +41,9 @@ Before upgrading, check the migration guides to get comfortable with new feature
|
||||
- [Upgrading to 0.6](/docs/appendices/0.6.0-migration-guide.md)
|
||||
- [Upgrading to 0.5](/docs/appendices/0.5.0-migration-guide.md)
|
||||
|
||||
## Before upgrading
|
||||
## Upgrade Process
|
||||
|
||||
### Before upgrading
|
||||
|
||||
If you'll be updating docker or the herokuish package simultaneously, it's recommended
|
||||
that you stop all applications before upgrading and rebuild afterwards. This is not
|
||||
@@ -69,16 +72,17 @@ dokku --quiet apps:list | xargs -L1 dokku ps:stop
|
||||
dokku --quiet apps | xargs -L1 dokku ps:stop
|
||||
```
|
||||
|
||||
## After upgrading
|
||||
### Upgrading
|
||||
|
||||
After upgrading, you should rebuild the applications to take advantage of any
|
||||
new buildpacks that were released:
|
||||
> [!IMPORTANT]
|
||||
> Unless specified, the `bootstrap.sh` script installs Dokku via a Debian package (`.deb`). Using either the `dokku-update` or `apt` methods are enough to perform an upgrade of Dokku.
|
||||
|
||||
```shell
|
||||
dokku ps:rebuild --all
|
||||
```
|
||||
Please read the migration guides for each version in between your currently installed version of Dokku and the version you are upgrading to in order to ensure minimal downtime.
|
||||
|
||||
## Upgrading using `dokku-update`
|
||||
#### Upgrading using `dokku-update`
|
||||
|
||||
> [!WARNING]
|
||||
> The `dokku-update` package currently does not support upgrading to a specific version of Dokku. If this is required by a particular migration guide, use the `apt` method for upgrading.
|
||||
|
||||
We provide a helpful binary called `dokku-update`. This is a recommended package that:
|
||||
|
||||
@@ -89,22 +93,32 @@ We provide a helpful binary called `dokku-update`. This is a recommended package
|
||||
This binary is available on Debian and RPM-based systems from our package repositories under the name `dokku-update`. When installing from source,
|
||||
this is available from a separate Github repository at [dokku/dokku-update](https://github.com/dokku/dokku-update).
|
||||
|
||||
## Upgrading using `apt`
|
||||
#### Upgrading using `apt`
|
||||
|
||||
If Dokku was installed in a Debian or Ubuntu system, via `apt-get install dokku` or `bootstrap.sh`, you can upgrade with `apt-get`:
|
||||
|
||||
```shell
|
||||
# update your local apt cache
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get update
|
||||
|
||||
# update dokku and its dependencies
|
||||
sudo apt-get -qq -y --no-install-recommends install dokku herokuish sshcommand plugn gliderlabs-sigil dokku-update dokku-event-listener
|
||||
sudo apt-get --no-install-recommends install dokku herokuish sshcommand plugn gliderlabs-sigil dokku-update dokku-event-listener
|
||||
|
||||
# or just upgrade every package:
|
||||
sudo apt-get upgrade
|
||||
```
|
||||
|
||||
## Upgrading from source
|
||||
To upgrade to a specific version of Dokku, specify it on the `apt-get` call:
|
||||
|
||||
```shell
|
||||
# specify the version _without_ the `v` prefix
|
||||
sudo apt-get dokku=$VERSION
|
||||
```
|
||||
|
||||
#### Upgrading from source
|
||||
|
||||
> [!CAUTION]
|
||||
> Dokku is not normally installed from source. Executing a source upgrade when the installation was performed via apt package may result in an inoperable system and will require manual work to get Dokku in a working state.
|
||||
|
||||
If you installed Dokku from source (less common), upgrade with:
|
||||
|
||||
@@ -127,3 +141,13 @@ git clone https://github.com/gliderlabs/herokuish.git
|
||||
cd herokuish
|
||||
CIRCLECI=true IMAGE_NAME=gliderlabs/herokuish BUILD_TAG=latest make build/docker
|
||||
```
|
||||
|
||||
### After upgrading
|
||||
|
||||
After upgrading, you should rebuild the applications to take advantage of any
|
||||
new buildpacks that were released:
|
||||
|
||||
```shell
|
||||
dokku ps:rebuild --all
|
||||
```
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ If you’re stuck, there are a number of places you can get help:
|
||||
|
||||
## The Official Dokku Website
|
||||
|
||||
- [https://dokku.com/docs/](/docs/)
|
||||
- [https://dokku.com/docs/getting-started/installation/](/docs/getting-started/installation/)
|
||||
|
||||
The Official Dokku website is always a great place to visit. It features links to oft-used developer tools, community plugins, and guides on using Dokku.
|
||||
|
||||
|
||||
136
docs/home.html
136
docs/home.html
@@ -10,26 +10,26 @@
|
||||
<meta name="author" content="">
|
||||
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon.ico">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="Dokku">
|
||||
<meta name="application-name" content="Dokku">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/browserconfig.xml">
|
||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
|
||||
@@ -38,7 +38,7 @@
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/style.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/style.css" rel="stylesheet">
|
||||
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
|
||||
</head>
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
<main class="container px-4 px-lg-5">
|
||||
<div class="row">
|
||||
<div class="col-lg-7">
|
||||
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.34.7</span></span></a>
|
||||
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.36.2</span></span></a>
|
||||
<h1 class="text-white hero-heading mt-5">An open source PAAS alternative to Heroku.</h1>
|
||||
<h4 class="text-white mt-5">Dokku helps you build and manage the lifecycle of applications from building to scaling.</h4>
|
||||
<div class="d-flex mt-5">
|
||||
@@ -125,7 +125,7 @@
|
||||
</p>
|
||||
<p class="line">
|
||||
<span class="prompt">$</span>
|
||||
<span class="command">sudo DOKKU_TAG=v0.34.7 bash bootstrap.sh</span>
|
||||
<span class="command">sudo DOKKU_TAG=v0.36.2 bash bootstrap.sh</span>
|
||||
</p>
|
||||
<br>
|
||||
|
||||
@@ -226,9 +226,9 @@
|
||||
</svg>
|
||||
Create</a>
|
||||
<a class="nav-link" id="nav-deploy-tab" data-bs-toggle="tab" href="#nav-deploy" role="tab" aria-controls="nav-deploy" aria-selected="false">
|
||||
<svg width="32" height="32" viewBox="0 0.34.72" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M29.8709 1.40551C29.8591 1.34642 29.8311 1.29205 29.7903 1.24881C29.7495 1.20556 29.6976 1.17524 29.6407 1.16141C25.8466 0.20375 17.082 3.61605 12.3285 8.51812C11.4813 9.38524 10.7088 10.3268 10.0198 11.3321C8.55457 11.1953 7.08939 11.3105 5.84189 11.8721C2.31916 13.4706 1.29423 17.6454 1.00817 19.4376C0.992669 19.5358 0.999288 19.6364 1.02751 19.7315C1.05574 19.8267 1.10481 19.9138 1.17093 19.9862C1.23705 20.0586 1.31844 20.1144 1.40878 20.1491C1.49913 20.1838 1.59601 20.1966 1.69192 20.1865L7.34824 19.5456C7.35215 19.9859 7.37777 20.4257 7.42498 20.8633C7.4545 21.1658 7.58527 21.4482 7.79477 21.6618L9.98487 23.9221C10.1921 24.1384 10.466 24.2734 10.7593 24.3037C11.1808 24.3522 11.6044 24.3786 12.0285 24.3829L11.4082 30.2153C11.3985 30.34.7 11.411 30.414 11.4446 30.507C11.4783 30.6001 11.5323 30.684 11.6023 30.7521C11.6724 30.8202 11.7567 30.8708 11.8487 30.9C11.9408 30.9291 12.0381 30.936 12.1331 30.9202C13.8704 30.6322 17.9241 29.5744 19.4639 25.9396C20.0081 24.6508 20.1198 23.1466 19.9942 21.6417C20.9712 20.9312 21.8861 20.134 22.7285 19.2591C27.4994 14.3627 30.7849 5.51625 29.8709 1.40551ZM18.4878 12.9162C18.0711 12.4862 17.7873 11.9384 17.6723 11.3419C17.5573 10.7455 17.6162 10.1273 17.8417 9.56541C18.0672 9.00356 18.449 8.52333 18.939 8.18546C19.4289 7.84759 20.005 7.66725 20.5942 7.66725C21.1835 7.66725 21.7595 7.84759 22.2494 8.18546C22.7394 8.52333 23.1212 9.00356 23.3467 9.56541C23.5722 10.1273 23.6311 10.7455 23.5161 11.3419C23.4011 11.9384 23.1173 12.4862 22.7006 12.9162C22.4242 13.202 22.0959 13.4288 21.7344 13.5835C21.373 13.7383 20.9855 13.8179 20.5942 13.8179C20.2029 13.8179 19.8154 13.7383 19.454 13.5835C19.0926 13.4288 18.7642 13.202 18.4878 12.9162Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M5.29982 22.8765C4.60428 22.9646 3.95721 23.29 3.46136 23.801C2.232 25.074 2.11548 29.7889 2.11548 29.7889C2.11548 29.7889 6.68686 29.6687 7.91692 28.3985C8.41409 27.8876 8.72993 27.2187 8.81347 26.4997" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M29.8709 1.40551C29.8591 1.34642 29.8311 1.29205 29.7903 1.24881C29.7495 1.20556 29.6976 1.17524 29.6407 1.16141C25.8466 0.20375 17.082 3.61605 12.3285 8.51812C11.4813 9.38524 10.7088 10.3268 10.0198 11.3321C8.55457 11.1953 7.08939 11.3105 5.84189 11.8721C2.31916 13.4706 1.29423 17.6454 1.00817 19.4376C0.992669 19.5358 0.999288 19.6364 1.02751 19.7315C1.05574 19.8267 1.10481 19.9138 1.17093 19.9862C1.23705 20.0586 1.31844 20.1144 1.40878 20.1491C1.49913 20.1838 1.59601 20.1966 1.69192 20.1865L7.34824 19.5456C7.35215 19.9859 7.37777 20.4257 7.42498 20.8633C7.4545 21.1658 7.58527 21.4482 7.79477 21.6618L9.98487 23.9221C10.1921 24.1384 10.466 24.2734 10.7593 24.3037C11.1808 24.3522 11.6044 24.3786 12.0285 24.3829L11.4082 30.2153C11.3985 30.3141 11.411 30.414 11.4446 30.507C11.4783 30.6001 11.5323 30.684 11.6023 30.7521C11.6724 30.8202 11.7567 30.8708 11.8487 30.9C11.9408 30.9291 12.0381 30.936 12.1331 30.9202C13.8704 30.6322 17.9241 29.5744 19.4639 25.9396C20.0081 24.6508 20.1198 23.1466 19.9942 21.6417C20.9712 20.9312 21.8861 20.134 22.7285 19.2591C27.4994 14.3627 30.7849 5.51625 29.8709 1.40551ZM18.4878 12.9162C18.0711 12.4862 17.7873 11.9384 17.6723 11.3419C17.5573 10.7455 17.6162 10.1273 17.8417 9.56541C18.0672 9.00356 18.449 8.52333 18.939 8.18546C19.4289 7.84759 20.005 7.66725 20.5942 7.66725C21.1835 7.66725 21.7595 7.84759 22.2494 8.18546C22.7394 8.52333 23.1212 9.00356 23.3467 9.56541C23.5722 10.1273 23.6311 10.7455 23.5161 11.3419C23.4011 11.9384 23.1173 12.4862 22.7006 12.9162C22.4242 13.202 22.0959 13.4288 21.7344 13.5835C21.373 13.7383 20.9855 13.8179 20.5942 13.8179C20.2029 13.8179 19.8154 13.7383 19.454 13.5835C19.0926 13.4288 18.7642 13.202 18.4878 12.9162Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M5.29982 22.8765C4.60428 22.9646 3.95721 23.29 3.46136 23.801C2.232 25.074 2.11548 29.7889 2.11548 29.7889C2.11548 29.7889 6.68686 29.6687 7.91692 28.3985C8.41409 27.8876 8.72993 27.2187 8.81347 26.4997" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</svg>
|
||||
Deploy</a>
|
||||
<a class="nav-link" id="nav-scale-tab" data-bs-toggle="tab" href="#nav-scale" role="tab" aria-controls="nav-scale" aria-selected="false">
|
||||
@@ -343,17 +343,17 @@
|
||||
<a xlink:href="https://github.com/dokku/dokku-letsencrypt" target="_blank">
|
||||
<g id="letsencrypt" data-bs-toggle="svg-tooltip" data-bs-placement="bottom" title="Let's Encrypt" filter="url(#filter4_d_55_77)" transform="translate(225.257,418.257) translate(-225.257,-418.257)" style="animation: 30s linear infinite both letsencrypt_t;">
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(225.257,418.257)"/>
|
||||
<path d="M194,421.271L194,409.133L196.949,409.133L196.949,418.716L201.646,418.716L201.646,421.27L194,421.27L194,421.271ZM211.362,417.105L211.362,417.448C211.362,417.562,211.356,417.67,211.345,417.774L205.156,417.774C205.179,418.014,205.251,418.231,205.371,418.425C205.491,418.62,205.645,418.788,205.834,418.931C206.022,419.074,206.234,419.185,206.468,419.265C206.702,419.345,206.945,419.385,207.197,419.385C207.642,419.385,208.02,419.302,208.328,419.137C208.637,418.971,208.888,418.757,209.082,418.494L211.037,419.728C210.637,420.311,210.108,420.759,209.451,421.074C208.794,421.387,208.031,421.545,207.163,421.545C206.522,421.545,205.917,421.445,205.345,421.245C204.774,421.045,204.274,420.754,203.845,420.371C203.417,419.988,203.08,419.517,202.834,418.957C202.588,418.397,202.466,417.757,202.466,417.036C202.466,416.34,202.585,415.708,202.825,415.142C203.065,414.577,203.391,414.097,203.803,413.702C204.214,413.308,204.699,413.002,205.26,412.785C205.82,412.568,206.426,412.459,207.077,412.459C207.705,412.459,208.282,412.565,208.808,412.776C209.334,412.988,209.785,413.293,210.163,413.693C210.54,414.093,210.833,414.579,211.045,415.151C211.256,415.722,211.362,416.374,211.362,417.105ZM208.773,416.025C208.773,415.579,208.633,415.196,208.353,414.876C208.073,414.556,207.653,414.396,207.093,414.396C206.819,414.396,206.568,414.439,206.339,414.525C206.11,414.611,205.911,414.728,205.739,414.876C205.568,415.025,205.43,415.199,205.328,415.399C205.225,415.599,205.168,415.808,205.156,416.025L208.773,416.025ZM215.853,414.825L215.853,418.095C215.853,418.496,215.93,418.797,216.085,418.998C216.238,419.199,216.515,419.299,216.916,419.299C217.053,419.299,217.198,419.288,217.353,419.265C217.507,419.242,217.635,419.208,217.739,419.162L217.773,421.219C217.579,421.287,217.333,421.347,217.036,421.399C216.738,421.45,216.442,421.476,216.144,421.476C215.573,421.476,215.093,421.404,214.704,421.261C214.315,421.118,214.004,420.912,213.77,420.642C213.536,420.373,213.367,420.052,213.264,419.68C213.161,419.307,213.11,418.892,213.11,418.434L213.11,414.825L211.739,414.825L211.739,412.734L213.093,412.734L213.093,410.488L215.853,410.488L215.853,412.734L217.858,412.734L217.858,414.825L215.853,414.825ZM226.961,415.253C226.732,415.036,226.464,414.854,226.156,414.705C225.847,414.556,225.521,414.482,225.179,414.482C224.915,414.482,224.673,414.534,224.45,414.636C224.227,414.739,224.116,414.917,224.116,415.167C224.116,415.407,224.238,415.579,224.484,415.682C224.73,415.785,225.127,415.899,225.676,416.025C225.996,416.093,226.319,416.191,226.644,416.316C226.97,416.442,227.264,416.608,227.527,416.813C227.79,417.019,228.001,417.27,228.162,417.568C228.321,417.865,228.402,418.219,228.402,418.63C228.402,419.168,228.293,419.622,228.076,419.993C227.859,420.364,227.576,420.664,227.227,420.893C226.879,421.122,226.487,421.287,226.053,421.39C225.619,421.493,225.184,421.544,224.75,421.544C224.053,421.544,223.37,421.433,222.701,421.21C222.033,420.987,221.476,420.658,221.03,420.224L222.607,418.561C222.858,418.836,223.167,419.064,223.533,419.247C223.899,419.43,224.287,419.521,224.699,419.521C224.928,419.521,225.153,419.467,225.376,419.358C225.599,419.25,225.71,419.058,225.71,418.784C225.71,418.521,225.574,418.327,225.299,418.201C225.025,418.075,224.597,417.944,224.013,417.806C223.716,417.738,223.419,417.647,223.122,417.532C222.824,417.418,222.559,417.264,222.325,417.07C222.091,416.876,221.899,416.636,221.751,416.35C221.602,416.064,221.528,415.721,221.528,415.321C221.528,414.807,221.636,414.37,221.854,414.01C222.071,413.649,222.351,413.356,222.694,413.127C223.037,412.898,223.417,412.73,223.834,412.621C224.251,412.512,224.665,412.458,225.077,412.458C225.716,412.458,226.342,412.558,226.954,412.758C227.565,412.958,228.082,413.258,228.505,413.658L226.961,415.253ZM220.429,408.901C219.585,408.901,218.925,409.509,218.925,410.285C218.925,411.103,219.481,411.652,220.309,411.652C220.38,411.652,220.447,411.645,220.51,411.633C220.377,412.238,219.794,412.672,219.243,412.759L219.131,412.777L219.131,414.082L219.276,414.068C219.945,414.004,220.605,413.7,221.089,413.234C221.72,412.626,222.053,411.749,222.053,410.696C222.053,409.656,221.37,408.901,220.429,408.901Z" fill="#2C3C69" transform="translate(211.252,415.223) translate(-211.252,-415.223)"/>
|
||||
<path d="M194,423.748L194,435.885L202.468,435.885L202.468,433.382L196.828,433.382L196.828,430.862L201.868,430.862L201.868,428.514L196.828,428.514L196.828,426.216L202.16,426.216L202.16,423.748L194,423.748Z" fill="#2C3C69" transform="translate(198.234,429.817) translate(-198.234,-429.817)"/>
|
||||
<path d="M209.886,431.222L209.886,435.885L212.715,435.885L212.715,430.605C212.715,430.182,212.661,429.759,212.552,429.336C212.444,428.914,212.267,428.539,212.021,428.214C211.775,427.888,211.453,427.622,211.052,427.417C210.652,427.211,210.166,427.108,209.595,427.108C209.298,427.108,209.018,427.149,208.755,427.228C208.492,427.308,208.249,427.411,208.026,427.537C207.804,427.663,207.609,427.814,207.444,427.991C207.277,428.168,207.144,428.348,207.04,428.531L207.006,428.531L207.006,427.348L204.28,427.348L204.28,435.885L207.109,435.885L207.109,431.257C207.109,431.017,207.14,430.785,207.203,430.562C207.266,430.34.707.36,430.142,207.486,429.971C207.611,429.8,207.769,429.665,207.957,429.568C208.146,429.471,208.366,429.422,208.617,429.422C208.868,429.422,209.077,429.471,209.243,429.568C209.409,429.665,209.537,429.797,209.628,429.962C209.72,430.128,209.786,430.319,209.826,430.537C209.865,430.754,209.886,430.982,209.886,431.222Z" fill="#2C3C69" transform="translate(208.498,431.496) translate(-208.498,-431.496)"/>
|
||||
<path d="M219.297,429.611C219.571,429.737,219.788,429.902,219.948,430.108L221.576,428.223C221.405,428.051,221.202,427.894,220.967,427.751C220.733,427.608,220.476,427.488,220.196,427.391C219.916,427.294,219.624,427.217,219.322,427.16C219.019,427.102,218.713,427.074,218.405,427.074C217.742,427.074,217.118,427.179,216.533,427.391C215.949,427.602,215.441,427.905,215.01,428.299C214.579,428.694,214.24,429.171,213.993,429.731C213.745,430.291,213.622,430.92,213.622,431.617C213.622,432.325,213.745,432.96,213.993,433.52C214.24,434.08,214.579,434.556,215.01,434.951C215.441,435.345,215.949,435.645,216.533,435.851C217.118,436.056,217.747,436.159,218.422,436.159C219.05,436.159,219.645,436.062,220.205,435.868C220.764,435.674,221.222,435.405,221.576,435.062L220.016,433.159C219.845,433.365,219.619,433.522,219.339,433.631C219.059,433.74,218.776,433.794,218.491,433.794C218.182,433.794,217.905,433.737,217.659,433.622C217.413,433.508,217.202,433.351,217.025,433.151C216.847,432.951,216.713,432.72,216.622,432.456C216.531,432.194,216.485,431.914,216.485,431.617C216.485,431.319,216.534,431.04,216.631,430.777C216.728,430.514,216.862,430.282,217.034,430.082C217.205,429.883,217.411,429.722,217.651,429.602C217.891,429.482,218.159,429.422,218.457,429.422C218.742,429.422,219.022,429.485,219.297,429.611Z" fill="#2C3C69" transform="translate(217.599,431.617) translate(-217.599,-431.617)"/>
|
||||
<path d="M227.818,429.594C227.943,429.606,228.066,429.629,228.187,429.662L228.308,427.176C228.239,427.154,228.15,427.136,228.042,427.125C227.933,427.114,227.821,427.108,227.707,427.108C227.182,427.108,226.719,427.246,226.319,427.522C225.918,427.798,225.61,428.155,225.393,428.592L225.359,428.592L225.359,427.358L222.65,427.358L222.65,435.885L225.461,435.885L225.461,431.508C225.461,431.337,225.496,431.138,225.564,430.91C225.633,430.682,225.744,430.471,225.899,430.277C226.053,430.083,226.259,429.918,226.516,429.781C226.773,429.645,227.09,429.576,227.467,429.576C227.581,429.576,227.699,429.582,227.818,429.594Z" fill="#2C3C69" transform="translate(225.479,431.496) translate(-225.479,-431.496)"/>
|
||||
<path d="M234.217,438.362C234.429,438.014,234.62,437.616,234.792,437.171L238.615,427.348L235.632,427.348L233.935,432.834L233.883,432.834L231.98,427.348L228.861,427.348L232.426,435.748L232.152,436.451C232.015,436.816,231.849,437.099,231.655,437.299C231.461,437.499,231.147,437.599,230.712,437.599C230.575,437.599,230.423,437.585,230.258,437.556C230.092,437.528,229.94,437.49,229.804,437.445L229.495,439.811C229.7,439.867,229.943,439.913,230.224,439.947C230.503,439.982,230.774,439.999,231.038,439.999C231.574,439.999,232.04,439.936,232.435,439.811C232.829,439.685,233.172,439.5,233.463,439.254C233.755,439.008,234.006,438.71,234.217,438.362Z" fill="#2C3C69" transform="translate(233.738,433.673) translate(-233.738,-433.673)"/>
|
||||
<path d="M253.34,432.709L253.34,429.439L255.345,429.439L255.345,427.348L253.34,427.348L253.34,425.102L250.58,425.102L250.58,427.348L249.226,427.348L249.226,429.439L250.597,429.439L250.597,433.048C250.597,433.506,250.648,433.922,250.751,434.294C250.854,434.667,251.023,434.987,251.257,435.256C251.491,435.526,251.802,435.732,252.191,435.875C252.58,436.018,253.06,436.09,253.631,436.09C253.929,436.09,254.225,436.065,254.523,436.013C254.82,435.962,255.066,435.902,255.26,435.833L255.226,433.776C255.122,433.822,254.994,433.856,254.84,433.879C254.685,433.903,254.54,433.913,254.403,433.913C254.002,433.913,253.725,433.814,253.572,433.613C253.417,433.411,253.34,433.111,253.34,432.709Z" fill="#2C3C69" transform="translate(252.286,430.596) translate(-252.286,-430.596)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M248.848,431.582C248.848,432.177,248.757,432.748,248.574,433.297C248.391,433.845,248.125,434.328,247.777,434.745C247.429,435.162,247.003,435.497,246.5,435.748C245.997,435.999,245.426,436.125,244.785,436.125C244.26,436.125,243.763,436.02,243.294,435.809C242.825,435.597,242.46,435.308,242.197,434.943L242.163,434.943L242.163,440L239.351,440L239.351,427.348L242.026,427.348L242.026,428.394L242.077,428.394C242.34,428.051,242.703,427.751,243.166,427.494C243.628,427.237,244.174,427.108,244.803,427.108C245.42,427.108,245.979,427.228,246.482,427.468C246.985,427.708,247.411,428.034,247.76,428.445C248.109,428.856,248.377,429.334,248.565,429.877C248.754,430.419,248.848,430.988,248.848,431.582ZM245.994,430.777C246.08,431.04,246.123,431.308,246.123,431.582C246.123,431.857,246.08,432.128,245.994,432.396C245.909,432.664,245.783,432.902,245.617,433.107C245.451,433.313,245.243,433.479,244.991,433.605C244.74,433.73,244.448,433.793,244.117,433.793C243.797,433.793,243.511,433.73,243.26,433.605C243.008,433.479,242.794,433.313,242.617,433.107C242.439,432.902,242.303,432.668,242.206,432.405C242.108,432.142,242.06,431.873,242.06,431.599C242.06,431.325,242.108,431.056,242.206,430.793C242.303,430.531,242.439,430.296,242.617,430.091C242.794,429.885,243.008,429.719,243.26,429.594C243.511,429.468,243.797,429.405,244.117,429.405C244.449,429.405,244.74,429.468,244.991,429.594C245.242,429.72,245.451,429.882,245.617,430.082C245.783,430.282,245.909,430.514,245.994,430.777Z" fill="#2C3C69" transform="translate(244.1,433.554) translate(-244.1,-433.554)"/>
|
||||
<path d="M249.292,410.898L246.185,410.898L246.185,409.302C246.185,408.028,245.148,406.992,243.874,406.992C242.6,406.992,241.563,408.029,241.563,409.302L241.563,410.898L238.456,410.898L238.456,409.302C238.456,406.315,240.886,403.884,243.874,403.884C246.862,403.884,249.292,406.315,249.292,409.302L249.292,410.898L249.292,410.898Z" fill="#F9A11D" transform="translate(243.874,407.391) translate(-243.874,-407.391)"/>
|
||||
<path d="M250.545,410.898L237.203,410.898C236.633,410.898,236.167,411.364,236.167,411.933L236.167,421.803C236.167,422.373,236.633,422.839,237.203,422.839L250.545,422.839C251.115,422.839,251.581,422.373,251.581,421.803L251.581,411.933C251.581,411.364,251.115,410.898,250.545,410.898ZM244.55,417.378L244.55,418.716C244.55,419.089,244.247,419.391,243.874,419.391C243.501,419.391,243.198,419.088,243.198,418.716L243.198,417.378C242.782,417.142,242.501,416.697,242.501,416.184C242.501,415.426,243.116,414.812,243.874,414.812C244.632,414.812,245.247,415.426,245.247,416.184C245.247,416.696,244.966,417.142,244.55,417.378L244.55,417.378Z" fill="#2C3C69" transform="translate(243.874,416.868) translate(-243.874,-416.868)"/>
|
||||
<path d="M235.85,409.426L232.631,409.426C232.109,409.426,231.686,409.003,231.686,408.481C231.686,407.959,232.109,407.535,232.631,407.535L235.85,407.535C236.372,407.535,236.796,407.959,236.796,408.481C236.796,409.003,236.372,409.426,235.85,409.426L235.85,409.426ZM238.118,404.362C237.907,404.362,237.694,404.291,237.518,404.146L234.972,402.052C234.568,401.721,234.51,401.125,234.842,400.722C235.174,400.318,235.769,400.26,236.173,400.592L238.719,402.686C239.122,403.017,239.181,403.613,238.849,404.016C238.662,404.244,238.391,404.362,238.118,404.362L238.118,404.362ZM243.874,402.136C243.352,402.136,242.929,401.712,242.929,401.19L242.929,397.945C242.929,397.423,243.352,397,243.874,397C244.396,397,244.819,397.423,244.819,397.945L244.819,401.19C244.819,401.712,244.396,402.136,243.874,402.136L243.874,402.136ZM249.63,404.362C249.356,404.362,249.086,404.244,248.899,404.016C248.567,403.613,248.625,403.017,249.028,402.686L251.575,400.592C251.979,400.26,252.574,400.318,252.906,400.722C253.237,401.125,253.179,401.721,252.776,402.052L250.229,404.146C250.054,404.291,249.841,404.362,249.63,404.362ZM255.117,409.426L251.867,409.426C251.345,409.426,250.922,409.003,250.922,408.481C250.922,407.959,251.345,407.535,251.867,407.535L255.117,407.535C255.639,407.535,256.063,407.959,256.063,408.481C256.063,409.003,255.639,409.426,255.117,409.426Z" fill="#F9A11D" transform="translate(243.875,403.213) translate(-243.875,-403.213)"/>
|
||||
<path d="M194,421.271L194,409.133L196.949,409.133L196.949,418.716L201.646,418.716L201.646,421.27L194,421.27L194,421.271ZM211.362,417.105L211.362,417.448C211.362,417.562,211.356,417.67,211.345,417.774L205.156,417.774C205.179,418.014,205.251,418.231,205.371,418.425C205.491,418.62,205.645,418.788,205.834,418.931C206.022,419.074,206.234,419.185,206.468,419.265C206.702,419.345,206.945,419.385,207.197,419.385C207.642,419.385,208.02,419.302,208.328,419.137C208.637,418.971,208.888,418.757,209.082,418.494L211.037,419.728C210.637,420.311,210.108,420.759,209.451,421.074C208.794,421.387,208.031,421.545,207.163,421.545C206.522,421.545,205.917,421.445,205.345,421.245C204.774,421.045,204.274,420.754,203.845,420.371C203.417,419.988,203.08,419.517,202.834,418.957C202.588,418.397,202.466,417.757,202.466,417.036C202.466,416.34,202.585,415.708,202.825,415.142C203.065,414.577,203.391,414.097,203.803,413.702C204.214,413.308,204.699,413.002,205.26,412.785C205.82,412.568,206.426,412.459,207.077,412.459C207.705,412.459,208.282,412.565,208.808,412.776C209.334,412.988,209.785,413.293,210.163,413.693C210.54,414.093,210.833,414.579,211.045,415.151C211.256,415.722,211.362,416.374,211.362,417.105ZM208.773,416.025C208.773,415.579,208.633,415.196,208.353,414.876C208.073,414.556,207.653,414.396,207.093,414.396C206.819,414.396,206.568,414.439,206.339,414.525C206.11,414.611,205.911,414.728,205.739,414.876C205.568,415.025,205.43,415.199,205.328,415.399C205.225,415.599,205.168,415.808,205.156,416.025L208.773,416.025ZM215.853,414.825L215.853,418.095C215.853,418.496,215.93,418.797,216.085,418.998C216.238,419.199,216.515,419.299,216.916,419.299C217.053,419.299,217.198,419.288,217.353,419.265C217.507,419.242,217.635,419.208,217.739,419.162L217.773,421.219C217.579,421.287,217.333,421.347,217.036,421.399C216.738,421.45,216.442,421.476,216.144,421.476C215.573,421.476,215.093,421.404,214.704,421.261C214.315,421.118,214.004,420.912,213.77,420.642C213.536,420.373,213.367,420.052,213.264,419.68C213.161,419.307,213.11,418.892,213.11,418.434L213.11,414.825L211.739,414.825L211.739,412.734L213.093,412.734L213.093,410.488L215.853,410.488L215.853,412.734L217.858,412.734L217.858,414.825L215.853,414.825ZM226.961,415.253C226.732,415.036,226.464,414.854,226.156,414.705C225.847,414.556,225.521,414.482,225.179,414.482C224.915,414.482,224.673,414.534,224.45,414.636C224.227,414.739,224.116,414.917,224.116,415.167C224.116,415.407,224.238,415.579,224.484,415.682C224.73,415.785,225.127,415.899,225.676,416.025C225.996,416.093,226.319,416.191,226.644,416.316C226.97,416.442,227.264,416.608,227.527,416.813C227.79,417.019,228.001,417.27,228.162,417.568C228.321,417.865,228.402,418.219,228.402,418.63C228.402,419.168,228.293,419.622,228.076,419.993C227.859,420.364,227.576,420.664,227.227,420.893C226.879,421.122,226.487,421.287,226.053,421.39C225.619,421.493,225.184,421.544,224.75,421.544C224.053,421.544,223.37,421.433,222.701,421.21C222.033,420.987,221.476,420.658,221.03,420.224L222.607,418.561C222.858,418.836,223.167,419.064,223.533,419.247C223.899,419.43,224.287,419.521,224.699,419.521C224.928,419.521,225.153,419.467,225.376,419.358C225.599,419.25,225.71,419.058,225.71,418.784C225.71,418.521,225.574,418.327,225.299,418.201C225.025,418.075,224.597,417.944,224.013,417.806C223.716,417.738,223.419,417.647,223.122,417.532C222.824,417.418,222.559,417.264,222.325,417.07C222.091,416.876,221.899,416.636,221.751,416.35C221.602,416.064,221.528,415.721,221.528,415.321C221.528,414.807,221.636,414.37,221.854,414.01C222.071,413.649,222.351,413.356,222.694,413.127C223.037,412.898,223.417,412.73,223.834,412.621C224.251,412.512,224.665,412.458,225.077,412.458C225.716,412.458,226.342,412.558,226.954,412.758C227.565,412.958,228.082,413.258,228.505,413.658L226.961,415.253ZM220.429,408.901C219.585,408.901,218.925,409.509,218.925,410.285C218.925,411.103,219.481,411.652,220.309,411.652C220.38,411.652,220.447,411.645,220.51,411.633C220.377,412.238,219.794,412.672,219.243,412.759L219.131,412.777L219.131,414.082L219.276,414.068C219.945,414.004,220.605,413.7,221.089,413.234C221.72,412.626,222.053,411.749,222.053,410.696C222.053,409.656,221.37,408.901,220.429,408.901Z" fill="#2C3C69" transform="translate(211.252,415.223) translate(-211.252,-415.223)" />
|
||||
<path d="M194,423.748L194,435.885L202.468,435.885L202.468,433.382L196.828,433.382L196.828,430.862L201.868,430.862L201.868,428.514L196.828,428.514L196.828,426.216L202.16,426.216L202.16,423.748L194,423.748Z" fill="#2C3C69" transform="translate(198.234,429.817) translate(-198.234,-429.817)" />
|
||||
<path d="M209.886,431.222L209.886,435.885L212.715,435.885L212.715,430.605C212.715,430.182,212.661,429.759,212.552,429.336C212.444,428.914,212.267,428.539,212.021,428.214C211.775,427.888,211.453,427.622,211.052,427.417C210.652,427.211,210.166,427.108,209.595,427.108C209.298,427.108,209.018,427.149,208.755,427.228C208.492,427.308,208.249,427.411,208.026,427.537C207.804,427.663,207.609,427.814,207.444,427.991C207.277,428.168,207.144,428.348,207.04,428.531L207.006,428.531L207.006,427.348L204.28,427.348L204.28,435.885L207.109,435.885L207.109,431.257C207.109,431.017,207.14,430.785,207.203,430.562C207.266,430.34,207.36,430.142,207.486,429.971C207.611,429.8,207.769,429.665,207.957,429.568C208.146,429.471,208.366,429.422,208.617,429.422C208.868,429.422,209.077,429.471,209.243,429.568C209.409,429.665,209.537,429.797,209.628,429.962C209.72,430.128,209.786,430.319,209.826,430.537C209.865,430.754,209.886,430.982,209.886,431.222Z" fill="#2C3C69" transform="translate(208.498,431.496) translate(-208.498,-431.496)" />
|
||||
<path d="M219.297,429.611C219.571,429.737,219.788,429.902,219.948,430.108L221.576,428.223C221.405,428.051,221.202,427.894,220.967,427.751C220.733,427.608,220.476,427.488,220.196,427.391C219.916,427.294,219.624,427.217,219.322,427.16C219.019,427.102,218.713,427.074,218.405,427.074C217.742,427.074,217.118,427.179,216.533,427.391C215.949,427.602,215.441,427.905,215.01,428.299C214.579,428.694,214.24,429.171,213.993,429.731C213.745,430.291,213.622,430.92,213.622,431.617C213.622,432.325,213.745,432.96,213.993,433.52C214.24,434.08,214.579,434.556,215.01,434.951C215.441,435.345,215.949,435.645,216.533,435.851C217.118,436.056,217.747,436.159,218.422,436.159C219.05,436.159,219.645,436.062,220.205,435.868C220.764,435.674,221.222,435.405,221.576,435.062L220.016,433.159C219.845,433.365,219.619,433.522,219.339,433.631C219.059,433.74,218.776,433.794,218.491,433.794C218.182,433.794,217.905,433.737,217.659,433.622C217.413,433.508,217.202,433.351,217.025,433.151C216.847,432.951,216.713,432.72,216.622,432.456C216.531,432.194,216.485,431.914,216.485,431.617C216.485,431.319,216.534,431.04,216.631,430.777C216.728,430.514,216.862,430.282,217.034,430.082C217.205,429.883,217.411,429.722,217.651,429.602C217.891,429.482,218.159,429.422,218.457,429.422C218.742,429.422,219.022,429.485,219.297,429.611Z" fill="#2C3C69" transform="translate(217.599,431.617) translate(-217.599,-431.617)" />
|
||||
<path d="M227.818,429.594C227.943,429.606,228.066,429.629,228.187,429.662L228.308,427.176C228.239,427.154,228.15,427.136,228.042,427.125C227.933,427.114,227.821,427.108,227.707,427.108C227.182,427.108,226.719,427.246,226.319,427.522C225.918,427.798,225.61,428.155,225.393,428.592L225.359,428.592L225.359,427.358L222.65,427.358L222.65,435.885L225.461,435.885L225.461,431.508C225.461,431.337,225.496,431.138,225.564,430.91C225.633,430.682,225.744,430.471,225.899,430.277C226.053,430.083,226.259,429.918,226.516,429.781C226.773,429.645,227.09,429.576,227.467,429.576C227.581,429.576,227.699,429.582,227.818,429.594Z" fill="#2C3C69" transform="translate(225.479,431.496) translate(-225.479,-431.496)" />
|
||||
<path d="M234.217,438.362C234.429,438.014,234.62,437.616,234.792,437.171L238.615,427.348L235.632,427.348L233.935,432.834L233.883,432.834L231.98,427.348L228.861,427.348L232.426,435.748L232.152,436.451C232.015,436.816,231.849,437.099,231.655,437.299C231.461,437.499,231.147,437.599,230.712,437.599C230.575,437.599,230.423,437.585,230.258,437.556C230.092,437.528,229.94,437.49,229.804,437.445L229.495,439.811C229.7,439.867,229.943,439.913,230.224,439.947C230.503,439.982,230.774,439.999,231.038,439.999C231.574,439.999,232.04,439.936,232.435,439.811C232.829,439.685,233.172,439.5,233.463,439.254C233.755,439.008,234.006,438.71,234.217,438.362Z" fill="#2C3C69" transform="translate(233.738,433.673) translate(-233.738,-433.673)" />
|
||||
<path d="M253.34,432.709L253.34,429.439L255.345,429.439L255.345,427.348L253.34,427.348L253.34,425.102L250.58,425.102L250.58,427.348L249.226,427.348L249.226,429.439L250.597,429.439L250.597,433.048C250.597,433.506,250.648,433.922,250.751,434.294C250.854,434.667,251.023,434.987,251.257,435.256C251.491,435.526,251.802,435.732,252.191,435.875C252.58,436.018,253.06,436.09,253.631,436.09C253.929,436.09,254.225,436.065,254.523,436.013C254.82,435.962,255.066,435.902,255.26,435.833L255.226,433.776C255.122,433.822,254.994,433.856,254.84,433.879C254.685,433.903,254.54,433.913,254.403,433.913C254.002,433.913,253.725,433.814,253.572,433.613C253.417,433.411,253.34,433.111,253.34,432.709Z" fill="#2C3C69" transform="translate(252.286,430.596) translate(-252.286,-430.596)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M248.848,431.582C248.848,432.177,248.757,432.748,248.574,433.297C248.391,433.845,248.125,434.328,247.777,434.745C247.429,435.162,247.003,435.497,246.5,435.748C245.997,435.999,245.426,436.125,244.785,436.125C244.26,436.125,243.763,436.02,243.294,435.809C242.825,435.597,242.46,435.308,242.197,434.943L242.163,434.943L242.163,440L239.351,440L239.351,427.348L242.026,427.348L242.026,428.394L242.077,428.394C242.34,428.051,242.703,427.751,243.166,427.494C243.628,427.237,244.174,427.108,244.803,427.108C245.42,427.108,245.979,427.228,246.482,427.468C246.985,427.708,247.411,428.034,247.76,428.445C248.109,428.856,248.377,429.334,248.565,429.877C248.754,430.419,248.848,430.988,248.848,431.582ZM245.994,430.777C246.08,431.04,246.123,431.308,246.123,431.582C246.123,431.857,246.08,432.128,245.994,432.396C245.909,432.664,245.783,432.902,245.617,433.107C245.451,433.313,245.243,433.479,244.991,433.605C244.74,433.73,244.448,433.793,244.117,433.793C243.797,433.793,243.511,433.73,243.26,433.605C243.008,433.479,242.794,433.313,242.617,433.107C242.439,432.902,242.303,432.668,242.206,432.405C242.108,432.142,242.06,431.873,242.06,431.599C242.06,431.325,242.108,431.056,242.206,430.793C242.303,430.531,242.439,430.296,242.617,430.091C242.794,429.885,243.008,429.719,243.26,429.594C243.511,429.468,243.797,429.405,244.117,429.405C244.449,429.405,244.74,429.468,244.991,429.594C245.242,429.72,245.451,429.882,245.617,430.082C245.783,430.282,245.909,430.514,245.994,430.777Z" fill="#2C3C69" transform="translate(244.1,433.554) translate(-244.1,-433.554)" />
|
||||
<path d="M249.292,410.898L246.185,410.898L246.185,409.302C246.185,408.028,245.148,406.992,243.874,406.992C242.6,406.992,241.563,408.029,241.563,409.302L241.563,410.898L238.456,410.898L238.456,409.302C238.456,406.315,240.886,403.884,243.874,403.884C246.862,403.884,249.292,406.315,249.292,409.302L249.292,410.898L249.292,410.898Z" fill="#F9A11D" transform="translate(243.874,407.391) translate(-243.874,-407.391)" />
|
||||
<path d="M250.545,410.898L237.203,410.898C236.633,410.898,236.167,411.364,236.167,411.933L236.167,421.803C236.167,422.373,236.633,422.839,237.203,422.839L250.545,422.839C251.115,422.839,251.581,422.373,251.581,421.803L251.581,411.933C251.581,411.364,251.115,410.898,250.545,410.898ZM244.55,417.378L244.55,418.716C244.55,419.089,244.247,419.391,243.874,419.391C243.501,419.391,243.198,419.088,243.198,418.716L243.198,417.378C242.782,417.142,242.501,416.697,242.501,416.184C242.501,415.426,243.116,414.812,243.874,414.812C244.632,414.812,245.247,415.426,245.247,416.184C245.247,416.696,244.966,417.142,244.55,417.378L244.55,417.378Z" fill="#2C3C69" transform="translate(243.874,416.868) translate(-243.874,-416.868)" />
|
||||
<path d="M235.85,409.426L232.631,409.426C232.109,409.426,231.686,409.003,231.686,408.481C231.686,407.959,232.109,407.535,232.631,407.535L235.85,407.535C236.372,407.535,236.796,407.959,236.796,408.481C236.796,409.003,236.372,409.426,235.85,409.426L235.85,409.426ZM238.118,404.362C237.907,404.362,237.694,404.291,237.518,404.146L234.972,402.052C234.568,401.721,234.51,401.125,234.842,400.722C235.174,400.318,235.769,400.26,236.173,400.592L238.719,402.686C239.122,403.017,239.181,403.613,238.849,404.016C238.662,404.244,238.391,404.362,238.118,404.362L238.118,404.362ZM243.874,402.136C243.352,402.136,242.929,401.712,242.929,401.19L242.929,397.945C242.929,397.423,243.352,397,243.874,397C244.396,397,244.819,397.423,244.819,397.945L244.819,401.19C244.819,401.712,244.396,402.136,243.874,402.136L243.874,402.136ZM249.63,404.362C249.356,404.362,249.086,404.244,248.899,404.016C248.567,403.613,248.625,403.017,249.028,402.686L251.575,400.592C251.979,400.26,252.574,400.318,252.906,400.722C253.237,401.125,253.179,401.721,252.776,402.052L250.229,404.146C250.054,404.291,249.841,404.362,249.63,404.362ZM255.117,409.426L251.867,409.426C251.345,409.426,250.922,409.003,250.922,408.481C250.922,407.959,251.345,407.535,251.867,407.535L255.117,407.535C255.639,407.535,256.063,407.959,256.063,408.481C256.063,409.003,255.639,409.426,255.117,409.426Z" fill="#F9A11D" transform="translate(243.875,403.213) translate(-243.875,-403.213)" />
|
||||
</g>
|
||||
</a>
|
||||
<a xlink:href="https://github.com/dokku/dokku-redis-plugin" target="_blank">
|
||||
@@ -374,21 +374,21 @@
|
||||
<a xlink:href="https://github.com/dokku/dokku-mariadb-plugin" target="_blank">
|
||||
<g id="mariadb" data-bs-toggle="svg-tooltip" data-bs-placement="bottom" title="MariaDB" filter="url(#filter6_d_55_77)" transform="translate(327.257,547.257) translate(-327.257,-547.257)" style="animation: 30s linear infinite both mariadb_t;">
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(327.257,547.257)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M350.845,524.066C350.042,524.092,350.296,524.323,348.56,524.751C346.809,525.181,344.66,525.048,342.782,525.84C337.148,528.203,336.022,536.269,330.908,539.158C327.095,541.319,323.224,541.492,319.757,542.567C317.475,543.283,314.99,544.748,312.91,546.524C311.307,547.908,311.264,549.124,309.588,550.858C307.794,552.712,302.452,550.889,300.055,553.729C300.835,554.515,301.176,554.738,302.71,554.532C302.392,555.133,300.52,555.642,300.887,556.529C301.274,557.462,305.798,558.092,309.9,555.607C311.815,554.449,313.338,552.782,316.314,552.372C320.185,551.857,324.634,552.701,329.083,553.348C328.418,555.324,327.089,556.641,326.02,558.201C325.691,558.557,326.685,558.597,327.817,558.382C329.857,557.879,331.313,557.472,332.873,556.576C334.762,555.476,335.048,552.647,337.38,552.041C338.671,554.028,342.175,554.496,344.371,552.907C342.458,552.364,341.93,548.285,342.574,546.494C343.186,544.795,343.79,542.074,344.405,539.821C345.067,537.408,345.31,534.361,346.113,533.147C347.317,531.298,348.649,530.663,349.811,529.623C350.966,528.58,352.023,527.566,351.989,525.174C351.978,524.405,351.581,523.978,350.851,524.001L350.845,524.066Z" fill="#002B64" transform="translate(326.022,541.257) translate(-326.022,-541.257)"/>
|
||||
<path d="M301.733,556.422C304.651,556.841,306.442,556.422,308.811,555.402C310.813,554.532,312.74,552.744,315.109,551.993C318.576,550.878,322.389,551.995,326.116,552.217C327.02,552.271,327.918,552.272,328.805,552.175C330.189,551.326,330.16,548.16,331.507,547.842C331.467,552.291,329.637,554.978,327.722,557.549C331.767,556.838,334.164,554.515,335.782,551.395C336.276,550.451,336.698,549.437,337.071,548.362C337.648,548.804,337.32,550.153,337.611,550.881C340.387,549.336,341.973,545.797,343.042,542.243C344.261,538.112,344.758,533.923,345.544,532.71C346.309,531.517,347.502,530.78,348.606,530.017C349.842,529.148,350.946,528.244,351.137,526.58C349.831,526.459,349.53,526.158,349.337,525.499C348.684,525.869,348.083,525.947,347.404,525.967C346.815,525.985,346.168,525.959,345.376,526.04C338.847,526.71,338.009,533.927,333.821,538C333.514,538.298,333.185,538.575,332.838,538.835C331.371,539.927,329.574,540.71,327.927,541.342C325.246,542.365,322.698,542.44,320.185,543.324C318.339,543.971,316.458,544.913,314.956,545.95C314.577,546.209,314.219,546.476,313.893,546.745C313.003,547.473,312.419,548.279,311.853,549.111C311.27,549.966,310.709,550.847,309.851,551.688C308.462,553.051,303.264,552.086,301.444,553.352C301.241,553.492,301.08,553.661,300.968,553.863C301.964,554.317,302.632,554.038,303.779,554.164C303.929,555.253,301.413,555.9,301.785,556.4L301.733,556.422Z" fill="#C49A6C" transform="translate(326.053,541.524) translate(-326.053,-541.524)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M341.311,548.333C341.389,549.581,342.114,552.06,342.753,552.666C341.499,552.972,339.344,552.467,338.795,551.583C339.079,550.306,340.56,549.139,341.317,548.347L341.311,548.333Z" fill="#C49A6C" transform="translate(340.774,550.544) translate(-340.774,-550.544)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M343.045,528.688C343.969,529.491,345.911,528.847,345.564,527.25C344.125,527.13,343.293,527.619,343.045,528.688Z" fill="#002B64" transform="translate(344.325,528.133) translate(-344.325,-528.133)"/>
|
||||
<path d="M349.4,526.666C349.154,527.183,348.684,527.847,348.684,529.162C348.682,529.388,348.513,529.543,348.51,529.194C348.522,527.909,348.862,527.354,349.223,526.626C349.391,526.326,349.492,526.45,349.401,526.667L349.4,526.666Z" fill="#002B64" transform="translate(348.973,527.923) translate(-348.973,-527.923)"/>
|
||||
<path d="M349.4,526.666C349.111,527.157,348.412,528.058,348.297,529.367C348.275,529.592,348.093,529.731,348.121,529.384C348.246,528.107,348.805,527.306,349.23,526.61C349.422,526.327,349.513,526.459,349.402,526.667L349.4,526.666Z" fill="#002B64" transform="translate(348.784,528.021) translate(-348.784,-528.021)"/>
|
||||
<path d="M349.112,526.377C348.782,526.842,347.705,527.923,347.479,529.217C347.439,529.438,347.245,529.564,347.302,529.219C347.535,527.956,348.464,526.962,348.943,526.301C349.159,526.035,349.238,526.174,349.111,526.372L349.112,526.377Z" fill="#002B64" transform="translate(348.232,527.793) translate(-348.232,-527.793)"/>
|
||||
<path d="M348.823,526.088C348.43,526.504,347.147,527.879,346.743,529.122C346.671,529.335,346.462,529.431,346.567,529.098C346.974,527.879,348.098,526.568,348.667,525.978C348.918,525.745,348.976,525.894,348.823,526.072L348.823,526.088Z" fill="#002B64" transform="translate(347.723,527.587) translate(-347.723,-527.587)"/>
|
||||
<path d="M336.092,563.3L336.092,570.461L335.188,570.461L335.188,569.233C334.368,570.213,333.434,570.704,332.388,570.704C331.334,570.704,330.444,570.34.729.726,569.584C329.005,568.829,328.647,567.934,328.647,566.899C328.647,565.855,329.012,564.964,329.739,564.237C330.467,563.491,331.341,563.117,332.356,563.117C333.526,563.117,334.474,563.617,335.202,564.615L335.202,563.307L336.106,563.307L336.092,563.3ZM335.257,566.933C335.257,566.114,334.981,565.426,334.433,564.868C333.884,564.301,333.209,564.019,332.409,564.019C331.617,564.019,330.947,564.31,330.398,564.895C329.85,565.472,329.574,566.155,329.574,566.947C329.574,567.739,329.854,568.428,330.412,569.013C330.97,569.589,331.635,569.876,332.409,569.876C333.191,569.876,333.861,569.596,334.419,569.038C334.977,568.48,335.257,567.778,335.257,566.933" fill="#A57242" transform="translate(332.377,566.91) translate(-332.377,-566.91)"/>
|
||||
<path d="M338.213,570.415L338.213,560.73L340.224,560.73C341.601,560.73,342.611,560.833,343.253,561.04C343.901,561.238,344.458,561.556,344.926,561.997C345.395,562.428,345.755,562.958,346.005,563.59C346.258,564.218,346.384,564.957,346.384,565.802C346.384,566.64,346.186,567.429,345.789,568.166C345.401,568.903,344.871,569.46,344.197,569.839C343.531,570.218,342.569,570.406,341.305,570.406L338.207,570.406L338.213,570.415ZM339.138,569.488L340.258,569.488C341.429,569.488,342.273,569.429,342.806,569.312C343.336,569.195,343.8,568.966,344.197,568.624C344.591,568.273,344.894,567.851,345.101,567.355C345.308,566.859,345.411,566.295,345.411,565.654C345.411,565.016,345.289,564.426,345.046,563.887C344.812,563.348,344.474,562.902,344.034,562.551C343.593,562.2,343.072,561.966,342.468,561.849C341.874,561.723,340.997,561.66,339.829,561.66L339.141,561.66L339.141,569.486" fill="#A57242" transform="translate(342.296,565.572) translate(-342.296,-565.572)"/>
|
||||
<path d="M325.591,561.235C325.591,561.028,325.663,560.847,325.807,560.696C325.96,560.543,326.14,560.466,326.346,560.466C326.562,560.466,326.741,560.543,326.885,560.696C327.038,560.839,327.115,561.019,327.115,561.235C327.115,561.442,327.039,561.623,326.885,561.774C326.742,561.918,326.562,561.99,326.346,561.99C326.139,561.99,325.958,561.914,325.807,561.761C325.663,561.608,325.591,561.433,325.591,561.235L325.591,561.235ZM325.887,563.232L326.819,563.232L326.819,570.392L325.887,570.392L325.887,563.232Z" fill="#A57242" transform="translate(326.353,565.429) translate(-326.353,-565.429)"/>
|
||||
<path d="M300,570.415L301.377,560.73L301.526,560.73L305.473,568.671L309.375,560.73L309.523,560.73L310.914,570.415L309.957,570.415L309.011,563.484L305.592,570.415L305.348,570.415L301.883,563.415L300.937,570.415L300.006,570.415" fill="#A57242" transform="translate(305.457,565.572) translate(-305.457,-565.572)"/>
|
||||
<path d="M319.679,563.3L319.679,570.461L318.775,570.461L318.775,569.233C317.956,570.213,317.022,570.704,315.975,570.704C314.922,570.704,314.031,570.34.713.313,569.584C312.592,568.829,312.234,567.934,312.234,566.899C312.234,565.855,312.599,564.964,313.327,564.237C314.054,563.491,314.929,563.117,315.943,563.117C317.114,563.117,318.061,563.617,318.789,564.615L318.789,563.307L319.693,563.307L319.679,563.3ZM318.844,566.933C318.844,566.114,318.569,565.426,318.02,564.868C317.472,564.301,316.797,564.019,315.996,564.019C315.204,564.019,314.534,564.31,313.985,564.895C313.437,565.472,313.162,566.155,313.162,566.947C313.162,567.739,313.442,568.428,313.999,569.013C314.557,569.589,315.222,569.876,315.996,569.876C316.779,569.876,317.449,569.596,318.006,569.038C318.564,568.48,318.842,567.778,318.844,566.933" fill="#A57242" transform="translate(315.963,566.91) translate(-315.963,-566.91)"/>
|
||||
<path d="M321.342,563.3L322.287,563.3L322.287,564.34C322.54,563.918,322.783,563.608,323.015,563.408C323.258,563.21,323.522,563.112,323.811,563.112C324.107,563.112,324.406,563.193,324.702,563.355L324.215,564.138C324.08,564.057,323.94,564.017,323.797,564.017C323.517,564.017,323.254,564.161,323.001,564.448C322.758,564.735,322.579,565.109,322.462,565.568C322.345,566.018,322.286,566.842,322.286,568.047L322.286,570.479L321.341,570.479L321.341,563.319" fill="#A57242" transform="translate(323.022,566.795) translate(-323.022,-566.795)"/>
|
||||
<path d="M348.198,560.776L350.114,560.776C351.131,560.776,351.9,560.983,352.432,561.396C352.962,561.799,353.228,562.385,353.228,563.149C353.228,563.571,353.121,563.964,352.905,564.322C352.698,564.673,352.393,564.955,351.987,565.171C352.652,565.387,353.157,565.71,353.497,566.142C353.848,566.573,354.023,567.087,354.023,567.679C354.023,568.48,353.731,569.146,353.146,569.676C352.561,570.197,351.806,570.459,350.878,570.459L348.216,570.459L348.216,560.774L348.198,560.776ZM349.173,561.719L349.173,564.817L349.726,564.817C350.571,564.817,351.202,564.682,351.615,564.413C352.028,564.143,352.235,563.72,352.235,563.144C352.235,562.192,351.588,561.715,350.291,561.715L349.171,561.715L349.173,561.719ZM349.171,565.8L349.171,569.518L350.371,569.518C351.064,569.518,351.571,569.45,351.895,569.315C352.228,569.171,352.499,568.955,352.705,568.668C352.912,568.372,353.015,568.069,353.015,567.764C353.015,567.459,352.956,567.188,352.84,566.954C352.723,566.72,352.548,566.513,352.314,566.334C352.089,566.154,351.814,566.02,351.49,565.93C351.176,565.84,350.581,565.795,349.709,565.795L349.17,565.795" fill="#A57242" transform="translate(351.111,565.617) translate(-351.111,-565.617)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M350.845,524.066C350.042,524.092,350.296,524.323,348.56,524.751C346.809,525.181,344.66,525.048,342.782,525.84C337.148,528.203,336.022,536.269,330.908,539.158C327.095,541.319,323.224,541.492,319.757,542.567C317.475,543.283,314.99,544.748,312.91,546.524C311.307,547.908,311.264,549.124,309.588,550.858C307.794,552.712,302.452,550.889,300.055,553.729C300.835,554.515,301.176,554.738,302.71,554.532C302.392,555.133,300.52,555.642,300.887,556.529C301.274,557.462,305.798,558.092,309.9,555.607C311.815,554.449,313.338,552.782,316.314,552.372C320.185,551.857,324.634,552.701,329.083,553.348C328.418,555.324,327.089,556.641,326.02,558.201C325.691,558.557,326.685,558.597,327.817,558.382C329.857,557.879,331.313,557.472,332.873,556.576C334.762,555.476,335.048,552.647,337.38,552.041C338.671,554.028,342.175,554.496,344.371,552.907C342.458,552.364,341.93,548.285,342.574,546.494C343.186,544.795,343.79,542.074,344.405,539.821C345.067,537.408,345.31,534.361,346.113,533.147C347.317,531.298,348.649,530.663,349.811,529.623C350.966,528.58,352.023,527.566,351.989,525.174C351.978,524.405,351.581,523.978,350.851,524.001L350.845,524.066Z" fill="#002B64" transform="translate(326.022,541.257) translate(-326.022,-541.257)" />
|
||||
<path d="M301.733,556.422C304.651,556.841,306.442,556.422,308.811,555.402C310.813,554.532,312.74,552.744,315.109,551.993C318.576,550.878,322.389,551.995,326.116,552.217C327.02,552.271,327.918,552.272,328.805,552.175C330.189,551.326,330.16,548.16,331.507,547.842C331.467,552.291,329.637,554.978,327.722,557.549C331.767,556.838,334.164,554.515,335.782,551.395C336.276,550.451,336.698,549.437,337.071,548.362C337.648,548.804,337.32,550.153,337.611,550.881C340.387,549.336,341.973,545.797,343.042,542.243C344.261,538.112,344.758,533.923,345.544,532.71C346.309,531.517,347.502,530.78,348.606,530.017C349.842,529.148,350.946,528.244,351.137,526.58C349.831,526.459,349.53,526.158,349.337,525.499C348.684,525.869,348.083,525.947,347.404,525.967C346.815,525.985,346.168,525.959,345.376,526.04C338.847,526.71,338.009,533.927,333.821,538C333.514,538.298,333.185,538.575,332.838,538.835C331.371,539.927,329.574,540.71,327.927,541.342C325.246,542.365,322.698,542.44,320.185,543.324C318.339,543.971,316.458,544.913,314.956,545.95C314.577,546.209,314.219,546.476,313.893,546.745C313.003,547.473,312.419,548.279,311.853,549.111C311.27,549.966,310.709,550.847,309.851,551.688C308.462,553.051,303.264,552.086,301.444,553.352C301.241,553.492,301.08,553.661,300.968,553.863C301.964,554.317,302.632,554.038,303.779,554.164C303.929,555.253,301.413,555.9,301.785,556.4L301.733,556.422Z" fill="#C49A6C" transform="translate(326.053,541.524) translate(-326.053,-541.524)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M341.311,548.333C341.389,549.581,342.114,552.06,342.753,552.666C341.499,552.972,339.344,552.467,338.795,551.583C339.079,550.306,340.56,549.139,341.317,548.347L341.311,548.333Z" fill="#C49A6C" transform="translate(340.774,550.544) translate(-340.774,-550.544)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M343.045,528.688C343.969,529.491,345.911,528.847,345.564,527.25C344.125,527.13,343.293,527.619,343.045,528.688Z" fill="#002B64" transform="translate(344.325,528.133) translate(-344.325,-528.133)" />
|
||||
<path d="M349.4,526.666C349.154,527.183,348.684,527.847,348.684,529.162C348.682,529.388,348.513,529.543,348.51,529.194C348.522,527.909,348.862,527.354,349.223,526.626C349.391,526.326,349.492,526.45,349.401,526.667L349.4,526.666Z" fill="#002B64" transform="translate(348.973,527.923) translate(-348.973,-527.923)" />
|
||||
<path d="M349.4,526.666C349.111,527.157,348.412,528.058,348.297,529.367C348.275,529.592,348.093,529.731,348.121,529.384C348.246,528.107,348.805,527.306,349.23,526.61C349.422,526.327,349.513,526.459,349.402,526.667L349.4,526.666Z" fill="#002B64" transform="translate(348.784,528.021) translate(-348.784,-528.021)" />
|
||||
<path d="M349.112,526.377C348.782,526.842,347.705,527.923,347.479,529.217C347.439,529.438,347.245,529.564,347.302,529.219C347.535,527.956,348.464,526.962,348.943,526.301C349.159,526.035,349.238,526.174,349.111,526.372L349.112,526.377Z" fill="#002B64" transform="translate(348.232,527.793) translate(-348.232,-527.793)" />
|
||||
<path d="M348.823,526.088C348.43,526.504,347.147,527.879,346.743,529.122C346.671,529.335,346.462,529.431,346.567,529.098C346.974,527.879,348.098,526.568,348.667,525.978C348.918,525.745,348.976,525.894,348.823,526.072L348.823,526.088Z" fill="#002B64" transform="translate(347.723,527.587) translate(-347.723,-527.587)" />
|
||||
<path d="M336.092,563.3L336.092,570.461L335.188,570.461L335.188,569.233C334.368,570.213,333.434,570.704,332.388,570.704C331.334,570.704,330.444,570.33,329.726,569.584C329.005,568.829,328.647,567.934,328.647,566.899C328.647,565.855,329.012,564.964,329.739,564.237C330.467,563.491,331.341,563.117,332.356,563.117C333.526,563.117,334.474,563.617,335.202,564.615L335.202,563.307L336.106,563.307L336.092,563.3ZM335.257,566.933C335.257,566.114,334.981,565.426,334.433,564.868C333.884,564.301,333.209,564.019,332.409,564.019C331.617,564.019,330.947,564.31,330.398,564.895C329.85,565.472,329.574,566.155,329.574,566.947C329.574,567.739,329.854,568.428,330.412,569.013C330.97,569.589,331.635,569.876,332.409,569.876C333.191,569.876,333.861,569.596,334.419,569.038C334.977,568.48,335.257,567.778,335.257,566.933" fill="#A57242" transform="translate(332.377,566.91) translate(-332.377,-566.91)" />
|
||||
<path d="M338.213,570.415L338.213,560.73L340.224,560.73C341.601,560.73,342.611,560.833,343.253,561.04C343.901,561.238,344.458,561.556,344.926,561.997C345.395,562.428,345.755,562.958,346.005,563.59C346.258,564.218,346.384,564.957,346.384,565.802C346.384,566.64,346.186,567.429,345.789,568.166C345.401,568.903,344.871,569.46,344.197,569.839C343.531,570.218,342.569,570.406,341.305,570.406L338.207,570.406L338.213,570.415ZM339.138,569.488L340.258,569.488C341.429,569.488,342.273,569.429,342.806,569.312C343.336,569.195,343.8,568.966,344.197,568.624C344.591,568.273,344.894,567.851,345.101,567.355C345.308,566.859,345.411,566.295,345.411,565.654C345.411,565.016,345.289,564.426,345.046,563.887C344.812,563.348,344.474,562.902,344.034,562.551C343.593,562.2,343.072,561.966,342.468,561.849C341.874,561.723,340.997,561.66,339.829,561.66L339.141,561.66L339.141,569.486" fill="#A57242" transform="translate(342.296,565.572) translate(-342.296,-565.572)" />
|
||||
<path d="M325.591,561.235C325.591,561.028,325.663,560.847,325.807,560.696C325.96,560.543,326.14,560.466,326.346,560.466C326.562,560.466,326.741,560.543,326.885,560.696C327.038,560.839,327.115,561.019,327.115,561.235C327.115,561.442,327.039,561.623,326.885,561.774C326.742,561.918,326.562,561.99,326.346,561.99C326.139,561.99,325.958,561.914,325.807,561.761C325.663,561.608,325.591,561.433,325.591,561.235L325.591,561.235ZM325.887,563.232L326.819,563.232L326.819,570.392L325.887,570.392L325.887,563.232Z" fill="#A57242" transform="translate(326.353,565.429) translate(-326.353,-565.429)" />
|
||||
<path d="M300,570.415L301.377,560.73L301.526,560.73L305.473,568.671L309.375,560.73L309.523,560.73L310.914,570.415L309.957,570.415L309.011,563.484L305.592,570.415L305.348,570.415L301.883,563.415L300.937,570.415L300.006,570.415" fill="#A57242" transform="translate(305.457,565.572) translate(-305.457,-565.572)" />
|
||||
<path d="M319.679,563.3L319.679,570.461L318.775,570.461L318.775,569.233C317.956,570.213,317.022,570.704,315.975,570.704C314.922,570.704,314.031,570.33,313.313,569.584C312.592,568.829,312.234,567.934,312.234,566.899C312.234,565.855,312.599,564.964,313.327,564.237C314.054,563.491,314.929,563.117,315.943,563.117C317.114,563.117,318.061,563.617,318.789,564.615L318.789,563.307L319.693,563.307L319.679,563.3ZM318.844,566.933C318.844,566.114,318.569,565.426,318.02,564.868C317.472,564.301,316.797,564.019,315.996,564.019C315.204,564.019,314.534,564.31,313.985,564.895C313.437,565.472,313.162,566.155,313.162,566.947C313.162,567.739,313.442,568.428,313.999,569.013C314.557,569.589,315.222,569.876,315.996,569.876C316.779,569.876,317.449,569.596,318.006,569.038C318.564,568.48,318.842,567.778,318.844,566.933" fill="#A57242" transform="translate(315.963,566.91) translate(-315.963,-566.91)" />
|
||||
<path d="M321.342,563.3L322.287,563.3L322.287,564.34C322.54,563.918,322.783,563.608,323.015,563.408C323.258,563.21,323.522,563.112,323.811,563.112C324.107,563.112,324.406,563.193,324.702,563.355L324.215,564.138C324.08,564.057,323.94,564.017,323.797,564.017C323.517,564.017,323.254,564.161,323.001,564.448C322.758,564.735,322.579,565.109,322.462,565.568C322.345,566.018,322.286,566.842,322.286,568.047L322.286,570.479L321.341,570.479L321.341,563.319" fill="#A57242" transform="translate(323.022,566.795) translate(-323.022,-566.795)" />
|
||||
<path d="M348.198,560.776L350.114,560.776C351.131,560.776,351.9,560.983,352.432,561.396C352.962,561.799,353.228,562.385,353.228,563.149C353.228,563.571,353.121,563.964,352.905,564.322C352.698,564.673,352.393,564.955,351.987,565.171C352.652,565.387,353.157,565.71,353.497,566.142C353.848,566.573,354.023,567.087,354.023,567.679C354.023,568.48,353.731,569.146,353.146,569.676C352.561,570.197,351.806,570.459,350.878,570.459L348.216,570.459L348.216,560.774L348.198,560.776ZM349.173,561.719L349.173,564.817L349.726,564.817C350.571,564.817,351.202,564.682,351.615,564.413C352.028,564.143,352.235,563.72,352.235,563.144C352.235,562.192,351.588,561.715,350.291,561.715L349.171,561.715L349.173,561.719ZM349.171,565.8L349.171,569.518L350.371,569.518C351.064,569.518,351.571,569.45,351.895,569.315C352.228,569.171,352.499,568.955,352.705,568.668C352.912,568.372,353.015,568.069,353.015,567.764C353.015,567.459,352.956,567.188,352.84,566.954C352.723,566.72,352.548,566.513,352.314,566.334C352.089,566.154,351.814,566.02,351.49,565.93C351.176,565.84,350.581,565.795,349.709,565.795L349.17,565.795" fill="#A57242" transform="translate(351.111,565.617) translate(-351.111,-565.617)" />
|
||||
</g>
|
||||
</a>
|
||||
<a xlink:href="https://github.com/dokku/dokku-rabbitmq-plugin" target="_blank">
|
||||
@@ -400,28 +400,28 @@
|
||||
<a xlink:href="https://github.com/dokku/dokku-postgres-plugin" target="_blank">
|
||||
<g id="postgresql" data-bs-toggle="svg-tooltip" data-bs-placement="bottom" title="PostgreSQL" filter="url(#filter8_d_55_77)" transform="translate(461.257,119.257) translate(-461.257,-119.257)" style="animation: 30s linear infinite both postgresql_t;">
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(461.257,119.257)"/>
|
||||
<path d="M475.312,132.542C475.678,129.494,475.568,129.047,477.839,129.541L478.415,129.591C480.161,129.671,482.445,129.311,483.786,128.687C486.675,127.347,488.387,125.109,485.539,125.697C479.043,127.038,478.596,124.838,478.596,124.838C485.456,114.66,488.324,101.74,485.849,98.5769C479.097,89.9505,467.411,94.0298,467.216,94.1357L467.154,94.1472C465.87,93.8808,464.434,93.7217,462.82,93.6956C459.88,93.6473,457.649,94.4663,455.957,95.7498C455.957,95.7498,435.11,87.1609,436.08,106.551C436.286,110.676,441.992,137.763,448.798,129.582C451.285,126.59,453.689,124.06,453.689,124.06C454.883,124.853,456.312,125.258,457.811,125.112L457.927,125.014C457.891,125.385,457.907,125.748,457.973,126.179C456.22,128.138,456.735,128.481,453.23,129.203C449.684,129.934,451.767,131.235,453.127,131.575C454.776,131.988,458.591,132.572,461.17,128.963L461.067,129.375C461.755,129.925,461.708,133.33,461.806,135.762C461.904,138.195,462.066,140.465,462.562,141.803C463.058,143.141,463.643,146.588,468.25,145.601C472.1,144.776,475.044,143.588,475.312,132.542" fill="black" transform="translate(461.523,119.428) translate(-461.523,-119.428)"/>
|
||||
<path d="M475.312,132.542C475.678,129.494,475.568,129.047,477.839,129.541L478.415,129.591C480.161,129.671,482.445,129.311,483.786,128.687C486.675,127.347,488.387,125.109,485.539,125.697C479.043,127.038,478.596,124.838,478.596,124.838C485.456,114.66,488.324,101.74,485.849,98.5769C479.097,89.9505,467.411,94.0298,467.216,94.1357L467.154,94.1472C465.87,93.8808,464.434,93.7217,462.82,93.6956C459.88,93.6473,457.649,94.4663,455.957,95.7498C455.957,95.7498,435.11,87.1609,436.08,106.551C436.286,110.676,441.992,137.763,448.798,129.582C451.285,126.59,453.689,124.06,453.689,124.06C454.883,124.853,456.312,125.258,457.811,125.112L457.927,125.014C457.891,125.385,457.907,125.748,457.973,126.179C456.22,128.138,456.735,128.481,453.23,129.203C449.684,129.934,451.767,131.235,453.127,131.575C454.776,131.988,458.591,132.572,461.17,128.963L461.067,129.375C461.755,129.925,461.708,133.33,461.806,135.762C461.904,138.195,462.066,140.465,462.562,141.803C463.058,143.141,463.643,146.588,468.25,145.601C472.1,144.776,475.044,143.588,475.312,132.542" stroke="black" stroke-width="5.4" transform="translate(461.523,119.428) translate(-461.523,-119.428)"/>
|
||||
<path d="M485.539,125.697C479.042,127.037,478.596,124.838,478.596,124.838C485.455,114.659,488.323,101.738,485.848,98.5761C479.097,89.9502,467.411,94.0297,467.216,94.1356L467.153,94.1469C465.869,93.8804,464.433,93.7217,462.818,93.6953C459.878,93.6471,457.648,94.466,455.956,95.7492C455.956,95.7492,435.109,87.1608,436.078,106.551C436.284,110.676,441.991,137.763,448.797,129.581C451.284,126.59,453.688,124.06,453.688,124.06C454.882,124.853,456.311,125.258,457.809,125.112L457.925,125.014C457.889,125.385,457.906,125.748,457.972,126.178C456.219,128.137,456.734,128.481,453.229,129.203C449.682,129.934,451.766,131.235,453.126,131.575C454.775,131.988,458.59,132.572,461.168,128.963L461.065,129.375C461.752,129.925,462.235,132.954,462.154,135.7C462.073,138.445,462.019,140.34.762.561,141.803C463.102,143.275,463.641,146.588,468.249,145.601C472.099,144.776,474.094,142.638,474.372,139.071C474.569,136.536,475.014,136.911,475.043,134.644L475.4,133.571C475.812,130.133,475.466,129.025,477.838,129.54L478.414,129.591C480.16,129.67,482.445,129.31,483.786,128.687C486.674,127.347,488.386,125.109,485.539,125.697L485.539,125.697Z" fill="#336791" transform="translate(461.522,119.431) translate(-461.522,-119.431)"/>
|
||||
<path d="M461.448,127.667C461.269,134.063,461.493,140.503,462.119,142.068C462.745,143.633,464.085,146.677,468.693,145.69C472.543,144.865,473.944,143.268,474.551,139.742C474.999,137.149,475.862,129.945,475.973,128.469" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(468.681,136.775) translate(-468.681,-136.775)"/>
|
||||
<path d="M455.925,95.6064C455.925,95.6064,435.063,87.0798,436.033,106.47C436.239,110.595,441.946,137.683,448.752,129.501C451.239,126.509,453.488,124.162,453.488,124.162" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(445.963,112.386) translate(-445.963,-112.386)"/>
|
||||
<path d="M467.194,94.0502C466.472,94.2766,478.799,89.5439,485.804,98.4954C488.279,101.658,485.411,114.578,478.551,124.757" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(476.923,108.879) translate(-476.923,-108.879)"/>
|
||||
<path d="M478.551,124.757C478.551,124.757,478.998,126.958,485.495,125.617C488.342,125.029,486.629,127.266,483.742,128.607C481.372,129.707,476.06,129.989,475.973,128.469C475.75,124.549,478.769,125.74,478.551,124.757C478.354,123.872,477.004,123.004,476.111,120.839C475.331,118.949,465.417,104.455,478.86,106.608C479.353,106.506,475.354,93.8206,462.773,93.6144C450.195,93.4081,450.608,109.083,450.608,109.083" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="bevel" transform="translate(468.781,111.567) translate(-468.781,-111.567)"/>
|
||||
<path d="M457.927,126.098C456.174,128.057,456.689,128.401,453.184,129.123C449.637,129.854,451.721,131.155,453.081,131.495C454.73,131.907,458.545,132.491,461.123,128.882C461.908,127.783,461.119,126.029,460.04,125.582C459.519,125.366,458.823,125.096,457.927,126.098L457.927,126.098Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(456.332,128.591) translate(-456.332,-128.591)"/>
|
||||
<path d="M457.811,126.064C457.635,124.912,458.19,123.542,458.785,121.938C459.679,119.533,461.742,117.126,460.092,109.495C458.862,103.808,450.612,108.312,450.607,109.083C450.602,109.854,450.98,112.991,450.469,116.645C449.802,121.412,453.502,125.445,457.764,125.032" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(455.552,116.363) translate(-455.552,-116.363)"/>
|
||||
<path d="M455.849,108.967C455.811,109.231,456.331,109.933,457.008,110.027C457.684,110.121,458.263,109.572,458.299,109.309C458.336,109.046,457.817,108.756,457.14,108.661C456.463,108.567,455.884,108.704,455.849,108.967L455.849,108.967Z" fill="white" stroke="white" stroke-width="0.16" transform="translate(457.074,109.335) translate(-457.074,-109.335)"/>
|
||||
<path d="M476.44,108.43C476.477,108.694,475.958,109.396,475.281,109.49C474.604,109.585,474.026,109.035,473.989,108.772C473.953,108.509,474.472,108.219,475.148,108.125C475.825,108.03,476.403,108.168,476.44,108.43L476.44,108.43Z" fill="white" transform="translate(475.215,108.798) translate(-475.215,-108.798)"/>
|
||||
<path d="M478.86,106.608C478.972,108.673,478.415,110.081,478.345,112.28C478.241,115.476,479.869,119.135,477.417,122.798" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(478.146,114.703) translate(-478.146,-114.703)"/>
|
||||
<path d="M475.312,132.542C475.678,129.494,475.568,129.047,477.839,129.541L478.415,129.591C480.161,129.671,482.445,129.311,483.786,128.687C486.675,127.347,488.387,125.109,485.539,125.697C479.043,127.038,478.596,124.838,478.596,124.838C485.456,114.66,488.324,101.74,485.849,98.5769C479.097,89.9505,467.411,94.0298,467.216,94.1357L467.154,94.1472C465.87,93.8808,464.434,93.7217,462.82,93.6956C459.88,93.6473,457.649,94.4663,455.957,95.7498C455.957,95.7498,435.11,87.1609,436.08,106.551C436.286,110.676,441.992,137.763,448.798,129.582C451.285,126.59,453.689,124.06,453.689,124.06C454.883,124.853,456.312,125.258,457.811,125.112L457.927,125.014C457.891,125.385,457.907,125.748,457.973,126.179C456.22,128.138,456.735,128.481,453.23,129.203C449.684,129.934,451.767,131.235,453.127,131.575C454.776,131.988,458.591,132.572,461.17,128.963L461.067,129.375C461.755,129.925,461.708,133.33,461.806,135.762C461.904,138.195,462.066,140.465,462.562,141.803C463.058,143.141,463.643,146.588,468.25,145.601C472.1,144.776,475.044,143.588,475.312,132.542" fill="black" transform="translate(461.523,119.428) translate(-461.523,-119.428)" />
|
||||
<path d="M475.312,132.542C475.678,129.494,475.568,129.047,477.839,129.541L478.415,129.591C480.161,129.671,482.445,129.311,483.786,128.687C486.675,127.347,488.387,125.109,485.539,125.697C479.043,127.038,478.596,124.838,478.596,124.838C485.456,114.66,488.324,101.74,485.849,98.5769C479.097,89.9505,467.411,94.0298,467.216,94.1357L467.154,94.1472C465.87,93.8808,464.434,93.7217,462.82,93.6956C459.88,93.6473,457.649,94.4663,455.957,95.7498C455.957,95.7498,435.11,87.1609,436.08,106.551C436.286,110.676,441.992,137.763,448.798,129.582C451.285,126.59,453.689,124.06,453.689,124.06C454.883,124.853,456.312,125.258,457.811,125.112L457.927,125.014C457.891,125.385,457.907,125.748,457.973,126.179C456.22,128.138,456.735,128.481,453.23,129.203C449.684,129.934,451.767,131.235,453.127,131.575C454.776,131.988,458.591,132.572,461.17,128.963L461.067,129.375C461.755,129.925,461.708,133.33,461.806,135.762C461.904,138.195,462.066,140.465,462.562,141.803C463.058,143.141,463.643,146.588,468.25,145.601C472.1,144.776,475.044,143.588,475.312,132.542" stroke="black" stroke-width="5.4" transform="translate(461.523,119.428) translate(-461.523,-119.428)" />
|
||||
<path d="M485.539,125.697C479.042,127.037,478.596,124.838,478.596,124.838C485.455,114.659,488.323,101.738,485.848,98.5761C479.097,89.9502,467.411,94.0297,467.216,94.1356L467.153,94.1469C465.869,93.8804,464.433,93.7217,462.818,93.6953C459.878,93.6471,457.648,94.466,455.956,95.7492C455.956,95.7492,435.109,87.1608,436.078,106.551C436.284,110.676,441.991,137.763,448.797,129.581C451.284,126.59,453.688,124.06,453.688,124.06C454.882,124.853,456.311,125.258,457.809,125.112L457.925,125.014C457.889,125.385,457.906,125.748,457.972,126.178C456.219,128.137,456.734,128.481,453.229,129.203C449.682,129.934,451.766,131.235,453.126,131.575C454.775,131.988,458.59,132.572,461.168,128.963L461.065,129.375C461.752,129.925,462.235,132.954,462.154,135.7C462.073,138.445,462.019,140.33,462.561,141.803C463.102,143.275,463.641,146.588,468.249,145.601C472.099,144.776,474.094,142.638,474.372,139.071C474.569,136.536,475.014,136.911,475.043,134.644L475.4,133.571C475.812,130.133,475.466,129.025,477.838,129.54L478.414,129.591C480.16,129.67,482.445,129.31,483.786,128.687C486.674,127.347,488.386,125.109,485.539,125.697L485.539,125.697Z" fill="#336791" transform="translate(461.522,119.431) translate(-461.522,-119.431)" />
|
||||
<path d="M461.448,127.667C461.269,134.063,461.493,140.503,462.119,142.068C462.745,143.633,464.085,146.677,468.693,145.69C472.543,144.865,473.944,143.268,474.551,139.742C474.999,137.149,475.862,129.945,475.973,128.469" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(468.681,136.775) translate(-468.681,-136.775)" />
|
||||
<path d="M455.925,95.6064C455.925,95.6064,435.063,87.0798,436.033,106.47C436.239,110.595,441.946,137.683,448.752,129.501C451.239,126.509,453.488,124.162,453.488,124.162" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(445.963,112.386) translate(-445.963,-112.386)" />
|
||||
<path d="M467.194,94.0502C466.472,94.2766,478.799,89.5439,485.804,98.4954C488.279,101.658,485.411,114.578,478.551,124.757" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(476.923,108.879) translate(-476.923,-108.879)" />
|
||||
<path d="M478.551,124.757C478.551,124.757,478.998,126.958,485.495,125.617C488.342,125.029,486.629,127.266,483.742,128.607C481.372,129.707,476.06,129.989,475.973,128.469C475.75,124.549,478.769,125.74,478.551,124.757C478.354,123.872,477.004,123.004,476.111,120.839C475.331,118.949,465.417,104.455,478.86,106.608C479.353,106.506,475.354,93.8206,462.773,93.6144C450.195,93.4081,450.608,109.083,450.608,109.083" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="bevel" transform="translate(468.781,111.567) translate(-468.781,-111.567)" />
|
||||
<path d="M457.927,126.098C456.174,128.057,456.689,128.401,453.184,129.123C449.637,129.854,451.721,131.155,453.081,131.495C454.73,131.907,458.545,132.491,461.123,128.882C461.908,127.783,461.119,126.029,460.04,125.582C459.519,125.366,458.823,125.096,457.927,126.098L457.927,126.098Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(456.332,128.591) translate(-456.332,-128.591)" />
|
||||
<path d="M457.811,126.064C457.635,124.912,458.19,123.542,458.785,121.938C459.679,119.533,461.742,117.126,460.092,109.495C458.862,103.808,450.612,108.312,450.607,109.083C450.602,109.854,450.98,112.991,450.469,116.645C449.802,121.412,453.502,125.445,457.764,125.032" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(455.552,116.363) translate(-455.552,-116.363)" />
|
||||
<path d="M455.849,108.967C455.811,109.231,456.331,109.933,457.008,110.027C457.684,110.121,458.263,109.572,458.299,109.309C458.336,109.046,457.817,108.756,457.14,108.661C456.463,108.567,455.884,108.704,455.849,108.967L455.849,108.967Z" fill="white" stroke="white" stroke-width="0.16" transform="translate(457.074,109.335) translate(-457.074,-109.335)" />
|
||||
<path d="M476.44,108.43C476.477,108.694,475.958,109.396,475.281,109.49C474.604,109.585,474.026,109.035,473.989,108.772C473.953,108.509,474.472,108.219,475.148,108.125C475.825,108.03,476.403,108.168,476.44,108.43L476.44,108.43Z" fill="white" transform="translate(475.215,108.798) translate(-475.215,-108.798)" />
|
||||
<path d="M478.86,106.608C478.972,108.673,478.415,110.081,478.345,112.28C478.241,115.476,479.869,119.135,477.417,122.798" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(478.146,114.703) translate(-478.146,-114.703)" />
|
||||
</g>
|
||||
</a>
|
||||
<a xlink:href="https://github.com/dokku/dokku-mysql-plugin" target="_blank">
|
||||
<g id="mysql" data-bs-toggle="svg-tooltip" data-bs-placement="bottom" title="MySQL" filter="url(#filter9_d_55_77)" transform="translate(79.2566,394.257) translate(-79.2566,-394.257)" style="animation: 30s linear infinite both mysql_t;">
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(79.2566,394.257)"/>
|
||||
<path d="M39,411.45L41.6356,411.45L41.6356,401.092L45.7157,410.121C46.1971,411.214,46.8562,411.601,48.1485,411.601C49.4411,411.601,50.0746,411.214,50.5563,410.121L54.6364,401.092L54.6364,411.449L57.272,411.449L57.272,401.109C57.272,400.1,56.8664,399.612,56.0303,399.36C54.0283,398.738,52.685,399.276,52.0767,400.621L48.0726,409.533L44.1953,400.621C43.6124,399.276,42.2439,398.738,40.2419,399.36C39.4055,399.612,39,400.1,39,401.109L39,411.45L39,411.45ZM59.4635,403.019L62.0983,403.019L62.0983,408.725C62.0736,409.035,62.1982,409.763,63.642,409.785C64.3786,409.797,69.327,409.785,69.3732,409.785L69.3732,402.991L72.0141,402.991C72.0263,402.991,72.0115,412.257,72.0117,412.296C72.026,414.581,69.1626,415.078,67.8428,415.116L59.5205,415.116L59.5205,413.351C59.5353,413.351,67.8366,413.353,67.8575,413.351C69.5538,413.173,69.3535,412.334,69.3533,412.051L69.3533,411.363L63.7512,411.363C61.1447,411.339,59.4852,410.207,59.4647,408.905C59.4626,408.785,59.5209,403.076,59.4633,403.019L59.4635,403.019Z" fill="#00618A" transform="translate(55.5095,407.109) translate(-55.5095,-407.109)"/>
|
||||
<path d="M74.0451,411.45L81.6224,411.45C82.5094,411.45,83.371,411.265,84.0554,410.945C85.1957,410.424,85.7533,409.718,85.7533,408.793L85.7533,406.876C85.7533,406.12,85.1198,405.413,83.8779,404.943C83.2189,404.69,82.408,404.556,81.6224,404.556L78.4289,404.556C77.365,404.556,76.8581,404.236,76.7314,403.53C76.706,403.446,76.706,403.379,76.706,403.295L76.706,402.101C76.706,402.034,76.706,401.966,76.7314,401.882C76.8581,401.344,77.137,401.193,78.0745,401.109C78.1504,401.109,78.2518,401.092,78.328,401.092L85.8547,401.092L85.8547,399.344L78.4546,399.344C77.3902,399.344,76.8326,399.411,76.3259,399.562C74.7546,400.05,74.0704,400.823,74.0704,402.168L74.0704,403.698C74.0704,404.875,75.4136,405.884,77.6689,406.12C77.9226,406.136,78.1759,406.153,78.4291,406.153L81.1661,406.153C81.2677,406.153,81.3691,406.153,81.445,406.17C82.2814,406.237,82.636,406.389,82.8897,406.691C83.0416,406.842,83.0922,406.994,83.0922,407.162L83.0922,408.692C83.0922,408.877,82.9656,409.113,82.7124,409.314C82.4841,409.516,82.104,409.651,81.5971,409.684C81.4957,409.684,81.4198,409.701,81.3184,409.701L74.0449,409.701L74.0449,411.449L74.0451,411.45ZM102.195,408.406C102.195,410.205,103.538,411.214,106.25,411.416C106.503,411.433,106.757,411.45,107.01,411.45L113.878,411.45L113.878,409.701L106.959,409.701C105.413,409.701,104.831,409.314,104.831,408.39L104.831,399.343L102.195,399.343L102.195,408.406ZM87.4354,408.498L87.4354,402.264C87.4354,400.68,88.5529,399.719,90.762,399.416C90.9976,399.383,91.2352,399.366,91.4732,399.366L96.476,399.366C96.7298,399.366,96.9587,399.383,97.2126,399.416C99.4219,399.719,100.539,400.68,100.539,402.264L100.539,408.498C100.539,409.783,100.065,410.47,98.971,410.919L101.567,413.251L98.507,413.251L96.4066,411.364L94.2921,411.497L91.4732,411.497C90.9907,411.497,90.4829,411.43,89.9241,411.278C88.2481,410.823,87.4354,409.947,87.4354,408.498L87.4354,408.498ZM90.28,408.346C90.28,408.431,90.31.0,408.515,90.34.7,408.616C90.4831,409.341,91.1688,409.745,92.21,409.745L94.6044,409.745L92.4049,407.769L95.465,407.769L97.3835,409.492C97.7369,409.305,97.9697,409.018,98.0509,408.65C98.0762,408.566,98.0762,408.481,98.0762,408.397L98.0762,402.416C98.0762,402.348,98.0762,402.264,98.0509,402.18C97.8984,401.506,97.2128,401.118,96.1971,401.118L92.21,401.118C91.042,401.118,90.2802,401.624,90.2802,402.416L90.2802,408.346L90.28,408.346Z" fill="#E48E00" transform="translate(93.9614,406.297) translate(-93.9614,-406.297)"/>
|
||||
<path d="M116.197,396.443C114.577,396.399,113.339,396.549,112.281,396.993C111.981,397.119,111.501,397.122,111.452,397.497C111.617,397.67,111.643,397.927,111.774,398.139C112.027,398.546,112.453,399.091,112.834,399.377C113.25,399.69,113.678,400.024,114.124,400.294C114.917,400.775,115.802,401.05,116.565,401.532C117.015,401.816,117.462,402.174,117.901,402.495C118.118,402.653,118.264,402.9,118.546,402.999L118.546,402.953C118.398,402.765,118.36,402.507,118.224,402.311L117.625,401.715C117.039,400.942,116.296,400.262,115.506,399.698C114.876,399.248,113.465,398.64,113.203,397.91L113.156,397.864C113.603,397.814,114.126,397.653,114.539,397.543C115.231,397.358,115.85,397.406,116.565,397.222C116.888,397.131,117.21,397.039,117.533,396.947L117.533,396.764C117.171,396.395,116.914,395.906,116.519,395.572C115.488,394.698,114.362,393.824,113.203,393.096C112.56,392.692,111.765,392.43,111.083,392.087C110.854,391.972,110.451,391.913,110.3,391.721C109.942,391.266,109.747,390.691,109.471,390.162C108.893,389.054,108.325,387.843,107.813,386.677C107.463,385.882,107.235,385.098,106.799,384.385C104.707,380.962,102.456,378.897,98.9679,376.866C98.2258,376.434,97.3322,376.264,96.3879,376.041L94.8677,375.949C94.5584,375.82,94.2366,375.444,93.9462,375.261C92.7908,374.535,89.8272,372.955,88.9714,375.032C88.431,376.344,89.779,377.623,90.2611,378.288C90.5995,378.754,91.0327,379.276,91.2745,379.8C91.4336,380.145,91.4611,380.49,91.5971,380.855C91.9321,381.753,92.2231,382.73,92.6565,383.56C92.8755,383.98,93.1169,384.422,93.3937,384.798C93.5635,385.028,93.8543,385.13,93.9003,385.485C93.6158,385.882,93.5996,386.496,93.4397,386.998C92.7198,389.258,92.9913,392.066,94.0386,393.738C94.36,394.251,95.1169,395.352,96.1576,394.93C97.0681,394.561,96.8647,393.417,97.1251,392.408C97.184,392.18,97.1477,392.011,97.2632,391.858L97.2632,391.904L98.0924,393.554C98.706,394.538,99.7954,395.566,100.718,396.26C101.197,396.619,101.574,397.241,102.193,397.451L102.193,397.406L102.146,397.406C102.027,397.22,101.839,397.142,101.686,396.993C101.325,396.641,100.924,396.204,100.626,395.801C99.7868,394.667,99.0449,393.426,98.369,392.133C98.0462,391.516,97.7656,390.836,97.4935,390.208C97.3886,389.966,97.3899,389.6,97.1713,389.474C96.8733,389.934,96.4343,390.306,96.2038,390.85C95.8352,391.718,95.7876,392.777,95.6511,393.875C95.5703,393.904,95.606,393.884,95.5588,393.921C94.9172,393.767,94.6916,393.11,94.4534,392.546C93.85,391.12,93.7381,388.823,94.2687,387.182C94.4062,386.757,95.0268,385.419,94.7756,385.027C94.6557,384.636,94.26,384.409,94.0386,384.11C93.7646,383.74,93.491,383.253,93.3014,382.826C92.8078,381.714,92.5773,380.466,92.0577,379.342C91.8093,378.805,91.3892,378.261,91.0442,377.783C90.6623,377.254,90.2346,376.864,89.9386,376.224C89.8333,375.997,89.6903,375.633,89.8463,375.399C89.8961,375.241,89.9661,375.175,90.1229,375.124C90.3901,374.919,91.1343,375.192,91.4126,375.307C92.1515,375.613,92.768,375.904,93.3937,376.316C93.6942,376.514,93.998,376.898,94.361,377.004L94.7756,377.004C95.4241,377.152,96.1507,377.05,96.7565,377.233C97.8274,377.557,98.7871,378.061,99.6585,378.608C102.314,380.277,104.485,382.652,105.97,385.485C106.209,385.942,106.312,386.377,106.523,386.861C106.947,387.837,107.482,388.841,107.905,389.795C108.326,390.747,108.737,391.708,109.333,392.5C109.646,392.917,110.856,393.14,111.406,393.371C111.791,393.533,112.423,393.702,112.788,393.921C113.485,394.34,114.161,394.838,114.815,395.297C115.142,395.526,116.147,396.029,116.197,396.443L116.197,396.443Z" fill="#00618A" transform="translate(103.696,388.499) translate(-103.696,-388.499)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M95.6047,378.975C95.2669,378.969,95.028,379.012,94.7754,379.067L94.7754,379.113L94.8216,379.113C94.9827,379.442,95.2669,379.654,95.4664,379.938C95.6199,380.259,95.7735,380.58,95.9272,380.901L95.9731,380.855C96.2584,380.655,96.3891,380.335,96.3877,379.846C96.2734,379.727,96.2564,379.576,96.1574,379.434C96.0257,379.243,95.7708,379.135,95.6047,378.975L95.6047,378.975Z" fill="#00618A" transform="translate(95.5816,379.938) translate(-95.5816,-379.938)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M115.115,409.651C115.115,410.806,116.032,411.584,117.058,411.584C118.083,411.584,119,410.806,119,409.651C119,408.497,118.083,407.718,117.058,407.718C116.032,407.718,115.115,408.497,115.115,409.651L115.115,409.651ZM118.565,409.651C118.565,410.527,117.892,411.182,117.058,411.182C116.214,411.182,115.551,410.527,115.551,409.651C115.551,408.775,116.213,408.12,117.058,408.12C117.892,408.12,118.565,408.775,118.565,409.651ZM117.581,410.754L118.016,410.754L117.379,409.785C117.721,409.749,117.98,409.584,117.98,409.182C117.98,408.734,117.695,408.548,117.146,408.548L116.281,408.548L116.281,410.754L116.654,410.754L116.654,409.801L117.001,409.801L117.581,410.754L117.581,410.754ZM116.654,409.491L116.654,408.857L117.084,408.857C117.307,408.857,117.576,408.899,117.576,409.156C117.576,409.466,117.332,409.491,117.052,409.491L116.654,409.491L116.654,409.491Z" fill="#E48E00" transform="translate(117.058,409.651) translate(-117.058,-409.651)"/>
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(79.2566,394.257)"/>
|
||||
<path d="M39,411.45L41.6356,411.45L41.6356,401.092L45.7157,410.121C46.1971,411.214,46.8562,411.601,48.1485,411.601C49.4411,411.601,50.0746,411.214,50.5563,410.121L54.6364,401.092L54.6364,411.449L57.272,411.449L57.272,401.109C57.272,400.1,56.8664,399.612,56.0303,399.36C54.0283,398.738,52.685,399.276,52.0767,400.621L48.0726,409.533L44.1953,400.621C43.6124,399.276,42.2439,398.738,40.2419,399.36C39.4055,399.612,39,400.1,39,401.109L39,411.45L39,411.45ZM59.4635,403.019L62.0983,403.019L62.0983,408.725C62.0736,409.035,62.1982,409.763,63.642,409.785C64.3786,409.797,69.327,409.785,69.3732,409.785L69.3732,402.991L72.0141,402.991C72.0263,402.991,72.0115,412.257,72.0117,412.296C72.026,414.581,69.1626,415.078,67.8428,415.116L59.5205,415.116L59.5205,413.351C59.5353,413.351,67.8366,413.353,67.8575,413.351C69.5538,413.173,69.3535,412.334,69.3533,412.051L69.3533,411.363L63.7512,411.363C61.1447,411.339,59.4852,410.207,59.4647,408.905C59.4626,408.785,59.5209,403.076,59.4633,403.019L59.4635,403.019Z" fill="#00618A" transform="translate(55.5095,407.109) translate(-55.5095,-407.109)" />
|
||||
<path d="M74.0451,411.45L81.6224,411.45C82.5094,411.45,83.371,411.265,84.0554,410.945C85.1957,410.424,85.7533,409.718,85.7533,408.793L85.7533,406.876C85.7533,406.12,85.1198,405.413,83.8779,404.943C83.2189,404.69,82.408,404.556,81.6224,404.556L78.4289,404.556C77.365,404.556,76.8581,404.236,76.7314,403.53C76.706,403.446,76.706,403.379,76.706,403.295L76.706,402.101C76.706,402.034,76.706,401.966,76.7314,401.882C76.8581,401.344,77.137,401.193,78.0745,401.109C78.1504,401.109,78.2518,401.092,78.328,401.092L85.8547,401.092L85.8547,399.344L78.4546,399.344C77.3902,399.344,76.8326,399.411,76.3259,399.562C74.7546,400.05,74.0704,400.823,74.0704,402.168L74.0704,403.698C74.0704,404.875,75.4136,405.884,77.6689,406.12C77.9226,406.136,78.1759,406.153,78.4291,406.153L81.1661,406.153C81.2677,406.153,81.3691,406.153,81.445,406.17C82.2814,406.237,82.636,406.389,82.8897,406.691C83.0416,406.842,83.0922,406.994,83.0922,407.162L83.0922,408.692C83.0922,408.877,82.9656,409.113,82.7124,409.314C82.4841,409.516,82.104,409.651,81.5971,409.684C81.4957,409.684,81.4198,409.701,81.3184,409.701L74.0449,409.701L74.0449,411.449L74.0451,411.45ZM102.195,408.406C102.195,410.205,103.538,411.214,106.25,411.416C106.503,411.433,106.757,411.45,107.01,411.45L113.878,411.45L113.878,409.701L106.959,409.701C105.413,409.701,104.831,409.314,104.831,408.39L104.831,399.343L102.195,399.343L102.195,408.406ZM87.4354,408.498L87.4354,402.264C87.4354,400.68,88.5529,399.719,90.762,399.416C90.9976,399.383,91.2352,399.366,91.4732,399.366L96.476,399.366C96.7298,399.366,96.9587,399.383,97.2126,399.416C99.4219,399.719,100.539,400.68,100.539,402.264L100.539,408.498C100.539,409.783,100.065,410.47,98.971,410.919L101.567,413.251L98.507,413.251L96.4066,411.364L94.2921,411.497L91.4732,411.497C90.9907,411.497,90.4829,411.43,89.9241,411.278C88.2481,410.823,87.4354,409.947,87.4354,408.498L87.4354,408.498ZM90.28,408.346C90.28,408.431,90.3054,408.515,90.3309,408.616C90.4831,409.341,91.1688,409.745,92.21,409.745L94.6044,409.745L92.4049,407.769L95.465,407.769L97.3835,409.492C97.7369,409.305,97.9697,409.018,98.0509,408.65C98.0762,408.566,98.0762,408.481,98.0762,408.397L98.0762,402.416C98.0762,402.348,98.0762,402.264,98.0509,402.18C97.8984,401.506,97.2128,401.118,96.1971,401.118L92.21,401.118C91.042,401.118,90.2802,401.624,90.2802,402.416L90.2802,408.346L90.28,408.346Z" fill="#E48E00" transform="translate(93.9614,406.297) translate(-93.9614,-406.297)" />
|
||||
<path d="M116.197,396.443C114.577,396.399,113.339,396.549,112.281,396.993C111.981,397.119,111.501,397.122,111.452,397.497C111.617,397.67,111.643,397.927,111.774,398.139C112.027,398.546,112.453,399.091,112.834,399.377C113.25,399.69,113.678,400.024,114.124,400.294C114.917,400.775,115.802,401.05,116.565,401.532C117.015,401.816,117.462,402.174,117.901,402.495C118.118,402.653,118.264,402.9,118.546,402.999L118.546,402.953C118.398,402.765,118.36,402.507,118.224,402.311L117.625,401.715C117.039,400.942,116.296,400.262,115.506,399.698C114.876,399.248,113.465,398.64,113.203,397.91L113.156,397.864C113.603,397.814,114.126,397.653,114.539,397.543C115.231,397.358,115.85,397.406,116.565,397.222C116.888,397.131,117.21,397.039,117.533,396.947L117.533,396.764C117.171,396.395,116.914,395.906,116.519,395.572C115.488,394.698,114.362,393.824,113.203,393.096C112.56,392.692,111.765,392.43,111.083,392.087C110.854,391.972,110.451,391.913,110.3,391.721C109.942,391.266,109.747,390.691,109.471,390.162C108.893,389.054,108.325,387.843,107.813,386.677C107.463,385.882,107.235,385.098,106.799,384.385C104.707,380.962,102.456,378.897,98.9679,376.866C98.2258,376.434,97.3322,376.264,96.3879,376.041L94.8677,375.949C94.5584,375.82,94.2366,375.444,93.9462,375.261C92.7908,374.535,89.8272,372.955,88.9714,375.032C88.431,376.344,89.779,377.623,90.2611,378.288C90.5995,378.754,91.0327,379.276,91.2745,379.8C91.4336,380.145,91.4611,380.49,91.5971,380.855C91.9321,381.753,92.2231,382.73,92.6565,383.56C92.8755,383.98,93.1169,384.422,93.3937,384.798C93.5635,385.028,93.8543,385.13,93.9003,385.485C93.6158,385.882,93.5996,386.496,93.4397,386.998C92.7198,389.258,92.9913,392.066,94.0386,393.738C94.36,394.251,95.1169,395.352,96.1576,394.93C97.0681,394.561,96.8647,393.417,97.1251,392.408C97.184,392.18,97.1477,392.011,97.2632,391.858L97.2632,391.904L98.0924,393.554C98.706,394.538,99.7954,395.566,100.718,396.26C101.197,396.619,101.574,397.241,102.193,397.451L102.193,397.406L102.146,397.406C102.027,397.22,101.839,397.142,101.686,396.993C101.325,396.641,100.924,396.204,100.626,395.801C99.7868,394.667,99.0449,393.426,98.369,392.133C98.0462,391.516,97.7656,390.836,97.4935,390.208C97.3886,389.966,97.3899,389.6,97.1713,389.474C96.8733,389.934,96.4343,390.306,96.2038,390.85C95.8352,391.718,95.7876,392.777,95.6511,393.875C95.5703,393.904,95.606,393.884,95.5588,393.921C94.9172,393.767,94.6916,393.11,94.4534,392.546C93.85,391.12,93.7381,388.823,94.2687,387.182C94.4062,386.757,95.0268,385.419,94.7756,385.027C94.6557,384.636,94.26,384.409,94.0386,384.11C93.7646,383.74,93.491,383.253,93.3014,382.826C92.8078,381.714,92.5773,380.466,92.0577,379.342C91.8093,378.805,91.3892,378.261,91.0442,377.783C90.6623,377.254,90.2346,376.864,89.9386,376.224C89.8333,375.997,89.6903,375.633,89.8463,375.399C89.8961,375.241,89.9661,375.175,90.1229,375.124C90.3901,374.919,91.1343,375.192,91.4126,375.307C92.1515,375.613,92.768,375.904,93.3937,376.316C93.6942,376.514,93.998,376.898,94.361,377.004L94.7756,377.004C95.4241,377.152,96.1507,377.05,96.7565,377.233C97.8274,377.557,98.7871,378.061,99.6585,378.608C102.314,380.277,104.485,382.652,105.97,385.485C106.209,385.942,106.312,386.377,106.523,386.861C106.947,387.837,107.482,388.841,107.905,389.795C108.326,390.747,108.737,391.708,109.333,392.5C109.646,392.917,110.856,393.14,111.406,393.371C111.791,393.533,112.423,393.702,112.788,393.921C113.485,394.34,114.161,394.838,114.815,395.297C115.142,395.526,116.147,396.029,116.197,396.443L116.197,396.443Z" fill="#00618A" transform="translate(103.696,388.499) translate(-103.696,-388.499)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M95.6047,378.975C95.2669,378.969,95.028,379.012,94.7754,379.067L94.7754,379.113L94.8216,379.113C94.9827,379.442,95.2669,379.654,95.4664,379.938C95.6199,380.259,95.7735,380.58,95.9272,380.901L95.9731,380.855C96.2584,380.655,96.3891,380.335,96.3877,379.846C96.2734,379.727,96.2564,379.576,96.1574,379.434C96.0257,379.243,95.7708,379.135,95.6047,378.975L95.6047,378.975Z" fill="#00618A" transform="translate(95.5816,379.938) translate(-95.5816,-379.938)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M115.115,409.651C115.115,410.806,116.032,411.584,117.058,411.584C118.083,411.584,119,410.806,119,409.651C119,408.497,118.083,407.718,117.058,407.718C116.032,407.718,115.115,408.497,115.115,409.651L115.115,409.651ZM118.565,409.651C118.565,410.527,117.892,411.182,117.058,411.182C116.214,411.182,115.551,410.527,115.551,409.651C115.551,408.775,116.213,408.12,117.058,408.12C117.892,408.12,118.565,408.775,118.565,409.651ZM117.581,410.754L118.016,410.754L117.379,409.785C117.721,409.749,117.98,409.584,117.98,409.182C117.98,408.734,117.695,408.548,117.146,408.548L116.281,408.548L116.281,410.754L116.654,410.754L116.654,409.801L117.001,409.801L117.581,410.754L117.581,410.754ZM116.654,409.491L116.654,408.857L117.084,408.857C117.307,408.857,117.576,408.899,117.576,409.156C117.576,409.466,117.332,409.491,117.052,409.491L116.654,409.491L116.654,409.491Z" fill="#E48E00" transform="translate(117.058,409.651) translate(-117.058,-409.651)" />
|
||||
</g>
|
||||
</a>
|
||||
<a xlink:href="https://github.com/dokku/dokku-nats" target="_blank">
|
||||
@@ -668,7 +668,7 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 align-self-start text-white">
|
||||
<p class="m-0 py-3">© 2013-2022 Dokku. Website designed & developed by <a data-bs-toggle="tooltip" data-bs-placement="right" title="Available for freelance" href="https://yasoob.me" class="text-decoration-none text-white">Yasoob Khalid</a></p>
|
||||
<p class="m-0 py-3">© Dokku. Website designed & developed by <a data-bs-toggle="tooltip" data-bs-placement="right" title="Available for freelance" href="https://yasoob.me" class="text-decoration-none text-white">Yasoob Khalid</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
> New as of 0.11.0, Enhanced in 0.20.0
|
||||
|
||||
```
|
||||
network:create <network> # Creates an attachable docker network
|
||||
network:destroy <network> # Destroys a docker network
|
||||
network:exists <network> # Checks if a docker network exists
|
||||
network:info <network> # Outputs information about a docker network
|
||||
network:list # Lists all docker networks
|
||||
network:report [<app>] [<flag>] # Displays a network report for one or more apps
|
||||
network:rebuild <app> # Rebuilds network settings for an app
|
||||
network:rebuildall # Rebuild network settings for all apps
|
||||
network:set <app> <key> (<value>) # Set or clear a network property for an app
|
||||
network:create <network> # Creates an attachable docker network
|
||||
network:destroy <network> # Destroys a docker network
|
||||
network:exists <network> # Checks if a docker network exists
|
||||
network:info <network> [--format text|json] # Outputs information about a docker network
|
||||
network:list [--format text|json] # Lists all docker networks
|
||||
network:report [<app>] [<flag>] # Displays a network report for one or more apps
|
||||
network:rebuild <app> # Rebuilds network settings for an app
|
||||
network:rebuildall # Rebuild network settings for all apps
|
||||
network:set <app> <key> (<value>) # Set or clear a network property for an app
|
||||
```
|
||||
|
||||
The Network plugin allows developers to abstract the concept of container network management, allowing developers to both change what networks a given container is attached to as well as rebuild the configuration on the fly.
|
||||
@@ -51,6 +51,21 @@ none
|
||||
test-network
|
||||
```
|
||||
|
||||
The `network:list` command also takes a `--format` flag, with the valid options including `text` (default) and `json`. The `json` output format can be used for automation purposes:
|
||||
|
||||
```shell
|
||||
dokku network:list --format json
|
||||
```
|
||||
|
||||
```
|
||||
[
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"},
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"f50fa882e7de","Internal":false,"IPv6":false,"Labels":{},"Name":"test-network","Scope":"local"},
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"host","ID":"ab6a59291443","Internal":false,"IPv6":false,"Labels":{},"Name":"host","Scope":"local"},
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"null","ID":"e2506bc8b7d7","Internal":false,"IPv6":false,"Labels":{},"Name":"none","Scope":"local"}
|
||||
]
|
||||
```
|
||||
|
||||
### Creating a network
|
||||
|
||||
> [!IMPORTANT]
|
||||
@@ -117,16 +132,30 @@ The `network:exists` command will return non-zero if the network does not exist,
|
||||
### Checking network info
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.20.0, Requires Docker 1.21+
|
||||
> New as of 0.35.3
|
||||
|
||||
Network information can be retrieved via the `network:info` command. This is a slightly different version of the `docker network` command.
|
||||
|
||||
```shell
|
||||
dokku network:info test-network
|
||||
dokku network:info bridge
|
||||
```
|
||||
|
||||
```
|
||||
// TODO
|
||||
=====> bridge network information
|
||||
ID: d18df2d21433
|
||||
Name: bridge
|
||||
Driver: bridge
|
||||
Scope: local
|
||||
```
|
||||
|
||||
The `network:info` command also takes a `--format` flag, with the valid options including `text` (default) and `json`. The `json` output format can be used for automation purposes:
|
||||
|
||||
```shell
|
||||
dokku network:info bridge --format json
|
||||
```
|
||||
|
||||
```
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"}
|
||||
```
|
||||
|
||||
### Routing an app to a known ip:port combination
|
||||
@@ -255,7 +284,7 @@ The default value may be set by passing an empty value for the option:
|
||||
dokku network:set node-js-app tld
|
||||
```
|
||||
|
||||
The `tld` property can also be set globally. The global default is emty string, and the global value is used when no app-specific value is set.
|
||||
The `tld` property can also be set globally. The global default is empty string, and the global value is used when no app-specific value is set.
|
||||
|
||||
```shell
|
||||
dokku network:set --global tld svc.cluster.local
|
||||
|
||||
@@ -161,9 +161,9 @@ Dokku will extract all tcp ports exposed using the `EXPOSE` directive (one port
|
||||
For example, if the Dokku installation is configured with the domain `dokku.me` and an application named `node-js-app` is deployed with following Dockerfile:
|
||||
|
||||
```
|
||||
FROM ubuntu:20.04
|
||||
FROM ubuntu:24.04
|
||||
EXPOSE 1234
|
||||
CMD python -m SimpleHTTPServer 1234
|
||||
CMD python3 -m SimpleHTTPServer 1234
|
||||
```
|
||||
|
||||
The application would be exposed to the user at `node-js-app.dokku.me:1234`. If this is not desired, the following application configuration may be applied:
|
||||
|
||||
@@ -117,6 +117,16 @@ dokku caddy:set --global log-level DEBUG
|
||||
|
||||
After modifying, the Caddy container will need to be restarted.
|
||||
|
||||
### Changing the label key for the app
|
||||
|
||||
The default label key for the app is `caddy`. This can be changed by setting the `label-key` property:
|
||||
|
||||
```shell
|
||||
dokku caddy:set node-js-app label-key caddy_0
|
||||
```
|
||||
|
||||
This will update the app's label key to `caddy_0`. The label key is used to identify the app in the Caddy configuration. If you change the label key, you will need to restart or rebuild the app to apply the updates.
|
||||
|
||||
### SSL Configuration
|
||||
|
||||
The caddy plugin only supports automatic ssl certificates from it's letsencrypt integration. Managed certificates provided by the `certs` plugin are ignored.
|
||||
|
||||
@@ -177,26 +177,36 @@ Alternatively, you may push an app to your Dokku host with a name like "00-defau
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.5.0
|
||||
|
||||
Dokku uses a templating library by the name of [sigil](https://github.com/gliderlabs/sigil) to generate nginx configuration for each app. This may be overridden by committing the [default configuration template](https://github.com/dokku/dokku/blob/master/plugins/nginx-vhosts/templates/nginx.conf.sigil) to a file named `nginx.conf.sigil` in the root of the app repository.
|
||||
Dokku uses a templating library by the name of [sigil](https://github.com/gliderlabs/sigil) to generate nginx configuration for each app. This may be overridden by committing the [default configuration template](https://github.com/dokku/dokku/blob/master/plugins/nginx-vhosts/templates/nginx.conf.sigil) to a file named `nginx.conf.sigil`.
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `nginx.conf.sigil` file to use for a given app. This can be done via the `nginx:set` command. If a value is specified and that file does not exist in the app's build directory, Dokku will continue the build process as if the repository has no `nginx.conf.sigil`.
|
||||
The `nginx.conf.sigil` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
For deploys via the `git:from-image` and `git:load-image` commands, the `nginx.conf.sigil` is extracted from the configured `WORKDIR` property of the image. For all other deploys - git push, `git:from-archive`, `git:sync` - will have the `nginx.conf.sigil` extracted directly from the source code. Both cases will respect the configured `nginx-conf-sigil-path` property value.
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `nginx-conf-sigil-path` property:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app nginx-conf-sigil-path .dokku/nginx.conf.sigil
|
||||
```
|
||||
|
||||
This property can also be changed globally, which will take into effect if there is no value at the app level.
|
||||
The value is the path to the desired file _relative_ to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, Dokku will continue the build process as if the repository has no `nginx.conf.sigil`.
|
||||
|
||||
```shell
|
||||
dokku nginx:set --global nginx-conf-sigil-path .dokku/nginx.conf.sigil
|
||||
```
|
||||
|
||||
In either case, the value can be reset by specifying an empty value.
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app nginx-conf-sigil-path
|
||||
```
|
||||
|
||||
The `nginx-conf-sigil-path` property can also be set globally. The global default is `nginx.conf.sigil`, and the global value is used when no app-specific value is set.
|
||||
|
||||
```shell
|
||||
dokku nginx:set --global nginx-conf-sigil-path nginx.conf.sigil
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku nginx:set --global nginx-conf-sigil-path
|
||||
```
|
||||
|
||||
@@ -305,28 +315,36 @@ Changing these value globally or on a per-app basis will require rebuilding the
|
||||
> [!WARNING]
|
||||
> Validation is not performed against the values, and they are used as is within Dokku.
|
||||
|
||||
| Property | Default | Type | Explanation |
|
||||
| Property | Default | Type | Explanation |
|
||||
| --------------------------|---------------------------------------|---------|-------------------------------------------------------------------------------------|
|
||||
| access-log-format | empty string | string | Name of custom log format to use (log format must be specified elsewhere) |
|
||||
| access-log-path | `${NGINX_LOG_ROOT}/${APP}-access.log` | string | Log path for nginx access logs (set to `off` to disable) |
|
||||
| bind-address-ipv4 | `0.0.0.0` | string | Default IPv4 address to bind to |
|
||||
| bind-address-ipv6 | `[::]` | string | Default IPv6 address to bind to |
|
||||
| client-max-body-size | `1m` | string | Size (with units) of client request body (usually modified for file uploads) |
|
||||
| client-body-timeout | `60s` | string | Timeout (with units) for reading the client request body |
|
||||
| client-header-timeout | `60s` | string | Timeout (with units) for reading the client request headers |
|
||||
| error-log-path | `${NGINX_LOG_ROOT}/${APP}-error.log` | string | Log path for nginx error logs (set to `off` to disable) |
|
||||
| hsts | `true` | boolean | Enables or disables HSTS for your application |
|
||||
| hsts-include-subdomains | `true` | boolean | Forces the browser to apply the HSTS policy to all app subdomains |
|
||||
| hsts-max-age | `15724800` | integer | Time in seconds to cache HSTS configuration |
|
||||
| hsts-preload | `false` | boolean | Tells the browser to include the domain in their HSTS preload lists |
|
||||
| keepalive-timeout | `75s` | string | Timeout (with units) during which a keep-alive client connection will stay open on the server side |
|
||||
| lingering-timeout | `5s` | string | Timeout (with units) is the maximum waiting time for more client data to arrive |
|
||||
| nginx-conf-sigil-path | `nginx.conf.sigil` | string | Path in the repository to the `nginx.conf.sigil` file |
|
||||
| nginx-service-command | | string | Full path to an executable script or binary to invoke instead of the system's init process when interacting with nginx |
|
||||
| proxy-buffer-size | `8k` (# is os pagesize) | string | Size of the buffer used for reading the first part of proxied server response |
|
||||
| proxy-buffering | `on` | string | Enables or disables buffering of responses from the proxied server |
|
||||
| proxy-buffers | `8 8k` | string | Number and size of the buffers used for reading the proxied server response, for a single connection |
|
||||
| proxy-busy-buffers-size | `16k` | string | Limits the total size of buffers that can be busy sending a response to the client while the response is not yet fully read. |
|
||||
| proxy-connect-timeout | `60s` | string | Timeout (with units) for establishing a connection to your backend server |
|
||||
| proxy-read-timeout | `60s` | string | Timeout (with units) for reading response from your backend server |
|
||||
| proxy-send-timeout | `60s` | string | Timeout (with units) for transmitting a request to your backend server |
|
||||
| send-timeout | `60s` | string | Timeout (with units) for transmitting a response to your the client |
|
||||
| underscore-in-headers | `off` | string | Enables or disables the use of underscores in client request header fields. |
|
||||
| x-forwarded-for-value | `$remote_addr` | string | Used for specifying the header value to set for the `X-Forwarded-For` header |
|
||||
| x-forwarded-port-value | `$server_port` | string | Used for specifying the header value to set for the `X-Forwarded-Port` header |
|
||||
| x-forwarded-proto-value | `$scheme` | string | Used for specifying the header value to set for the `X-Forwarded-Proto` header |
|
||||
| x-forwarded-for-value | `$remote_addr` | string | Used for specifying the header value to set for the `X-Forwarded-For` header |
|
||||
| x-forwarded-port-value | `$server_port` | string | Used for specifying the header value to set for the `X-Forwarded-Port` header |
|
||||
| x-forwarded-proto-value | `$scheme` | string | Used for specifying the header value to set for the `X-Forwarded-Proto` header |
|
||||
| x-forwarded-ssl | empty string | string | Less commonly used alternative to `X-Forwarded-Proto` (valid values: `on` or `off`) |
|
||||
|
||||
#### Binding to specific addresses
|
||||
@@ -367,7 +385,6 @@ Properties:
|
||||
- `x-forwarded-proto-value`
|
||||
- `x-forwarded-ssl`
|
||||
|
||||
|
||||
Dokku's default Nginx configuration passes the de-facto standard HTTP headers [`X-Forwarded-For`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For), [`X-Forwarded-Proto`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-Proto), and `X-Forwarded-Port` to your application.
|
||||
These headers indicate the IP address of the original client making the request, the protocol of the original request (HTTP or HTTPS), and the port number of the original request, respectively.
|
||||
|
||||
@@ -416,7 +433,7 @@ dokku nginx:set node-js-app error-log-path off
|
||||
|
||||
Properties:
|
||||
|
||||
- `acccess-log-format`
|
||||
- `access-log-format`
|
||||
|
||||
Prior to changing the log-format, log formats should be specified at a file such as `/etc/nginx/conf.d/00-log-formats.conf`. This will ensure they are available within your app's nginx context. For instance, the following may be added to the above file. It only needs to be specified once to be used for all apps.
|
||||
|
||||
@@ -459,7 +476,6 @@ This property is commonly used to increase the max file upload size.
|
||||
|
||||
Changing this value when using the PHP buildpack (or any other buildpack that uses an intermediary server) will require changing the value in the server config shipped with that buildpack. Consult your buildpack documentation for further details.
|
||||
|
||||
|
||||
## Other
|
||||
|
||||
### Domains plugin
|
||||
@@ -472,7 +488,7 @@ See the [customizing hostnames documentation](/docs/configuration/domains.md#cus
|
||||
|
||||
### Disabling VHOSTS
|
||||
|
||||
See the [disabling vhosts documentation](/docs/configuration/domains.md#disabling-vhosts) for more information on how to disable domain usage for your app.
|
||||
See the [enabling and disabling vhosts documentation](/docs/configuration/domains.md#enabling-and-disabling-vhosts) for more information on how to disable domain usage for your app.
|
||||
|
||||
### SSL Configuration
|
||||
|
||||
|
||||
@@ -160,10 +160,10 @@ Traefik exposes an API and Dashboard, which Dokku disables by default for securi
|
||||
> [!WARNING]
|
||||
> Users enabling the dashboard should also enable api basic auth.
|
||||
|
||||
By default, the api is disabled. To enable, set the `api` property with the `--global` flag:
|
||||
By default, the api is disabled. To enable, set the `api-enabled` property with the `--global` flag:
|
||||
|
||||
```shell
|
||||
dokku traefik:set --global api true
|
||||
dokku traefik:set --global api-enabled true
|
||||
```
|
||||
|
||||
After enabling, the Traefik container will need to be restarted.
|
||||
@@ -173,10 +173,10 @@ After enabling, the Traefik container will need to be restarted.
|
||||
> [!WARNING]
|
||||
> Users enabling the dashboard should also enable api basic auth.
|
||||
|
||||
By default, the dashboard is disabled. To enable, set the `dashboard` property with the `--global` flag:
|
||||
By default, the dashboard is disabled. To enable, set the `dashboard-enabled` property with the `--global` flag:
|
||||
|
||||
```shell
|
||||
dokku traefik:set --global dashboard true
|
||||
dokku traefik:set --global dashboard-enabled true
|
||||
```
|
||||
|
||||
After enabling, the Traefik container will need to be restarted.
|
||||
|
||||
@@ -158,6 +158,8 @@ At this time, the following dokku commands are used to interact with a complete
|
||||
- triggers: `pre-enable-vhost`
|
||||
- `domains:remove`: Removes a domain from an app.
|
||||
- triggers: `post-domains-update`
|
||||
- `domains:reset`: Reset app domains to global-configured domains.
|
||||
- triggers: `post-domains-update`
|
||||
- `domains:set`: Sets all domains for a given app.
|
||||
- triggers: `post-domains-update`
|
||||
- `proxy:build-config`: Builds - or rebuilds - external proxy configuration.
|
||||
|
||||
@@ -12,6 +12,9 @@ enter <app> [<container-type> || --container-id <container-id>] # Connect to a
|
||||
The `enter` command can be used to enter a running container. The following variations of the command exist:
|
||||
|
||||
```shell
|
||||
# enter the first container
|
||||
dokku enter node-js-app
|
||||
|
||||
# enter the web process
|
||||
dokku enter node-js-app web
|
||||
|
||||
|
||||
@@ -66,7 +66,7 @@ dokku run --no-tty node-js-app ls -lah
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.25.0
|
||||
|
||||
Finally, a container can be run in "detached" mode via the `run:detached` Dokku command. Running a process in detached mode will immediately return a `CONTAINER_ID`. Detached containers are run without a tty and are also removed at the end of process execution.
|
||||
Finally, a container can be run in "detached" mode via the `run:detached` Dokku command. Running a process in detached mode will immediately return the container name (or pod name when using the k3s scheduler). Detached containers run without a tty by default and are also removed at the end of process execution.
|
||||
|
||||
```shell
|
||||
dokku run:detached node-js-app ls -lah
|
||||
|
||||
@@ -107,6 +107,38 @@ proctype: qty
|
||||
web: 1
|
||||
```
|
||||
|
||||
### Changing process management settings
|
||||
|
||||
The `ps` plugin provides a number of settings that can be used to managed deployments on a per-app basis. The following table outlines ones not covered elsewhere:
|
||||
|
||||
| Name | Description | Global Default |
|
||||
|-----------------------|---------------------------------------------------|--------------------|
|
||||
| `stop-timeout` | Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands *also* respect this value. If not specified, the Docker defaults for the [`docker stop` command](https://docs.docker.com/engine/reference/commandline/stop/) will be used. | `30` |
|
||||
|
||||
All settings can be set via the `ps:set` command. Using `stop-timeout` as an example:
|
||||
|
||||
```shell
|
||||
dokku ps:set node-js-app stop-timeout 60
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option in question:
|
||||
|
||||
```shell
|
||||
dokku ps:set node-js-app stop-timeout
|
||||
```
|
||||
|
||||
Properties can also be set globally. If not set for an app, the global value will apply.
|
||||
|
||||
```shell
|
||||
dokku ps:set --global stop-timeout 60
|
||||
```
|
||||
|
||||
The global default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku ps:set --global stop-timeout
|
||||
```
|
||||
|
||||
### Defining Processes
|
||||
|
||||
#### Procfile
|
||||
@@ -153,14 +185,19 @@ The `Procfile` also supports a special `release` command which acts in a similar
|
||||
|
||||
#### Changing the `Procfile` location
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `Procfile` file to use for a given app. This can be done via the `ps:set` command. If a value is specified and that file does not exist within the repository, Dokku will continue the build process as if the repository has no `Procfile`.
|
||||
The `Procfile` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
For deploys via the `git:from-image` and `git:load-image` commands, the `Procfile` is extracted from the configured `WORKDIR` property of the image. For all other deploys - git push, `git:from-archive`, `git:sync` - will have the `Procfile` extracted directly from the source code. Both cases will respect the configured `procfile-path` property value.
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `procfile-path` property:
|
||||
|
||||
```shell
|
||||
dokku ps:set node-js-app procfile-path .dokku/Procfile
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, Dokku will continue the build process as if the repository has no `Procfile`.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
|
||||
@@ -48,24 +48,44 @@ When running scheduled cron tasks, there are a few items to be aware of:
|
||||
- Schedules are performed on the hosting server's timezone, which is typically UTC.
|
||||
- At this time, only the `PATH` and `SHELL` environment variables are specified in the cron template.
|
||||
- A `MAILTO` value can be set via the `cron:set` command.
|
||||
- A `MAILFROM` value can be set via the `cron:set` command.
|
||||
- Each scheduled task is executed within a one-off `run` container, and thus inherit any docker-options specified for `run` containers. Resources are never shared between scheduled tasks.
|
||||
- Scheduled cron tasks are supported on a per-scheduler basis, and are currently only implemented by the `docker-local` scheduler.
|
||||
- Tasks for _all_ apps managed by the `docker-local` scheduler are written to a single crontab file owned by the `dokku` user. The `dokku` user's crontab should be considered reserved for this purpose.
|
||||
|
||||
#### Specifying a MAILTO value
|
||||
|
||||
By default, cron tasks complete and do not perform any reporting. Users can specify a value for `MAILTO` via the global `mailto` cron property by using the `cron:set` command.
|
||||
### Changing cron management settings
|
||||
|
||||
The `cron` plugin provides a number of settings that can be used to managed deployments on a per-app basis. The following table outlines ones not covered elsewhere:
|
||||
|
||||
| Name | Description | Level | Global Default |
|
||||
|-----------------------|----------------------------------------------------------------|-------------|----------------|
|
||||
| `mailfrom` | Sets the `MAILFROM` variable in a cron file for cron reporting | Global-only | empty string |
|
||||
| `maintenance` | Whether to have cron running for the app or not. | App-only | `false` |
|
||||
| `mailto` | Sets the `MAILTO` variable in a cron file for cron reporting | Global-only | empty string |
|
||||
|
||||
All settings can be set via the `cron:set` command. Using `maintenance` as an example:
|
||||
|
||||
```shell
|
||||
dokku cron:set --global mailto example@example.com
|
||||
dokku cron:set node-js-app maintenance true
|
||||
```
|
||||
|
||||
All output for individual cron runs will be sent to the specified email.
|
||||
|
||||
Cron emails can be disabled by running the `cron:set` command for the global `mailto` property with no value.
|
||||
The default value may be set by passing an empty value for the option in question:
|
||||
|
||||
```shell
|
||||
dokku cron:set --global mailto
|
||||
dokku cron:set node-js-app maintenance
|
||||
```
|
||||
|
||||
If a property can be set globally - such as `mailto`, use the `--global` flag. If not set for an app, the global value will apply if it exists.
|
||||
|
||||
```shell
|
||||
dokku cron:set --global maintenance true
|
||||
```
|
||||
|
||||
The global default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku cron:set --global maintenance
|
||||
```
|
||||
|
||||
#### Listing Cron tasks
|
||||
|
||||
@@ -9,26 +9,26 @@
|
||||
<meta name="author" content="">
|
||||
<title>Dokku - {{DOC_TITLE}}</title>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon.ico">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="Dokku">
|
||||
<meta name="application-name" content="Dokku">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/browserconfig.xml">
|
||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<script>
|
||||
@@ -48,7 +48,7 @@
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/style.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.36.2/docs/assets/style.css" rel="stylesheet">
|
||||
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
|
||||
</head>
|
||||
@@ -215,6 +215,7 @@
|
||||
<a href="/{{NAME}}/deployment/continuous-integration/github-actions/" class="list-group-item">GitHub Actions</a>
|
||||
<a href="/{{NAME}}/deployment/continuous-integration/gitlab-ci/" class="list-group-item">GitLab CI</a>
|
||||
<a href="/{{NAME}}/deployment/continuous-integration/generic/" class="list-group-item">Generic</a>
|
||||
<a href="/{{NAME}}/deployment/continuous-integration/woodpecker-ci/" class="list-group-item">Woodpecker CI</a>
|
||||
|
||||
<a href="#" class="list-group-item disabled">Community Contributions</a>
|
||||
<a href="/{{NAME}}/community/clients/" class="list-group-item">Clients</a>
|
||||
@@ -260,7 +261,7 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 align-self-start text-white">
|
||||
<p class="m-0 py-3">© 2013-2022 Dokku. Website designed & developed by <a href="https://yasoob.me" class="text-decoration-none text-white">Yasoob Khalid</a></p>
|
||||
<p class="m-0 py-3">© Dokku. Website designed & developed by <a href="https://yasoob.me" class="text-decoration-none text-white">Yasoob Khalid</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user