Compare commits
1160 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
c5edd02655 | ||
|
|
fd0799ab9e | ||
|
|
d3e5b573d7 | ||
|
|
a541564aa7 | ||
|
|
2fe83467ed | ||
|
|
b0d537019a | ||
|
|
d0cb1f9abb | ||
|
|
7adf14046f | ||
|
|
bdae6d8115 | ||
|
|
fe9a890243 | ||
|
|
b2e935218d | ||
|
|
e24ac1c1fb | ||
|
|
91099ffc09 | ||
|
|
54da739e47 | ||
|
|
8a6f53ad48 | ||
|
|
1cb611e80a | ||
|
|
d5daca18d2 | ||
|
|
d048182f32 | ||
|
|
267387d855 | ||
|
|
02b54c3752 | ||
|
|
b49f9381d8 | ||
|
|
642409c877 | ||
|
|
0df9dc686e | ||
|
|
f4aec8b91b | ||
|
|
2436262cf7 | ||
|
|
acba5f79d7 | ||
|
|
c14acc84a9 | ||
|
|
9630c0e5b1 | ||
|
|
ec4e8237ab | ||
|
|
edce8b8c1d | ||
|
|
9931fc27df | ||
|
|
f7195a518c | ||
|
|
bb03c070d7 | ||
|
|
afa8911f7e | ||
|
|
a0db4078ef | ||
|
|
de18e27484 | ||
|
|
73f8069586 | ||
|
|
2cf2c7f8c2 | ||
|
|
89b7aba4d9 | ||
|
|
a2f4dec69e | ||
|
|
5363f3151f | ||
|
|
c03e5d89db | ||
|
|
9b50528bb1 | ||
|
|
2d9b889362 | ||
|
|
b68f27c15f | ||
|
|
4fa00f8697 | ||
|
|
cb964179d0 | ||
|
|
18e757301e | ||
|
|
c76036770e | ||
|
|
fdfd213e59 | ||
|
|
4ccd0abf12 | ||
|
|
a6c8cbaa84 | ||
|
|
88de9b2805 | ||
|
|
7aae7c3788 | ||
|
|
ec760e53d2 | ||
|
|
b3da0ed0c5 | ||
|
|
640d01552b | ||
|
|
35423f3402 | ||
|
|
c2316ecec1 | ||
|
|
0cc3901a9a | ||
|
|
d0faabaf37 | ||
|
|
fffcd81dc8 | ||
|
|
fe7428db92 | ||
|
|
ade2ec53f3 | ||
|
|
e4994f25ae | ||
|
|
d988dda2b7 | ||
|
|
409792f5c1 | ||
|
|
9055642020 | ||
|
|
ab7e703728 | ||
|
|
58f734534f | ||
|
|
9cbd619af8 | ||
|
|
013d3460cc | ||
|
|
15b4dd5251 | ||
|
|
4f68d59e0e | ||
|
|
b09a76a259 | ||
|
|
634ac97322 | ||
|
|
6fb8b52373 | ||
|
|
332be894ee | ||
|
|
6473b98795 | ||
|
|
19f6dbb8ab | ||
|
|
089f123f10 | ||
|
|
e875b6d1d1 | ||
|
|
8c8e4f4563 | ||
|
|
fe55e426ec | ||
|
|
3099849660 | ||
|
|
16a529009f | ||
|
|
612e17767e | ||
|
|
7762347e7f | ||
|
|
8e2a627698 | ||
|
|
85189efca5 | ||
|
|
f44a68ea2e | ||
|
|
c3bb06c014 | ||
|
|
8f99a06ba3 | ||
|
|
6484a8038a | ||
|
|
4d2b0026bf | ||
|
|
4b0f01254b | ||
|
|
176584ab70 | ||
|
|
d36fbd2424 | ||
|
|
bd54574f31 | ||
|
|
3d3dc2359c | ||
|
|
342713a59c | ||
|
|
d772c8886b | ||
|
|
234e37d718 | ||
|
|
064cfc8898 | ||
|
|
aa71a6e860 | ||
|
|
4c898092da | ||
|
|
d24658e22a | ||
|
|
5c41aa34bf | ||
|
|
9cf7bb63fc | ||
|
|
e7db7a325a | ||
|
|
da455df2f9 | ||
|
|
a20a4f6ecf | ||
|
|
3565ff0b2e | ||
|
|
7434dd91f6 | ||
|
|
0242c445f9 | ||
|
|
eabcc75361 | ||
|
|
347d0ee03e | ||
|
|
b5d0112c85 | ||
|
|
a1633c0f04 | ||
|
|
5117f345d1 | ||
|
|
b09a0ee201 | ||
|
|
92866e117e | ||
|
|
321b698ffb | ||
|
|
416768c036 | ||
|
|
3ddc99effd | ||
|
|
a5a51d1641 | ||
|
|
835a011bed | ||
|
|
c92f5a1a91 | ||
|
|
946b8431f8 | ||
|
|
e3c0a452a6 | ||
|
|
6c40ae5f6e | ||
|
|
71b42f6a75 | ||
|
|
27b18eeba1 | ||
|
|
4455e79e42 | ||
|
|
5b416bb3e3 | ||
|
|
0e057076f6 | ||
|
|
5db6208bba | ||
|
|
3797b68f44 | ||
|
|
19e78cc512 | ||
|
|
51ba717bda | ||
|
|
c070ec8b07 | ||
|
|
4e4db28901 | ||
|
|
35fea0215a | ||
|
|
61f4386edc | ||
|
|
0e2eaca819 | ||
|
|
50ef310842 | ||
|
|
82f4c185e3 | ||
|
|
54c8b027f7 | ||
|
|
b385b3149d | ||
|
|
3cdf74ea2f | ||
|
|
98b60bb05f | ||
|
|
d8a7ea8a84 | ||
|
|
c029ff78fa | ||
|
|
7ddde6db32 | ||
|
|
aef45b9837 | ||
|
|
14ff1398b9 | ||
|
|
e9566566c2 | ||
|
|
45f30a1c92 | ||
|
|
e0ff968373 | ||
|
|
3526d05f59 | ||
|
|
33e99ba21c | ||
|
|
37cfe15bd2 | ||
|
|
5d22d811b9 | ||
|
|
9618d1b752 | ||
|
|
241b22f3db | ||
|
|
1ee88e1872 | ||
|
|
af91750a4c | ||
|
|
e9fe295c20 | ||
|
|
13341581c7 | ||
|
|
5b9651e696 | ||
|
|
aab6fbb6b1 | ||
|
|
464cd139e5 | ||
|
|
761c9592a6 | ||
|
|
b959448a9c | ||
|
|
5909067547 | ||
|
|
171d900c40 | ||
|
|
e2b82d5a50 | ||
|
|
1b1a148ac0 | ||
|
|
4273152368 | ||
|
|
9b36afd3d9 | ||
|
|
adba3b0440 | ||
|
|
f853de516b | ||
|
|
39aee6676c | ||
|
|
1644d0bbe4 | ||
|
|
b7f3281a3d | ||
|
|
fcd3f5d2bc | ||
|
|
ae9afdf7ad | ||
|
|
71c6c070c8 | ||
|
|
89697f71d0 | ||
|
|
683eca0aff | ||
|
|
21ee30e48e | ||
|
|
13652fdafc | ||
|
|
28f1c635e3 | ||
|
|
2bf33eb752 | ||
|
|
6bcf10aa95 | ||
|
|
b0e551b603 | ||
|
|
be9ee4dd91 | ||
|
|
9607bedc07 | ||
|
|
1b5b3ad681 | ||
|
|
dbba7b2ed6 | ||
|
|
44e2155cbd | ||
|
|
b01c92f429 | ||
|
|
1d964565bc | ||
|
|
6fab8cc3b8 | ||
|
|
d64f278ef0 | ||
|
|
9b2e22323d | ||
|
|
8df404cb6a | ||
|
|
ccf5952ef5 | ||
|
|
364034645e | ||
|
|
26f6bcf1bb | ||
|
|
1a238fe63c | ||
|
|
244b898fd2 | ||
|
|
e44ddce057 | ||
|
|
5b88ce06da | ||
|
|
8929b51f6f | ||
|
|
323ded72f3 | ||
|
|
c006696b96 | ||
|
|
8ad210094e | ||
|
|
1b6cecc8dc | ||
|
|
711d999a93 | ||
|
|
9400db86a5 | ||
|
|
df386d3a90 | ||
|
|
1ecde84753 | ||
|
|
63cc22bdb1 | ||
|
|
5ba04f778c | ||
|
|
eb11d4e1c6 | ||
|
|
8eb42f53f4 | ||
|
|
be4c54b878 | ||
|
|
94db62a90b | ||
|
|
c915b67d86 | ||
|
|
828e0e8fac | ||
|
|
5e2a78e7df | ||
|
|
a5e2b51bc2 | ||
|
|
31b07c429e | ||
|
|
7aed4d46d6 | ||
|
|
7609e078e3 | ||
|
|
977284fbe6 | ||
|
|
11fb884107 | ||
|
|
d6f2107ccc | ||
|
|
97681430c1 | ||
|
|
19c6b90c22 | ||
|
|
f77d4c1485 | ||
|
|
0b2ee9c905 | ||
|
|
5ecfa7e532 | ||
|
|
9678c1c0b8 | ||
|
|
1909fa7fdf | ||
|
|
96cac23c8f | ||
|
|
a1bf046771 | ||
|
|
a39e85df92 | ||
|
|
12e6de3137 | ||
|
|
80bf1cb93b | ||
|
|
4397533fd7 | ||
|
|
b99cf19c4c | ||
|
|
935d28a83b | ||
|
|
5946c9b756 | ||
|
|
7d53e7a012 | ||
|
|
b99fa7f1cf | ||
|
|
3392d21a8b | ||
|
|
1a6efa001d | ||
|
|
eee970f575 | ||
|
|
91bf536cee | ||
|
|
2c06cb970e | ||
|
|
3a5a8c7c14 | ||
|
|
aa1948bb74 | ||
|
|
c3d5d6e646 | ||
|
|
9d6201985e | ||
|
|
1a07025e99 | ||
|
|
104a5b4a93 | ||
|
|
2937ffb880 | ||
|
|
ad5537c086 | ||
|
|
08a136f73f | ||
|
|
77ffc27e34 | ||
|
|
75db57191b | ||
|
|
169d8a927e | ||
|
|
586d13a12f | ||
|
|
7d6c72047c | ||
|
|
6f581dffaf | ||
|
|
706ef4b739 | ||
|
|
474864f266 | ||
|
|
0b9684c66b | ||
|
|
8245f70db1 | ||
|
|
456de35b83 | ||
|
|
d76db5fe79 | ||
|
|
3f47aaea03 | ||
|
|
ec30ca12f0 | ||
|
|
eed8a240b6 | ||
|
|
87c4627ff9 | ||
|
|
a6cad2cca4 | ||
|
|
092d6a2da4 | ||
|
|
4cfd22f498 | ||
|
|
53437289f3 | ||
|
|
31002c1029 | ||
|
|
2516c79264 | ||
|
|
d2cf2e7b91 | ||
|
|
19a5235ec6 | ||
|
|
c4c3edc167 | ||
|
|
0a1f787310 | ||
|
|
f4b1ce259a | ||
|
|
d5d2826773 | ||
|
|
8265517a96 | ||
|
|
ef043e2941 | ||
|
|
1abca18683 | ||
|
|
580ce20d77 | ||
|
|
4a1a2a326a | ||
|
|
e2d51bfeb3 | ||
|
|
1a727772c8 | ||
|
|
ffd821c5b0 | ||
|
|
f6167a0452 | ||
|
|
c98fe7b06b | ||
|
|
d6d785ccc7 | ||
|
|
9fcd41f349 | ||
|
|
56a3d9f9e8 | ||
|
|
d7b04e32b4 | ||
|
|
a74d2ea2aa | ||
|
|
aadded8913 | ||
|
|
61d5406c4c | ||
|
|
55527222ed | ||
|
|
bf7388377c | ||
|
|
8633110155 | ||
|
|
74a9a0f7d6 | ||
|
|
5739df650e | ||
|
|
e3cfaab92b | ||
|
|
d33da92e1f | ||
|
|
91b9c66e2d | ||
|
|
d953b578ec | ||
|
|
1e392582f6 | ||
|
|
0145fb2358 | ||
|
|
272f2a7e42 | ||
|
|
fad22e433b | ||
|
|
a1caa4b916 | ||
|
|
9439e0414c | ||
|
|
f7d85c57d0 | ||
|
|
602169e4e0 | ||
|
|
2352dde73b | ||
|
|
51e8a30304 | ||
|
|
48ac2278d9 | ||
|
|
dbd4ebac86 | ||
|
|
731181f14b | ||
|
|
37e5855620 | ||
|
|
3664ee75ea | ||
|
|
6b5cbc4a43 | ||
|
|
f5c1fa56e5 | ||
|
|
9247331d5d | ||
|
|
f64cf3bdfa | ||
|
|
ca312fe8f7 | ||
|
|
df8dd766b6 | ||
|
|
565f736a14 | ||
|
|
79d9076383 | ||
|
|
e1d67f795d | ||
|
|
32f13dcc9b | ||
|
|
2274eeafda | ||
|
|
4d22ccda78 | ||
|
|
c533700f73 | ||
|
|
f42596ad5d | ||
|
|
0c5887cc64 | ||
|
|
2119268ebc | ||
|
|
be9a608d3f | ||
|
|
ca893cdc4d | ||
|
|
0ab4e2bc99 | ||
|
|
9a7c8cdaf6 | ||
|
|
c9b9c2ab25 | ||
|
|
6e3631afeb | ||
|
|
36ade1ecd0 | ||
|
|
43c255436d | ||
|
|
a759b03739 | ||
|
|
4b0699023c | ||
|
|
991b6fdae0 | ||
|
|
159b01e5f8 | ||
|
|
efc35ab104 | ||
|
|
8c6736824d | ||
|
|
dcd85f577e | ||
|
|
89cff8957f | ||
|
|
83b89453a5 | ||
|
|
5553da1be1 | ||
|
|
41b0898db9 | ||
|
|
5a5531bce3 | ||
|
|
54e1b973a6 | ||
|
|
9597943b6b | ||
|
|
e98cbe93cf | ||
|
|
2f2d4f5dd6 | ||
|
|
5d24b10144 | ||
|
|
58772984cd | ||
|
|
4de97a1094 | ||
|
|
e470a880f9 | ||
|
|
4bae815f82 | ||
|
|
005eb2e11b | ||
|
|
bb5ab0a777 | ||
|
|
ea609801b5 | ||
|
|
a7c90c42cb | ||
|
|
54e324a4bc | ||
|
|
e641fae3c9 | ||
|
|
c277f529a0 | ||
|
|
68a280e0b6 | ||
|
|
2fd6767e5a | ||
|
|
0d26a90bf6 | ||
|
|
cdff4ae867 | ||
|
|
f34fd277b3 | ||
|
|
0ea9e7aa42 | ||
|
|
1cc8b3723d | ||
|
|
e0409caf75 | ||
|
|
883809f35e | ||
|
|
c26a49bb4e | ||
|
|
135497afda | ||
|
|
a9933c7f02 | ||
|
|
ff18061987 | ||
|
|
6d07fea704 | ||
|
|
e43927a69e | ||
|
|
ca55f58446 | ||
|
|
cf742bb3e0 | ||
|
|
79bce7d2d5 | ||
|
|
e50b941cee | ||
|
|
91c8e62da5 | ||
|
|
dc20a38756 | ||
|
|
34768ca5b4 | ||
|
|
5d8ccee919 | ||
|
|
4d07ac6d6b | ||
|
|
b026103ae2 | ||
|
|
b78431a800 | ||
|
|
e6f964bec1 | ||
|
|
c53d21c834 | ||
|
|
a78a865752 | ||
|
|
a1790d674c | ||
|
|
795d4941ee | ||
|
|
9cb54950fc | ||
|
|
50958fc448 | ||
|
|
4bd64dfd7b | ||
|
|
eaf641f9e3 | ||
|
|
10468ce47d | ||
|
|
55461f0149 | ||
|
|
eb9a75496c | ||
|
|
76dd78e441 | ||
|
|
87a008c86b | ||
|
|
64cc239d5b | ||
|
|
c8afdb553d | ||
|
|
1d2549e7d7 | ||
|
|
681dc93ad9 | ||
|
|
dd26850854 | ||
|
|
68d05b230d | ||
|
|
0d6bde2eff | ||
|
|
b9d3390289 | ||
|
|
d2b167d6ad | ||
|
|
ee08b8c0fd | ||
|
|
791d91d937 | ||
|
|
a411661ecb | ||
|
|
08e968b15e | ||
|
|
1bc63001db | ||
|
|
aff6ab8902 | ||
|
|
455c59a4b7 | ||
|
|
eb1f842254 | ||
|
|
d1e3f51df3 | ||
|
|
d9297f2534 | ||
|
|
c840fc5f9e | ||
|
|
77d9594c09 | ||
|
|
7c61b53cc8 | ||
|
|
b976cc60d2 | ||
|
|
a90c441095 | ||
|
|
ac2ea7597e | ||
|
|
d68eacced4 | ||
|
|
25469845e1 | ||
|
|
d4b484a33a | ||
|
|
59958181e4 | ||
|
|
92139a0cd3 | ||
|
|
0e1c3d5fc0 | ||
|
|
7df3e6241b | ||
|
|
0dad6a0e58 | ||
|
|
131567ba6d | ||
|
|
67273e1db0 | ||
|
|
5184704a31 | ||
|
|
c4c961bef1 | ||
|
|
60865c21d7 | ||
|
|
bfe552ee43 | ||
|
|
0134cd98d0 | ||
|
|
8f5a834cf0 | ||
|
|
4d18c8d9d9 | ||
|
|
78c1b1af5b | ||
|
|
e6a4bf81a1 | ||
|
|
ac38c9058c | ||
|
|
2b7da4a79d | ||
|
|
202d4ed042 | ||
|
|
628b68c0e2 | ||
|
|
daf86d0e8d | ||
|
|
ff6e7937b7 | ||
|
|
4e92e33395 | ||
|
|
2a21524a4a | ||
|
|
87bde84115 | ||
|
|
caaf19f5a3 | ||
|
|
b054143319 | ||
|
|
f2892208c1 | ||
|
|
38ca3eac1c | ||
|
|
fd0ac54e7e | ||
|
|
1eeaa781a0 | ||
|
|
c4ccf57495 | ||
|
|
7b61baddfd | ||
|
|
5148600ea0 | ||
|
|
9fca7cf7d7 | ||
|
|
2bc79032cf | ||
|
|
08cf35aa36 | ||
|
|
67331cd206 | ||
|
|
1a31b5ce06 | ||
|
|
8ba12f2d1b | ||
|
|
68c76268ef | ||
|
|
fd5d491cd5 | ||
|
|
45b193a79c | ||
|
|
2a4fee3497 | ||
|
|
c87d709239 | ||
|
|
15517742f5 | ||
|
|
d5168088b8 | ||
|
|
008618d19e | ||
|
|
e1575b599f | ||
|
|
d0be83b536 | ||
|
|
eeca6c9650 | ||
|
|
248699b314 | ||
|
|
ae5c3ab677 | ||
|
|
7fe0b42d3e | ||
|
|
4311574ee8 | ||
|
|
f5ff8d8026 | ||
|
|
da77104f89 | ||
|
|
7ff2deac4a | ||
|
|
342f636bf9 | ||
|
|
2986b95945 | ||
|
|
22ba40a2d4 | ||
|
|
3fa1cdc938 | ||
|
|
7c58bbf792 | ||
|
|
6b74cd1d6b | ||
|
|
5b0bc0b132 | ||
|
|
ba7a4d85b6 | ||
|
|
9bba7843c1 | ||
|
|
25ad302ed2 | ||
|
|
75eeb99a42 | ||
|
|
c0f01c58d6 | ||
|
|
94125ce787 | ||
|
|
8c9db01006 | ||
|
|
14f0e2fb72 | ||
|
|
3bd61d8c7f | ||
|
|
0cb47f1c54 | ||
|
|
f23cdffe49 | ||
|
|
b3b3a93789 | ||
|
|
042495bcd6 | ||
|
|
4ddd341184 | ||
|
|
8add9b4b13 | ||
|
|
46f11cb239 | ||
|
|
b7ff696507 | ||
|
|
3242073e84 | ||
|
|
4347d665ba | ||
|
|
4cbb3d7d9e | ||
|
|
b8c67329ff | ||
|
|
a1bd258f99 | ||
|
|
0108dfcda5 | ||
|
|
db3cfe441c | ||
|
|
c36f23b072 | ||
|
|
d346a347a0 | ||
|
|
66623ba2af | ||
|
|
b0fc8df99f | ||
|
|
f5e18e193a | ||
|
|
8a5953d911 | ||
|
|
997661ac08 | ||
|
|
b69be6c267 | ||
|
|
fe993ac14c | ||
|
|
fe2029dd0f | ||
|
|
96f88c2b1f | ||
|
|
433a6bb5a1 | ||
|
|
b94f6cd9d0 | ||
|
|
b09f8658ec | ||
|
|
b9757ebe61 | ||
|
|
0a14f61778 | ||
|
|
df858a2566 | ||
|
|
5e53207009 | ||
|
|
45fbb7546f | ||
|
|
433c4299f1 | ||
|
|
d8946edf91 | ||
|
|
7203f0a6d7 | ||
|
|
7a5bd7ee0f | ||
|
|
065d4ef828 | ||
|
|
2e931c8771 | ||
|
|
007bf743df | ||
|
|
a6d95af3e5 | ||
|
|
c3f7542656 | ||
|
|
4120d0e655 | ||
|
|
3807366c11 | ||
|
|
377cfc7f59 | ||
|
|
9ffd5ada71 | ||
|
|
a1eda40ffd | ||
|
|
7c376d3e6d | ||
|
|
0c2307095d | ||
|
|
ba8859561f | ||
|
|
1c7a68c3f9 | ||
|
|
4b0aec26b6 | ||
|
|
f20d08e49e | ||
|
|
b99c25f090 | ||
|
|
c2bc469d53 | ||
|
|
ffdffd235f | ||
|
|
1798664b0f | ||
|
|
a149a83230 | ||
|
|
fff23771d2 | ||
|
|
b4ec460e68 | ||
|
|
bc2c780016 | ||
|
|
ec262481fc | ||
|
|
220038c0b8 | ||
|
|
5ae9ad46b4 | ||
|
|
3af7dfcd8e | ||
|
|
52b095d7ac | ||
|
|
c7e1f2d380 | ||
|
|
18c54d39c0 | ||
|
|
1c917a4c44 | ||
|
|
b7788ab862 | ||
|
|
63a5fe429f | ||
|
|
fb3ef64a9d | ||
|
|
dfa7409486 | ||
|
|
ea51db27a2 | ||
|
|
58fd25ebf4 | ||
|
|
00925b6c09 | ||
|
|
ab674072bc | ||
|
|
55c85fb6aa | ||
|
|
ae092a9ef3 | ||
|
|
d89202e168 | ||
|
|
54f74cccd0 | ||
|
|
2c47284b31 | ||
|
|
a2209eeee7 | ||
|
|
5af90b76a3 | ||
|
|
6cc46c3ad1 | ||
|
|
7b0089261f | ||
|
|
61e9b57fb6 | ||
|
|
07417af819 | ||
|
|
ba3ad4a9ab | ||
|
|
23a27d9fb7 | ||
|
|
b14779f44a | ||
|
|
2ad1572080 | ||
|
|
412c841860 | ||
|
|
20dbfb6b17 | ||
|
|
6976e9fbcf | ||
|
|
881d16ea90 | ||
|
|
7e69ddda7b | ||
|
|
bf2a8b4893 | ||
|
|
cc45955992 | ||
|
|
7f50a3df72 | ||
|
|
8f8ed5773f | ||
|
|
3eb9e8d7f6 | ||
|
|
1c0bd39d42 | ||
|
|
798b176985 | ||
|
|
808b27bf8f | ||
|
|
a75c464614 | ||
|
|
2a65e25ccf | ||
|
|
253ebc17f3 | ||
|
|
27f33b0a19 | ||
|
|
6b6736d97a | ||
|
|
898fc3324b | ||
|
|
ae81abedd6 | ||
|
|
8670dbab78 | ||
|
|
23fe19faaa | ||
|
|
72067fcfd2 | ||
|
|
7d85e213be | ||
|
|
93323bd0ff | ||
|
|
193b1d8103 | ||
|
|
14eb60160c | ||
|
|
0bd785e04e | ||
|
|
3843ac2de2 | ||
|
|
05c48430c5 | ||
|
|
20a9e3a61f | ||
|
|
a894c03043 | ||
|
|
c4b3cc9639 | ||
|
|
5d805481a2 | ||
|
|
d786c5dcd8 | ||
|
|
eba8c0b262 | ||
|
|
96afb713b7 | ||
|
|
5e03ad1dd0 | ||
|
|
3b29081885 | ||
|
|
0b145e01f0 | ||
|
|
dff13a8f1b | ||
|
|
c8897f42e4 | ||
|
|
f0707bd368 | ||
|
|
eded4f6df6 | ||
|
|
f49e7ff722 | ||
|
|
2d4c71add6 | ||
|
|
8158f6aea0 | ||
|
|
44dd933638 | ||
|
|
24b32432e6 | ||
|
|
a8c488f249 | ||
|
|
d99f0f0a93 | ||
|
|
fe262a3a3c | ||
|
|
d8401a4d86 | ||
|
|
3c6cc68086 | ||
|
|
047a3c00f5 | ||
|
|
8b9dcd2242 | ||
|
|
8a940c6e47 | ||
|
|
688ee518af | ||
|
|
2e326b718e | ||
|
|
1ae2df52f5 | ||
|
|
91151cf375 | ||
|
|
3c5f95ff18 | ||
|
|
53dc81d873 | ||
|
|
f80151bb3a | ||
|
|
62e85cc752 | ||
|
|
b6cf0ac410 | ||
|
|
e6c17059f9 | ||
|
|
d12eff3fe4 | ||
|
|
f74b306c8c | ||
|
|
22e1bb6466 | ||
|
|
abbc13cb85 | ||
|
|
433eb26f3c | ||
|
|
bfccf60a37 | ||
|
|
50239b056c | ||
|
|
541eb1a1bc | ||
|
|
bcf25ba5cd | ||
|
|
03df28af87 | ||
|
|
f5018ce70f | ||
|
|
a5a05c2c44 | ||
|
|
3adb7b615a | ||
|
|
31abd7e31e | ||
|
|
0102d219f3 | ||
|
|
701f18a69c | ||
|
|
66f46de2fd | ||
|
|
ab1f8bfd30 | ||
|
|
6f82879a43 | ||
|
|
e263db6b9c | ||
|
|
321500a577 | ||
|
|
20c231a206 | ||
|
|
44d03dc81d | ||
|
|
4b4e20a5a9 | ||
|
|
95c049609f | ||
|
|
89d13b80f1 | ||
|
|
a62cb1de8f | ||
|
|
180cc6204b | ||
|
|
e452b9308f | ||
|
|
ac77f01d83 | ||
|
|
03b72ec684 | ||
|
|
f574c1d0a3 | ||
|
|
596d785fe4 | ||
|
|
db476d3b51 | ||
|
|
f0c6f45596 | ||
|
|
b7a3ef2f8a | ||
|
|
e61421b53b | ||
|
|
4b480ae964 | ||
|
|
301fb7ac85 | ||
|
|
8fb330836e | ||
|
|
af7e720d2a | ||
|
|
f3bf6a2143 | ||
|
|
cac5a3ce05 | ||
|
|
8ce4948f1b | ||
|
|
193f310031 | ||
|
|
f39c3bd910 | ||
|
|
05a34322ab | ||
|
|
3c4902bf16 | ||
|
|
3b0439a45f | ||
|
|
4295192ab6 | ||
|
|
1f57c51f4e | ||
|
|
ccf713c104 | ||
|
|
bc4c25dccf | ||
|
|
cd4f9db95b | ||
|
|
4cc52179b5 | ||
|
|
ceaab97d99 | ||
|
|
a8c1e8a88a | ||
|
|
2432ad49a5 | ||
|
|
814953358b | ||
|
|
0adaa90fbd | ||
|
|
8576a1280a | ||
|
|
6692beae11 | ||
|
|
41a89bbb5d | ||
|
|
afb4b50bb3 | ||
|
|
03ae424a27 | ||
|
|
e9986b5775 | ||
|
|
980979ef87 | ||
|
|
7dbd9adc33 | ||
|
|
416a119904 | ||
|
|
1af36b609d | ||
|
|
5674a29211 | ||
|
|
b35d6df67c | ||
|
|
81286a0673 | ||
|
|
ea4767f2d8 | ||
|
|
4c0359bb28 | ||
|
|
a59480f97d | ||
|
|
bacfbe328b | ||
|
|
e7a3766e60 | ||
|
|
8711a1c801 | ||
|
|
f5f583b12b | ||
|
|
8b2f37feea | ||
|
|
408acbe14e | ||
|
|
e08e1df026 | ||
|
|
77d5a27fda | ||
|
|
79c0caaa7b | ||
|
|
d7ff8552d1 | ||
|
|
96e79487b9 | ||
|
|
ea55071751 | ||
|
|
4abd1f6b24 | ||
|
|
5e1089973e | ||
|
|
666f953715 | ||
|
|
d4b445985b | ||
|
|
6625846ecc | ||
|
|
1689ddd6d3 | ||
|
|
fe8b7ec451 | ||
|
|
31a73e4dab | ||
|
|
238535be0c | ||
|
|
d02c04c2a5 | ||
|
|
ff319428bf | ||
|
|
41f5283b1a | ||
|
|
e30650a620 | ||
|
|
2e57199318 | ||
|
|
976be62a1b | ||
|
|
7d37466750 | ||
|
|
5b922a93c7 | ||
|
|
2703101068 | ||
|
|
28532a56a9 | ||
|
|
dce37fa140 | ||
|
|
3d99ea63bd | ||
|
|
60d9a3ca34 | ||
|
|
06429a384e | ||
|
|
a277c5da1b | ||
|
|
6622de5998 | ||
|
|
0c83356542 | ||
|
|
b333334e72 | ||
|
|
f287f32682 | ||
|
|
aff753ca67 | ||
|
|
0de2f3401c | ||
|
|
08d817d4a1 | ||
|
|
cf0623407c | ||
|
|
8ffb693105 | ||
|
|
c49322bd34 | ||
|
|
ff2d60003d | ||
|
|
88b7290261 |
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/*
|
||||
|
||||
14
.devcontainer/bin/deploy-test-app
Executable file
14
.devcontainer/bin/deploy-test-app
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
main() {
|
||||
declare APP="${1:-test}"
|
||||
|
||||
if ! dokku apps:exists $APP; then
|
||||
dokku apps:create $APP
|
||||
fi
|
||||
|
||||
dokku builder-herokuish:set $APP allowed true
|
||||
dokku git:sync --build $APP https://github.com/dokku/smoke-test-app.git
|
||||
}
|
||||
|
||||
main "$@"
|
||||
@@ -8,6 +8,7 @@ docs
|
||||
tests
|
||||
!build/package/*
|
||||
!docs/_build/entrypoint
|
||||
!docs/_build/hooks.py
|
||||
!docs/_build/requirements.txt
|
||||
!tests/dhparam.pem
|
||||
!contrib/bash-completion
|
||||
|
||||
26
.github/ISSUE_TEMPLATE/documentation.yaml
vendored
Normal file
26
.github/ISSUE_TEMPLATE/documentation.yaml
vendored
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
name: Documentation Issue
|
||||
description: Let us know that something in the docs needs clarification
|
||||
labels: ["needs: investigation", "type: documentation"]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Consider [sponsoring Dokku](https://github.com/sponsors/dokku). Sponsorship goes directly to supporting activities such as fixing bugs and general maintenance.
|
||||
- type: input
|
||||
id: docs-link
|
||||
attributes:
|
||||
label: Link to the documentation page
|
||||
description: Which docs page is impacted?
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
label: Documentation problem
|
||||
description: Describe what you think is incorrect, not well documented, or missing from the documentation
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: report-output
|
||||
attributes:
|
||||
label: dokku report
|
||||
description: Please paste the output of the command `dokku report` so we know what systems any issue might apply to
|
||||
4
.github/actions/build-image/action.yml
vendored
4
.github/actions/build-image/action.yml
vendored
@@ -13,14 +13,14 @@ runs:
|
||||
using: "composite"
|
||||
steps:
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
|
||||
- name: set up docker buildx
|
||||
id: buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: build docker image
|
||||
shell: bash
|
||||
|
||||
2
.github/commands/ci-setup
vendored
2
.github/commands/ci-setup
vendored
@@ -1,12 +1,12 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
set -x
|
||||
|
||||
DOKKU_DOMAIN=${DOKKU_DOMAIN:="dokku.me"}
|
||||
|
||||
echo "=====> set hostname"
|
||||
hostname
|
||||
internal_ip="$(ifconfig eth0 | grep 'inet ' | awk '{print $2}')"
|
||||
echo "CI_SERVER_IP=${internal_ip}" >>"$GITHUB_ENV"
|
||||
sudo hostname "$DOKKU_DOMAIN"
|
||||
echo "$DOKKU_DOMAIN" | sudo tee /etc/hostname
|
||||
hostname
|
||||
|
||||
35
.github/dependabot.yml
vendored
35
.github/dependabot.yml
vendored
@@ -141,6 +141,41 @@ updates:
|
||||
open-pull-requests-limit: 2
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/plugins/caddy-vhosts"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/plugins/haproxy-vhosts"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/plugins/logs"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/plugins/openresty-vhosts"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/plugins/traefik-vhosts"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: bundler
|
||||
directory: "/tests/apps/ruby"
|
||||
schedule:
|
||||
|
||||
36
.github/workflows/ci.yml
vendored
36
.github/workflows/ci.yml
vendored
@@ -19,7 +19,7 @@ env:
|
||||
|
||||
jobs:
|
||||
check-commit:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
skip: ${{ steps.check-commit.outputs.skip }}
|
||||
|
||||
@@ -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:
|
||||
@@ -70,12 +70,12 @@ 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
|
||||
|
||||
- name: upload packages
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
@@ -83,7 +83,7 @@ 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:
|
||||
@@ -111,7 +111,7 @@ 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)}}
|
||||
@@ -120,7 +120,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
@@ -143,7 +143,7 @@ jobs:
|
||||
SYNC_GITHUB_PASSWORD: ${{ secrets.SYNC_GITHUB_PASSWORD }}
|
||||
SYNC_GITHUB_USERNAME: ${{ secrets.SYNC_GITHUB_USERNAME }}
|
||||
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: test-results-${{ matrix.index }}
|
||||
path: test-results
|
||||
@@ -151,7 +151,7 @@ jobs:
|
||||
docker-deploy-tests:
|
||||
name: docker
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
||||
@@ -159,7 +159,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
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:
|
||||
@@ -189,7 +193,7 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
@@ -210,7 +214,7 @@ jobs:
|
||||
2) sudo -E make -e deploy-test-multi ;;
|
||||
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;;
|
||||
esac
|
||||
- uses: actions/upload-artifact@v3
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: coverage.${{ matrix.index }}
|
||||
path: test-results/coverage
|
||||
@@ -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@v3
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: test-results
|
||||
|
||||
|
||||
2
.github/workflows/codeql-analysis.yml
vendored
2
.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
|
||||
|
||||
2
.github/workflows/docs.yml
vendored
2
.github/workflows/docs.yml
vendored
@@ -13,7 +13,7 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Cloning repo
|
||||
uses: actions/checkout@v4
|
||||
|
||||
16
.github/workflows/lint.yml
vendored
16
.github/workflows/lint.yml
vendored
@@ -17,7 +17,7 @@ concurrency:
|
||||
jobs:
|
||||
hadolint:
|
||||
name: hadolint
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
@@ -27,7 +27,7 @@ jobs:
|
||||
|
||||
markdown-lint:
|
||||
name: markdown-lint
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
@@ -44,7 +44,7 @@ jobs:
|
||||
|
||||
packer:
|
||||
name: packer
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
@@ -58,7 +58,7 @@ jobs:
|
||||
PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Get changed files in the docs folder
|
||||
id: changed-files-specific
|
||||
uses: tj-actions/changed-files@v42.0.2
|
||||
uses: tj-actions/changed-files@v45.0.2
|
||||
with:
|
||||
files: contrib/images/digitalocean/**
|
||||
- name: Run `packer validate`
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
|
||||
shellcheck:
|
||||
name: shellcheck
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
@@ -79,12 +79,12 @@ jobs:
|
||||
|
||||
shfmt:
|
||||
name: shfmt
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
- 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,7 +93,7 @@ jobs:
|
||||
|
||||
yamllint:
|
||||
name: yamllint
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
|
||||
10
.github/workflows/release.yml
vendored
10
.github/workflows/release.yml
vendored
@@ -19,7 +19,7 @@ on:
|
||||
jobs:
|
||||
release:
|
||||
name: release
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
env:
|
||||
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
outputs:
|
||||
@@ -73,14 +73,14 @@ jobs:
|
||||
run: echo "version=$(cat build/next-version)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: upload packages
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
|
||||
build-digitalocean:
|
||||
name: build-digitalocean
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
needs: release
|
||||
steps:
|
||||
- name: Checkout code
|
||||
@@ -109,14 +109,14 @@ jobs:
|
||||
PKR_VAR_dokku_version="${VERSION:1}" make image/build/digitalocean
|
||||
|
||||
- name: upload packages
|
||||
uses: actions/upload-artifact@v3
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: digitalocean-manifest.json
|
||||
path: digitalocean-manifest.json
|
||||
|
||||
bump-azure:
|
||||
name: bump-azure
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
needs: release
|
||||
steps:
|
||||
- name: Checkout code
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -13,3 +13,4 @@ tmp
|
||||
coverage.out
|
||||
site
|
||||
go.work.sum
|
||||
node_modules
|
||||
10
Dockerfile
10
Dockerfile
@@ -1,4 +1,4 @@
|
||||
FROM phusion/baseimage:focal-1.2.0
|
||||
FROM phusion/baseimage:noble-1.0.0
|
||||
|
||||
CMD ["/sbin/my_init"]
|
||||
|
||||
@@ -20,21 +20,22 @@ 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 install -y --no-install-recommends gpg lsb-release \
|
||||
&& 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 \
|
||||
&& apt-get update \
|
||||
&& apt-get -y --no-install-recommends install docker-ce docker-ce-cli containerd.io docker-compose-plugin \
|
||||
&& apt-get -y --no-install-recommends install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \
|
||||
&& 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" \
|
||||
&& DOKKU_INIT_SYSTEM=sv apt-get -y --no-install-recommends install rsync "/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 +46,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/ \
|
||||
|
||||
927
HISTORY.md
927
HISTORY.md
@@ -1,5 +1,932 @@
|
||||
# History
|
||||
|
||||
## 0.35.4
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.35.4/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.35.4 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #7209: @josegonzalez Exit non-zero if any deployment tasks fails
|
||||
- #7211: @josegonzalez Always set the git rev env var when building an app via git:sync
|
||||
- #7208: @josegonzalez Compute path for docker-container-healthchecker
|
||||
- #7205: @Cactusbone chore: fix vagrant dokku-windows config
|
||||
|
||||
### Tests
|
||||
|
||||
- #7210: @josegonzalez Ensure pack binary is installed correctly when running tests in a devcontainer
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #7206: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.37 to 9.5.38 in /docs/_build
|
||||
- #7207: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.10.1 to 10.10.2 in /docs/_build
|
||||
- #7203: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.36 to 9.5.37 in /docs/_build
|
||||
|
||||
## 0.35.3
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.35.3/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.35.3 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #7200: @josegonzalez Automatically select a container type if none is specified
|
||||
- #7199: @josegonzalez Check if nginx is running before reloading during an app deletion
|
||||
- #7198: @josegonzalez Add builder-herokuish to default help output
|
||||
- #7197: @josegonzalez Implement missing network:info command
|
||||
|
||||
### Tests
|
||||
|
||||
- #7201: @josegonzalez Run arm build on 22.04
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #7193: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.9 to 10.10.1 in /docs/_build
|
||||
- #7194: @dependabot[bot] chore(deps): bump traefik from 3.1.2 to 3.1.4 in /plugins/traefik-vhosts
|
||||
- #7195: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.9.0 to 0.9.1 in /plugins/openresty-vhosts
|
||||
- #7196: @dependabot[bot] chore(deps): bump socket.io from 4.7.5 to 4.8.0 in /tests/apps/.websocket.disabled
|
||||
|
||||
## 0.35.2
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.35.2/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.35.2 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #7191: @josegonzalez Revert to building Dokku on Ubunut 20.04 Focal to hotfix glibc issues
|
||||
|
||||
### New Features
|
||||
|
||||
- #7190: @josegonzalez Allow setting most nginx properties globally
|
||||
|
||||
## 0.35.1
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.35.1/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.35.1 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #7188: @josegonzalez Respect GO environment variables when building to ensure CGO is disabled
|
||||
|
||||
### Documentation
|
||||
|
||||
- #7187: @josegonzalez Remove reference to old web ui
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #7115: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.26.0 to 0.27.0 in /plugins/common
|
||||
- #7160: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.10.7 to 2.11.9 in /plugins/scheduler-k3s
|
||||
- #7094: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.34.1 to 1.34.2 in /plugins/common
|
||||
- #7096: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.34.1 to 1.34.2 in /plugins/config
|
||||
- #7109: @dependabot[bot] chore(deps): bump watchdog from 4.0.2 to 5.0.2 in /docs/_build
|
||||
- #7127: @dependabot[bot] chore(deps): bump python from 3.12.5-alpine to 3.12.6-alpine in /docs/_build
|
||||
- #7117: @dependabot[bot] chore(deps): bump golang from 1.23.0 to 1.23.1 in /tests/apps/go-fail-postdeploy
|
||||
- #7116: @dependabot[bot] chore(deps): bump golang from 1.23.0 to 1.23.1 in /tests/apps/zombies-dockerfile-tini
|
||||
- #7112: @dependabot[bot] chore(deps): bump golang from 1.23.0 to 1.23.1 in /tests/apps/zombies-dockerfile-no-tini
|
||||
- #7108: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.23 to 11.0.24 in /tests/apps/java
|
||||
- #7113: @dependabot[bot] chore(deps): bump golang from 1.23.0 to 1.23.1 in /tests/apps/go-fail-predeploy
|
||||
- #7110: @dependabot[bot] chore(deps): bump ruby from 3.3.4 to 3.3.5 in /tests/apps/dockerfile-entrypoint
|
||||
- #7114: @dependabot[bot] chore(deps): bump golang from 1.23.0 to 1.23.1 in /tests/apps/gogrpc
|
||||
- #7132: @dependabot[bot] chore(deps): bump express from 4.19.2 to 4.21.0 in /tests/apps/dockerfile-procfile-bad
|
||||
- #7133: @dependabot[bot] chore(deps): bump express from 4.19.2 to 4.21.0 in /tests/apps/nodejs-express-noappjson
|
||||
- #7134: @dependabot[bot] chore(deps): bump express from 4.19.2 to 4.21.0 in /tests/apps/gitsubmodules
|
||||
- #7135: @dependabot[bot] chore(deps): bump express from 4.19.2 to 4.21.0 in /tests/apps/nodejs-express-noprocfile
|
||||
- #7136: @dependabot[bot] chore(deps): bump express from 4.19.2 to 4.21.0 in /tests/apps/dockerfile-procfile
|
||||
- #7137: @dependabot[bot] chore(deps): bump express from 4.19.2 to 4.21.0 in /tests/apps/dockerfile-app-json-formations
|
||||
- #7140: @dependabot[bot] chore(deps): bump express from 4.19.2 to 4.21.0 in /tests/apps/.websocket.disabled
|
||||
- #7141: @dependabot[bot] chore(deps): bump express from 4.19.2 to 4.21.0 in /tests/apps/nodejs-express
|
||||
- #7161: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.65.0 to 1.67.0 in /tests/apps/gogrpc
|
||||
- #7153: @dependabot[bot] chore(deps): bump luizm/action-sh-checker from 0.8.0 to 0.9.0
|
||||
- #7152: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 45.0.0 to 45.0.2
|
||||
- #7079: @dependabot[bot] chore(deps): bump pyparsing from 3.1.2 to 3.1.4 in /docs/_build
|
||||
- #7097: @dependabot[bot] chore(deps): bump mkdocs from 1.6.0 to 1.6.1 in /docs/_build
|
||||
- #7142: @dependabot[bot] chore(deps): bump importlib-metadata from 8.4.0 to 8.5.0 in /docs/_build
|
||||
- #7186: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.33 to 9.5.36 in /docs/_build
|
||||
- #7144: @dependabot[bot] chore(deps): bump zipp from 3.20.0 to 3.20.2 in /docs/_build
|
||||
|
||||
## 0.35.0
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.35.0/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.35.0 bash bootstrap.sh
|
||||
```
|
||||
|
||||
See the [0.35.0 migration guide](/docs/appendices/0.35.0-migration-guide.md) for more information on migrating to 0.35.0.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #7179: @josegonzalez Remove references to version in compose files
|
||||
- #7177: @josegonzalez Reference noble apt repository and not focal
|
||||
- #7164: @josegonzalez Remove systemd on docker-based installations
|
||||
- #7157: @Cactusbone Fix building in vagrant when jq is not available
|
||||
- #7147: @Cactusbone Support older docker versions by setting ARG value with an equal sign
|
||||
- #7088: @andreby Handle the case where parent PID is 0
|
||||
- #7077: @bakatz Add cron dependency because it's necessary to run scheduled cron jobs
|
||||
|
||||
### New Features
|
||||
|
||||
- #7185: @josegonzalez Fix vagrant running on arm64 machines
|
||||
- #7184: @josegonzalez Clear out docker builder cache once a day
|
||||
- #7183: @josegonzalez Error out when the Dockerfile is missing during builder-dockerfile execution
|
||||
- #7175: @josegonzalez Upgrade digitalocean image to Ubuntu Noble
|
||||
- #7174: @josegonzalez Upgrade vagrant image to Ubuntu Noble
|
||||
- #7173: @josegonzalez Upgrade builder docker image to Ubuntu Noble
|
||||
- #7166: @josegonzalez Upgrade herokuish from 0.9.2 to 0.10.1
|
||||
- #7075: @josegonzalez Upgrade herokuish builder to gliderlabs/herokuish:latest-24
|
||||
- #7074: @josegonzalez Upgrade cnb builder to heroku/builder:24
|
||||
- #7071: @josegonzalez Bump go version to 1.23.0
|
||||
- #6853: @Reggino Support Ubuntu 24.04 LTS
|
||||
- #6762: @josegonzalez Upgrade docker compose version in use
|
||||
|
||||
### Documentation
|
||||
|
||||
- #7180: @josegonzalez Reference actual properties for enabling the traefik api and dashboard
|
||||
- #7178: @josegonzalez Fix link to docs site
|
||||
- #7101: @strugee Fix typo in CNB documentation
|
||||
- #7100: @no0dles SVG gets modified on release
|
||||
|
||||
### Tests
|
||||
|
||||
- #7176: @josegonzalez Fetch packages installed in ci from Ubuntu Noble repo
|
||||
- #7172: @josegonzalez Run CI release processes on Ubuntu Noble
|
||||
- #7171: @josegonzalez Run CI on Ubuntu Noble
|
||||
- #7170: @josegonzalez Run CI codeql analysis on Ubuntu Noble
|
||||
- #7169: @josegonzalez Run CI doc generation on Ubuntu Noble
|
||||
- #7168: @josegonzalez Run CI linting on Ubuntu Noble
|
||||
- #7073: @josegonzalez Drop codacy
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #7148: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.8.0 to 0.9.0 in /plugins/openresty-vhosts
|
||||
- #7139: @dependabot[bot] chore(deps): bump timberio/vector from 0.39.0-debian to 0.41.1-debian in /plugins/logs
|
||||
- #7060: @dependabot[bot] chore(deps): bump mvdan.cc/sh/v3 from 3.8.0 to 3.9.0 in /plugins/cron
|
||||
- #7035: @dependabot[bot] chore(deps): bump traefik from 2.11.2 to 3.1.2 in /plugins/traefik-vhosts
|
||||
- #7014: @dependabot[bot] chore(deps): bump timberio/vector from 0.39.0-debian to 0.40.0-debian in /plugins/logs
|
||||
- #6985: @dependabot[bot] chore(deps): bump github.com/traefik/traefik/v2 from 2.10.7 to 2.11.6 in /plugins/scheduler-k3s
|
||||
|
||||
### Other
|
||||
|
||||
- #7165: @josegonzalez Upgrade Docker image to Ubuntu Noble 24.04
|
||||
- #6784: @josegonzalez Remove --restart docker arguments when not running deploy-phase containers
|
||||
|
||||
## 0.34.9
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.9/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.9 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Documentation
|
||||
|
||||
- #7062: @Tashows List dokku-image-size-limit plugin
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #7070: @dependabot[bot] chore(deps): bump micromatch from 4.0.5 to 4.0.8 in /tests/apps/multi
|
||||
- #7064: @dependabot[bot] chore(deps): bump importlib-metadata from 8.3.0 to 8.4.0 in /docs/_build
|
||||
- #7068: @dependabot[bot] chore(deps): bump werkzeug from 3.0.3 to 3.0.4 in /tests/apps/python-flask
|
||||
- #7065: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.22 to 11.0.23 in /tests/apps/java
|
||||
- #7066: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.5.7 to 45.0.0
|
||||
- #7067: @dependabot[bot] chore(deps): bump org.apache.maven.plugins:maven-dependency-plugin from 3.7.1 to 3.8.0 in /tests/apps/java
|
||||
- #7069: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.32 to 9.5.33 in /docs/_build
|
||||
- #7063: @dependabot[bot] chore(deps): bump importlib-metadata from 8.2.0 to 8.3.0 in /docs/_build
|
||||
- #7058: @dependabot[bot] chore(deps): update markdown requirement from <3.7,>=3.2.1 to >=3.2.1,<3.8 in /docs/_build
|
||||
- #7059: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.31 to 9.5.32 in /docs/_build
|
||||
|
||||
## 0.34.8
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.8/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.8 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Documentation
|
||||
|
||||
- #7046: @bakatz Fixes incorrect documentation link for null builder
|
||||
- #6983: @polettix Clarify paths used by Dokku when looking for specific files
|
||||
- #7012: @DavidTheProgrammer Fix grammar under HSTS Header section in ssl documentation
|
||||
- #7019: @josegonzalez Clarify to users that the migration guides should be followed for upgrades
|
||||
|
||||
### Tests
|
||||
|
||||
- #7039: @josegonzalez Correct case of pip in builder-pack test output
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #7057: @josegonzalez Update golang dependencies
|
||||
- #7048: @dependabot[bot] chore(deps): bump soupsieve from 2.5 to 2.6 in /docs/_build
|
||||
- #7041: @dependabot[bot] chore(deps): bump zipp from 3.19.2 to 3.20.0 in /docs/_build
|
||||
- #7044: @dependabot[bot] chore(deps): bump gunicorn from 22.0.0 to 23.0.0 in /tests/apps/multi
|
||||
- #7042: @dependabot[bot] chore(deps): bump watchdog from 4.0.1 to 4.0.2 in /docs/_build
|
||||
- #7043: @dependabot[bot] chore(deps): bump gunicorn from 22.0.0 to 23.0.0 in /tests/apps/python-flask
|
||||
- #7045: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.25.0 to 0.26.0 in /plugins/common
|
||||
- #7050: @dependabot[bot] chore(deps): bump golang from 1.22.6 to 1.23.0 in /tests/apps/zombies-dockerfile-tini
|
||||
- #7049: @dependabot[bot] chore(deps): bump golang from 1.22.6 to 1.23.0 in /tests/apps/zombies-dockerfile-no-tini
|
||||
- #7051: @dependabot[bot] chore(deps): bump golang from 1.22.6 to 1.23.0 in /tests/apps/go-fail-predeploy
|
||||
- #7052: @dependabot[bot] chore(deps): bump golang from 1.22.6 to 1.23.0 in /tests/apps/gogrpc
|
||||
- #7053: @dependabot[bot] chore(deps): bump golang from 1.22.6 to 1.23.0 in /tests/apps/go-fail-postdeploy
|
||||
- #7022: @dependabot[bot] chore(deps): bump github.com/docker/docker from 24.0.9+incompatible to 25.0.6+incompatible in /plugins/scheduler-k3s
|
||||
- #7016: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.34.0 to 1.34.1 in /plugins/config
|
||||
- #7036: @dependabot[bot] chore(deps): bump django from 5.0.7 to 5.0.8 in /tests/apps/dockerfile-release
|
||||
- #7025: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.7.0 to 0.8.0 in /plugins/common
|
||||
- #7034: @dependabot[bot] chore(deps): bump golang from 1.22.5 to 1.22.6 in /tests/apps/gogrpc
|
||||
- #7033: @dependabot[bot] chore(deps): bump golang from 1.22.5 to 1.22.6 in /tests/apps/go-fail-postdeploy
|
||||
- #7030: @dependabot[bot] chore(deps): bump golang from 1.22.5 to 1.22.6 in /tests/apps/go-fail-predeploy
|
||||
- #7015: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.34.0 to 1.34.1 in /plugins/common
|
||||
- #7011: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.8.1 to 10.9 in /docs/_build
|
||||
- #7037: @dependabot[bot] chore(deps): bump python from 3.12.4-alpine to 3.12.5-alpine in /docs/_build
|
||||
- #7023: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.30 to 9.5.31 in /docs/_build
|
||||
- #7032: @dependabot[bot] chore(deps): bump pyyaml from 6.0.1 to 6.0.2 in /docs/_build
|
||||
- #7031: @dependabot[bot] chore(deps): bump golang from 1.22.5 to 1.22.6 in /tests/apps/zombies-dockerfile-tini
|
||||
- #7021: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.5.6 to 44.5.7
|
||||
- #7029: @dependabot[bot] chore(deps): bump golang from 1.22.5 to 1.22.6 in /tests/apps/zombies-dockerfile-no-tini
|
||||
- #6999: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.5.5 to 44.5.6
|
||||
- #7002: @dependabot[bot] chore(deps): bump github.com/gofrs/flock from 0.12.0 to 0.12.1 in /plugins/ps
|
||||
- #7004: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.28 to 9.5.30 in /docs/_build
|
||||
- #7006: @dependabot[bot] chore(deps): bump importlib-metadata from 8.0.0 to 8.2.0 in /docs/_build
|
||||
- #7007: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.33.1 to 1.34.0 in /plugins/common
|
||||
- #7008: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.33.1 to 1.34.0 in /plugins/config
|
||||
- #6996: @dependabot[bot] chore(deps): bump setuptools from 68.0.0 to 70.0.0 in /tests/apps/dockerfile-release
|
||||
|
||||
## 0.34.7
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.7/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.7 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6984: @josegonzalez Correctly pass around arguments when displaying container log output
|
||||
|
||||
### New Features
|
||||
|
||||
- #6992: @josegonzalez feat: add logging when hsts nginx config is not using built-in template
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6988: @dependabot[bot] chore(deps): bump django from 5.0.6 to 5.0.7 in /tests/apps/dockerfile-release
|
||||
- #6987: @dependabot[bot] chore(deps): bump ruby from 3.3.3 to 3.3.4 in /tests/apps/dockerfile-entrypoint
|
||||
- #6972: @dependabot[bot] chore(deps): bump github.com/gofrs/flock from 0.9.0 to 0.12.0 in /plugins/ps
|
||||
- #6898: @josegonzalez Update all dependencies in the dokku ecosystem
|
||||
- #6978: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.21 to 11.0.22 in /tests/apps/java
|
||||
- #6961: @dependabot[bot] chore(deps): bump github.com/gofrs/flock from 0.9.0 to 0.11.0 in /plugins/ps
|
||||
- #6981: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.24.0 to 0.25.0 in /plugins/common
|
||||
- #6980: @dependabot[bot] chore(deps): bump golang from 1.22.4 to 1.22.5 in /tests/apps/gogrpc
|
||||
- #6979: @dependabot[bot] chore(deps): bump golang from 1.22.4 to 1.22.5 in /tests/apps/go-fail-postdeploy
|
||||
- #6977: @dependabot[bot] chore(deps): bump golang from 1.22.4 to 1.22.5 in /tests/apps/zombies-dockerfile-tini
|
||||
- #6976: @dependabot[bot] chore(deps): bump golang from 1.22.4 to 1.22.5 in /tests/apps/zombies-dockerfile-no-tini
|
||||
- #6975: @dependabot[bot] chore(deps): bump golang from 1.22.4 to 1.22.5 in /tests/apps/go-fail-predeploy
|
||||
- #6971: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.64.0 to 1.65.0 in /tests/apps/gogrpc
|
||||
- #6963: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.27 to 9.5.28 in /docs/_build
|
||||
- #6956: @dependabot[bot] chore(deps): bump importlib-metadata from 7.2.0 to 8.0.0 in /docs/_build
|
||||
- #6951: @dependabot[bot] chore(deps): bump org.apache.maven.plugins:maven-dependency-plugin from 3.7.0 to 3.7.1 in /tests/apps/java
|
||||
- #6952: @dependabot[bot] chore(deps): bump importlib-metadata from 7.2.0 to 7.2.1 in /docs/_build
|
||||
- #6955: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.5.3 to 44.5.5
|
||||
- #6957: @dependabot[bot] chore(deps): bump djangorestframework from 3.14.0 to 3.15.2 in /tests/apps/dockerfile-release
|
||||
- #6958: @dependabot[bot] chore(deps): bump github.com/gofrs/flock from 0.8.1 to 0.9.0 in /plugins/ps
|
||||
|
||||
## 0.34.6
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.6/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.6 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6949: @josegonzalez Set permissions correctly on all files in the builder-release process
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6948: @anand2312 Fix grammar in docs/getting-started/advanced-installation
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6943: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.5.2 to 44.5.3
|
||||
- #6940: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.26 to 9.5.27 in /docs/_build
|
||||
- #6941: @dependabot[bot] chore(deps): bump timberio/vector from 0.38.0-debian to 0.39.0-debian in /plugins/logs
|
||||
- #6946: @dependabot[bot] chore(deps): bump importlib-metadata from 7.1.0 to 7.2.0 in /docs/_build
|
||||
|
||||
## 0.34.5
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.5/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.5 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6835: @erickedji Add missing local RE_IPV4 & RE_IPV6 vars in core-post-deploy
|
||||
|
||||
### New Features
|
||||
|
||||
- #6808: @Coffee2CodeNL Traefik optional custom http https entrypoints
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6937: @irth docs: add `network_mode: bridge` to the docker compose example
|
||||
- #6871: @chrisjsimpson Update dockerfile example in port management docs
|
||||
- #6857: @josegonzalez Update link to dokku development blog
|
||||
- #6821: @andrew-womeldorf Add tailscale plugin to community plugin list
|
||||
- #6823: @powdahound Remove errant tab character in cron:set help text
|
||||
- #6809: @alexislefebvre Update CI badge in readme
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6934: @dependabot[bot] chore(deps): bump org.apache.maven.plugins:maven-dependency-plugin from 3.6.1 to 3.7.0 in /tests/apps/java
|
||||
- #6935: @dependabot[bot] chore(deps): bump braces from 3.0.2 to 3.0.3 in /tests/apps/multi
|
||||
- #6938: @dependabot[bot] chore(deps): bump ruby from 3.3.2 to 3.3.3 in /tests/apps/dockerfile-entrypoint
|
||||
- #6922: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.23.0 to 0.24.0 in /plugins/common
|
||||
- #6929: @dependabot[bot] chore(deps): bump python from 3.12.3-alpine to 3.12.4-alpine in /docs/_build
|
||||
- #6925: @dependabot[bot] chore(deps): bump zipp from 3.18.2 to 3.19.2 in /docs/_build
|
||||
- #6914: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.5.1 to 44.5.2
|
||||
- #6916: @dependabot[bot] chore(deps): bump ruby from 3.3.1 to 3.3.2 in /tests/apps/dockerfile-entrypoint
|
||||
- #6921: @dependabot[bot] chore(deps): bump golang from 1.22.3 to 1.22.4 in /tests/apps/zombies-dockerfile-no-tini
|
||||
- #6920: @dependabot[bot] chore(deps): bump golang from 1.22.3 to 1.22.4 in /tests/apps/zombies-dockerfile-tini
|
||||
- #6923: @dependabot[bot] chore(deps): bump golang from 1.22.3 to 1.22.4 in /tests/apps/go-fail-postdeploy
|
||||
- #6915: @dependabot[bot] chore(deps): bump lucaslorentz/caddy-docker-proxy from 2.8 to 2.9 in /plugins/caddy-vhosts
|
||||
- #6924: @dependabot[bot] chore(deps): bump golang from 1.22.3 to 1.22.4 in /tests/apps/gogrpc
|
||||
- #6927: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.24 to 9.5.26 in /docs/_build
|
||||
- #6926: @dependabot[bot] chore(deps): bump golang from 1.22.3 to 1.22.4 in /tests/apps/go-fail-predeploy
|
||||
- #6930: @dependabot[bot] chore(deps): bump packaging from 24.0 to 24.1 in /docs/_build
|
||||
- #6931: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.34.1 to 1.34.2 in /tests/apps/gogrpc
|
||||
- #6903: @dependabot[bot] chore(deps): bump requests from 2.31.0 to 2.32.0 in /tests/apps/lambda-python
|
||||
- #6901: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.23 to 9.5.24 in /docs/_build
|
||||
- #6908: @dependabot[bot] chore(deps): bump watchdog from 4.0.0 to 4.0.1 in /docs/_build
|
||||
- #6909: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.4.0 to 44.5.1
|
||||
- #6873: @dependabot[bot] chore(deps): bump werkzeug from 3.0.2 to 3.0.3 in /tests/apps/python-flask
|
||||
- #6892: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.3.0 to 44.4.0
|
||||
- #6891: @dependabot[bot] chore(deps): bump github.com/fatih/color from 1.16.0 to 1.17.0 in /plugins/common
|
||||
- #6886: @dependabot[bot] chore(deps): bump golang from 1.22.2 to 1.22.3 in /tests/apps/gogrpc
|
||||
- #6894: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.63.2 to 1.64.0 in /tests/apps/gogrpc
|
||||
- #6888: @dependabot[bot] chore(deps): bump timberio/vector from 0.36.1-debian to 0.38.0-debian in /plugins/logs
|
||||
- #6885: @dependabot[bot] chore(deps): bump golang from 1.22.2 to 1.22.3 in /tests/apps/zombies-dockerfile-tini
|
||||
- #6887: @dependabot[bot] chore(deps): bump golang from 1.22.2 to 1.22.3 in /tests/apps/go-fail-postdeploy
|
||||
- #6883: @dependabot[bot] chore(deps): bump golang from 1.22.2 to 1.22.3 in /tests/apps/zombies-dockerfile-no-tini
|
||||
- #6879: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.34.0 to 1.34.1 in /tests/apps/gogrpc
|
||||
- #6874: @dependabot[bot] chore(deps): bump jinja2 from 3.1.3 to 3.1.4 in /tests/apps/python-flask
|
||||
- #6876: @dependabot[bot] chore(deps): bump pygments from 2.17.2 to 2.18.0 in /docs/_build
|
||||
- #6875: @dependabot[bot] chore(deps): bump dokku/openresty-docker-proxy from 0.7.0 to 0.8.0 in /plugins/openresty-vhosts
|
||||
- #6878: @dependabot[bot] chore(deps): bump jinja2 from 3.1.3 to 3.1.4 in /docs/_build
|
||||
- #6880: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.22.0 to 0.23.0 in /plugins/common
|
||||
- #6884: @dependabot[bot] chore(deps): bump golang from 1.22.2 to 1.22.3 in /tests/apps/go-fail-predeploy
|
||||
- #6897: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.20 to 11.0.21 in /tests/apps/java
|
||||
- #6896: @dependabot[bot] chore(deps): bump zipp from 3.18.1 to 3.18.2 in /docs/_build
|
||||
- #6895: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.20 to 9.5.23 in /docs/_build
|
||||
- #6858: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.8 to 10.8.1 in /docs/_build
|
||||
- #6859: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.19 to 9.5.20 in /docs/_build
|
||||
- #6860: @dependabot[bot] chore(deps): bump node from 21-alpine to 22-alpine in /tests/apps/dockerfile-procfile
|
||||
- #6861: @dependabot[bot] chore(deps): bump node from 21-alpine to 22-alpine in /tests/apps/dockerfile-procfile-bad
|
||||
- #6862: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.33.0 to 1.33.1 in /plugins/common
|
||||
- #6863: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.33.0 to 1.33.1 in /plugins/config
|
||||
- #6865: @dependabot[bot] chore(deps): bump node from 21-alpine to 22-alpine in /tests/apps/dockerfile
|
||||
- #6866: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.33.0 to 1.34.0 in /tests/apps/gogrpc
|
||||
- #6867: @dependabot[bot] chore(deps): bump node from 21-alpine to 22-alpine in /tests/apps/dockerfile-noexpose
|
||||
- #6868: @dependabot[bot] chore(deps): bump node from 21-alpine to 22-alpine in /tests/apps/dockerfile-app-json-formations
|
||||
- #6849: @dependabot[bot] chore(deps): bump mkdocs from 1.5.3 to 1.6.0 in /docs/_build
|
||||
- #6852: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.18 to 9.5.19 in /docs/_build
|
||||
- #6850: @dependabot[bot] chore(deps): bump ruby from 3.3.0 to 3.3.1 in /tests/apps/dockerfile-entrypoint
|
||||
- #6845: @josegonzalez chore: update dependencies
|
||||
- #6843: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.32.0 to 1.33.0 in /plugins/common
|
||||
- #6844: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.32.0 to 1.33.0 in /plugins/config
|
||||
- #6842: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.1.0 to 44.3.0
|
||||
- #6841: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.7.1 to 10.8 in /docs/_build
|
||||
- #6839: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.21.0 to 0.23.0 in /plugins/config
|
||||
- #6837: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.21.0 to 0.23.0 in /tests/apps/gogrpc
|
||||
- #6838: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.21.0 to 0.23.0 in /plugins/common
|
||||
- #6840: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.21.0 to 0.23.0 in /plugins/scheduler-k3s
|
||||
- #6836: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.0.1 to 44.1.0
|
||||
- #6831: @dependabot[bot] chore(deps): bump gunicorn from 21.2.0 to 22.0.0 in /tests/apps/python-flask
|
||||
- #6829: @dependabot[bot] chore(deps): bump gunicorn from 20.1.0 to 22.0.0 in /tests/apps/dockerfile-release
|
||||
- #6830: @dependabot[bot] chore(deps): bump gunicorn from 21.2.0 to 22.0.0 in /tests/apps/multi
|
||||
- #6828: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.17 to 9.5.18 in /docs/_build
|
||||
- #6825: @dependabot[bot] chore(deps): bump sqlparse from 0.4.4 to 0.5.0 in /tests/apps/dockerfile-release
|
||||
- #6819: @dependabot[bot] chore(deps): bump traefik from 2.11.1 to 2.11.2 in /plugins/traefik-vhosts
|
||||
- #6817: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 44.0.0 to 44.0.1
|
||||
- #6816: @dependabot[bot] chore(deps): bump python from 3.12.2-alpine to 3.12.3-alpine in /docs/_build
|
||||
- #6818: @dependabot[bot] chore(deps): bump traefik from 2.11.0 to 2.11.1 in /plugins/traefik-vhosts
|
||||
- #6810: @dependabot[bot] chore(deps): bump flask from 3.0.2 to 3.0.3 in /tests/apps/python-flask
|
||||
- #6811: @dependabot[bot] chore(deps): bump flask from 3.0.2 to 3.0.3 in /tests/apps/multi
|
||||
- #6812: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.63.0 to 1.63.2 in /tests/apps/gogrpc
|
||||
|
||||
### Other
|
||||
|
||||
- #6855: @kcdragon Update Health Check documentation to include `port`
|
||||
|
||||
## 0.34.4
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.4/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.4 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6801: @josegonzalez Guard against invalid proxy values due to move of port mapping to ports plugin
|
||||
- #6798: @josegonzalez Implement missing scheduler-app-status trigger in k3s scheduler plugin
|
||||
- #6791: @josegonzalez Correct issue where pre-deploy scripts do not have root access
|
||||
|
||||
### New Features
|
||||
|
||||
- #6800: @josegonzalez Update message for deployment tasks that execute in ephemeral containers
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6799: @josegonzalez Document that a registry is required for k3s usage
|
||||
|
||||
### Tests
|
||||
|
||||
- #6802: @josegonzalez Update test for new deployment task output
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6807: @josegonzalez chore: bump go modules
|
||||
- #6805: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.6.0 to 0.7.0 in /plugins/common
|
||||
- #6806: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.21.0 to 0.22.0 in /plugins/common
|
||||
- #6803: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.6.0 to 0.7.0 in /plugins/scheduler-docker-local
|
||||
- #6804: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.6.0 to 0.7.0 in /plugins/app-json
|
||||
- #6794: @dependabot[bot] chore(deps): bump golang from 1.22.1 to 1.22.2 in /tests/apps/zombies-dockerfile-tini
|
||||
- #6796: @dependabot[bot] chore(deps): bump golang from 1.22.1 to 1.22.2 in /tests/apps/gogrpc
|
||||
- #6793: @dependabot[bot] chore(deps): bump golang from 1.22.1 to 1.22.2 in /tests/apps/zombies-dockerfile-no-tini
|
||||
- #6797: @dependabot[bot] chore(deps): bump golang from 1.22.1 to 1.22.2 in /tests/apps/go-fail-postdeploy
|
||||
- #6795: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.62.1 to 1.63.0 in /tests/apps/gogrpc
|
||||
- #6792: @dependabot[bot] chore(deps): bump golang from 1.22.1 to 1.22.2 in /tests/apps/go-fail-predeploy
|
||||
|
||||
## 0.34.3
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.3/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.3 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### New Features
|
||||
|
||||
- #6785: @josegonzalez Update herokuish requirement to better support readonly containers
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6788: @bumblefudge Fix typos in nginx documentation
|
||||
- #6789: @crazehang Fix typos in documentation
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6786: @dependabot[bot] chore(deps): bump werkzeug from 3.0.1 to 3.0.2 in /tests/apps/python-flask
|
||||
- #6787: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.16 to 9.5.17 in /docs/_build
|
||||
- #6782: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.15 to 9.5.16 in /docs/_build
|
||||
|
||||
## 0.34.2
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.2/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.2 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6779: @josegonzalez Add --global flag to ps:set
|
||||
- #6778: @josegonzalez Popd out of tmp directory after a git push-based deployment
|
||||
- #6777: @josegonzalez Use correct function name in openresty:report output
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6781: @josegonzalez Update builder management docs to warn that globally setting a builder will force all apps to use that builder
|
||||
- #6780: @josegonzalez Clarify ssh-keys commands to run when adding ssh keys in docker-based installation
|
||||
|
||||
### Other
|
||||
|
||||
- #6776: @josegonzalez Use a long git sha in the git:report output
|
||||
|
||||
## 0.34.1
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.1/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.1 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6775: @josegonzalez Ensure files get created with the correct permissions when building with herokuish
|
||||
- #6739: @AndrewKvalheim Dereference annotated git tags when deploying via git:sync
|
||||
- #6743: @testwill Fix typo in app-json output
|
||||
|
||||
### New Features
|
||||
|
||||
- #6768: @josegonzalez Migrate away from transitional packages
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6763: @iloveitaly Add docker-compose example to installation docs
|
||||
- #6757: @josegonzalez Add documentation issue template
|
||||
- #6742: @josegonzalez Remove trailing whitespace from history doc
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6772: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 43.0.1 to 44.0.0
|
||||
- #6766: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.14 to 9.5.15 in /docs/_build
|
||||
- #6744: @dependabot[bot] chore(deps): bump github.com/docker/docker from 24.0.7+incompatible to 24.0.9+incompatible in /plugins/scheduler-k3s
|
||||
- #6754: @dependabot[bot] chore(deps): bump express from 4.18.3 to 4.19.1 in /tests/apps/dockerfile-app-json-formations
|
||||
- #6745: @dependabot[bot] chore(deps): bump express from 4.18.3 to 4.19.1 in /tests/apps/nodejs-express
|
||||
- #6746: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 43.0.0 to 43.0.1
|
||||
- #6747: @dependabot[bot] chore(deps): bump express from 4.18.3 to 4.19.1 in /tests/apps/.websocket.disabled
|
||||
- #6748: @dependabot[bot] chore(deps): bump express from 4.18.3 to 4.19.1 in /tests/apps/nodejs-express-noprocfile
|
||||
- #6749: @dependabot[bot] chore(deps): bump express from 4.18.3 to 4.19.1 in /tests/apps/nodejs-express-noappjson
|
||||
- #6750: @dependabot[bot] chore(deps): bump express from 4.18.3 to 4.19.1 in /tests/apps/dockerfile-procfile-bad
|
||||
- #6751: @dependabot[bot] chore(deps): bump importlib-metadata from 7.0.2 to 7.1.0 in /docs/_build
|
||||
- #6752: @dependabot[bot] chore(deps): bump express from 4.18.3 to 4.19.1 in /tests/apps/dockerfile-procfile
|
||||
- #6753: @dependabot[bot] chore(deps): bump express from 4.18.3 to 4.19.1 in /tests/apps/gitsubmodules
|
||||
- #6741: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.31.1 to 1.32.0 in /plugins/common
|
||||
- #6740: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.31.1 to 1.32.0 in /plugins/config
|
||||
|
||||
## 0.34.0
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.0/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.0 bash bootstrap.sh
|
||||
```
|
||||
|
||||
See the [0.34.0 migration guide](/docs/appendices/0.34.0-migration-guide.md) for more information on migrating to 0.34.0.
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6724: @josegonzalez Correctly check if a repository has code or not in git plugin
|
||||
- #6721: @josegonzalez Correct issue where cron properties cannot be retrieved if global
|
||||
- #6720: @josegonzalez Add nginx-property binary to gitignore
|
||||
- #6708: @josegonzalez Correctly handle quoted spaces over ssh
|
||||
- #6707: @josegonzalez Correct issue where removing by index failed due to incorrect input validation
|
||||
- #6705: @josegonzalez Ensure we cleanup the data directory on app deletion
|
||||
- #6703: @josegonzalez Use copytruncate in logrotate commands
|
||||
|
||||
### New Features
|
||||
|
||||
- #6725: @josegonzalez Warn when publish ports if scaling up or zero downtime is enabled
|
||||
- #6719: @josegonzalez Add a make target to copy the dokku binary over
|
||||
- #6717: @josegonzalez Add ability to only build synced repo if there are changes
|
||||
- #6715: @josegonzalez Add disk utilization to report output
|
||||
- #6704: @josegonzalez Switch the default k3s routing layer from traefik to nginx
|
||||
|
||||
### Removals
|
||||
|
||||
- #6700: @josegonzalez Remove priority property from traefik plugin
|
||||
|
||||
### Refactors
|
||||
|
||||
- #6714: @josegonzalez Use CallPlugnTrigger instead of PlugnTriggerSetup
|
||||
- #6713: @josegonzalez Use CallPlugnTrigger instead of PlugnTrigger
|
||||
- #6712: @josegonzalez Use CallPlugnTrigger instead of PlugnTriggerOutput
|
||||
- #6711: @josegonzalez Use CallPlugnTrigger instead of PlugnTriggerOutputAsString
|
||||
- #6681: @josegonzalez Migrate to single ingress per app/domain combination when using nginx for k3s proxying
|
||||
- #6156: @josegonzalez Migrate the app deploy lock to the data directory
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6738: @josegonzalez Update migration guide for 0.34.x
|
||||
- #6731: @strugee Clarify alternate proxy support status
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6736: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.13 to 9.5.14 in /docs/_build
|
||||
- #6729: @dependabot[bot] chore(deps): update markdown requirement from <3.6,>=3.2.1 to >=3.2.1,<3.7 in /docs/_build
|
||||
- #6728: @dependabot[bot] chore(deps): bump zipp from 3.17.0 to 3.18.1 in /docs/_build
|
||||
- #6727: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.1.0 to 43.0.0
|
||||
- #6723: @dependabot[bot] chore(deps): bump zipp from 3.17.0 to 3.18.0 in /docs/_build
|
||||
- #6722: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.1.0 to 43.0.0
|
||||
- #6710: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.32.0 to 1.33.0 in /plugins/scheduler-k3s
|
||||
- #6709: @dependabot[bot] chore(deps): bump zipp from 3.17.0 to 3.18.0 in /docs/_build
|
||||
|
||||
### Other
|
||||
|
||||
- #6718: @josegonzalez Write current process id to all acquired lock files
|
||||
- #6706: @josegonzalez Remove git:unlock command
|
||||
- #6650: @bastianh Do not expose all containers via traefik by default
|
||||
- #6632: @josegonzalez Simplify file ownership in the container by setting the process ownership during the build process
|
||||
- #6630: @josegonzalez Remove unused code for copying cache directories
|
||||
|
||||
## 0.33.9
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.33.9/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.33.9 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6695: @josegonzalez Do not attempt to install both k3s and traefik
|
||||
- #6687: @josegonzalez Correct issue where ClusterTriggerAuthentication objects were filtered based on prefix
|
||||
- #6686: @josegonzalez Validate input for the autoscaling-auth:set command
|
||||
- #6678: @josegonzalez Handle case where most builders didn't detect amd64 images on arm64
|
||||
- #6677: @josegonzalez Handle case where keda isn't installed properly
|
||||
- #6676: @josegonzalez Drop extra logging call from app-json plugin
|
||||
- #6674: @josegonzalez Remove systemd reverse dependency by dropping software-properties-common
|
||||
|
||||
### New Features
|
||||
|
||||
- #6698: @josegonzalez Upgrade ingress-nginx
|
||||
- #6588: @taraszka Add extra tags to every image dokku push when push-extra-tags are set
|
||||
- #6680: @josegonzalez Wait until helm charts are installed before marking a deploy as failed or completed
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6699: @josegonzalez Add a placeholder migration guide for 0.33.0
|
||||
- #6682: @josegonzalez Fix reference to formation key in autoscaling example
|
||||
|
||||
### Tests
|
||||
|
||||
- #6696: @josegonzalez Run k3s tests with a specified server ip
|
||||
- #6679: @josegonzalez Split out k3s tests to speed up ci
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6697: @dependabot[bot] chore(deps): bump timberio/vector from 0.36.0-debian to 0.36.1-debian in /plugins/logs
|
||||
- #6685: @dependabot[bot] chore(deps): bump github.com/go-jose/go-jose/v3 from 3.0.1 to 3.0.3 in /plugins/scheduler-k3s
|
||||
- #6692: @dependabot[bot] chore(deps): bump packaging from 23.2 to 24.0 in /docs/_build
|
||||
- #6693: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.0.7 to 42.1.0
|
||||
- #6689: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.0.6 to 42.0.7
|
||||
- #6683: @dependabot[bot] chore(deps): bump importlib-metadata from 7.0.1 to 7.0.2 in /docs/_build
|
||||
- #6684: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.0.5 to 42.0.6
|
||||
|
||||
## 0.33.8
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.33.8/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.33.8 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6675: @josegonzalez Remove the need for executing crontab as root
|
||||
- #6660: @josegonzalez Handle case where systemctl isn't in /usr/bin
|
||||
- #6659: @josegonzalez Add missing cron:set command
|
||||
- #6658: @josegonzalez Execute go get/build with mod in readonly mode
|
||||
- #6642: @josegonzalez Use correct annotations key for the ingress chart
|
||||
- #6631: @josegonzalez Correctly use cache volume for herokuish builds
|
||||
- #6629: @josegonzalez Use smaller reference to image pull secrets in secret naming
|
||||
- #6628: @josegonzalez Ensure non-web processes do not attempt to perform web logic in k3s templates
|
||||
- #6623: @josegonzalez Do not allow reusing the same scheme:host-port mappings when setting ports
|
||||
- #6624: @taraszka Install jq in vagrant vm
|
||||
- #6614: @josegonzalez Correct issue where --force-tty was not properly supported by run:detached calls
|
||||
|
||||
### New Features
|
||||
|
||||
- #6673: @josegonzalez Add image version as label to built images
|
||||
- #6640: @josegonzalez Add initial support for injecting keda addons
|
||||
- #6662: @josegonzalez Allow limiting letsencrypt to certain domains when using openresty as a proxy
|
||||
- #6643: @josegonzalez Add ability to add extra labels
|
||||
- #6639: @josegonzalez Add support for setting underscores-in-headers for nginx, openresty, and k3s
|
||||
- #6634: @josegonzalez feat: install keda addon in k3s cluster
|
||||
- #6616: @josegonzalez Ensure referenced images get updated by dependabot
|
||||
- #6613: @josegonzalez Add a helper binary to deploy a test app for local development
|
||||
|
||||
### Refactors
|
||||
|
||||
- #6644: @josegonzalez Only apply the cluster issuers helm chart when setting letsencrypt properties
|
||||
- #6641: @josegonzalez Rename image pull secrets to standardize on secret naming pattern
|
||||
- #6626: @josegonzalez Copy code into initial base image via docker build
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6656: @holamendi Fix typo in builder management docs
|
||||
- #6652: @Calyhre Added dokku-mdns to list of community plugins
|
||||
- #6649: @undercontr Added detach flag to Docker installation documentation
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6671: @josegonzalez Update dokku dependencies
|
||||
- #6672: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/go-fail-predeploy
|
||||
- #6670: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.62.0 to 1.62.1 in /tests/apps/gogrpc
|
||||
- #6669: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.32.0 to 1.33.0 in /tests/apps/gogrpc
|
||||
- #6668: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/zombies-dockerfile-tini
|
||||
- #6667: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/gogrpc
|
||||
- #6664: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/go-fail-postdeploy
|
||||
- #6666: @dependabot[bot] chore(deps): bump pyparsing from 3.1.1 to 3.1.2 in /docs/_build
|
||||
- #6665: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.12 to 9.5.13 in /docs/_build
|
||||
- #6663: @dependabot[bot] chore(deps): bump golang from 1.22.0 to 1.22.1 in /tests/apps/zombies-dockerfile-no-tini
|
||||
- #6661: @josegonzalez Bump go modules
|
||||
- #6654: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.7 to 10.7.1 in /docs/_build
|
||||
- #6653: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.20.0 to 0.21.0 in /plugins/common
|
||||
- #6651: @dependabot[bot] chore(deps): bump python-dateutil from 2.9.0 to 2.9.0.post0 in /docs/_build
|
||||
- #6648: @dependabot[bot] chore(deps): bump python-dateutil from 2.8.2 to 2.9.0 in /docs/_build
|
||||
- #6645: @dependabot[bot] chore(deps): bump rack from 2.2.8 to 2.2.8.1 in /tests/apps/ruby
|
||||
- #6646: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.11 to 9.5.12 in /docs/_build
|
||||
- #6638: @josegonzalez chore: bump go modules
|
||||
- #6635: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.0.4 to 42.0.5
|
||||
- #6636: @dependabot[bot] chore(deps): bump timberio/vector from 0.36.X-debian to 0.36.0-debian in /plugins/logs
|
||||
- #6637: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.19.0 to 0.20.0 in /plugins/common
|
||||
- #6619: @dependabot[bot] chore(deps): bump traefik from v2.10 to 2.11 in /plugins/traefik-vhosts
|
||||
- #6622: @josegonzalez chore(deps): bump timberio/vector from 0.35.X-debian to 0.36.X-debian in /plugins/logs
|
||||
- #6618: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.10 to 9.5.11 in /docs/_build
|
||||
- #6621: @dependabot[bot] chore(deps): bump byjg/easy-haproxy from 4.3.0 to 4.4.0 in /plugins/haproxy-vhosts
|
||||
- #6610: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.14.1 to 3.14.2 in /plugins/scheduler-k3s
|
||||
|
||||
## 0.33.7
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.33.7/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.33.7 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6608: @josegonzalez Fix issue with setting k3s resource values and lower the initial default values
|
||||
- #6607: @josegonzalez Call sed in unbuffered form to ensure log output is streamed to stdout
|
||||
- #6600: @josegonzalez Use correct label key for worker nodes
|
||||
- #6593: @josegonzalez Remove extra trailing newline to fix govet issue
|
||||
|
||||
### New Features
|
||||
|
||||
- #6595: @josegonzalez Add ability for users to specify alternative kubeconfig and kubecontext
|
||||
|
||||
### Refactors
|
||||
|
||||
- #6594: @josegonzalez Remove all calls to common.NewShellCmd
|
||||
- #6592: @josegonzalez Remove all calls to common.NewShellCmdWithArgs
|
||||
- #6591: @josegonzalez Always capture stdout/stderr when executing subprocesses
|
||||
- #6590: @josegonzalez Remove all direct usage of go-sh outside of plugin trigger setup
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6609: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.61.1 to 1.62.0 in /tests/apps/gogrpc
|
||||
- #6604: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.9 to 9.5.10 in /docs/_build
|
||||
- #6603: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.0.2 to 42.0.4
|
||||
- #6601: @dependabot[bot] chore(deps): bump helm.sh/helm/v3 from 3.13.3 to 3.14.1 in /plugins/scheduler-k3s
|
||||
- #6596: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.61.0 to 1.61.1 in /tests/apps/gogrpc
|
||||
|
||||
## 0.33.6
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.33.6/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.33.6 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6589: @josegonzalez Use image pull secrets instead of registries.yaml to reference private repositories when deploying via k3s
|
||||
- #6581: @josegonzalez Fix issues in tls handling when deploying via k3s
|
||||
- #6582: @josegonzalez Correctly handle extra whitespace in scale file contents
|
||||
- #6390: @renweibo Prefer systemctl over sv when both exist while restarting nginx
|
||||
- #6579: @josegonzalez Ensure k3s can be installed with taints
|
||||
|
||||
### New Features
|
||||
|
||||
- #6585: @josegonzalez Add more context to errors in fetching cron entries
|
||||
- #6583: @josegonzalez Add WithContext functions for all subprocess-related code
|
||||
|
||||
### Refactors
|
||||
|
||||
- #6584: @josegonzalez Use new CallExecCommand when checking to see how help is being called
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6586: @dependabot[bot] chore(deps): bump mvdan.cc/sh/v3 from 3.7.0 to 3.8.0 in /plugins/cron
|
||||
- #6587: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.8 to 9.5.9 in /docs/_build
|
||||
- #6381: @dependabot[bot] chore(deps): bump actions/upload-artifact from 3 to 4
|
||||
- #6578: @josegonzalez Bump go modules
|
||||
|
||||
### Other
|
||||
|
||||
- #6576: @Tashows Allow creating a detached container with TTY enabled for attaching remote terminal
|
||||
|
||||
## 0.33.5
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.33.5/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.33.5 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6574: @josegonzalez Correct indentation when configuring https on a k3s app
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6575: @josegonzalez Remove reference to web ui from digitalocean install documentation
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6573: @dependabot[bot] chore(deps): bump golang from 1.21.6 to 1.22.0 in /tests/apps/go-fail-postdeploy
|
||||
- #6569: @dependabot[bot] chore(deps): bump golang from 1.21.6 to 1.22.0 in /tests/apps/go-fail-predeploy
|
||||
- #6570: @dependabot[bot] chore(deps): bump golang.org/x/crypto from 0.18.0 to 0.19.0 in /plugins/common
|
||||
- #6571: @dependabot[bot] chore(deps): bump golang from 1.21.6 to 1.22.0 in /tests/apps/zombies-dockerfile-tini
|
||||
- #6572: @dependabot[bot] chore(deps): bump python from 3.12.1-alpine to 3.12.2-alpine in /docs/_build
|
||||
|
||||
## 0.33.4
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.33.4/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.33.4 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6564: @josegonzalez Ignore link and volume flags for nixpacks builds
|
||||
- #6563: @josegonzalez Wait until initial k3s node is ready before installing manifests
|
||||
- #6561: @josegonzalez Index the process map to ensure the correct config is pulled
|
||||
- #6560: @josegonzalez Skip app stop/delete when k3s is not installed
|
||||
- #6559: @josegonzalez Check errors when writing properties
|
||||
- #6556: @josegonzalez Respect the release namespace when creating resources for a k3s deploy
|
||||
|
||||
### New Features
|
||||
|
||||
- #6562: @josegonzalez Add support for specifying annotations on kubernetes resources
|
||||
- #6555: @josegonzalez Add support for app-specific service accounts when deploying via k3s
|
||||
- #6546: @josegonzalez Install kubectx and kubens helper binaries when setting up a k3s cluster
|
||||
|
||||
### Refactors
|
||||
|
||||
- #6558: @josegonzalez Use type-specific functions for writing contents to a file
|
||||
- #6557: @josegonzalez Consolidate property fetching for nginx plugin into golang codebase
|
||||
- #6536: @josegonzalez Manage vector container via compose
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6545: @josegonzalez Migrate markdown doc rewriting into mkdocs hooks
|
||||
|
||||
### Tests
|
||||
|
||||
- #6554: @josegonzalez Fix issue where CI cannot install docker-buildx-plugin
|
||||
|
||||
### Dependencies
|
||||
|
||||
- #6568: @dependabot[bot] chore(deps): bump golang from 1.21.6 to 1.22.0 in /tests/apps/gogrpc
|
||||
- #6567: @dependabot[bot] chore(deps): bump watchdog from 3.0.0 to 4.0.0 in /docs/_build
|
||||
- #6566: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.7 to 9.5.8 in /docs/_build
|
||||
- #6565: @dependabot[bot] chore(deps): bump golang from 1.21.6 to 1.22.0 in /tests/apps/zombies-dockerfile-no-tini
|
||||
- #6551: @dependabot[bot] chore(deps): bump flask from 3.0.1 to 3.0.2 in /tests/apps/multi
|
||||
- #6552: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.6 to 9.5.7 in /docs/_build
|
||||
- #6553: @dependabot[bot] chore(deps): bump markupsafe from 2.1.4 to 2.1.5 in /docs/_build
|
||||
- #6550: @dependabot[bot] chore(deps): bump flask from 3.0.1 to 3.0.2 in /tests/apps/python-flask
|
||||
- #6548: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.19 to 11.0.20 in /tests/apps/java
|
||||
|
||||
### Other
|
||||
|
||||
- #6547: @josegonzalez Add support for nginx as a k3s ingress implementation
|
||||
|
||||
## 0.33.3
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.33.3/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.33.3 bash bootstrap.sh
|
||||
```
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- #6542: @josegonzalez Drop -- when calling dokku run for cron-tab templating
|
||||
|
||||
### Documentation
|
||||
|
||||
- #6543: @josegonzalez Add support for badge shortcodes in documentation
|
||||
|
||||
## 0.33.2
|
||||
|
||||
Install/update via the bootstrap script:
|
||||
|
||||
54
Makefile
54
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:
|
||||
@@ -75,9 +75,12 @@ go-clean:
|
||||
fi ;\
|
||||
done
|
||||
|
||||
copyfiles:
|
||||
$(MAKE) go-build || exit 1
|
||||
copydokku:
|
||||
cp dokku /usr/local/bin/dokku
|
||||
chmod 0755 /usr/local/bin/dokku
|
||||
|
||||
copyfiles: copydokku
|
||||
$(MAKE) go-build || exit 1
|
||||
mkdir -p ${CORE_PLUGINS_PATH} ${PLUGINS_PATH}
|
||||
rm -rf ${CORE_PLUGINS_PATH}/*
|
||||
test -d ${CORE_PLUGINS_PATH}/enabled || PLUGIN_PATH=${CORE_PLUGINS_PATH} plugn init
|
||||
@@ -128,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:
|
||||
@@ -150,43 +153,36 @@ man-db:
|
||||
apt-get -qq -y --no-install-recommends install man-db
|
||||
|
||||
docker-image-labeler:
|
||||
wget -qO /tmp/docker-image-labeler_latest.tgz ${DOCKER_IMAGE_LABELER_URL}
|
||||
tar xzf /tmp/docker-image-labeler_latest.tgz -C /usr/local/bin
|
||||
mv /usr/local/bin/docker-image-labeler-${TARGETARCH} /usr/local/bin/docker-image-labeler
|
||||
wget -qO /usr/local/bin/docker-image-labeler ${DOCKER_IMAGE_LABELER_URL}
|
||||
chmod +x /usr/local/bin/docker-image-labeler
|
||||
|
||||
docker-container-healthchecker:
|
||||
wget -qO /tmp/docker-container-healthchecker_latest.tgz ${DOCKER_CONTAINER_HEALTHCHECKER_URL}
|
||||
tar xzf /tmp/docker-container-healthchecker_latest.tgz -C /usr/local/bin
|
||||
mv /usr/local/bin/docker-container-healthchecker-${TARGETARCH} /usr/local/bin/docker-container-healthchecker
|
||||
wget -qO /usr/local/bin/docker-container-healthchecker ${DOCKER_CONTAINER_HEALTHCHECKER_URL}
|
||||
chmod +x /usr/local/bin/docker-container-healthchecker
|
||||
|
||||
lambda-builder:
|
||||
wget -qO /tmp/lambda-builder_latest.tgz ${LAMBDA_BUILDER_URL}
|
||||
tar xzf /tmp/lambda-builder_latest.tgz -C /usr/local/bin
|
||||
mv /usr/local/bin/lambda-builder-${TARGETARCH} /usr/local/bin/lambda-builder
|
||||
wget -qO /usr/local/bin/lambda-builder ${LAMBDA_BUILDER_URL}
|
||||
chmod +x /usr/local/bin/lambda-builder
|
||||
|
||||
netrc:
|
||||
wget -qO /tmp/netrc_latest.tgz ${NETRC_URL}
|
||||
tar xzf /tmp/netrc_latest.tgz -C /usr/local/bin
|
||||
mv /usr/local/bin/netrc-${TARGETARCH} /usr/local/bin/netrc
|
||||
wget -qO /usr/local/bin/netrc ${NETRC_URL}
|
||||
chmod +x /usr/local/bin/netrc
|
||||
|
||||
procfile-util:
|
||||
wget -qO /tmp/procfile-util_latest.tgz ${PROCFILE_UTIL_URL}
|
||||
tar xzf /tmp/procfile-util_latest.tgz -C /usr/local/bin
|
||||
mv /usr/local/bin/procfile-util-${TARGETARCH} /usr/local/bin/procfile-util
|
||||
wget -qO /usr/local/bin/procfile-util ${PROCFILE_UTIL_URL}
|
||||
chmod +x /usr/local/bin/procfile-util
|
||||
|
||||
plugn:
|
||||
wget -qO /tmp/plugn_latest.tgz ${PLUGN_URL}
|
||||
tar xzf /tmp/plugn_latest.tgz -C /usr/local/bin
|
||||
mv /usr/local/bin/plugn-${TARGETARCH} /usr/local/bin/plugn
|
||||
wget -qO /usr/local/bin/plugn ${PLUGN_URL}
|
||||
chmod +x /usr/local/bin/plugn
|
||||
|
||||
sigil:
|
||||
wget -qO /tmp/sigil_latest.tgz ${SIGIL_URL}
|
||||
tar xzf /tmp/sigil_latest.tgz -C /usr/local/bin
|
||||
mv /usr/local/bin/gliderlabs-sigil-${TARGETARCH} /usr/local/bin/sigil
|
||||
wget -qO /usr/local/bin/sigil ${SIGIL_URL}
|
||||
chmod +x /usr/local/bin/sigil
|
||||
|
||||
sshcommand:
|
||||
wget -qO /tmp/sshcommand_latest.tgz ${SSHCOMMAND_URL}
|
||||
tar xzf /tmp/sshcommand_latest.tgz -C /usr/local/bin
|
||||
wget -qO /usr/local/bin/sshcommand ${SSHCOMMAND_URL}
|
||||
chmod +x /usr/local/bin/sshcommand
|
||||
sshcommand create dokku /usr/local/bin/dokku
|
||||
|
||||
docker:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Dokku
|
||||
|
||||
[](https://github.com/dokku/dokku/actions?query=workflow%3ACI)
|
||||
[](https://github.com/dokku/dokku/actions?query=branch%3Amaster)
|
||||
[](https://packagecloud.io/dokku/dokku)
|
||||
[](https://aur.archlinux.org/packages/dokku/)
|
||||
[](https://slack.dokku.com/)
|
||||
@@ -74,7 +74,7 @@ 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
|
||||
- Ubuntu 20.04 / 22.04 / 24.04 x64 - Any currently supported release
|
||||
- Debian 10+ x64
|
||||
- Arch Linux x64 *(experimental)*
|
||||
|
||||
@@ -86,8 +86,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.33.2/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.33.2 bash bootstrap.sh
|
||||
wget -NP . https://dokku.com/install/v0.35.4/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.35.4 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.
|
||||
|
||||
8
Vagrantfile
vendored
8
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
|
||||
@@ -53,7 +53,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 >/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 >/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,7 +72,7 @@ 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
|
||||
|
||||
|
||||
18
bootstrap.sh
18
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 20.04/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 [10, 11, 12], Ubuntu [20.04, 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" "20.04" "22.04" "24.04" "10" "11" "12"; then
|
||||
log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
|
||||
fi
|
||||
|
||||
@@ -168,10 +168,6 @@ install-dokku-from-deb-package() {
|
||||
NO_INSTALL_RECOMMENDS=" --no-install-recommends "
|
||||
fi
|
||||
|
||||
echo "--> Initial apt-get update"
|
||||
apt-get update -qq >/dev/null
|
||||
apt-get -qq -y --no-install-recommends install apt-transport-https
|
||||
|
||||
if ! command -v docker &>/dev/null; then
|
||||
echo "--> Installing docker"
|
||||
if uname -r | grep -q linode; then
|
||||
@@ -185,16 +181,16 @@ 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=("focal" "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")
|
||||
|
||||
@@ -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.23.0
|
||||
GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache
|
||||
GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod
|
||||
GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT)
|
||||
@@ -28,10 +28,10 @@ clean:
|
||||
find . -xtype l -delete
|
||||
|
||||
commands: **/**/commands.go
|
||||
GOARCH=$(GOARCH) go build -ldflags="-s -w" $(GO_ARGS) -o commands src/commands/commands.go
|
||||
GOARCH=$(GOARCH) go build -mod=readonly -ldflags="-s -w" $(GO_ARGS) -o commands src/commands/commands.go
|
||||
|
||||
subcommands:
|
||||
GOARCH=$(GOARCH) go build -ldflags="-s -w" $(GO_ARGS) -o subcommands/subcommands src/subcommands/subcommands.go
|
||||
GOARCH=$(GOARCH) go build -mod=readonly -ldflags="-s -w" $(GO_ARGS) -o subcommands/subcommands src/subcommands/subcommands.go
|
||||
$(MAKE) $(SUBCOMMANDS)
|
||||
|
||||
subcommands/%:
|
||||
@@ -41,7 +41,7 @@ src-clean:
|
||||
rm -rf .gitignore src vendor Makefile *.go glide.* go.sum go.mod
|
||||
|
||||
triggers:
|
||||
GOARCH=$(GOARCH) go build -ldflags="-s -w" $(GO_ARGS) -o triggers src/triggers/triggers.go
|
||||
GOARCH=$(GOARCH) go build -mod=readonly -ldflags="-s -w" $(GO_ARGS) -o triggers src/triggers/triggers.go
|
||||
$(MAKE) $(TRIGGERS)
|
||||
|
||||
triggers/%:
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -1,107 +1,96 @@
|
||||
{
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "docker-image-labeler",
|
||||
"version": "0.6.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.6.1/docker-image-labeler_0.6.1_linux_amd64.tgz",
|
||||
"arm64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.6.1/docker-image-labeler_0.6.1_linux_arm64.tgz",
|
||||
"arm": "https://github.com/dokku/docker-image-labeler/releases/download/v0.6.1/docker-image-labeler_0.6.1_linux_armhf.tgz"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "docker-container-healthchecker",
|
||||
"version": "0.7.2",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.2/docker-container-healthchecker_0.7.2_linux_amd64.tgz",
|
||||
"arm64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.2/docker-container-healthchecker_0.7.2_linux_arm64.tgz",
|
||||
"arm": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.2/docker-container-healthchecker_0.7.2_linux_armhf.tgz"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lambda-builder",
|
||||
"version": "0.5.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/lambda-builder/releases/download/v0.5.0/lambda-builder_0.5.0_linux_amd64.tgz",
|
||||
"arm64": "https://github.com/dokku/lambda-builder/releases/download/v0.5.0/lambda-builder_0.5.0_linux_arm64.tgz",
|
||||
"arm": "https://github.com/dokku/lambda-builder/releases/download/v0.5.0/lambda-builder_0.5.0_linux_armhf.tgz"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netrc",
|
||||
"version": "0.7.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/netrc/releases/download/v0.7.1/netrc_0.7.1_linux_amd64.tgz",
|
||||
"arm64": "https://github.com/dokku/netrc/releases/download/v0.7.1/netrc_0.7.1_linux_arm64.tgz",
|
||||
"arm": "https://github.com/dokku/netrc/releases/download/v0.7.1/netrc_0.7.1_linux_armhf.tgz"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "procfile-util",
|
||||
"version": "0.16.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/procfile-util/releases/download/v0.16.0/procfile-util_0.16.0_linux_amd64.tgz",
|
||||
"arm64": "https://github.com/dokku/procfile-util/releases/download/v0.16.0/procfile-util_0.16.0_linux_arm64.tgz",
|
||||
"arm": "https://github.com/dokku/procfile-util/releases/download/v0.16.0/procfile-util_0.16.0_linux_armhf.tgz"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "sshcommand",
|
||||
"version": "0.17.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/sshcommand/releases/download/v0.17.1/sshcommand_0.17.1_linux_x86_64.tgz",
|
||||
"arm64": "https://github.com/dokku/sshcommand/releases/download/v0.17.1/sshcommand_0.17.1_linux_x86_64.tgz",
|
||||
"arm": "https://github.com/dokku/sshcommand/releases/download/v0.17.1/sshcommand_0.17.1_linux_x86_64.tgz"
|
||||
}
|
||||
}
|
||||
],
|
||||
"predependencies": [
|
||||
{
|
||||
"name": "gliderlabs-sigil",
|
||||
"version": "0.10.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/gliderlabs/sigil/releases/download/v0.10.1/gliderlabs-sigil_0.10.1_linux_amd64.tgz",
|
||||
"arm64": "https://github.com/gliderlabs/sigil/releases/download/v0.10.1/gliderlabs-sigil_0.10.1_linux_arm64.tgz",
|
||||
"arm": "https://github.com/gliderlabs/sigil/releases/download/v0.10.1/gliderlabs-sigil_0.10.1_linux_armhf.tgz"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "plugn",
|
||||
"version": "0.12.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/plugn/releases/download/v0.12.0/plugn_0.12.0_linux_amd64.tgz",
|
||||
"arm64": "https://github.com/dokku/plugn/releases/download/v0.12.0/plugn_0.12.0_linux_arm64.tgz",
|
||||
"arm": "https://github.com/dokku/plugn/releases/download/v0.12.0/plugn_0.12.0_linux_armhf.tgz"
|
||||
}
|
||||
}
|
||||
],
|
||||
"recommendations": [
|
||||
{
|
||||
"name": "dokku-event-listener",
|
||||
"version": "0.15.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.15.0/dokku-event-listener_0.15.0_linux_amd64.tgz",
|
||||
"arm64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.15.0/dokku-event-listener_0.15.0_linux_arm64.tgz",
|
||||
"arm": "https://github.com/dokku/dokku-event-listener/releases/download/v0.15.0/dokku-event-listener_0.15.0_linux_armhf.tgz"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dokku-update",
|
||||
"version": "0.7.2",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/dokku-update/releases/download/v0.7.2/dokku-update_0.7.2_linux_x86_64.tgz",
|
||||
"arm64": "https://github.com/dokku/dokku-update/releases/download/v0.7.2/dokku-update_0.7.2_linux_x86_64.tgz",
|
||||
"arm": "https://github.com/dokku/dokku-update/releases/download/v0.7.2/dokku-update_0.7.2_linux_x86_64.tgz"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "herokuish",
|
||||
"version": "0.7.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/gliderlabs/herokuish/releases/download/v0.7.1/herokuish_0.7.1_linux_x86_64.tgz",
|
||||
"arm64": "https://github.com/gliderlabs/herokuish/releases/download/v0.7.1/herokuish_0.7.1_linux_x86_64.tgz",
|
||||
"arm": "https://github.com/gliderlabs/herokuish/releases/download/v0.7.1/herokuish_0.7.1_linux_x86_64.tgz"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "docker-container-healthchecker",
|
||||
"version": "0.11.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"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "docker-image-labeler",
|
||||
"version": "0.8.0",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lambda-builder",
|
||||
"version": "0.8.0",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netrc",
|
||||
"version": "0.10.0",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "procfile-util",
|
||||
"version": "0.19.0",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "sshcommand",
|
||||
"version": "0.18.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"
|
||||
}
|
||||
}
|
||||
],
|
||||
"predependencies": [
|
||||
{
|
||||
"name": "gliderlabs-sigil",
|
||||
"version": "0.11.0",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "plugn",
|
||||
"version": "0.15.3",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
],
|
||||
"recommendations": [
|
||||
{
|
||||
"name": "dokku-event-listener",
|
||||
"version": "0.17.0",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dokku-update",
|
||||
"version": "0.9.4",
|
||||
"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"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "herokuish",
|
||||
"version": "0.10.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/gliderlabs/herokuish/releases/download/v0.10.1/herokuish_0.10.1_linux_x86_64.tgz",
|
||||
"arm64": "https://github.com/gliderlabs/herokuish/releases/download/v0.10.1/herokuish_0.10.1_linux_x86_64.tgz"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -188,9 +188,14 @@ main() {
|
||||
[[ " storage:ensure-directory " == *" $CMD "* ]] && unset APP
|
||||
[[ "$CMD" =~ events*|plugin*|ssh-keys* ]] && unset APP
|
||||
[[ -n "$APP_ARG" ]] && [[ "$APP_ARG" == "--global" ]] && unset APP
|
||||
[[ -n "$@" ]] && [[ -n "$APP" ]] && app_arg="--app $APP"
|
||||
if [[ -n "$@" ]] && [[ -n "$APP" ]]; then
|
||||
set -- "$APP" "$@"
|
||||
set -- "--app" "$@"
|
||||
fi
|
||||
# echo "ssh -o LogLevel=QUIET -p $DOKKU_PORT -t dokku@$DOKKU_REMOTE_HOST -- $app_arg $@"
|
||||
ssh -o LogLevel=QUIET -p $DOKKU_PORT -t dokku@$DOKKU_REMOTE_HOST -- $app_arg $@ || {
|
||||
local ssh_args=("-o" "LogLevel=QUIET" "-p" "$DOKKU_PORT" "-t" "dokku@$DOKKU_REMOTE_HOST" "--")
|
||||
ssh_args+=("$@")
|
||||
ssh "${ssh_args[@]}" || {
|
||||
ssh_exit_code="$?"
|
||||
echo " ! Failed to execute dokku command over ssh: exit code $?" 1>&2
|
||||
echo " ! If there was no output from Dokku, ensure your configured SSH Key can connect to the remote server" 1>&2
|
||||
|
||||
@@ -4,12 +4,10 @@ set -o errexit
|
||||
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
pkgs=(apt-transport-https
|
||||
ca-certificates
|
||||
pkgs=(ca-certificates
|
||||
curl
|
||||
jq
|
||||
linux-image-extra-virtual
|
||||
software-properties-common
|
||||
)
|
||||
|
||||
echo '--> Updating apt repositories'
|
||||
@@ -30,7 +28,7 @@ EOM
|
||||
|
||||
echo '--> Installing docker-ce'
|
||||
apt-get -y update
|
||||
apt-get -y install docker-ce docker-compose-plugin
|
||||
apt-get -y install docker-ce docker-buildx-plugin docker-compose-plugin
|
||||
|
||||
echo '--> Enabling docker-ce'
|
||||
systemctl enable docker
|
||||
|
||||
@@ -15,7 +15,6 @@ pkgs=(apache2-utils
|
||||
netcat
|
||||
net-tools
|
||||
|
||||
software-properties-common
|
||||
parallel
|
||||
python3-software-properties
|
||||
rsync
|
||||
@@ -25,7 +24,7 @@ pkgs=(apache2-utils
|
||||
unzip
|
||||
|
||||
nginx
|
||||
dnsutils
|
||||
bind9-dnsutils
|
||||
cgroupfs-mount
|
||||
cgroup-lite
|
||||
sudo
|
||||
@@ -50,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'
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -144,7 +144,7 @@ fn-publish-package() {
|
||||
fi
|
||||
done
|
||||
elif [[ "$DIST" == "ubuntu" ]]; then
|
||||
OS_IDS=("focal" "jammy")
|
||||
OS_IDS=("focal" "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"
|
||||
@@ -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
|
||||
@@ -390,12 +390,14 @@ fn-build-docker-image() {
|
||||
--platform linux/arm64,linux/amd64 \
|
||||
--progress plain \
|
||||
--push \
|
||||
--label "org.opencontainers.image.version=$VERSION" \
|
||||
--tag "dokku/dokku:latest" \
|
||||
--tag "dokku/dokku:$VERSION" .
|
||||
elif [[ "$SKIP_IMAGE_BUILD" != "true" ]]; then
|
||||
docker buildx build \
|
||||
--platform linux/arm64,linux/amd64 \
|
||||
--progress plain \
|
||||
--label "org.opencontainers.image.version=$VERSION" \
|
||||
--tag "dokku/dokku:latest" \
|
||||
--tag "dokku/dokku:$(echo "$VERSION" | tr + -)" .
|
||||
fi
|
||||
|
||||
@@ -3,10 +3,8 @@ import os
|
||||
import pathlib
|
||||
import shutil
|
||||
import sys
|
||||
from collections.abc import Callable
|
||||
|
||||
import yaml
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
|
||||
|
||||
@@ -129,308 +127,6 @@ def generate_nav(src: str, dest: str) -> None:
|
||||
yaml.dump(data, handler)
|
||||
|
||||
|
||||
def modify_content_noop(lines: list[str], _) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Simply returns the lines as is
|
||||
"""
|
||||
modified = False
|
||||
updated_lines = []
|
||||
for line in lines:
|
||||
updated_lines.append(line)
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def modify_content_links(lines: list[str], filename: str) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Modifies links to be relative instead of absolute
|
||||
"""
|
||||
filename = filename.replace("/usr/src/source/docs/", "")
|
||||
parts = filename.split("/")
|
||||
parts.pop()
|
||||
replacement = "](" + "/".join([".." for _ in parts]) + "/"
|
||||
modified = False
|
||||
updated_lines = []
|
||||
for line in lines:
|
||||
if "](/docs/" in line:
|
||||
line = line.replace("](/docs/", replacement)
|
||||
modified = True
|
||||
|
||||
updated_lines.append(line)
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def modify_content_stripspace(lines: list[str], _) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Removes trailing whitespace from each line
|
||||
"""
|
||||
modified = False
|
||||
updated_lines = []
|
||||
for line in lines:
|
||||
line = line.rstrip()
|
||||
updated_lines.append(line)
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def modify_content_inject_newlines(lines: list[str], _) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Ensures every line has a trailing newline character
|
||||
"""
|
||||
modified = False
|
||||
updated_lines = []
|
||||
for line in lines:
|
||||
updated_lines.append(line.rstrip() + "\n")
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def is_github_new(line: str, next_line: str | None) -> bool:
|
||||
"""
|
||||
Checks if a given line is a github "new as of" admonition
|
||||
"""
|
||||
if not next_line:
|
||||
return False
|
||||
|
||||
return line.startswith("> [!IMPORTANT]") and "new as of" in next_line.lower()
|
||||
|
||||
|
||||
def is_github_note(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a github "note" admonition
|
||||
"""
|
||||
return line.startswith("> [!NOTE]")
|
||||
|
||||
|
||||
def is_github_warning(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a github "warning" admonition
|
||||
"""
|
||||
return line.startswith("> [!WARNING]")
|
||||
|
||||
|
||||
def is_info(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is an "info" admonition
|
||||
"""
|
||||
return line.startswith("> ")
|
||||
|
||||
|
||||
def is_new(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a "new as of" admonition
|
||||
"""
|
||||
return line.startswith("> ") and "new as of" in line.lower()
|
||||
|
||||
|
||||
def is_note(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a "note" admonition
|
||||
"""
|
||||
return line.startswith("> Note:")
|
||||
|
||||
|
||||
def is_warning(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a "warning" admonition
|
||||
"""
|
||||
return line.startswith("> Warning:")
|
||||
|
||||
|
||||
def modify_content_admonition(lines: list[str], _) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Applies adminition info to each line in the output
|
||||
"""
|
||||
modified = False
|
||||
updated_lines = []
|
||||
admonition_lines = []
|
||||
is_admonition = False
|
||||
replace_new_in_next_line = False
|
||||
for index, line in enumerate(lines):
|
||||
next_line: str | None = None
|
||||
if index + 1 < len(lines):
|
||||
next_line = lines[index + 1]
|
||||
|
||||
if replace_new_in_next_line:
|
||||
line = line.replace("New as of", "Introduced in")
|
||||
line = line.replace("new as of", "introduced in")
|
||||
replace_new_in_next_line = False
|
||||
|
||||
if is_github_new(line, next_line):
|
||||
line = line.replace("> [!IMPORTANT]", '!!! tip "New"')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
admonition_lines.append("")
|
||||
replace_new_in_next_line = True
|
||||
elif is_github_note(line):
|
||||
line = line.replace("> [!NOTE]", '!!! note "Note"')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
admonition_lines.append("")
|
||||
elif is_github_warning(line):
|
||||
line = line.replace("> [!WARNING]", '!!! warning "Warning"')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
admonition_lines.append("")
|
||||
elif is_new(line):
|
||||
print("is_new")
|
||||
line = line.replace("> ", '!!! tip "New"\n\n ')
|
||||
line = line.replace("New as of", "Introduced in")
|
||||
line = line.replace("new as of", "introduced in")
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
elif is_note(line):
|
||||
print("is_note")
|
||||
line = line.replace("> Note: ", '!!! note "Note"\n\n ')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
elif is_warning(line):
|
||||
print("is_warning")
|
||||
line = line.replace("> Warning: ", '!!! warning "Warning"\n\n ')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
elif is_info(line):
|
||||
if not is_admonition:
|
||||
line = line.replace("> ", '!!! info "Info"\n\n ')
|
||||
elif line in [">", "> "]:
|
||||
line = ""
|
||||
else:
|
||||
line = " " + line.removeprefix("> ")
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
elif is_admonition and line in [">", "> "]:
|
||||
line = ""
|
||||
admonition_lines.append(line)
|
||||
elif is_admonition and line.startswith("> "):
|
||||
line = " " + line.removeprefix("> ")
|
||||
admonition_lines.append(line)
|
||||
elif line == "":
|
||||
is_admonition = False
|
||||
if len(admonition_lines) > 0:
|
||||
modified = True
|
||||
updated_lines.extend(admonition_lines)
|
||||
admonition_lines = []
|
||||
updated_lines.append("")
|
||||
else:
|
||||
updated_lines.append(line)
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def is_shell_codeblock_start(line: str) -> bool:
|
||||
"""
|
||||
Checks to see if a line starts a codeblock
|
||||
"""
|
||||
return line == "```shell"
|
||||
|
||||
|
||||
def modify_content_terminal_example(lines: list[str], _) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Modifies content so that terminal output is shown appropriately
|
||||
"""
|
||||
modified = False
|
||||
updated_lines = []
|
||||
command_block = []
|
||||
example_block = []
|
||||
in_command_block = False
|
||||
in_example_block = False
|
||||
previous_block = ""
|
||||
next_line_must_be = None
|
||||
for line in lines:
|
||||
if is_shell_codeblock_start(line):
|
||||
command_block.append(line)
|
||||
modified = True
|
||||
in_command_block = True
|
||||
continue
|
||||
elif in_command_block:
|
||||
command_block.append(line)
|
||||
if line == "```":
|
||||
in_command_block = False
|
||||
previous_block = "command_block"
|
||||
next_line_must_be = ""
|
||||
continue
|
||||
elif line == "```":
|
||||
if previous_block == "":
|
||||
updated_lines.append(line)
|
||||
continue
|
||||
if previous_block == "command_block":
|
||||
example_block.append(line)
|
||||
|
||||
if in_example_block:
|
||||
previous_block = ""
|
||||
in_example_block = False
|
||||
updated_lines.append('=== "Shell"')
|
||||
updated_lines.append("")
|
||||
for command_line in command_block:
|
||||
updated_lines.append(f" {command_line}")
|
||||
command_block = []
|
||||
|
||||
updated_lines.append("")
|
||||
updated_lines.append('=== "Output"')
|
||||
updated_lines.append("")
|
||||
for example_line in example_block:
|
||||
updated_lines.append(f" {example_line}")
|
||||
example_block = []
|
||||
else:
|
||||
in_example_block = True
|
||||
continue
|
||||
elif previous_block == "command_block":
|
||||
if next_line_must_be is None:
|
||||
if in_example_block:
|
||||
example_block.append(line)
|
||||
else:
|
||||
updated_lines.extend(command_block)
|
||||
updated_lines.append("")
|
||||
updated_lines.append(line)
|
||||
command_block = []
|
||||
previous_block = ""
|
||||
continue
|
||||
if next_line_must_be == "":
|
||||
if line == "":
|
||||
next_line_must_be = None
|
||||
continue
|
||||
|
||||
updated_lines.append(line)
|
||||
|
||||
if len(command_block) > 0:
|
||||
updated_lines.extend(command_block)
|
||||
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def update_markdown(src):
|
||||
"""
|
||||
Updates all markdown files to be mkdocs compatible
|
||||
"""
|
||||
markdown_files = []
|
||||
allowed_extensions = [".md"]
|
||||
for subdir, _, files in os.walk(src):
|
||||
for file in files:
|
||||
ext = os.path.splitext(file)[-1].lower()
|
||||
file_path = os.path.join(subdir, file)
|
||||
if ext in allowed_extensions:
|
||||
markdown_files.append(file_path)
|
||||
|
||||
modifiers: list[Callable[[list[str], str], tuple[list[str], bool]]] = [
|
||||
modify_content_noop,
|
||||
modify_content_links,
|
||||
modify_content_stripspace,
|
||||
modify_content_admonition,
|
||||
modify_content_terminal_example,
|
||||
modify_content_inject_newlines,
|
||||
]
|
||||
|
||||
for file in markdown_files:
|
||||
is_modified = False
|
||||
lines = []
|
||||
with open(file, "r", encoding="utf-8") as handler:
|
||||
lines = handler.readlines()
|
||||
for modifier in modifiers:
|
||||
lines, modified = modifier(lines, file)
|
||||
if modified:
|
||||
is_modified = True
|
||||
|
||||
if is_modified:
|
||||
with open(file, "w", encoding="utf-8") as handler:
|
||||
handler.writelines(lines)
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Main command that performs doc manipulation
|
||||
@@ -439,11 +135,6 @@ def main():
|
||||
print(" Generating navigation")
|
||||
generate_nav("/usr/src/source/mkdocs.yml", "/usr/src/app/mkdocs.yml")
|
||||
|
||||
print("----> Copying docs folder")
|
||||
update_markdown(
|
||||
"/usr/src/source/docs",
|
||||
)
|
||||
|
||||
if os.path.exists("/usr/src/app/docs"):
|
||||
print(" Removing old docs folder")
|
||||
shutil.rmtree("/usr/src/app/docs")
|
||||
|
||||
8
deb.mk
8
deb.mk
@@ -11,16 +11,12 @@ endif
|
||||
.PHONY: install-from-deb deb-all deb-dokku deb-setup
|
||||
|
||||
install-from-deb:
|
||||
@echo "--> Initial apt-get update"
|
||||
sudo apt-get update -qq >/dev/null
|
||||
sudo apt-get -qq -y --no-install-recommends install apt-transport-https
|
||||
|
||||
@echo "--> Installing docker"
|
||||
wget -nv -O - https://get.docker.com/ | sh
|
||||
|
||||
@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
|
||||
|
||||
@@ -31,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.33.2
|
||||
Version: 0.35.4
|
||||
Section: web
|
||||
Priority: optional
|
||||
Architecture: amd64
|
||||
Depends: apache2-utils, acl, 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, software-properties-common, parallel, procfile-util, python-software-properties | python3-software-properties, 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, dnsutils, cgroupfs-mount | cgroup-lite, plugn, sudo, python3, debconf
|
||||
Pre-Depends: gliderlabs-sigil, nginx (>= 1.8.0) | openresty, bind9-dnsutils, cgroupfs-mount | cgroup-lite, 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 >>/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,17 @@ 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 [[ -f /mnt/dokku/plugin-list ]]; then
|
||||
while read line; do
|
||||
local plugin_name="$(echo "$line" | awk -F: '{print $1}')"
|
||||
@@ -65,23 +80,15 @@ 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
|
||||
|
||||
NGINX_ROOT="/etc/nginx"
|
||||
if [[ -x /usr/bin/openresty ]]; then
|
||||
NGINX_ROOT="/usr/local/openresty/nginx/conf"
|
||||
|
||||
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,/usr/bin/crontab
|
||||
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-container-healthchecker,/usr/bin/docker-image-labeler,/usr/bin/pack
|
||||
|
||||
2
docs/_build/Dockerfile
vendored
2
docs/_build/Dockerfile
vendored
@@ -1,4 +1,4 @@
|
||||
FROM python:3.12.1-alpine
|
||||
FROM python:3.12.6-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
|
||||
|
||||
407
docs/_build/hooks.py
vendored
Normal file
407
docs/_build/hooks.py
vendored
Normal file
@@ -0,0 +1,407 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import posixpath
|
||||
import re
|
||||
|
||||
from collections.abc import Callable
|
||||
from re import Match
|
||||
from mkdocs.config.defaults import MkDocsConfig
|
||||
from mkdocs.structure.files import File, Files
|
||||
from mkdocs.structure.pages import Page
|
||||
|
||||
|
||||
def on_page_markdown(markdown: str, *, page: Page, config: MkDocsConfig, files: Files) -> str | None:
|
||||
resp = re_on_page_markdown(markdown, page=page, config=config, files=files)
|
||||
if not resp:
|
||||
return resp
|
||||
|
||||
|
||||
modifiers: list[Callable[[list[str], str], tuple[list[str], bool]]] = [
|
||||
modify_content_noop,
|
||||
modify_content_links,
|
||||
modify_content_stripspace,
|
||||
modify_content_admonition,
|
||||
modify_content_terminal_example,
|
||||
]
|
||||
|
||||
is_modified = False
|
||||
lines = resp.split("\n")
|
||||
for modifier in modifiers:
|
||||
lines, modified = modifier(lines, page.file.src_path)
|
||||
if modified:
|
||||
is_modified = True
|
||||
|
||||
if is_modified:
|
||||
resp = "\n".join(lines)
|
||||
|
||||
return resp
|
||||
|
||||
|
||||
def modify_content_noop(lines: list[str], _) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Simply returns the lines as is
|
||||
"""
|
||||
modified = False
|
||||
updated_lines = []
|
||||
for line in lines:
|
||||
updated_lines.append(line)
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def modify_content_links(lines: list[str], filename: str) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Modifies links to be relative instead of absolute
|
||||
"""
|
||||
filename = filename.replace("/usr/src/source/docs/", "")
|
||||
parts = filename.split("/")
|
||||
parts.pop()
|
||||
replacement = "](" + "/".join([".." for _ in parts]) + "/"
|
||||
modified = False
|
||||
updated_lines = []
|
||||
for line in lines:
|
||||
if "](/docs/" in line:
|
||||
line = line.replace("](/docs/", replacement)
|
||||
modified = True
|
||||
|
||||
updated_lines.append(line)
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def modify_content_stripspace(lines: list[str], _) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Removes trailing whitespace from each line
|
||||
"""
|
||||
modified = False
|
||||
updated_lines = []
|
||||
for line in lines:
|
||||
line = line.rstrip()
|
||||
updated_lines.append(line)
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def is_github_new(line: str, next_line: str | None) -> bool:
|
||||
"""
|
||||
Checks if a given line is a github "new as of" admonition
|
||||
"""
|
||||
if not next_line:
|
||||
return False
|
||||
|
||||
return line.startswith("> [!IMPORTANT]") and "new as of" in next_line.lower()
|
||||
|
||||
|
||||
def is_github_note(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a github "note" admonition
|
||||
"""
|
||||
return line.startswith("> [!NOTE]")
|
||||
|
||||
|
||||
def is_github_warning(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a github "warning" admonition
|
||||
"""
|
||||
return line.startswith("> [!WARNING]")
|
||||
|
||||
|
||||
def is_info(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is an "info" admonition
|
||||
"""
|
||||
return line.startswith("> ")
|
||||
|
||||
|
||||
def is_new(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a "new as of" admonition
|
||||
"""
|
||||
return line.startswith("> ") and "new as of" in line.lower()
|
||||
|
||||
|
||||
def is_note(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a "note" admonition
|
||||
"""
|
||||
return line.startswith("> Note:")
|
||||
|
||||
|
||||
def is_warning(line: str) -> bool:
|
||||
"""
|
||||
Checks if a given line is a "warning" admonition
|
||||
"""
|
||||
return line.startswith("> Warning:")
|
||||
|
||||
|
||||
def modify_content_admonition(lines: list[str], filename: str) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Applies adminition info to each line in the output
|
||||
"""
|
||||
modified = False
|
||||
updated_lines = []
|
||||
admonition_lines = []
|
||||
is_admonition = False
|
||||
replace_new_in_next_line = False
|
||||
for index, line in enumerate(lines):
|
||||
next_line: str | None = None
|
||||
if index + 1 < len(lines):
|
||||
next_line = lines[index + 1]
|
||||
|
||||
if replace_new_in_next_line:
|
||||
line = line.replace("New as of", "Introduced in")
|
||||
line = line.replace("new as of", "introduced in")
|
||||
replace_new_in_next_line = False
|
||||
|
||||
if is_github_new(line, next_line):
|
||||
line = line.replace("> [!IMPORTANT]", '!!! tip "New"')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
admonition_lines.append("")
|
||||
replace_new_in_next_line = True
|
||||
elif is_github_note(line):
|
||||
line = line.replace("> [!NOTE]", '!!! note "Note"')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
admonition_lines.append("")
|
||||
elif is_github_warning(line):
|
||||
line = line.replace("> [!WARNING]", '!!! warning "Warning"')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
admonition_lines.append("")
|
||||
elif is_new(line):
|
||||
print("is_new")
|
||||
line = line.replace("> ", '!!! tip "New"\n\n ')
|
||||
line = line.replace("New as of", "Introduced in")
|
||||
line = line.replace("new as of", "introduced in")
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
elif is_note(line):
|
||||
print("is_note")
|
||||
line = line.replace("> Note: ", '!!! note "Note"\n\n ')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
elif is_warning(line):
|
||||
print("is_warning")
|
||||
line = line.replace("> Warning: ", '!!! warning "Warning"\n\n ')
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
elif is_info(line):
|
||||
if not is_admonition:
|
||||
line = line.replace("> ", '!!! info "Info"\n\n ')
|
||||
elif line in [">", "> "]:
|
||||
line = ""
|
||||
else:
|
||||
line = " " + line.removeprefix("> ")
|
||||
is_admonition = True
|
||||
admonition_lines.append(line)
|
||||
elif is_admonition and line in [">", "> "]:
|
||||
line = ""
|
||||
admonition_lines.append(line)
|
||||
elif is_admonition and line.startswith("> "):
|
||||
line = " " + line.removeprefix("> ")
|
||||
admonition_lines.append(line)
|
||||
elif line == "":
|
||||
is_admonition = False
|
||||
if len(admonition_lines) > 0:
|
||||
modified = True
|
||||
updated_lines.extend(admonition_lines)
|
||||
admonition_lines = []
|
||||
updated_lines.append("")
|
||||
else:
|
||||
updated_lines.append(line)
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def is_shell_codeblock_start(line: str) -> bool:
|
||||
"""
|
||||
Checks to see if a line starts a codeblock
|
||||
"""
|
||||
return line == "```shell"
|
||||
|
||||
|
||||
def modify_content_terminal_example(lines: list[str], _) -> tuple[list[str], bool]:
|
||||
"""
|
||||
Modifies content so that terminal output is shown appropriately
|
||||
"""
|
||||
modified = False
|
||||
updated_lines = []
|
||||
command_block = []
|
||||
example_block = []
|
||||
in_command_block = False
|
||||
in_example_block = False
|
||||
previous_block = ""
|
||||
next_line_must_be = None
|
||||
for line in lines:
|
||||
if is_shell_codeblock_start(line):
|
||||
command_block.append(line)
|
||||
modified = True
|
||||
in_command_block = True
|
||||
continue
|
||||
elif in_command_block:
|
||||
command_block.append(line)
|
||||
if line == "```":
|
||||
in_command_block = False
|
||||
previous_block = "command_block"
|
||||
next_line_must_be = ""
|
||||
continue
|
||||
elif line == "```":
|
||||
if previous_block == "":
|
||||
updated_lines.append(line)
|
||||
continue
|
||||
if previous_block == "command_block":
|
||||
example_block.append(line)
|
||||
|
||||
if in_example_block:
|
||||
previous_block = ""
|
||||
in_example_block = False
|
||||
updated_lines.append('=== "Shell"')
|
||||
updated_lines.append("")
|
||||
for command_line in command_block:
|
||||
updated_lines.append(f" {command_line}")
|
||||
command_block = []
|
||||
|
||||
updated_lines.append("")
|
||||
updated_lines.append('=== "Output"')
|
||||
updated_lines.append("")
|
||||
for example_line in example_block:
|
||||
updated_lines.append(f" {example_line}")
|
||||
example_block = []
|
||||
else:
|
||||
in_example_block = True
|
||||
continue
|
||||
elif previous_block == "command_block":
|
||||
if next_line_must_be is None:
|
||||
if in_example_block:
|
||||
example_block.append(line)
|
||||
else:
|
||||
updated_lines.extend(command_block)
|
||||
updated_lines.append("")
|
||||
updated_lines.append(line)
|
||||
command_block = []
|
||||
previous_block = ""
|
||||
continue
|
||||
if next_line_must_be == "":
|
||||
if line == "":
|
||||
next_line_must_be = None
|
||||
continue
|
||||
|
||||
updated_lines.append(line)
|
||||
|
||||
if len(command_block) > 0:
|
||||
updated_lines.extend(command_block)
|
||||
|
||||
return updated_lines, modified
|
||||
|
||||
|
||||
def re_on_page_markdown(markdown: str, *, page: Page, config: MkDocsConfig, files: Files) -> str | None:
|
||||
"""
|
||||
This hook is called after the page's markdown is loaded from file and can be
|
||||
"""
|
||||
|
||||
def replace(match: Match):
|
||||
badge_type, args = match.groups()
|
||||
args = args.strip()
|
||||
if badge_type == "version":
|
||||
return _badge_for_version(args, page, files)
|
||||
if badge_type == "scheduler":
|
||||
return _badge_for_scheduler(args, page, files)
|
||||
if type == "flag":
|
||||
return flag(args, page, files)
|
||||
|
||||
# Otherwise, raise an error
|
||||
raise RuntimeError(f"Unknown shortcode: {badge_type}")
|
||||
|
||||
return re.sub(r"<!-- md:(\w+)(.*?) -->", replace, markdown, flags=re.I | re.M)
|
||||
|
||||
|
||||
def _badge(icon: str, text: str = "", badge_type: str = ""):
|
||||
"""
|
||||
Create badge
|
||||
"""
|
||||
classes = f"mdx-badge mdx-badge--{badge_type}" if badge_type else "mdx-badge"
|
||||
text = f"{text}{{ data-preview='' }}" if text.endswith(")") else text
|
||||
return "".join(
|
||||
[
|
||||
f'<span class="{classes}">',
|
||||
*([f'<span class="mdx-badge__icon">{icon}</span>'] if icon else []),
|
||||
*([f'<span class="mdx-badge__text">{text}</span>'] if text else []),
|
||||
"</span>",
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
def _badge_for_scheduler(text: str, page: Page, files: Files):
|
||||
"""
|
||||
Create badge for scheduler
|
||||
"""
|
||||
|
||||
# Return badge
|
||||
icon = "simple-docker"
|
||||
if text in ["kubernetes", "k3s"]:
|
||||
icon = "simple-kubernetes"
|
||||
text = "k3s"
|
||||
elif text == "nomad":
|
||||
icon = "simple-nomad"
|
||||
elif text in ["docker", "docker-local"]:
|
||||
icon = "simple-docker"
|
||||
text = "docker-local"
|
||||
|
||||
href = f"https://dokku.com/docs/deployment/schedulers/{text}/"
|
||||
return _badge(
|
||||
icon=f"[:{icon}:]({href} '{text}')",
|
||||
text=f"[{text}]({href})",
|
||||
)
|
||||
|
||||
|
||||
def _badge_for_version(text: str, page: Page, files: Files):
|
||||
"""
|
||||
Create badge for version
|
||||
"""
|
||||
|
||||
# Return badge
|
||||
icon = "material-tag-outline"
|
||||
href = f"https://github.com/dokku/dokku/releases/tag/v{text}"
|
||||
return _badge(
|
||||
icon=f"[:{icon}:]({href} 'Since {text}')",
|
||||
text=f"[{text}]({href})",
|
||||
)
|
||||
|
||||
|
||||
def flag(args: str, page: Page, files: Files):
|
||||
"""
|
||||
Create flag
|
||||
"""
|
||||
|
||||
flag_type, *_ = args.split(" ", 1)
|
||||
if flag_type == "experimental":
|
||||
return _badge_for_experimental(page, files)
|
||||
raise RuntimeError(f"Unknown flag type: {flag_type}")
|
||||
|
||||
|
||||
def _badge_for_experimental(page: Page, files: Files):
|
||||
"""
|
||||
Create badge for experimental
|
||||
"""
|
||||
|
||||
icon = "material-flask-outline"
|
||||
href = _resolve_path("conventions.md#experimental", page, files)
|
||||
return _badge(icon=f"[:{icon}:]({href} 'Experimental')")
|
||||
|
||||
|
||||
def _resolve_path(path: str, page: Page, files: Files):
|
||||
"""
|
||||
Resolve path of file relative to given page - the posixpath always includes
|
||||
one additional level of `..` which we need to remove
|
||||
"""
|
||||
|
||||
path, anchor, *_ = f"{path}#".split("#")
|
||||
path = _resolve(files.get_file_from_path(path), page)
|
||||
return "#".join([path, anchor]) if anchor else path
|
||||
|
||||
|
||||
def _resolve(file: File, page: Page):
|
||||
"""
|
||||
Resolve path of file relative to given page - the posixpath always includes
|
||||
one additional level of `..` which we need to remove
|
||||
"""
|
||||
|
||||
path = posixpath.relpath(file.src_uri, page.file.src_uri)
|
||||
return posixpath.sep.join(path.split(posixpath.sep)[1:])
|
||||
30
docs/_build/requirements.txt
vendored
30
docs/_build/requirements.txt
vendored
@@ -1,23 +1,23 @@
|
||||
beautifulsoup4==4.12.3
|
||||
click==8.1.7
|
||||
ghp-import==2.1.0
|
||||
importlib-metadata==7.0.1
|
||||
Jinja2==3.1.3
|
||||
Markdown>=3.2.1,<3.6
|
||||
MarkupSafe==2.1.4
|
||||
importlib-metadata==8.5.0
|
||||
Jinja2==3.1.4
|
||||
Markdown>=3.2.1,<3.8
|
||||
MarkupSafe==2.1.5
|
||||
mergedeep==1.3.4
|
||||
mkdocs==1.5.3
|
||||
mkdocs==1.6.1
|
||||
mkdocs-exclude==1.0.2
|
||||
mkdocs-material==9.5.6
|
||||
mkdocs-material==9.5.38
|
||||
mkdocs-material-extensions==1.3.1
|
||||
packaging==23.2
|
||||
Pygments==2.17.2
|
||||
pymdown-extensions==10.7
|
||||
pyparsing==3.1.1
|
||||
python-dateutil==2.8.2
|
||||
PyYAML==6.0.1
|
||||
packaging==24.1
|
||||
Pygments==2.18.0
|
||||
pymdown-extensions==10.10.2
|
||||
pyparsing==3.1.4
|
||||
python-dateutil==2.9.0.post0
|
||||
PyYAML==6.0.2
|
||||
pyyaml_env_tag==0.1
|
||||
six==1.16.0
|
||||
soupsieve==2.5
|
||||
watchdog==3.0.0
|
||||
zipp==3.17.0
|
||||
soupsieve==2.6
|
||||
watchdog==5.0.2
|
||||
zipp==3.20.2
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -36,35 +36,35 @@ dokku plugin:list
|
||||
|
||||
```
|
||||
plugn: dev
|
||||
00_dokku-standard 0.33.2 enabled dokku core standard plugin
|
||||
20_events 0.33.2 enabled dokku core events logging plugin
|
||||
app-json 0.33.2 enabled dokku core app-json plugin
|
||||
apps 0.33.2 enabled dokku core apps plugin
|
||||
build-env 0.33.2 enabled dokku core build-env plugin
|
||||
buildpacks 0.33.2 enabled dokku core buildpacks plugin
|
||||
certs 0.33.2 enabled dokku core certificate management plugin
|
||||
checks 0.33.2 enabled dokku core checks plugin
|
||||
common 0.33.2 enabled dokku core common plugin
|
||||
config 0.33.2 enabled dokku core config plugin
|
||||
docker-options 0.33.2 enabled dokku core docker-options plugin
|
||||
domains 0.33.2 enabled dokku core domains plugin
|
||||
enter 0.33.2 enabled dokku core enter plugin
|
||||
git 0.33.2 enabled dokku core git plugin
|
||||
logs 0.33.2 enabled dokku core logs plugin
|
||||
network 0.33.2 enabled dokku core network plugin
|
||||
nginx-vhosts 0.33.2 enabled dokku core nginx-vhosts plugin
|
||||
plugin 0.33.2 enabled dokku core plugin plugin
|
||||
proxy 0.33.2 enabled dokku core proxy plugin
|
||||
ps 0.33.2 enabled dokku core ps plugin
|
||||
repo 0.33.2 enabled dokku core repo plugin
|
||||
resource 0.33.2 enabled dokku core resource plugin
|
||||
scheduler-docker-local 0.33.2 enabled dokku core scheduler-docker-local plugin
|
||||
shell 0.33.2 enabled dokku core shell plugin
|
||||
ssh-keys 0.33.2 enabled dokku core ssh-keys plugin
|
||||
storage 0.33.2 enabled dokku core storage plugin
|
||||
tags 0.33.2 enabled dokku core tags plugin
|
||||
tar 0.33.2 enabled dokku core tar plugin
|
||||
trace 0.33.2 enabled dokku core trace plugin
|
||||
00_dokku-standard 0.35.4 enabled dokku core standard plugin
|
||||
20_events 0.35.4 enabled dokku core events logging plugin
|
||||
app-json 0.35.4 enabled dokku core app-json plugin
|
||||
apps 0.35.4 enabled dokku core apps plugin
|
||||
build-env 0.35.4 enabled dokku core build-env plugin
|
||||
buildpacks 0.35.4 enabled dokku core buildpacks plugin
|
||||
certs 0.35.4 enabled dokku core certificate management plugin
|
||||
checks 0.35.4 enabled dokku core checks plugin
|
||||
common 0.35.4 enabled dokku core common plugin
|
||||
config 0.35.4 enabled dokku core config plugin
|
||||
docker-options 0.35.4 enabled dokku core docker-options plugin
|
||||
domains 0.35.4 enabled dokku core domains plugin
|
||||
enter 0.35.4 enabled dokku core enter plugin
|
||||
git 0.35.4 enabled dokku core git plugin
|
||||
logs 0.35.4 enabled dokku core logs plugin
|
||||
network 0.35.4 enabled dokku core network plugin
|
||||
nginx-vhosts 0.35.4 enabled dokku core nginx-vhosts plugin
|
||||
plugin 0.35.4 enabled dokku core plugin plugin
|
||||
proxy 0.35.4 enabled dokku core proxy plugin
|
||||
ps 0.35.4 enabled dokku core ps plugin
|
||||
repo 0.35.4 enabled dokku core repo plugin
|
||||
resource 0.35.4 enabled dokku core resource plugin
|
||||
scheduler-docker-local 0.35.4 enabled dokku core scheduler-docker-local plugin
|
||||
shell 0.35.4 enabled dokku core shell plugin
|
||||
ssh-keys 0.35.4 enabled dokku core ssh-keys plugin
|
||||
storage 0.35.4 enabled dokku core storage plugin
|
||||
tags 0.35.4 enabled dokku core tags plugin
|
||||
tar 0.35.4 enabled dokku core tar plugin
|
||||
trace 0.35.4 enabled dokku core trace plugin
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
|
||||
@@ -135,3 +135,34 @@ dokku registry:set node-js-app push-on-release
|
||||
# globally
|
||||
dokku registry:set --global push-on-release
|
||||
```
|
||||
|
||||
### Push extra tags
|
||||
|
||||
To push the image on release with extra tags, set the `push-extra-tags` to a comma-separated list of tags via the `registry:set` command. The default value for this property is empty. Setting the property will result in the image being tagged with extra tags every release.
|
||||
|
||||
```shell
|
||||
# multiple-tags
|
||||
dokku registry:set node-js-app push-extra-tags foo,bar
|
||||
```
|
||||
The `push-extra-tags` can be set to a single tag too.
|
||||
|
||||
```shell
|
||||
# single tag
|
||||
dokku registry:set node-js-app push-extra-tags foo
|
||||
```
|
||||
|
||||
This property can be set for a single app or globally via the `--global` flag. When set globally, the app-specific value will always overide the global value. The default global value for this property is `false`.
|
||||
|
||||
```shell
|
||||
dokku registry:set --global push-extra-tags foo,bar
|
||||
```
|
||||
|
||||
Setting the property value to an empty string will reset the value to the system default. Resetting the value can be done per app or globally.
|
||||
|
||||
```shell
|
||||
# per-app
|
||||
dokku registry:set node-js-app push-extra-tags
|
||||
|
||||
# globally
|
||||
dokku registry:set --global push-extra-tags
|
||||
```
|
||||
|
||||
3
docs/appendices/0.33.0-migration-guide.md
Normal file
3
docs/appendices/0.33.0-migration-guide.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# 0.33.0 Migration Guide
|
||||
|
||||
Dokku 0.33.0 did not introduce any refactors, removals, or deprecations, and focused solely on system improvements.
|
||||
23
docs/appendices/0.34.0-migration-guide.md
Normal file
23
docs/appendices/0.34.0-migration-guide.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# 0.34.0 Migration Guide
|
||||
|
||||
## Removals
|
||||
|
||||
- The `disable-chown` property of the `scheduler-docker-local` plugin has been removed. Mounted paths will no longer have file permissions changed during the pre-deploy phase. Files baked into the container image for herokuish builds will always be owned by the correct user.
|
||||
- The `git:unlock` command has been removed. It was previously used to "unlock" a temporary directory that already existed. The directory the `git:unlock` command used to cleanup is now properly removed on exit of the `git:from-image` command.
|
||||
- The k3s plugin no longer supports port mappings other than `https:443` and `http:80`. If no matching port map is specified, Dokku will use expose the app on the first port mapping, with priority given to `https` mappings over `http`.
|
||||
- Golang functions to invoke plugin triggers named `PlugnTrigger*` have been removed in favor of `CallPlugnTrigger`.
|
||||
|
||||
## Changes
|
||||
|
||||
- The k3s scheduler now creates an Ingress object per domain instead of one per port mapping. This will cause a short amount of downtime during the next app deploy after upgrading to 0.34.0
|
||||
- App lock files have been removed from the `/home/dokku` directory and moved into the `data/apps` directory.
|
||||
- Logs are now rotated via `copytruncate` instead of `create` in logrotate.
|
||||
- The k3s scheduler now defaults to nginx as it's default proxy implementation. The traefik proxy implementation is still available, though users will need to set the global `ingress-class` k3s property to `traefik` via the following command:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global ingress-class traefik
|
||||
```
|
||||
|
||||
## Deprecations
|
||||
|
||||
The `pre-deploy` plugin trigger is deprecated as of `0.34.4`. It is currently invoked during the `post-release-builder` plugin trigger, where image mutation is heavily discouraged. Users should instead move any trigger usage to the `pre-release-builder` plugin trigger. The `pre-deploy` plugin trigger will be removed in a future release.
|
||||
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
|
||||
```
|
||||
@@ -3,3 +3,21 @@
|
||||
--md-primary-fg-color--light: #ECB7B7;
|
||||
--md-primary-fg-color--dark: #90030C;
|
||||
}
|
||||
|
||||
.md-typeset .mdx-badge {
|
||||
font-size: .80em;
|
||||
}
|
||||
|
||||
.md-typeset .mdx-badge__icon {
|
||||
background: var(--md-accent-fg-color--transparent);
|
||||
padding: 0.2rem;
|
||||
border-top-left-radius: 0.1rem;
|
||||
border-bottom-left-radius: 0.1rem
|
||||
}
|
||||
|
||||
.md-typeset .mdx-badge__text {
|
||||
box-shadow: 0 0 0 1px inset var(--md-accent-fg-color--transparent);
|
||||
padding: 0.2rem 0.3rem;
|
||||
border-bottom-right-radius: 0.1rem;
|
||||
border-top-right-radius: 0.1rem;
|
||||
}
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/mstile-70x70.png"/>
|
||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/mstile-150x150.png"/>
|
||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/mstile-310x310.png"/>
|
||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/mstile-310x150.png"/>
|
||||
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-70x70.png"/>
|
||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-150x150.png"/>
|
||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-310x310.png"/>
|
||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/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.33.2\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": "0.75"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.2\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": "1.0"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.2\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": "1.5"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.2\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": "2.0"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.2\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": "3.0"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.2\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.35.4\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": "4.0"
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
"0.30.11",
|
||||
"0.31.5",
|
||||
"0.32.4",
|
||||
"0.33.2"
|
||||
"0.33.9",
|
||||
"0.34.9",
|
||||
"0.35.4"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -125,9 +125,11 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
||||
| [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 |
|
||||
| [Multicast DNS (mDNS)](https://github.com/calyhre/dokku-mdns) | [calyhre][] | 0.33.0+ |
|
||||
| [Nuke Containers](https://github.com/dokku-community/dokku-nuke) | [josegonzalez][] | 0.4.0+ |
|
||||
| [Proctype Filter](https://github.com/michaelshobbs/dokku-proctype-filter) | [michaelshobbs][] | 0.4.0+ |
|
||||
| [robots.txt](https://notabug.org/candlewaster/dokku-robots.txt) | [candlewaster][] | 0.4.x |
|
||||
@@ -150,6 +152,7 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
||||
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
||||
| [Chef cookbook](https://github.com/nickcharlton/dokku-cookbook) | [nickcharlton][] | |
|
||||
| [Discourse](https://github.com/badsyntax/dokku-discourse) | [badsyntax][] | 0.21.4+ |
|
||||
| [Tailscale](https://github.com/andrew-womeldorf/dokku-tailscale) | [andrew-womeldorf][] | 0.34.4+ |
|
||||
| [Wordpress](https://github.com/dokku-community/dokku-wordpress) | [dokku-community][] | 0.4.0+ |
|
||||
|
||||
### Deprecated Plugins
|
||||
@@ -250,6 +253,7 @@ The following plugins are no longer maintained by their developers.
|
||||
[alexanderbeletsky]: https://github.com/alexanderbeletsky
|
||||
[alexkruegger]: https://github.com/alexkruegger
|
||||
[aluxian]: https://github.com/aluxian
|
||||
[andrew-womeldorf]: https://github.com/andrew-womeldorf
|
||||
[aomitayo]: https://github.com/aomitayo
|
||||
[apmorton]: https://github.com/apmorton
|
||||
[artofrawr]: https://github.com/artofrawr
|
||||
@@ -258,6 +262,7 @@ The following plugins are no longer maintained by their developers.
|
||||
[basgys]: https://github.com/basgys
|
||||
[benjamin-dobell]: https://github.com/benjamin-dobell
|
||||
[blag]: https://github.com/blag
|
||||
[calyhre]: https://github.com/calyhre
|
||||
[cameron-martin]: https://github.com/cameron-martin
|
||||
[candlewaster]: https://notabug.org/candlewaster
|
||||
[cedricziel]: https://github.com/cedricziel
|
||||
@@ -317,6 +322,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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ Builders run a detection script against a source code repository, and the first
|
||||
|
||||
### Overriding the auto-selected builder
|
||||
|
||||
If desired, the builder can be specified via the `builder:set` command by speifying a value for `selected`. The selected builder will always be used.
|
||||
If desired, the builder can be specified via the `builder:set` command by specifying a value for `selected`. The selected builder will always be used.
|
||||
|
||||
```shell
|
||||
dokku builder:set node-js-app selected dockerfile
|
||||
@@ -44,6 +44,9 @@ The `selected` property can also be set globally. The global default is an empty
|
||||
dokku builder:set --global selected herokuish
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> Selecting a global builder will result in _all_ applications using that builder unless a manual override is selected.
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# Nixpacks
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.32.0
|
||||
|
||||
The `nixpacks` builder builds apps via [Nixpacks](https://nixpacks.com/), a buildpack alternative.
|
||||
@@ -46,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
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ on:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Cloning repo
|
||||
uses: actions/checkout@v3
|
||||
|
||||
@@ -10,13 +10,12 @@ git:from-archive [--archive-type ARCHIVE_TYPE] <app> <archive-url> [<git-usernam
|
||||
git:from-image [--build-dir DIRECTORY] <app> <docker-image> [<git-username> <git-email>] # Updates an app's git repository with a given docker image
|
||||
git:generate-deploy-key # Generates a deploy ssh key
|
||||
git:load-image [--build-dir DIRECTORY] <app> <docker-image> [<git-username> <git-email>] # Updates an app's git repository with a docker image loaded from stdin
|
||||
git:sync [--build] <app> <repository> [<git-ref>] # Clone or fetch an app from remote git repo
|
||||
git:sync [--build|build-if-changes] <app> <repository> [<git-ref>] # Clone or fetch an app from remote git repo
|
||||
git:initialize <app> # Initialize a git repository for an app
|
||||
git:public-key # Outputs the dokku public deploy key
|
||||
git:report [<app>] [<flag>] # Displays a git report for one or more apps
|
||||
git:set <app> <key> (<value>) # Set or clear a git property for an app
|
||||
git:status <app> # Show the working tree status for an app
|
||||
git:unlock <app> [--force] # Removes previous git clone folder for new deployment
|
||||
```
|
||||
|
||||
Git-based deployment has been the traditional method of deploying applications in Dokku. As of v0.12.0, Dokku introduces a few ways to customize the experience of deploying via `git push`. A Git-based deployment currently supports building applications via:
|
||||
@@ -158,6 +157,12 @@ By default, this command does not trigger an application build. To do so during
|
||||
dokku git:sync --build node-js-app https://github.com/heroku/node-js-getting-started.git
|
||||
```
|
||||
|
||||
When running `git:sync` without a reference, it may be useful to only build when there are changes. To do so, specify the `--build-if-changes` flag.
|
||||
|
||||
```shell
|
||||
dokku git:sync --build-if-changes node-js-app https://github.com/heroku/node-js-getting-started.git
|
||||
```
|
||||
|
||||
### Initializing from private repositories
|
||||
|
||||
> [!IMPORTANT]
|
||||
|
||||
@@ -27,24 +27,11 @@ dokku scheduler:set node-js-app selected
|
||||
|
||||
### Deploying amd64 images on arm64
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.33.0
|
||||
|
||||
Many builders only produce amd64-compatible images. The docker-local scheduler will automatically detect these and run them via the `--platform=linux/amd64` on arm64 deploy targets.
|
||||
|
||||
### Disabling chown of persistent storage
|
||||
|
||||
The `scheduler-docker-local` plugin will ensure your storage mounts are owned by either `herokuishuser` or the overridden value you have set in `DOKKU_APP_USER`. You may disable this by running the following `scheduler-docker-local:set` command for your application:
|
||||
|
||||
```shell
|
||||
dokku scheduler-docker-local:set node-js-app disable-chown true
|
||||
```
|
||||
|
||||
Once set, you may re-enable it by setting a blank value for `disable-chown`:
|
||||
|
||||
```shell
|
||||
dokku scheduler-docker-local:set node-js-app disable-chown
|
||||
```
|
||||
|
||||
### Disabling the init process
|
||||
|
||||
The `scheduler-docker-local` injects an init process by default via the `--init`. For some apps - such as those where the built docker image uses S6 as the init - this may be undesirable and cause issues with process starts. You may disable this by running the following `scheduler-docker-local:set` command for your application:
|
||||
|
||||
@@ -4,10 +4,14 @@
|
||||
> New as of 0.33.0
|
||||
|
||||
```
|
||||
scheduler-k3s:annotations:set <app|--global> <property> (<value>) [--process-type PROCESS_TYPE] <--resource-type RESOURCE_TYPE>, Set or clear an annotation for a given app/process-type/resource-type combination
|
||||
scheduler-k3s:autoscaling-auth:set <app|--global> <trigger> [<--metadata key=value>...], Set or clear a scheduler-k3s autoscaling keda trigger authentication resource for an app
|
||||
scheduler-k3s:autoscaling-auth:report <app|--global> [--format stdout|json] [--include-metadata] # Displays a scheduler-k3s autoscaling auth report for an app
|
||||
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: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
|
||||
scheduler-k3s:set [<app>|--global] <key> (<value>) # Set or clear a scheduler-k3s property for an app or the scheduler
|
||||
scheduler-k3s:show-kubeconfig # Displays the kubeconfig for remote usage
|
||||
@@ -31,6 +35,9 @@ dokku scheduler:set node-js-app k3s
|
||||
|
||||
## Usage
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The k3s plugin requires usage of a docker registry to store deployed image artifacts. See the [registry documentation](/docs/advanced-usage/registry-management.md) for more details on how to configure a registry.
|
||||
|
||||
### Initializing a cluster
|
||||
|
||||
> [!WARNING]
|
||||
@@ -54,6 +61,14 @@ 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 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:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:initialize --ingress-class traefik
|
||||
```
|
||||
|
||||
### Adding nodes to the cluster
|
||||
|
||||
> [!WARNING]
|
||||
@@ -210,7 +225,7 @@ The default value may be set by passing an empty value for the option:
|
||||
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 the local `registries.yaml` for any private registry pulls.
|
||||
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
|
||||
@@ -222,7 +237,9 @@ The default value may be set by passing an empty value for the option.
|
||||
dokku scheduler-k3s:set --global image-pull-secrets
|
||||
```
|
||||
|
||||
### Enabling letsencrypt integration
|
||||
### SSL Certificates
|
||||
|
||||
#### Enabling letsencrypt integration
|
||||
|
||||
By default, letsencrypt is disabled and https port mappings are ignored. To enable, set the `letsencrypt-email-prod` or `letsencrypt-email-stag` property with the `--global` flag:
|
||||
|
||||
@@ -234,9 +251,9 @@ dokku scheduler-k3s:set --global letsencrypt-email-prod automated@dokku.sh
|
||||
dokku scheduler-k3s:set --global letsencrypt-email-stag automated@dokku.sh
|
||||
```
|
||||
|
||||
After enabling and rebuilding, all apps with an `https` port mapping that utilize the related letsencrypt server will be automatically updated to enable ssl. All http requests will then be redirected to https.
|
||||
After enabling and rebuilding, all apps with an `http:80` port mapping will have a corresponding `https:443` added and ssl will be automatically enabled. All http requests will then be redirected to https.
|
||||
|
||||
### Customizing the letsencrypt server
|
||||
#### Customizing the letsencrypt server
|
||||
|
||||
The letsencrypt integration is set to the production letsencrypt server by default. This can be changed on an app-level by setting the `letsencrypt-server` property with the `scheduler-k3s:set` command
|
||||
|
||||
@@ -262,6 +279,197 @@ The default value may be set by passing an empty value for the option.
|
||||
dokku scheduler-k3s:set --global letsencrypt-server staging
|
||||
```
|
||||
|
||||
### Customizing Annotations and Labels
|
||||
|
||||
> [!NOTE]
|
||||
> The cron ID is used as the process type if your app deploys any cron tasks
|
||||
|
||||
#### Setting Annotations
|
||||
|
||||
Dokku injects certain annotations into each created resource by default, but it may be necessary to inject others for tighter integration with third-party tools. The `scheduler-k3s:annotations:set` command can be used to perform this task. The command takes an app name and a required `--resource-type` flag.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:annotations:set node-js-app annotation.key annotation.value --resource-type deployment
|
||||
```
|
||||
|
||||
If not specified, the annotation will be applied to all processes within an app, though it may be further scoped to a specific process type via the `--process-type` flag.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:annotations:set node-js-app annotation.key annotation.value --resource-type deployment --process-type web
|
||||
```
|
||||
|
||||
The following resource types are supported:
|
||||
|
||||
- `certificate`
|
||||
- `cronjob`
|
||||
- `deployment`
|
||||
- `ingress`
|
||||
- `job`
|
||||
- `pod`
|
||||
- `secret`
|
||||
- `service`
|
||||
- `serviceaccount`
|
||||
- `traefik_ingressroute`
|
||||
- `traefik_middleware`
|
||||
|
||||
#### Removing an annotation
|
||||
|
||||
To unset an annotation, pass an empty value:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:annotations:set node-js-app annotation.key --resource-type deployment
|
||||
dokku scheduler-k3s:annotations:set node-js-app annotation.key --resource-type deployment --process-type web
|
||||
```
|
||||
|
||||
#### 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.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:labels:set node-js-app label.key label.value --resource-type deployment
|
||||
```
|
||||
|
||||
If not specified, the label will be applied to all processes within an app, though it may be further scoped to a specific process type via the `--process-type` flag.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:labels:set node-js-app label.key label.value --resource-type deployment --process-type web
|
||||
```
|
||||
|
||||
The following resource types are supported:
|
||||
|
||||
- `certificate`
|
||||
- `cronjob`
|
||||
- `deployment`
|
||||
- `ingress`
|
||||
- `job`
|
||||
- `pod`
|
||||
- `secret`
|
||||
- `service`
|
||||
- `serviceaccount`
|
||||
- `traefik_ingressroute`
|
||||
- `traefik_middleware`
|
||||
|
||||
#### Removing a label
|
||||
|
||||
To unset an label, pass an empty value:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:annotations:set node-js-app label.key --resource-type deployment
|
||||
dokku scheduler-k3s:labels:set node-js-app label.key --resource-type deployment --process-type web
|
||||
```
|
||||
|
||||
### Autoscaling
|
||||
|
||||
#### Workload Autoscaling
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.33.8
|
||||
> Users with older installations will need to manually install Keda.
|
||||
|
||||
Autoscaling in k3s is managed by [Keda](https://keda.sh/), which integrates with a variety of external metric providers to allow for autoscaling application workloads.
|
||||
|
||||
To enable autoscaling, use the `app.json` `formation.$PROCESS_TYPE.autoscaling` key to manage rules. In addition to the existing configuration used for process management, each process type in the `formation.$PROCESS_TYPE.autoscaling` key can have the following keys:
|
||||
|
||||
- `min_quantity`: The minimum number of instances the application can run. If not specified, the `quantity` specified for the app is used.
|
||||
- `max_quantity`: The maximum number of instances the application can run. If not specified, the higher value of `quantity` and the `min_quantity` is used.
|
||||
- `polling_interval_seconds`: (default: 30) The interval to wait for polling each of the configured triggers
|
||||
- `cooldown_seconds`: (default: 300) The number of seconds to wait in between each scaling event
|
||||
- `triggers`: A list of autoscaling triggers.
|
||||
|
||||
Autoscaling triggers are passed as is to Keda, and should match the configuration keda uses for a given [scaler](https://keda.sh/docs/2.13/scalers/). Below is an example for [datadog](https://keda.sh/docs/2.13/scalers/datadog/#example-2---driving-scale-directly):
|
||||
|
||||
```json
|
||||
{
|
||||
"formation": {
|
||||
"web": {
|
||||
"autoscaling": {
|
||||
"min_quantity": 1,
|
||||
"max_quantity": 10,
|
||||
"triggers": [
|
||||
{
|
||||
"name": "name-for-trigger",
|
||||
"type": "datadog",
|
||||
"metadata": {
|
||||
"query": "per_second(sum:http.requests{service:myservice1}).rollup(max, 300))/180,per_second(sum:http.backlog{service:myservice1}).rollup(max, 300)/30",
|
||||
"queryValue": "1",
|
||||
"queryAggregator": "max"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Each value in the `metadata` stanza can use the following interpolated strings:
|
||||
|
||||
- `DOKKU_DEPLOYMENT_NAME`: The name of the deployment being scaled
|
||||
- `DOKKU_PROCESS_TYPE`: The name of the process being scaled
|
||||
- `DOKKU_APP_NAME`: The name of the app being scaled
|
||||
|
||||
#### 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.
|
||||
|
||||
If no app-specific authentication is provided for a given trigger type, Dokku will fallback to any globally defined `ClusterTriggerAuthentication` resources. Autoscaling triggers within an app all share the same `TriggerAuthentication` resources, while `ClusterTriggerAuthentication` resources can be shared across all apps deployed by Dokku within a given cluster.
|
||||
|
||||
##### Creating Authentication Resources
|
||||
|
||||
Users can specify custom authentication resources directly via the Kubernetes api _or_ use the `scheduler-k3s:autoscaling-auth:set` command to create the resources in the Kubernetes cluster.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:autoscaling-auth:set $APP $TRIGGER --metadata apiKey=some-api-key --metadata appKey=some-app-key
|
||||
```
|
||||
|
||||
For example, the following will configure the authentication for all datadog triggers on the specified app:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:autoscaling-auth:set node-js-app datadog --metadata apiKey=1234567890 --metadata appKey=asdfghjkl --metadata datadogSite=us5.datadoghq.com
|
||||
```
|
||||
|
||||
After execution, Dokku will include the following resources for each specified trigger with the helm release generated on subsequent app deploys:
|
||||
|
||||
- `Secret`: an Opaque `Secret` resource storing the authentication credentials
|
||||
- `TriggerAuthentication`: A `TriggerAuthentication` resource that references the secret for use by triggers
|
||||
|
||||
If the `--global` flag is specified instead of an app name, a custom helm chart is created on the fly with the above resources.
|
||||
|
||||
##### Removing Authentication Resources
|
||||
|
||||
To remove a configured authenticatin resource, run the `scheduler-k3s:autoscaling-auth:set` command with no metadata specified. Subsequent deploys will not include these resources.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:autoscaling-auth:set $APP $TRIGGER_TYPE
|
||||
```
|
||||
|
||||
##### Displaying an Authentication Resource report
|
||||
|
||||
To see a list of authentication resources managed by Dokku, run the `scheduler-k3s:autoscaling-auth:report` command.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:autoscaling-auth:report node-js-app
|
||||
```
|
||||
|
||||
```
|
||||
====> $APP autoscaling-auth report
|
||||
datadog: configured
|
||||
```
|
||||
|
||||
By default, the report will not display configured metadata - making it safe to include in Dokku report output. To include metadata and their values, add the `--include-metadata` flag:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:autoscaling-auth:report node-js-app --include-metadata
|
||||
```
|
||||
|
||||
```
|
||||
====> node-js-app autoscaling-auth report
|
||||
Datadog: configured
|
||||
Datadog apiKey: 1234567890
|
||||
Datadog appKey: asdfghjkl
|
||||
Datadog datadogSite: us5.datadoghq.com
|
||||
```
|
||||
|
||||
### Using kubectl remotely
|
||||
|
||||
> [!WARNING]
|
||||
@@ -273,6 +481,38 @@ By default, Dokku assumes that all it controls all actions on the cluster, and t
|
||||
dokku scheduler-k3s:show-kubeconfig
|
||||
```
|
||||
|
||||
### Interacting with an external Kubernetes cluster
|
||||
|
||||
While the k3s scheduler plugin is designed to work with a Dokku-managed k3s cluster, Dokku can be configured to interact with any Kubernetes cluster by setting the global `kubeconfig-path` to a path to a custom kubeconfig on the Dokku server. This property is only available at a global level.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global kubeconfig-path /path/to/custom/kubeconfig
|
||||
```
|
||||
|
||||
To set the default value, omit the value from the `scheduler-k3s:set` call:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global kubeconfig-path
|
||||
```
|
||||
|
||||
The default value for the `kubeconfig-path` is the k3s kubeconfig located at `/etc/rancher/k3s/k3s.yaml`.
|
||||
|
||||
### Customizing the Kubernetes context
|
||||
|
||||
When interacting with a custom Kubeconfig, the `kube-context` property can be set to specify a specific context within the kubeconfig to use. This property is available only at the global leve.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global kube-context lollipop
|
||||
```
|
||||
|
||||
To set the default value, omit the value from the `scheduler-k3s:set` call:
|
||||
|
||||
```shell
|
||||
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.
|
||||
|
||||
## Scheduler Interface
|
||||
|
||||
The following sections describe implemented and unimplemented scheduler functionality for the `k3s` scheduler.
|
||||
@@ -314,20 +554,12 @@ App logs for the `logs` command are fetched by Dokku from running containers via
|
||||
|
||||
### Supported Resource Management Properties
|
||||
|
||||
The `k3s` scheduler supports a minimal list of resource _limits_ and _reservations_. The following properties are supported:
|
||||
|
||||
#### Resource Limits
|
||||
|
||||
> [!NOTE]
|
||||
> Cron tasks retrieve resource limits based on the computed cron task ID. If unspecified, the default will be 1 CPU and 512m RAM.
|
||||
The `k3s` scheduler supports a minimal list of resource _limits_ and _reservations_:
|
||||
|
||||
- cpu: is specified in number of CPUs a process can access.
|
||||
- memory: should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes). Default unit is `m` (megabytes).
|
||||
- memory: should be specified with a suffix of `b` (bytes), `Ki` (kilobytes), `Mi` (megabytes), `Gi` (gigabytes). Default unit is `Mi` (megabytes).
|
||||
|
||||
#### Resource Reservations
|
||||
If unspecified for any task, the default reservation will be `.1` CPU and `128Mi` RAM, with no limit set for either CPU or RAM. This is to avoid issues with overscheduling pods on a cluster. To avoid issues, set more specific values for at least resource reservations. If unbounded utilization is desired, set CPU and Memory to `0m` and `0Mi`, respectively.
|
||||
|
||||
> [!NOTE]
|
||||
> Cron tasks retrieve resource reservations based on the computed cron task ID. If unspecified, the default will be 1 CPU and 512m RAM.
|
||||
|
||||
- cpu: is specified in number of CPUs a process can access.
|
||||
- memory: should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes). Default unit is `m` (megabytes).
|
||||
> Cron tasks retrieve resource limits based on the computed cron task ID.
|
||||
|
||||
@@ -170,6 +170,7 @@ A healthcheck entry takes the following properties:
|
||||
- `initialDelay`: (default: 0, unit: seconds) Number of seconds to wait after a container has started before triggering the healthcheck.
|
||||
- `name`: (default: autogenerated) The name of the healthcheck. If unspecified, it will be autogenerated from the rest of the healthcheck information.
|
||||
- `path`: (default: `/` - for http checks): An http path to check.
|
||||
- `port`: (default: `5000`): Port to run healthcheck against.
|
||||
- `timeout`: (default: `5` seconds): Number of seconds to wait before timing out a healthcheck.
|
||||
- `type`: (default: `""` - none): Type of the healthcheck. Options: liveness, readiness, startup.
|
||||
- `uptime`: (default: `""` - none): Amount of time the container must be alive before the container is considered healthy. Any restarts will cause this to check to fail, and this check does not respect retries.
|
||||
|
||||
@@ -10,7 +10,7 @@ When creating custom plugins:
|
||||
2. Check out the [list of triggers](/docs/development/plugin-triggers.md) the plugin can implement
|
||||
3. Upload the plugin to GitHub with a repository name following the `dokku-<name>` convention (e.g. `dokku-mariadb`)
|
||||
4. Edit [this page](/docs/community/plugins.md) and add a link to the plugin
|
||||
5. Subscribe to the [dokku development blog](http://progrium.com) to be notified about API changes and releases
|
||||
5. Subscribe to the [dokku development blog](https://dokku.com/blog/) to be notified about API changes and releases
|
||||
|
||||
### Compilable plugins (Golang, Java(?), C, etc.)
|
||||
|
||||
@@ -120,7 +120,7 @@ See the sample plugin below for an example.
|
||||
|
||||
### Namespace commands
|
||||
|
||||
All commands _should_ be namespaced. In cases where a core plugin is overriden, the plugin _may_ utilize the a namespace in use by the core, but generally this should be avoided to reduce confusion as to where the command is implemented.
|
||||
All commands _should_ be namespaced. In cases where a core plugin is overridden, the plugin _may_ utilize the a namespace in use by the core, but generally this should be avoided to reduce confusion as to where the command is implemented.
|
||||
|
||||
### Implement a proper catch-all command
|
||||
|
||||
|
||||
@@ -1627,7 +1627,7 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
### `post-container-create`
|
||||
|
||||
- Description: This trigger should be used to do stuff to containers after they are created but before they are started. They are explicitely for commands that may involve network traffic, and _not_ for commands that are self-contained, such as chown or tar.
|
||||
- Description: This trigger should be used to do stuff to containers after they are created but before they are started. They are explicitly for commands that may involve network traffic, and _not_ for commands that are self-contained, such as chown or tar.
|
||||
- Invoked by: `dokku run`, `dokku ps:rebuild`, `dokku deploy`
|
||||
- Arguments: "app|service" "$CONTAINER_ID" "$APP|$SERVICE" "$PHASE"
|
||||
|
||||
@@ -1934,6 +1934,9 @@ fi
|
||||
|
||||
### `pre-deploy`
|
||||
|
||||
> [!WARNING]
|
||||
> Deprecated, please use `pre-release-builder` instead
|
||||
|
||||
- Description: Allows the running of code before the app's processes are scaled up and after the docker images are prepared.
|
||||
- Invoked by: `dokku deploy`
|
||||
- Arguments: `$APP $IMAGE_TAG`
|
||||
@@ -2950,3 +2953,18 @@ main() {
|
||||
|
||||
main "$@"
|
||||
```
|
||||
|
||||
### `vector-template-source`
|
||||
|
||||
- Description: Retrieves an alternative template for the vector compose config
|
||||
- Invoked by: caddy-vhosts
|
||||
- Arguments:
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
@@ -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.33.2-2 (Mon Feb 22 23:20:37 CET 2016)"
|
||||
# wait for "==> build-arch: ==> Finished making: dokku 0.35.4-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 Jammy 22.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 Jammy 22.04, we only provide official installation support for that platform and the supported LTS releases of Ubuntu (currently 20.04, 22.04, and 24.04).
|
||||
|
||||
## Local Test Execution
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ sudo DOKKU_REPO=https://github.com/yourusername/dokku.git DOKKU_BRANCH=master ./
|
||||
|
||||
## Custom Herokuish build
|
||||
|
||||
Dokku ships with a pre-built version of version of the [Herokuish](https://github.com/gliderlabs/herokuish) component by default. If you want to build your own version you can specify that with an environment variable.
|
||||
Dokku ships with a pre-built version of the [Herokuish](https://github.com/gliderlabs/herokuish) component by default. If you want to build your own version you can specify that with an environment variable.
|
||||
|
||||
```shell
|
||||
git clone https://github.com/dokku/dokku.git
|
||||
|
||||
@@ -3,10 +3,6 @@
|
||||
As of 0.3.18, Dokku defaults to being installed via Debian package. While certain hosts may require extra work to get running, you may optionally wish to automate the installation of Dokku without the use of our `bootstrap.sh` Bash script. The following are the steps run by said script:
|
||||
|
||||
```shell
|
||||
# install prerequisites
|
||||
sudo apt-get update -qq >/dev/null
|
||||
sudo apt-get -qq -y --no-install-recommends install apt-transport-https
|
||||
|
||||
# install docker
|
||||
wget -nv -O - https://get.docker.com/ | sh
|
||||
|
||||
|
||||
@@ -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.
|
||||
@@ -18,5 +18,17 @@
|
||||
1. Simply add a checkmark next to the existing keys you'd like to add.
|
||||
7. Under **Finalize and create**, give your Droplet a hostname _(not required)_ and click **Create**.
|
||||
8. Once created, copy the IP address to your clipboard.
|
||||
9. In a browser, go to the IP address you copied above and fill out the presented form to complete configuration. _Failure to do so may allow others to reconfigure SSH access on your server._
|
||||
10. 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.
|
||||
9. In a terminal, ssh onto the server by running `ssh root@$SERVER_IP`, where `$SERVER_IP` is your server's IP address.
|
||||
10. Remove the default nginx site via `rm /etc/nginx/sites-enabled/default`
|
||||
11. If you added more than one key, use the `dokku ssh-keys:add` to add an ssh key to the dokku user:
|
||||
|
||||
```shell
|
||||
echo "$CONTENTS_OF_YOUR_PUBLIC_SSH_KEY_HERE" | dokku ssh-keys:add KEY_NAME
|
||||
```
|
||||
|
||||
12. Ensure your server has a correct global hostname via `dokku domains:set-global`
|
||||
|
||||
```shell
|
||||
# replace dokku.me with a hostname pointed at your server
|
||||
dokku domains:set-global dokku.me
|
||||
```
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
Pull the dokku/dokku image:
|
||||
|
||||
```shell
|
||||
docker pull dokku/dokku:0.33.2
|
||||
docker pull dokku/dokku:0.35.4
|
||||
```
|
||||
|
||||
Next, run the image.
|
||||
|
||||
```shell
|
||||
docker container run \
|
||||
docker container run -d \
|
||||
--env DOKKU_HOSTNAME=dokku.me \
|
||||
--env DOKKU_HOST_ROOT=/var/lib/dokku/home/dokku \
|
||||
--env DOKKU_LIB_HOST_ROOT=/var/lib/dokku/var/lib/dokku \
|
||||
@@ -19,7 +19,29 @@ docker container run \
|
||||
--publish 8443:443 \
|
||||
--volume /var/lib/dokku:/mnt/dokku \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
dokku/dokku:0.33.2
|
||||
dokku/dokku:0.35.4
|
||||
```
|
||||
|
||||
Alternatively, you can use `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
dokku:
|
||||
image: dokku/dokku:0.35.4
|
||||
container_name: dokku
|
||||
network_mode: bridge
|
||||
ports:
|
||||
- "3022:22"
|
||||
- "8080:80"
|
||||
- "8443:443"
|
||||
volumes:
|
||||
- "/var/lib/dokku:/mnt/dokku"
|
||||
- "/var/run/docker.sock:/var/run/docker.sock"
|
||||
environment:
|
||||
DOKKU_HOSTNAME: dokku.me
|
||||
DOKKU_HOST_ROOT: /var/lib/dokku/home/dokku
|
||||
DOKKU_LIB_HOST_ROOT: /var/lib/dokku/var/lib/dokku
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
The above command will start a new docker container that is ready when a message similar to `Runit started as PID 12345` appears.
|
||||
@@ -61,19 +83,25 @@ 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.33.2
|
||||
FROM dokku/dokku:0.35.4
|
||||
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
|
||||
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git redis
|
||||
```
|
||||
|
||||
## SSH Key Management
|
||||
|
||||
To initialize ssh-keys within the container, use `docker exec` to enter the container and run the appropriate ssh-keys commands.
|
||||
To initialize ssh-keys within the container, use `docker exec` to enter the container:
|
||||
|
||||
```shell
|
||||
docker exec -it dokku bash
|
||||
```
|
||||
|
||||
Next, run the appropriate ssh-keys commands:
|
||||
|
||||
```shell
|
||||
echo "$CONTENTS_OF_YOUR_PUBLIC_SSH_KEY_HERE" | dokku ssh-keys:add KEY_NAME
|
||||
```
|
||||
|
||||
Please see the [user management documentation](/docs/deployment/user-management.md) for more information.
|
||||
|
||||
## Pushing Applications
|
||||
@@ -86,4 +114,4 @@ Host dokku.docker
|
||||
Port 3022
|
||||
```
|
||||
|
||||
In the above example, the hostname `127.0.0.1` is being aliased to `dokku.docker`, while the port is being overriden to `3022`. All SSH commands - including git pushes - for the hostname `dokku.docker` will be transparently sent to `127.0.0.1:3022`.
|
||||
In the above example, the hostname `127.0.0.1` is being aliased to `dokku.docker`, while the port is being overridden to `3022`. All SSH commands - including git pushes - for the hostname `dokku.docker` will be transparently sent to `127.0.0.1:3022`.
|
||||
|
||||
@@ -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,7 +9,7 @@ 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)
|
||||
- [Ubuntu 20.04/22.04/24.04](https://www.ubuntu.com/download)
|
||||
- [Debian 10+ 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
|
||||
@@ -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.33.2/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.33.2 bash bootstrap.sh
|
||||
wget -NP . https://dokku.com/install/v0.35.4/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.35.4 bash bootstrap.sh
|
||||
```
|
||||
|
||||
The installation process takes about 5-10 minutes, depending upon internet connection speed.
|
||||
|
||||
@@ -18,6 +18,9 @@ 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)
|
||||
- [Upgrading to 0.31](/docs/appendices/0.31.0-migration-guide.md)
|
||||
- [Upgrading to 0.30](/docs/appendices/0.30.0-migration-guide.md)
|
||||
@@ -38,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
|
||||
@@ -67,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:
|
||||
|
||||
@@ -87,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:
|
||||
|
||||
@@ -125,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.
|
||||
|
||||
|
||||
134
docs/home.html
134
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.33.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.33.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.33.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.33.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.33.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.33.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.33.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.33.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.33.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.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.33.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon.ico">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/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.33.2/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/browserconfig.xml">
|
||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/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.33.2/docs/assets/style.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/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.33.2</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.35.4</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.33.2 bash bootstrap.sh</span>
|
||||
<span class="command">sudo DOKKU_TAG=v0.35.4 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.33.22" 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.33.2 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,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)"/>
|
||||
<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.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)"/>
|
||||
<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.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)"/>
|
||||
<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.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)"/>
|
||||
<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">
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
RUN 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:
|
||||
|
||||
@@ -49,110 +49,6 @@ The nginx server can be stopped via `nginx:stop`.
|
||||
dokku nginx:stop
|
||||
```
|
||||
|
||||
### Binding to specific addresses
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.19.2
|
||||
|
||||
> [!NOTE]
|
||||
> Changing this value globally or on a per-app basis will require rebuilding the nginx config via the `proxy:build-config` command.
|
||||
|
||||
By default, nginx will listen to all interfaces (`[::]` for IPv6, `0.0.0.0` for IPv4) when proxying requests to applications. This may be changed using the `bind-address-ipv4` and `bind-address-ipv6` properties. This is useful in cases where the proxying should be internal to a network or if there are multiple network interfaces that should respond with different content.
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app bind-address-ipv4 127.0.0.1
|
||||
dokku nginx:set node-js-app bind-address-ipv6 ::1
|
||||
```
|
||||
|
||||
This may be reverted by setting an empty bind address.
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app bind-address-ipv4
|
||||
dokku nginx:set node-js-app bind-address-ipv6
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
> Validation is not performed on either value.
|
||||
|
||||
Users with apps that contain a custom `nginx.conf.sigil` file will need to modify the files to respect the new `NGINX_BIND_ADDRESS_IPV4` and `NGINX_BIND_ADDRESS_IPV6` variables.
|
||||
|
||||
### HSTS Header
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.20.0
|
||||
|
||||
> [!NOTE]
|
||||
> Changing this value globally or on a per-app basis will require rebuilding the nginx config via the `proxy:build-config` command.
|
||||
|
||||
If SSL certificates are present, HSTS will be automatically enabled. It can be toggled via `nginx:set`:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app hsts true
|
||||
dokku nginx:set node-js-app hsts false
|
||||
```
|
||||
|
||||
The following options are also available via the `nginx:set` command:
|
||||
|
||||
- `hsts` (type: boolean, default: `true`): Enables or disables HSTS for your application.
|
||||
- `hsts-include-subdomains` (type: boolean, default: `true`): Tells the browser that the HSTS policy also applies to all subdomains of the current domain.
|
||||
- `hsts-max-age` (type: integer, default: `15724800`): Time in seconds to cache HSTS configuration.
|
||||
- `hsts-preload` (type: boolean, default: `false`): Tells most major web browsers to include the domain in their HSTS preload lists.
|
||||
|
||||
Beware that if you enable the header and a subsequent deploy of your application results in an HTTP deploy (for whatever reason), the way the header works means that a browser will not attempt to request the HTTP version of your site if the HTTPS version fails until the max-age is reached.
|
||||
|
||||
#### Globally disabling the HSTS Header
|
||||
|
||||
> [!NOTE]
|
||||
> Changing this value globally or on a per-app basis will require rebuilding the nginx config via the `proxy:build-config` command.
|
||||
|
||||
HSTS Header can be disabled for all apps by setting the `hsts` property to false after passing the `--global` flag to `nginx:set`.
|
||||
|
||||
```shell
|
||||
dokku nginx:set --global hsts false
|
||||
```
|
||||
|
||||
Once the HSTS setting is disabled globally, it can be re-enabled on a per-app basis by setting the `hsts` property as normal.
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app hsts true
|
||||
```
|
||||
|
||||
### Running behind another proxy — configuring `X-Forwarded-*` headers
|
||||
|
||||
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.
|
||||
|
||||
If you have another HTTP proxy sitting in between the end user and your server (for example, a load balancer, or a CDN), then the values of these headers will contain information about (e.g. the IP address of) the the closest proxy, and not the end user.
|
||||
|
||||
To fix this, assuming that the other proxy also passes `X-Forwarded-*` headers, which in turn contain information about the end user, you can tell Nginx include those values in the `X-Forwarded-*` headers that it sends to your application. You can do this via `nginx:set`, like so:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app x-forwarded-for-value '$http_x_forwarded_for'
|
||||
dokku nginx:set node-js-app x-forwarded-port-value '$http_x_forwarded_port'
|
||||
dokku nginx:set node-js-app x-forwarded-proto-value '$http_x_forwarded_proto'
|
||||
```
|
||||
|
||||
However, note that you should only do this if:
|
||||
|
||||
1. Requests to your website always go through a trusted proxy.
|
||||
2. That proxy is configured to send the aforementioned `X-Forwarded-*` headers.
|
||||
|
||||
Otherwise, if it's possible for clients to make HTTP requests directly against your server, bypassing the other proxy, or if the other proxy is not configured to set these headers, then a client can basically pass any arbitrary values for these headers (which your app then presumably reads) and thereby fake an IP address, for example.
|
||||
|
||||
There's also the `X-Forwarded-Ssl` header which a less common alternative to `X-Forwarded-Proto` — and because of that, isn't included in Dokku's default Nginx configuration.
|
||||
But you can tell Nginx to send this header as well, if necessary.
|
||||
|
||||
```shell
|
||||
# force-setting value to `on`
|
||||
dokku nginx:set node-js-app x-forwarded-ssl on
|
||||
|
||||
# force-setting value to `off`
|
||||
dokku nginx:set node-js-app x-forwarded-ssl off
|
||||
|
||||
# removing the value from nginx.conf (default)
|
||||
dokku nginx:set node-js-app x-forwarded-ssl
|
||||
```
|
||||
|
||||
### Checking access logs
|
||||
|
||||
> [!NOTE]
|
||||
@@ -184,130 +80,6 @@ You may also follow the logs by specifying the `-t` flag.
|
||||
dokku nginx:error-logs node-js-app -t
|
||||
```
|
||||
|
||||
### Changing log path
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.20.1
|
||||
|
||||
> [!NOTE]
|
||||
> Changing this value globally or on a per-app basis will require rebuilding the nginx config via the `proxy:build-config` command.
|
||||
|
||||
The path to where log files are stored can be changed by calling the `nginx:set` command with the following options:
|
||||
|
||||
- `access-log-path` (type: string, default: `${NGINX_LOG_ROOT}/${APP}-access.log`): Log path for nginx access logs
|
||||
- `error-log-path` (type: string, default: `${NGINX_LOG_ROOT}/${APP}-error.log`): Log path for nginx error logs
|
||||
|
||||
The defaults should not be changed without verifying that the paths will be writeable by nginx. However, this setting is useful for enabling or disabling logging by setting the values to `off`.
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app access-log-path off
|
||||
dokku nginx:set node-js-app error-log-path off
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app access-log-path
|
||||
dokku nginx:set node-js-app error-log-path
|
||||
```
|
||||
|
||||
In all cases, the nginx config must be regenerated after setting the above values.
|
||||
|
||||
### Changing log format
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.22.0
|
||||
|
||||
> [!NOTE]
|
||||
> Changing this value globally or on a per-app basis will require rebuilding the nginx config via the `proxy:build-config` command.
|
||||
|
||||
The format of the access log can be changed by calling the `nginx:set` command as follows:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app access-log-format custom-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.
|
||||
|
||||
```nginx
|
||||
# /etc/nginx/conf.d/00-log-formats.conf
|
||||
# escape=json was added in nginx 1.11.8
|
||||
log_format json_combined escape=json
|
||||
'{'
|
||||
'"time_local":"$time_local",'
|
||||
'"remote_addr":"$remote_addr",'
|
||||
'"remote_user":"$remote_user",'
|
||||
'"request":"$request",'
|
||||
'"status":"$status",'
|
||||
'"body_bytes_sent":"$body_bytes_sent",'
|
||||
'"request_time":"$request_time",'
|
||||
'"http_referrer":"$http_referer",'
|
||||
'"http_user_agent":"$http_user_agent"'
|
||||
'}';
|
||||
```
|
||||
|
||||
Next, the format should be set for the given app.
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app access-log-format json_combined
|
||||
```
|
||||
|
||||
Finally, a proxy rebuild will change the format as desired.
|
||||
|
||||
```shell
|
||||
dokku proxy:build-config node-js-app
|
||||
```
|
||||
|
||||
### Specifying a read timeout
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.21.0
|
||||
|
||||
> [!NOTE]
|
||||
> Changing this value globally or on a per-app basis will require rebuilding the nginx config via the `proxy:build-config` command.
|
||||
|
||||
When proxying requests to your applications, it may be useful to specify a proxy read timeout. This can be done via the `nginx:set` command as follows:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app proxy-read-timeout 120s
|
||||
```
|
||||
|
||||
The default value is `60s`, and all numeric values _must_ have a trailing time value specified (`s` for seconds, `m` for minutes).
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app proxy-read-timeout
|
||||
```
|
||||
|
||||
In all cases, the nginx config must be regenerated after setting the above value.
|
||||
|
||||
### Specifying a custom client_max_body_size
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.23.0
|
||||
|
||||
> [!NOTE]
|
||||
> Changing this value globally or on a per-app basis will require rebuilding the nginx config via the `proxy:build-config` command.
|
||||
|
||||
Users can override the default `client_max_body_size` value - which limits file uploads - via `nginx:set`. Changing this value will only apply to every `server` stanza of the default `nginx.conf.sigil`; users of custom `nginx.conf.sigil` files must update their templates to support the new value.
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app client-max-body-size 50m
|
||||
```
|
||||
|
||||
The default value is empty string, which will result in nginx falling back to any configured, higher-level defaults (or `1m` if unconfigued; all numerical values _must_ have a size unit specified (`k` for kilobytes, `m` for megabytes).
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app client-max-body-size
|
||||
```
|
||||
|
||||
In all cases, the nginx config must be regenerated after setting the above value.
|
||||
|
||||
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.
|
||||
|
||||
### Showing the nginx config
|
||||
|
||||
For debugging purposes, it may be useful to show the nginx config. This can be achieved via the `nginx:show-config` command.
|
||||
@@ -341,31 +113,100 @@ The `--clean` flag may also be specified for a given app:
|
||||
dokku nginx:validate-config node-js-app --clean
|
||||
```
|
||||
|
||||
### Custom Error Pages
|
||||
|
||||
By default, Dokku provides custom error pages for the following three categories of errors:
|
||||
|
||||
- 4xx: For all non-404 errors with a 4xx response code.
|
||||
- 404: For "404 Not Found" errors.
|
||||
- 5xx: For all 5xx error responses
|
||||
|
||||
These are provided as an alternative to the generic Nginx error page, are shared for _all_ applications, and their contents are located on disk at `/var/lib/dokku/data/nginx-vhosts/dokku-errors`. To customize them for a specific app, create a custom `nginx.conf.sigil` as described above and change the paths to point elsewhere.
|
||||
|
||||
### Default site
|
||||
|
||||
By default, Dokku will route any received request with an unknown HOST header value to the lexicographically first site in the nginx config stack. This means that accessing the dokku server via its IP address or a bogus domain name may return a seemingly random website.
|
||||
|
||||
> [!WARNING]
|
||||
> Some versions of Nginx may create a default site when installed. This site is simply a static page which says "Welcome to Nginx", and if this default site is enabled, Nginx will not route any requests with an unknown HOST header to Dokku. If you want Dokku to receive all requests, run the following commands:
|
||||
>
|
||||
> ```
|
||||
> rm /etc/nginx/sites-enabled/default
|
||||
> dokku nginx:stop
|
||||
> dokku nginx:start
|
||||
> ```
|
||||
|
||||
If services should only be accessed via their domain name, you may want to disable the default site by adding the following configuration to the global nginx configuration.
|
||||
|
||||
Create the file at `/etc/nginx/conf.d/00-default-vhost.conf`:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
# If services hosted by dokku are available via HTTPS, it is recommended
|
||||
# to also uncomment the following section.
|
||||
#
|
||||
# Please note that in order to let this work, you need an SSL certificate. However
|
||||
# it does not need to be valid. Users of Debian-based distributions can install the
|
||||
# `ssl-cert` package with `sudo apt install ssl-cert` to automatically generate
|
||||
# a self-signed certificate that is stored at `/etc/ssl/certs/ssl-cert-snakeoil.pem`.
|
||||
#
|
||||
#listen 443 ssl;
|
||||
#listen [::]:443 ssl;
|
||||
#ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
|
||||
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
|
||||
|
||||
server_name _;
|
||||
access_log off;
|
||||
return 444;
|
||||
}
|
||||
```
|
||||
|
||||
Make sure to reload nginx after creating this file by running `systemctl reload nginx.service`.
|
||||
|
||||
This will catch all unknown HOST header values and close the connection without responding. You can replace the `return 444;` with `return 410;` which will cause nginx to respond with an error page.
|
||||
|
||||
The configuration file must be loaded before `/etc/nginx/conf.d/dokku.conf`, so it can not be arranged as a vhost in `/etc/nginx/sites-enabled` that is only processed afterwards.
|
||||
|
||||
Alternatively, you may push an app to your Dokku host with a name like "00-default". As long as it lists first in `ls /home/dokku/*/nginx.conf | head`, it will be used as the default nginx vhost.
|
||||
|
||||
### Customizing the nginx configuration
|
||||
|
||||
> [!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 overriden 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
|
||||
```
|
||||
|
||||
@@ -445,64 +286,189 @@ location / {
|
||||
|
||||
Please adjust the `Procfile` and `nginx.conf` file as appropriate.
|
||||
|
||||
### Custom Error Pages
|
||||
### Setting Properties for the nginx config
|
||||
|
||||
By default, Dokku provides custom error pages for the following three categories of errors:
|
||||
The nginx plugin exposes a variety of properties configurable via the `nginx:set` command. The properties are used to configure the generated `nginx.conf` file from the `nginx.conf.sigil` template. The value precedence is app-specific, then global, and finally the Dokku default.
|
||||
|
||||
- 4xx: For all non-404 errors with a 4xx response code.
|
||||
- 404: For "404 Not Found" errors.
|
||||
- 5xx: For all 5xx error responses
|
||||
The nginx:set command takes an app name or the `--global` flag.
|
||||
|
||||
These are provided as an alternative to the generic Nginx error page, are shared for _all_ applications, and their contents are located on disk at `/var/lib/dokku/data/nginx-vhosts/dokku-errors`. To customize them for a specific app, create a custom `nginx.conf.sigil` as described above and change the paths to point elsewhere.
|
||||
```shell
|
||||
# set a property for the node-js-app
|
||||
dokku nginx:set node-js-app property-name some-value
|
||||
|
||||
### Default site
|
||||
|
||||
By default, Dokku will route any received request with an unknown HOST header value to the lexicographically first site in the nginx config stack. This means that accessing the dokku server via its IP address or a bogus domain name may return a seemingly random website.
|
||||
|
||||
> [!WARNING]
|
||||
> some versions of Nginx may create a default site when installed. This site is simply a static page which says "Welcome to Nginx", and if this default site is enabled, Nginx will not route any requests with an unknown HOST header to Dokku. If you want Dokku to receive all requests, run the following commands:
|
||||
>
|
||||
> ```
|
||||
> rm /etc/nginx/sites-enabled/default
|
||||
> dokku nginx:stop
|
||||
> dokku nginx:start
|
||||
> ```
|
||||
|
||||
If services should only be accessed via their domain name, you may want to disable the default site by adding the following configuration to the global nginx configuration.
|
||||
|
||||
Create the file at `/etc/nginx/conf.d/00-default-vhost.conf`:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
|
||||
# If services hosted by dokku are available via HTTPS, it is recommended
|
||||
# to also uncomment the following section.
|
||||
#
|
||||
# Please note that in order to let this work, you need an SSL certificate. However
|
||||
# it does not need to be valid. Users of Debian-based distributions can install the
|
||||
# `ssl-cert` package with `sudo apt install ssl-cert` to automatically generate
|
||||
# a self-signed certificate that is stored at `/etc/ssl/certs/ssl-cert-snakeoil.pem`.
|
||||
#
|
||||
#listen 443 ssl;
|
||||
#listen [::]:443 ssl;
|
||||
#ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
|
||||
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
|
||||
|
||||
server_name _;
|
||||
access_log off;
|
||||
return 444;
|
||||
}
|
||||
# set a property globally
|
||||
dokku nginx:set --global property-name some-value
|
||||
```
|
||||
|
||||
Make sure to reload nginx after creating this file by running `systemctl reload nginx.service`.
|
||||
Additionally, setting an empty value will result in reverting the value back to it's default. For app-specific values, this means that Dokku will revert to the globally specified (or global default) value.
|
||||
|
||||
This will catch all unknown HOST header values and close the connection without responding. You can replace the `return 444;` with `return 410;` which will cause nginx to respond with an error page.
|
||||
```shell
|
||||
# default the value back to the global value for node-js-app
|
||||
dokku nginx:set node-js-app property-name
|
||||
|
||||
The configuration file must be loaded before `/etc/nginx/conf.d/dokku.conf`, so it can not be arranged as a vhost in `/etc/nginx/sites-enabled` that is only processed afterwards.
|
||||
# use the dokku default as the global value
|
||||
dokku nginx:set --global property-name
|
||||
```
|
||||
|
||||
Changing these value globally or on a per-app basis will require rebuilding the nginx config via the `proxy:build-config` command.
|
||||
|
||||
> [!WARNING]
|
||||
> Validation is not performed against the values, and they are used as is within Dokku.
|
||||
|
||||
| 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) |
|
||||
| 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 |
|
||||
| nginx-conf-sigil-path | `nginx.conf.sigil` | string | Path in the repository to the `nginx.conf.sigil` file |
|
||||
| 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-read-timeout | `60s` | string | Timeout (with units) for reading response from your backend server |
|
||||
| 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-ssl | empty string | string | Less commonly used alternative to `X-Forwarded-Proto` (valid values: `on` or `off`) |
|
||||
|
||||
#### Binding to specific addresses
|
||||
|
||||
> [!NOTE]
|
||||
> Users with apps that contain a custom `nginx.conf.sigil` file will need to modify the files to respect the new `NGINX_BIND_ADDRESS_IPV4` and `NGINX_BIND_ADDRESS_IPV6` variables.
|
||||
|
||||
Properties:
|
||||
|
||||
- `bind-address-ipv4`
|
||||
- `bind-address-ipv6`
|
||||
|
||||
This is useful in cases where the proxying should be internal to a network or if there are multiple network interfaces that should respond with different content.
|
||||
|
||||
#### HSTS Header
|
||||
|
||||
> [!WARNING]
|
||||
> if you enable the header and a subsequent deploy of your application results in an HTTP deploy (for whatever reason), the way the header works means that a browser will not attempt to request the HTTP version of your site if the HTTPS version fails until the max-age is reached.
|
||||
|
||||
Properties:
|
||||
|
||||
- `hsts`
|
||||
- `hsts-include-subdomains`
|
||||
- `hsts-max-age`
|
||||
- `hsts-preload`
|
||||
|
||||
If SSL certificates are present, HSTS will be automatically enabled.
|
||||
|
||||
#### Running behind another proxy — configuring `X-Forwarded-*` headers
|
||||
|
||||
> [!WARNING]
|
||||
> These values should only be modified if there is an intermediate Load balancer or CDN between the user and the Dokku server hosting your application.
|
||||
|
||||
Properties:
|
||||
|
||||
- `x-forwarded-for-value`
|
||||
- `x-forwarded-port-value`
|
||||
- `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.
|
||||
|
||||
If you have another HTTP proxy sitting in between the end user and your server (for example, a load balancer, or a CDN), then the values of these headers will contain information about (e.g. the IP address of) the closest proxy, and not the end user.
|
||||
|
||||
To fix this, assuming that the other proxy also passes `X-Forwarded-*` headers, which in turn contain information about the end user, you can tell Nginx include those values in the `X-Forwarded-*` headers that it sends to your application. You can do this via `nginx:set`, like so:
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app x-forwarded-for-value '$http_x_forwarded_for'
|
||||
dokku nginx:set node-js-app x-forwarded-port-value '$http_x_forwarded_port'
|
||||
dokku nginx:set node-js-app x-forwarded-proto-value '$http_x_forwarded_proto'
|
||||
```
|
||||
|
||||
However, note that you should only do this if:
|
||||
|
||||
1. Requests to your website always go through a trusted proxy.
|
||||
2. That proxy is configured to send the aforementioned `X-Forwarded-*` headers.
|
||||
|
||||
Otherwise, if it's possible for clients to make HTTP requests directly against your server, bypassing the other proxy, or if the other proxy is not configured to set these headers, then a client can basically pass any arbitrary values for these headers (which your app then presumably reads) and thereby fake an IP address, for example.
|
||||
|
||||
There's also the `X-Forwarded-Ssl` header which a less common alternative to `X-Forwarded-Proto` — and because of that, isn't included in Dokku's default Nginx configuration. It can be turned `on` if need be:
|
||||
|
||||
```shell
|
||||
# force-setting value to `on`
|
||||
dokku nginx:set node-js-app x-forwarded-ssl on
|
||||
```
|
||||
|
||||
#### Changing log path
|
||||
|
||||
> [!WARNING]
|
||||
> The defaults should not be changed without verifying that the paths will be writeable by nginx.
|
||||
|
||||
Properties:
|
||||
|
||||
- `access-log-path`
|
||||
- `error-log-path`
|
||||
|
||||
These setting can be useful for enabling or disabling logging by setting the values to `off`.
|
||||
|
||||
```shell
|
||||
dokku nginx:set node-js-app access-log-path off
|
||||
dokku nginx:set node-js-app error-log-path off
|
||||
```
|
||||
|
||||
#### Changing log format
|
||||
|
||||
Properties:
|
||||
|
||||
- `acccess-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.
|
||||
|
||||
```nginx
|
||||
# /etc/nginx/conf.d/00-log-formats.conf
|
||||
# escape=json was added in nginx 1.11.8
|
||||
log_format json_combined escape=json
|
||||
'{'
|
||||
'"time_local":"$time_local",'
|
||||
'"remote_addr":"$remote_addr",'
|
||||
'"remote_user":"$remote_user",'
|
||||
'"request":"$request",'
|
||||
'"status":"$status",'
|
||||
'"body_bytes_sent":"$body_bytes_sent",'
|
||||
'"request_time":"$request_time",'
|
||||
'"http_referrer":"$http_referer",'
|
||||
'"http_user_agent":"$http_user_agent"'
|
||||
'}';
|
||||
```
|
||||
|
||||
#### Specifying a read timeout
|
||||
|
||||
> [!NOTE]
|
||||
> All numeric values _must_ have a trailing time value specified (`s` for seconds, `m` for minutes).
|
||||
|
||||
Properties:
|
||||
|
||||
- `proxy-read-timeout`
|
||||
|
||||
#### Specifying a custom client_max_body_size
|
||||
|
||||
> [!NOTE]
|
||||
> All numerical values _must_ have a trailing size unit specified (`k` for kilobytes, `m` for megabytes).
|
||||
|
||||
Properties:
|
||||
|
||||
- `client-max-body-size`
|
||||
|
||||
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.
|
||||
|
||||
Alternatively, you may push an app to your Dokku host with a name like "00-default". As long as it lists first in `ls /home/dokku/*/nginx.conf | head`, it will be used as the default nginx vhost.
|
||||
|
||||
## Other
|
||||
|
||||
|
||||
@@ -148,6 +148,50 @@ dokku openresty:set --global letsencrypt-server https://acme-staging-v02.api.let
|
||||
|
||||
After enabling, the OpenResty container will need to be restarted and apps will need to be rebuilt to retrieve certificates from the new server.
|
||||
|
||||
#### Limiting letsencrypt to certain domains
|
||||
|
||||
> [!WARNING]
|
||||
> Changing this value may cause OpenResty to fail to start if the value is not valid. Caution should be exercised when changing this value from the defaults.
|
||||
|
||||
In cases where your server's IP may have invalid domains pointing at it, limiting letsencrypt to certain allowed domains may be desirable to reduce spam requests on the Letsencrypt servers. The default is to allow all domains to have certificates retrieved, but this can be limited by specifying the `allowed-letsencrypt-domains-func-base64` global property.
|
||||
|
||||
The default internal value for `allowed-letsencrypt-domains-func-base64` is the base64 representation of `return true`, and is meant to be the body of a lua function that return a boolean value.
|
||||
|
||||
```shell
|
||||
value="$(echo 'return true' | base64 -w 0)"
|
||||
dokku openresty:set --global allowed-letsencrypt-domains-func-base64 $value
|
||||
```
|
||||
|
||||
As this is a global value, once changed, OpenResty should be stopped and started again for the value to take effect:
|
||||
|
||||
```shell
|
||||
dokku openresty:stop
|
||||
dokku openresty:start
|
||||
```
|
||||
|
||||
A more complex example would be to limit provisioning of certificates to domains in a specific list. The body of the lua function has access to a variable `domain`, and we can use it like so:
|
||||
|
||||
```shell
|
||||
body='allowed_domains = {"domain.com", "extra-domain.com"}
|
||||
|
||||
for index, value in ipairs(allowed_domains) do
|
||||
if value == domain then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
return false
|
||||
'
|
||||
value="$(echo "$body" | base64 -w 0)"
|
||||
dokku openresty:set --global allowed-letsencrypt-domains-func-base64 $value
|
||||
```
|
||||
|
||||
To reset the value to the default, simply specify a blank value prior to restarting OpenResty:
|
||||
|
||||
```shell
|
||||
dokku openresty:set --global allowed-letsencrypt-domains-func-base64
|
||||
```
|
||||
|
||||
## Displaying OpenResty reports for an app
|
||||
|
||||
You can get a report about the app's OpenResty config using the `openresty:report` command:
|
||||
|
||||
@@ -67,6 +67,17 @@ dokku traefik:stop
|
||||
|
||||
The Traefik container will be stopped and removed from the system. If the container is not running, this command will do nothing.
|
||||
|
||||
### Changing the Traefik entrypoint names
|
||||
|
||||
When you use a self-hosted Traefik instance, your entrypoint names might be different from the default `http` and `https`
|
||||
|
||||
Use `traefik:set` to set both `http-entry-point` and `https-entry-point` to custom values
|
||||
|
||||
```shell
|
||||
dokku traefik:set --global http-entry-point web
|
||||
dokku traefik:set --global https-entry-point websecure
|
||||
```
|
||||
|
||||
### Showing the Traefik compose config
|
||||
|
||||
For debugging purposes, it may be useful to show the Traefik compose config. This can be achieved via the `traefik:show-config` command.
|
||||
@@ -116,16 +127,6 @@ dokku traefik:set --global log-level DEBUG
|
||||
|
||||
After modifying, the Traefik container will need to be restarted.
|
||||
|
||||
### Setting rule priority
|
||||
|
||||
By default, app deployments will result in the newer traefik rules using a higher priority in order to have any newer rules respected by Traefik. Rule priorities will always increase according to the current unix timestamp. The priority may be fixed by setting the app-level `priority` property:
|
||||
|
||||
```shell
|
||||
dokku traefik:set node-js-app priority 12345
|
||||
```
|
||||
|
||||
After modifying, the app container will need to be recreated via a `ps:rebuild` or an app deployment.
|
||||
|
||||
### SSL Configuration
|
||||
|
||||
The traefik plugin only supports automatic ssl certificates from it's letsencrypt integration. Managed certificates provided by the `certs` plugin are ignored.
|
||||
@@ -159,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.
|
||||
@@ -172,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.
|
||||
|
||||
@@ -12,7 +12,7 @@ proxy:report [<app>] [<flag>] # Displays a proxy report fo
|
||||
proxy:set [<app>|--global] <proxy-type> # Set proxy type for app
|
||||
```
|
||||
|
||||
In Dokku 0.5.0, port proxying was decoupled from the `nginx-vhosts` plugin into the proxy plugin. Dokku 0.6.0 introduced the ability to map host ports to specific container ports. In the future this will allow other proxy software - such as HAProxy or Caddy - to be used in place of nginx.
|
||||
In Dokku 0.5.0, port proxying was decoupled from the `nginx-vhosts` plugin into the proxy plugin. Dokku 0.6.0 introduced the ability to map host ports to specific container ports. This allows other proxy software - such as HAProxy or Caddy - to be used in place of nginx.
|
||||
|
||||
## Usage
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -27,7 +30,7 @@ The `container-type` argument can be one either:
|
||||
- If your app has a `Procfile`, the name of a process type in your `Procfile`.
|
||||
- If your app has no `Procfile`, the word `web`.
|
||||
|
||||
If the specified process type is scaled up to more than one container, then the first container will be automatically selected. this can be overriden by specifying an integer index denoting the desired container, where the first container's index is `1`.
|
||||
If the specified process type is scaled up to more than one container, then the first container will be automatically selected. this can be overridden by specifying an integer index denoting the desired container, where the first container's index is `1`.
|
||||
|
||||
Additionally, the `enter` command can be executed with no `<container-type>`. If only a single `<container-type>` is defined in the app's Procfile, executing `enter` will drop the terminal into the only running container. This behavior is not supported when specifying a custom command; as described below.
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
```
|
||||
run [-e|--env KEY=VALUE] [--no-tty] <app> <cmd> # Run a command in a new container using the current app image
|
||||
run:detached [-e|-env KEY=VALUE] [--no-tty] <app> <cmd> # Run a command in a new detached container using the current app image
|
||||
run:detached [-e|-env KEY=VALUE] [--force-tty] <app> <cmd> # Run a command in a new detached container using the current app image
|
||||
run:list [--format json|stdout] [<app>] # List all run containers for an app
|
||||
run:logs <app|--container CONTAINER> [-h] [-t] [-n num] [-q] # Display recent log output for run containers
|
||||
run:stop <app|--container CONTAINER> # Stops all run containers for an app or a specified run container
|
||||
@@ -73,6 +73,12 @@ dokku run:detached node-js-app ls -lah
|
||||
# returns the ID of the new container
|
||||
```
|
||||
|
||||
To start a detached container with a tty, specify the `--force-tty` flag. Containers will still exit upon command termination, but can be attached to as long as they are running.
|
||||
|
||||
```shell
|
||||
dokku run:detached --force-tty node-js-app bash
|
||||
```
|
||||
|
||||
### Displaying one-off container logs
|
||||
|
||||
You can easily get logs of all one-off containers for an app using the `logs` command:
|
||||
|
||||
@@ -153,14 +153,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
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
> New as of 0.23.0
|
||||
|
||||
```
|
||||
cron:list <app> [--format json|stdout] # List scheduled cron tasks for an app
|
||||
cron:report [<app>] [<flag>] # Display report about an app
|
||||
cron:run <app> <cron_id> [--detach] # Run a cron task on the fly
|
||||
cron:list <app> [--format json|stdout] # List scheduled cron tasks for an app
|
||||
cron:report [<app>] [<flag>] # Display report about an app
|
||||
cron:run <app> <cron_id> [--detach] # Run a cron task on the fly
|
||||
cron:set [--global|<app>] <key> <value> # Set or clear a cron property for an app
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -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.33.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.33.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.33.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.33.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.33.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.33.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.33.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.33.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.33.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.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.33.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon.ico">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/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.33.2/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/browserconfig.xml">
|
||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/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.33.2/docs/assets/style.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.35.4/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>
|
||||
|
||||
23
dokku
23
dokku
@@ -39,8 +39,8 @@ DOKKU_DISTRO=$(
|
||||
# configuration can ever override the DOCKER_BIN value
|
||||
export DOCKER_BIN=${DOCKER_BIN:="docker"}
|
||||
|
||||
export DOKKU_IMAGE=${DOKKU_IMAGE:="gliderlabs/herokuish:latest-22"}
|
||||
export DOKKU_CNB_BUILDER=${DOKKU_CNB_BUILDER:="heroku/builder:22"}
|
||||
export DOKKU_IMAGE=${DOKKU_IMAGE:="gliderlabs/herokuish:latest-24"}
|
||||
export DOKKU_CNB_BUILDER=${DOKKU_CNB_BUILDER:="heroku/builder:24"}
|
||||
export DOKKU_LIB_ROOT=${DOKKU_LIB_PATH:="/var/lib/dokku"}
|
||||
|
||||
export PLUGIN_PATH=${PLUGIN_PATH:="$DOKKU_LIB_ROOT/plugins"}
|
||||
@@ -55,7 +55,7 @@ export DOKKU_SYSTEM_USER=${DOKKU_SYSTEM_USER:="dokku"}
|
||||
export DOKKU_API_VERSION=1
|
||||
export DOKKU_NOT_IMPLEMENTED_EXIT=10
|
||||
export DOKKU_VALID_EXIT=0
|
||||
export DOKKU_PID="$BASHPID"
|
||||
export DOKKU_PID="${DOKKU_PID:=$$}"
|
||||
|
||||
export DOKKU_LOGS_DIR=${DOKKU_LOGS_DIR:="/var/log/dokku"}
|
||||
export DOKKU_LOGS_HOST_DIR=${DOKKU_LOGS_HOST_DIR:=$DOKKU_LOGS_DIR}
|
||||
@@ -88,8 +88,8 @@ fi
|
||||
! has_tty && DOKKU_QUIET_OUTPUT=1
|
||||
|
||||
if [[ $(id -un) != "dokku" ]]; then
|
||||
unset TMP TMPDIR TEMP TEMPDIR
|
||||
if [[ ! $1 =~ plugin:* ]] && [[ $1 != "ssh-keys:add" ]] && [[ $1 != "ssh-keys:remove" ]] && [[ $1 != "scheduler-k3s:initialize" ]] && [[ $1 != "scheduler-k3s:uninstall" ]]; then
|
||||
unset DOKKU_PID TMP TMPDIR TEMP TEMPDIR
|
||||
export SSH_USER=$(id -un)
|
||||
sudo -u dokku -E -H "$0" "$@"
|
||||
exit $?
|
||||
@@ -106,15 +106,20 @@ fi
|
||||
|
||||
if [[ -n "$SSH_ORIGINAL_COMMAND" ]]; then
|
||||
export -n SSH_ORIGINAL_COMMAND
|
||||
if [[ $1 =~ config-* ]] || [[ $1 =~ docker-options* ]]; then
|
||||
xargs $0 <<<$SSH_ORIGINAL_COMMAND
|
||||
exit $?
|
||||
else
|
||||
exit_code=0
|
||||
if [[ $1 =~ git-* ]] || [[ $1 =~ git:* ]]; then
|
||||
set -f
|
||||
$0 $SSH_ORIGINAL_COMMAND
|
||||
exit_code=$?
|
||||
set +f
|
||||
else
|
||||
readarray -t -O "${#ssh_arg_array[@]}" ssh_arg_array < <(printf '%s' "$SSH_ORIGINAL_COMMAND" | xargs -n 1)
|
||||
set -f
|
||||
$0 "${ssh_arg_array[@]}"
|
||||
exit_code=$?
|
||||
set +f
|
||||
exit $?
|
||||
fi
|
||||
exit $exit_code
|
||||
fi
|
||||
|
||||
if ! dokku_auth "$@"; then
|
||||
|
||||
@@ -8,8 +8,8 @@ markdown_extensions:
|
||||
- md_in_html
|
||||
- pymdownx.details
|
||||
- pymdownx.emoji:
|
||||
emoji_generator: !!python/name:materialx.emoji.to_svg
|
||||
emoji_index: !!python/name:materialx.emoji.twemoji
|
||||
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
||||
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
||||
- pymdownx.highlight:
|
||||
anchor_linenums: true
|
||||
- pymdownx.inlinehilite
|
||||
@@ -47,6 +47,8 @@ extra:
|
||||
link: https://dokku.dpdcart.com/cart/add?product_id=217344&method_id=236878
|
||||
version:
|
||||
provider: mike
|
||||
hooks:
|
||||
- docs/_build/hooks.py
|
||||
|
||||
theme:
|
||||
custom_dir: docs/_overrides
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core standard plugin"
|
||||
version = "0.33.2"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -17,6 +17,10 @@ cmd-report() {
|
||||
dokku_log_info1 "uname: $(uname -a)"
|
||||
dokku_log_info1 "memory: "
|
||||
free -m | sed "s/^/ /"
|
||||
dokku_log_info1 "disk utilization: "
|
||||
df -h --type btrfs --type ext4 --type ext3 --type ext2 --type vfat --type iso9660 | sed "s/^/ /"
|
||||
dokku_log_info1 "disk inode utilization: "
|
||||
df -hi --type btrfs --type ext4 --type ext3 --type ext2 --type vfat --type iso9660 | sed "s/^/ /"
|
||||
dokku_log_info1 "docker version: "
|
||||
"$DOCKER_BIN" version | sed "s/^/ /"
|
||||
dokku_log_info1 "docker daemon info: "
|
||||
|
||||
@@ -56,16 +56,12 @@ EOF
|
||||
cat >"$DOKKU_LOGROTATE_FILE" <<EOF
|
||||
$DOKKU_LOGS_DIR/*.log {
|
||||
daily
|
||||
rotate 7
|
||||
missingok
|
||||
notifempty
|
||||
su syslog dokku
|
||||
rotate 7
|
||||
compress
|
||||
delaycompress
|
||||
postrotate
|
||||
reload rsyslog &>/dev/null || true
|
||||
endscript
|
||||
create 664 syslog dokku
|
||||
notifempty
|
||||
copytruncate
|
||||
}
|
||||
EOF
|
||||
|
||||
@@ -76,8 +72,39 @@ EOF
|
||||
flag_rsyslog_needs_restart=y
|
||||
fi
|
||||
|
||||
if [[ -f "$DOKKU_RSYSLOG_FILTER" && "$flag_rsyslog_needs_restart" == "y" ]]; then
|
||||
service rsyslog restart
|
||||
local systemctl_path=/bin/systemctl
|
||||
if [[ -x /usr/bin/systemctl ]]; then
|
||||
systemctl_path=/usr/bin/systemctl
|
||||
fi
|
||||
|
||||
if [[ -f "$DOKKU_RSYSLOG_FILTER" ]] && [[ "$flag_rsyslog_needs_restart" == "y" ]]; then
|
||||
case "$DOKKU_DISTRO" in
|
||||
debian | raspbian)
|
||||
if [[ -x "$systemctl_path" ]]; then
|
||||
systemctl restart rsyslog
|
||||
else
|
||||
/usr/sbin/invoke-rc.d rsyslog restart
|
||||
fi
|
||||
;;
|
||||
ubuntu)
|
||||
if [[ "$DOKKU_INIT_SYSTEM" == "sv" ]]; then
|
||||
# avoid failing runit init calls on install
|
||||
# the runit binaries are not yet available during dockerfile building
|
||||
true
|
||||
elif [[ -x "$systemctl_path" ]]; then
|
||||
systemctl restart rsyslog
|
||||
elif [[ -x /usr/bin/sv ]]; then
|
||||
# avoid failing runit init calls on install
|
||||
# the runit binaries are not yet available during dockerfile building
|
||||
true
|
||||
else
|
||||
invoke-rc.d rsyslog restart
|
||||
fi
|
||||
;;
|
||||
arch)
|
||||
systemctl restart rsyslog
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
[[ ! "$DOKKU_EVENTS" ]] || dokku_log_plugn_trigger_call "$(basename "$0")" "$@"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku core events logging plugin"
|
||||
version = "0.33.2"
|
||||
version = "0.35.4"
|
||||
[plugin.config]
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
SUBCOMMANDS = subcommands/report subcommands/set
|
||||
TRIGGERS = triggers/app-json-process-deploy-parallelism triggers/app-json-get-content triggers/core-post-deploy triggers/core-post-extract triggers/install triggers/post-app-clone-setup triggers/post-app-rename triggers/post-app-rename-setup triggers/post-create triggers/post-delete triggers/post-deploy triggers/pre-deploy triggers/report
|
||||
TRIGGERS = triggers/app-json-process-deploy-parallelism triggers/app-json-get-content triggers/core-post-deploy triggers/core-post-extract triggers/install triggers/post-app-clone-setup triggers/post-app-rename triggers/post-app-rename-setup triggers/post-create triggers/post-delete triggers/post-deploy triggers/post-release-builder triggers/pre-release-builder triggers/report
|
||||
BUILD = commands subcommands triggers
|
||||
PLUGIN_NAME = app-json
|
||||
|
||||
goenv:
|
||||
go env
|
||||
|
||||
include ../../common.mk
|
||||
|
||||
@@ -3,10 +3,12 @@ package appjson
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"math"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/dokku/dokku/plugins/common"
|
||||
"k8s.io/utils/ptr"
|
||||
)
|
||||
|
||||
var (
|
||||
@@ -59,6 +61,9 @@ type CronCommand struct {
|
||||
|
||||
// Formation is a struct that represents the scale for a process from an app.json file
|
||||
type Formation struct {
|
||||
// Autoscaling is whether or not to enable autoscaling
|
||||
Autoscaling *FormationAutoscaling `json:"autoscaling"`
|
||||
|
||||
// Quantity is the number of processes to run
|
||||
Quantity *int `json:"quantity"`
|
||||
|
||||
@@ -66,6 +71,36 @@ type Formation struct {
|
||||
MaxParallel *int `json:"max_parallel"`
|
||||
}
|
||||
|
||||
// FormationAutoscaling is a struct that represents the autoscaling configuration for a process from an app.json file
|
||||
type FormationAutoscaling struct {
|
||||
// CoolDownSeconds is the number of seconds to wait before scaling again
|
||||
CooldownPeriodSeconds *int `json:"cooldown_period_seconds,omitempty"`
|
||||
|
||||
// MaxQuantity is the maximum number of processes to run
|
||||
MaxQuantity *int `json:"max_quantity,omitempty"`
|
||||
|
||||
// MinQuantity is the minimum number of processes to run
|
||||
MinQuantity *int `json:"min_quantity,omitempty"`
|
||||
|
||||
// PollingIntervalSeconds is the number of seconds to wait between autoscaling checks
|
||||
PollingIntervalSeconds *int `json:"polling_interval_seconds,omitempty"`
|
||||
|
||||
// Triggers is a list of triggers to use for autoscaling
|
||||
Triggers []FormationAutoscalingTrigger `json:"triggers,omitempty"`
|
||||
}
|
||||
|
||||
// FormationAutoscalingTrigger is a struct that represents a single autoscaling trigger from an app.json file
|
||||
type FormationAutoscalingTrigger struct {
|
||||
// Name is the name of the trigger
|
||||
Name string `json:"name,omitempty"`
|
||||
|
||||
// Type is the type of the trigger
|
||||
Type string `json:"type,omitempty"`
|
||||
|
||||
// Metadata is a map of metadata to use for the trigger
|
||||
Metadata map[string]string `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
// Healthcheck is a struct that represents a single healthcheck from an app.json file
|
||||
type Healthcheck struct {
|
||||
// Attempts is the number of attempts to make before considering a healthcheck failed
|
||||
@@ -181,3 +216,43 @@ func GetAppJSON(appName string) (AppJSON, error) {
|
||||
|
||||
return appJSON, nil
|
||||
}
|
||||
|
||||
func GetAutoscalingConfig(appName string, processType string, replicas int) (FormationAutoscaling, bool, error) {
|
||||
appJSON, err := GetAppJSON(appName)
|
||||
if err != nil {
|
||||
return FormationAutoscaling{}, false, err
|
||||
}
|
||||
|
||||
formation, ok := appJSON.Formation[processType]
|
||||
if !ok {
|
||||
return FormationAutoscaling{}, false, nil
|
||||
}
|
||||
|
||||
if formation.Autoscaling == nil {
|
||||
return FormationAutoscaling{}, false, nil
|
||||
}
|
||||
|
||||
autoscaling := *formation.Autoscaling
|
||||
if autoscaling.CooldownPeriodSeconds == nil {
|
||||
autoscaling.CooldownPeriodSeconds = ptr.To(300)
|
||||
}
|
||||
|
||||
if autoscaling.MinQuantity == nil {
|
||||
autoscaling.MinQuantity = ptr.To(replicas)
|
||||
}
|
||||
|
||||
if autoscaling.MaxQuantity == nil {
|
||||
defaultValue := math.Max(float64(replicas), float64(*autoscaling.MinQuantity))
|
||||
autoscaling.MaxQuantity = ptr.To(int(defaultValue))
|
||||
}
|
||||
|
||||
if autoscaling.PollingIntervalSeconds == nil {
|
||||
autoscaling.PollingIntervalSeconds = ptr.To(30)
|
||||
}
|
||||
|
||||
if len(autoscaling.Triggers) == 0 {
|
||||
return FormationAutoscaling{}, false, nil
|
||||
}
|
||||
|
||||
return autoscaling, true, nil
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user