Compare commits
1952 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4d896b22d0 | ||
|
|
b31fab115b | ||
|
|
1de6b4ad42 | ||
|
|
16ee66b552 | ||
|
|
e40197cd37 | ||
|
|
0e3f17d920 | ||
|
|
7293893d99 | ||
|
|
08ecc92630 | ||
|
|
b27d6b791d | ||
|
|
a6b6b08e3e | ||
|
|
49813a2a54 | ||
|
|
b4e906285b | ||
|
|
8f979ea0e7 | ||
|
|
1430c2a13e | ||
|
|
8243df4ade | ||
|
|
0e5db7db5c | ||
|
|
9c1677556e | ||
|
|
bd98ff5299 | ||
|
|
ca5c887b8a | ||
|
|
aee59f623c | ||
|
|
f6b97100ea | ||
|
|
0c8cfe9a48 | ||
|
|
0ef276d40b | ||
|
|
553cc232b2 | ||
|
|
afd2952cb1 | ||
|
|
638d50127e | ||
|
|
58bfd70118 | ||
|
|
63fc11a4b9 | ||
|
|
106b2c20f1 | ||
|
|
67962ad527 | ||
|
|
d94bc733c9 | ||
|
|
a21ee6f216 | ||
|
|
7a93b11bdd | ||
|
|
78f0c53871 | ||
|
|
54c1ccd9bb | ||
|
|
318c21996a | ||
|
|
6b67d5c59b | ||
|
|
56566d1c05 | ||
|
|
421863f4ac | ||
|
|
38505006e8 | ||
|
|
a05b79e2a9 | ||
|
|
1c0ce250dc | ||
|
|
a2d399c104 | ||
|
|
9f8058dd78 | ||
|
|
507916f57b | ||
|
|
6f095271e1 | ||
|
|
44b87ffe8d | ||
|
|
992b023bc8 | ||
|
|
a6d65c821f | ||
|
|
2bd4272424 | ||
|
|
99a1e2ee33 | ||
|
|
d5ea97f7b0 | ||
|
|
6359404ef3 | ||
|
|
ba9eee8271 | ||
|
|
691e454185 | ||
|
|
d05925f6f1 | ||
|
|
d4bfd0b7fa | ||
|
|
ffd0a81311 | ||
|
|
a677e05b1f | ||
|
|
575fbb3560 | ||
|
|
f33d3d852f | ||
|
|
f38d8cfadb | ||
|
|
e394776c3b | ||
|
|
2bad1e4acd | ||
|
|
75945ee0d7 | ||
|
|
9d002ccab5 | ||
|
|
5df11a0a1f | ||
|
|
a40c42019b | ||
|
|
d4783685d1 | ||
|
|
d212fd44c7 | ||
|
|
d9073272df | ||
|
|
ff8ccd2801 | ||
|
|
3f5a022970 | ||
|
|
18be8f4fa9 | ||
|
|
e397604841 | ||
|
|
01570012c5 | ||
|
|
acd981d50e | ||
|
|
3a52c7d0a8 | ||
|
|
003f6a5bd8 | ||
|
|
edf9653ebf | ||
|
|
12cc31427b | ||
|
|
4eafd3b5b7 | ||
|
|
e93175b37e | ||
|
|
0828db4bb7 | ||
|
|
4da1fea274 | ||
|
|
a9127e3abd | ||
|
|
531bb20519 | ||
|
|
9411c4ddc1 | ||
|
|
406a82de29 | ||
|
|
9bda9e721f | ||
|
|
3b35656ae9 | ||
|
|
f1763bdaf5 | ||
|
|
397c8f6d15 | ||
|
|
364eac374d | ||
|
|
93cf9cc118 | ||
|
|
50b2836e52 | ||
|
|
9b75cc39b1 | ||
|
|
6325dd6d7b | ||
|
|
2a702175b5 | ||
|
|
210128f5f2 | ||
|
|
ae8eaa7e63 | ||
|
|
11c2497b31 | ||
|
|
03e90ed2a0 | ||
|
|
c3d103e46c | ||
|
|
a292e41015 | ||
|
|
58046ea6dc | ||
|
|
8cb5989220 | ||
|
|
97714e9c22 | ||
|
|
43f25c218f | ||
|
|
d9e5182399 | ||
|
|
9aa471c1fd | ||
|
|
6dbb34ec0b | ||
|
|
080ed43232 | ||
|
|
3f70728451 | ||
|
|
00411decf5 | ||
|
|
ebfcf24e53 | ||
|
|
d5b886b2b5 | ||
|
|
dc8424d8a5 | ||
|
|
c6bd80aca6 | ||
|
|
42a92eb654 | ||
|
|
bacbc6d90d | ||
|
|
3f8c868ab8 | ||
|
|
c56110b3a7 | ||
|
|
679a399df3 | ||
|
|
eb82d958f4 | ||
|
|
3162fa5b9a | ||
|
|
8c2731b328 | ||
|
|
c95cb526be | ||
|
|
983115c827 | ||
|
|
b8f32f6ea4 | ||
|
|
20be426125 | ||
|
|
f38bc64119 | ||
|
|
f1e3c0764c | ||
|
|
d72c183d9e | ||
|
|
f61e6e60f4 | ||
|
|
8ba6ce94fc | ||
|
|
4cc2dc7844 | ||
|
|
379ada07d9 | ||
|
|
d49f9b89c2 | ||
|
|
3638399726 | ||
|
|
4929272c87 | ||
|
|
d9603af08a | ||
|
|
e30b579de5 | ||
|
|
2aea999326 | ||
|
|
00ce3932d0 | ||
|
|
7461b83972 | ||
|
|
426e6b746a | ||
|
|
66a30b0547 | ||
|
|
f99e3a6c9c | ||
|
|
3c7985cd82 | ||
|
|
e42df29a79 | ||
|
|
4a357e9896 | ||
|
|
c885205b91 | ||
|
|
1674d02af9 | ||
|
|
889d237669 | ||
|
|
68c5407ed4 | ||
|
|
e62212f810 | ||
|
|
551eae0c5b | ||
|
|
f2abbad5b7 | ||
|
|
e5196a2f03 | ||
|
|
3c6ace7d68 | ||
|
|
b4fbf7189e | ||
|
|
9af8ec2acc | ||
|
|
5e85038d9c | ||
|
|
b9025f6137 | ||
|
|
795e4f0f34 | ||
|
|
b21b58ed38 | ||
|
|
0840976265 | ||
|
|
300a276ed0 | ||
|
|
6b27f424db | ||
|
|
9f33459266 | ||
|
|
ee467e6793 | ||
|
|
cba345025c | ||
|
|
837c3db042 | ||
|
|
8d4fc1f883 | ||
|
|
97f2dc81c7 | ||
|
|
770d150c7c | ||
|
|
e134c314ea | ||
|
|
48fd2b3862 | ||
|
|
b4dd50731a | ||
|
|
24d8083fad | ||
|
|
593a4c8170 | ||
|
|
12dbbda68c | ||
|
|
e967ba86b5 | ||
|
|
791f53ab47 | ||
|
|
82cab643a8 | ||
|
|
b598af67b9 | ||
|
|
3915d25d84 | ||
|
|
c52e947df1 | ||
|
|
5614a4c702 | ||
|
|
a2f37699a2 | ||
|
|
87a33ae739 | ||
|
|
72cb743a61 | ||
|
|
4d812b343b | ||
|
|
7f6fc4081c | ||
|
|
baaf6b2296 | ||
|
|
f88c427a41 | ||
|
|
34985adb43 | ||
|
|
6757759b15 | ||
|
|
d3687cf7f4 | ||
|
|
47bf471698 | ||
|
|
78f1794373 | ||
|
|
4f5fa3294c | ||
|
|
c571049714 | ||
|
|
8202bd37d4 | ||
|
|
f4b946e32d | ||
|
|
ff1acd09f5 | ||
|
|
b95cc79a42 | ||
|
|
7e68b65103 | ||
|
|
55c8a58686 | ||
|
|
43a5be6ece | ||
|
|
88b1b18494 | ||
|
|
0ea265f832 | ||
|
|
229fe1d167 | ||
|
|
e88df23fdb | ||
|
|
f897dc0034 | ||
|
|
e16979fcdb | ||
|
|
447e716da2 | ||
|
|
ac77e7ad5c | ||
|
|
823115b125 | ||
|
|
ee600cc376 | ||
|
|
68a62e9f00 | ||
|
|
528746cf6c | ||
|
|
69096c864e | ||
|
|
0033a52e28 | ||
|
|
416222b20a | ||
|
|
cb4ac3353e | ||
|
|
2362232fe2 | ||
|
|
66eff6f15e | ||
|
|
c7c22d8392 | ||
|
|
8afe8d5f13 | ||
|
|
933a174dfd | ||
|
|
9d711cbb44 | ||
|
|
efd25cfb45 | ||
|
|
959c93b95b | ||
|
|
de428a814c | ||
|
|
69934f7caf | ||
|
|
c5cf82d96b | ||
|
|
29c8afeb35 | ||
|
|
ca03ea72f5 | ||
|
|
f40bcc37aa | ||
|
|
3aca35df88 | ||
|
|
50b59cba7f | ||
|
|
a5875f4326 | ||
|
|
74899b580d | ||
|
|
44918d22ab | ||
|
|
57b9f19ba9 | ||
|
|
1d3276a1d7 | ||
|
|
a7a4098a89 | ||
|
|
0119155232 | ||
|
|
9a53d9b8cf | ||
|
|
65e0fb9037 | ||
|
|
e234401178 | ||
|
|
66894bc0c5 | ||
|
|
4b0c8b3d59 | ||
|
|
0c79a2c2fc | ||
|
|
d440b4614d | ||
|
|
929b8444e4 | ||
|
|
85afbe51bc | ||
|
|
fc9a0aeefd | ||
|
|
3dde9853ca | ||
|
|
107e4e911b | ||
|
|
5d4378c585 | ||
|
|
f2dad60d7b | ||
|
|
29c80d840e | ||
|
|
a4040181fb | ||
|
|
6151e7ee07 | ||
|
|
137a91153e | ||
|
|
51a81a6161 | ||
|
|
143094590a | ||
|
|
859791a18e | ||
|
|
efb024eec1 | ||
|
|
4db5d58e6e | ||
|
|
0becf57eb6 | ||
|
|
90b71776e3 | ||
|
|
2f94b45e74 | ||
|
|
d24ff5d017 | ||
|
|
e89697435a | ||
|
|
103315330f | ||
|
|
5b069a99ac | ||
|
|
4c1401dccd | ||
|
|
290508fe30 | ||
|
|
68f15894fd | ||
|
|
21f7127a6b | ||
|
|
26deba5906 | ||
|
|
b9c961ecf0 | ||
|
|
5246c20036 | ||
|
|
60d5c40980 | ||
|
|
48e120c54c | ||
|
|
ab7c4098c2 | ||
|
|
74ea2f7c2e | ||
|
|
c7cbebece5 | ||
|
|
19eb94d62a | ||
|
|
7797bf4f1b | ||
|
|
1ffc5a4875 | ||
|
|
2699f51f76 | ||
|
|
f8c846471f | ||
|
|
17b9b83d86 | ||
|
|
dab661abe1 | ||
|
|
e80755aad0 | ||
|
|
c69e51f433 | ||
|
|
a3d4b45754 | ||
|
|
f4f708b9ab | ||
|
|
baa066d8ad | ||
|
|
8467fee7d9 | ||
|
|
b3659f8629 | ||
|
|
42e7f35c3a | ||
|
|
3cbf46212e | ||
|
|
2e5e07cd51 | ||
|
|
d6afc2313c | ||
|
|
ce384fb0c4 | ||
|
|
b6dae3e64d | ||
|
|
477cc89485 | ||
|
|
25069e909a | ||
|
|
9ebeaf32a5 | ||
|
|
9839f5c7dd | ||
|
|
e8bc402f76 | ||
|
|
462a913c01 | ||
|
|
5acb9eebde | ||
|
|
b84bae6422 | ||
|
|
369e675d89 | ||
|
|
74e1014c78 | ||
|
|
55429ce474 | ||
|
|
b4450e6994 | ||
|
|
6d99130f67 | ||
|
|
a6bb96b119 | ||
|
|
34a58a638c | ||
|
|
0092c28e74 | ||
|
|
51f3a3c1e3 | ||
|
|
5d8a61628f | ||
|
|
4fd889ffa5 | ||
|
|
c987311921 | ||
|
|
40afedd485 | ||
|
|
b9c6fcdaa7 | ||
|
|
058d09977c | ||
|
|
5f43e85d33 | ||
|
|
78ccf6c857 | ||
|
|
daac4c5554 | ||
|
|
a7d59c2cce | ||
|
|
9acfcd93fe | ||
|
|
5064058581 | ||
|
|
183f2ca50c | ||
|
|
0861c033b1 | ||
|
|
f6e4951762 | ||
|
|
faffbbb374 | ||
|
|
4aaa84020c | ||
|
|
39c75c6867 | ||
|
|
250560ac0a | ||
|
|
963d5b8781 | ||
|
|
d38f84be02 | ||
|
|
12d7cde3d9 | ||
|
|
76634676a9 | ||
|
|
3b87b5655f | ||
|
|
6f6b620707 | ||
|
|
ae943b5d73 | ||
|
|
1d2723cb8a | ||
|
|
92f17786f9 | ||
|
|
f69feef8a1 | ||
|
|
9f33623e49 | ||
|
|
dc6c791b69 | ||
|
|
c7a16fec87 | ||
|
|
920604039b | ||
|
|
f26ba58593 | ||
|
|
591aed5ad5 | ||
|
|
8c93275023 | ||
|
|
ee8712c05d | ||
|
|
9ae48607ce | ||
|
|
61ab420896 | ||
|
|
23d5354e8b | ||
|
|
0a79f05ada | ||
|
|
eb18a565ae | ||
|
|
3e52ea9ec6 | ||
|
|
438c395970 | ||
|
|
5f6258989e | ||
|
|
1c6927b25e | ||
|
|
7e748a1cf3 | ||
|
|
7adeee7086 | ||
|
|
8b9b658951 | ||
|
|
408417fe2e | ||
|
|
ef798780c6 | ||
|
|
9cfa4acf57 | ||
|
|
bcfff18db9 | ||
|
|
a1b6d05568 | ||
|
|
f90a4061c0 | ||
|
|
fa0c9663cf | ||
|
|
0fd4f24f1e | ||
|
|
4637b95a1b | ||
|
|
6b12524db0 | ||
|
|
1252651f38 | ||
|
|
bd0ee3c073 | ||
|
|
db9c8efc2e | ||
|
|
4a60663af8 | ||
|
|
7d1dd9fa80 | ||
|
|
0713f7a217 | ||
|
|
966fd809f2 | ||
|
|
a1749d26e0 | ||
|
|
bbd919a730 | ||
|
|
ba89420142 | ||
|
|
837be622bc | ||
|
|
8beb2cdcbf | ||
|
|
75dabd9347 | ||
|
|
51aaa9fcac | ||
|
|
ae85dff049 | ||
|
|
de0f25fdea | ||
|
|
ceaaadc105 | ||
|
|
bd7266c85c | ||
|
|
c539fabebc | ||
|
|
20be1a458d | ||
|
|
3ab5aff4c3 | ||
|
|
8fdc33b11a | ||
|
|
b440d6ea79 | ||
|
|
191aae5ff5 | ||
|
|
0cecd6061a | ||
|
|
f9fda93ba9 | ||
|
|
e0464c6525 | ||
|
|
0fc7768960 | ||
|
|
79ea869aa8 | ||
|
|
5631d1eeaf | ||
|
|
f155eae135 | ||
|
|
704e9fffd1 | ||
|
|
849eca85ec | ||
|
|
b4b4be9282 | ||
|
|
8a15b9f560 | ||
|
|
54d01b8851 | ||
|
|
e46df8beea | ||
|
|
65dbe32e69 | ||
|
|
5efa641d55 | ||
|
|
ff4af54920 | ||
|
|
4fd1f658a5 | ||
|
|
fa4e711d46 | ||
|
|
b6c793d637 | ||
|
|
ad8ece9ad3 | ||
|
|
8fa67ea607 | ||
|
|
97080a397a | ||
|
|
4852cb501e | ||
|
|
b39c1ea6b2 | ||
|
|
d656c4ce62 | ||
|
|
b03062a880 | ||
|
|
215104f096 | ||
|
|
85d4a058b8 | ||
|
|
6952ecd3b3 | ||
|
|
63892ed74a | ||
|
|
03c25dae55 | ||
|
|
1d75e9dbbe | ||
|
|
345ad6e0d0 | ||
|
|
bf7e5a7312 | ||
|
|
7345bda611 | ||
|
|
ca32172e1d | ||
|
|
aa5c365e93 | ||
|
|
52e4e90819 | ||
|
|
f1be90b74b | ||
|
|
6e7936a074 | ||
|
|
8eb0f04eaf | ||
|
|
d0fd6ac0a1 | ||
|
|
90b29ff6e2 | ||
|
|
9363f3d865 | ||
|
|
a2c2be8f5e | ||
|
|
b6680e0495 | ||
|
|
11f694e182 | ||
|
|
b6d2a7764b | ||
|
|
975f3411eb | ||
|
|
d881a897a6 | ||
|
|
a3570b3ca2 | ||
|
|
43e70d6bdb | ||
|
|
e7718a11b6 | ||
|
|
485bb7a699 | ||
|
|
69fde612b5 | ||
|
|
bfc486743d | ||
|
|
a9334bca8a | ||
|
|
9704d3ef09 | ||
|
|
781721026e | ||
|
|
0d560af740 | ||
|
|
11a3babcee | ||
|
|
dba9793968 | ||
|
|
2f6c0ed1e6 | ||
|
|
68529c087a | ||
|
|
ae99f491fa | ||
|
|
9182b272f4 | ||
|
|
865063300f | ||
|
|
1e879cf4f7 | ||
|
|
64e457e6db | ||
|
|
0e39bc502b | ||
|
|
d22f45885a | ||
|
|
dfc19cc069 | ||
|
|
7cd283364d | ||
|
|
54edcdb587 | ||
|
|
c6b5bc07c5 | ||
|
|
53f4ec3e9d | ||
|
|
bc8f20837e | ||
|
|
61c6e276b6 | ||
|
|
25bff83df9 | ||
|
|
d058712cb3 | ||
|
|
b876d1f989 | ||
|
|
d01ed8901d | ||
|
|
64ff78d22f | ||
|
|
7d2f316745 | ||
|
|
ce7d9a1efd | ||
|
|
1fa72e39f6 | ||
|
|
10f6b7d0a1 | ||
|
|
880c9e4ff7 | ||
|
|
8ccab3d57d | ||
|
|
68d5b5c986 | ||
|
|
3f12ce2e8d | ||
|
|
fd61fdd2ab | ||
|
|
9c41bed78b | ||
|
|
13eb377b1d | ||
|
|
b36a7b9764 | ||
|
|
4c0a3bcedf | ||
|
|
d4484d0373 | ||
|
|
2b0f2fc014 | ||
|
|
d9c520216a | ||
|
|
7d5e0868f4 | ||
|
|
86ce579680 | ||
|
|
7104d203bd | ||
|
|
32cd56faa5 | ||
|
|
360cbcf8b9 | ||
|
|
dd61cf9e8d | ||
|
|
b8e55331e1 | ||
|
|
0a3f7262a4 | ||
|
|
434a111976 | ||
|
|
cfd7b84c5e | ||
|
|
4593547e35 | ||
|
|
ef2d014ed6 | ||
|
|
882ca8781b | ||
|
|
5737286ac5 | ||
|
|
390a2254a0 | ||
|
|
5d5d56c560 | ||
|
|
cfc25bc9da | ||
|
|
62099db5fe | ||
|
|
2381069096 | ||
|
|
637221f450 | ||
|
|
7f14bb22b0 | ||
|
|
a3b99c5d0e | ||
|
|
17f71e1269 | ||
|
|
f4cf0e15b9 | ||
|
|
3705b5f847 | ||
|
|
ac4f576951 | ||
|
|
b790fd745a | ||
|
|
c8d7fb0aed | ||
|
|
5d4ac8179a | ||
|
|
097da0436e | ||
|
|
b7b5fa4f3c | ||
|
|
cd70c5279f | ||
|
|
86be96ad24 | ||
|
|
a95f077496 | ||
|
|
bf6c784b91 | ||
|
|
1cc6c1bc3e | ||
|
|
b75c7f3b8c | ||
|
|
6525f147c6 | ||
|
|
11bf30d744 | ||
|
|
2aabb209d9 | ||
|
|
bd03e45860 | ||
|
|
f4d2437922 | ||
|
|
8b5f134946 | ||
|
|
3f0cc989d0 | ||
|
|
ed0832370d | ||
|
|
a55d5a10e0 | ||
|
|
07695e9aac | ||
|
|
e28dd15881 | ||
|
|
3421d1082c | ||
|
|
bfb424dc09 | ||
|
|
fe47ebd906 | ||
|
|
f2e421daba | ||
|
|
6ec9bc800d | ||
|
|
b759230411 | ||
|
|
82829ab84c | ||
|
|
94eb2d0d8b | ||
|
|
54b7ab616a | ||
|
|
b0c2912453 | ||
|
|
3eeb9be292 | ||
|
|
c44d729831 | ||
|
|
e5280dbe34 | ||
|
|
64f4314df3 | ||
|
|
dc35a7876c | ||
|
|
a82c79d5b5 | ||
|
|
d3054c4908 | ||
|
|
9ea08636d4 | ||
|
|
33e559adf6 | ||
|
|
2aa319a81a | ||
|
|
2f196e5c9c | ||
|
|
38426ba304 | ||
|
|
38beed755b | ||
|
|
6bc410204e | ||
|
|
abcc7f00e1 | ||
|
|
0690265f71 | ||
|
|
cdb2d35adb | ||
|
|
3deee63036 | ||
|
|
bef36c3b7c | ||
|
|
12e6c71fb7 | ||
|
|
a05ef80d64 | ||
|
|
9887134a4e | ||
|
|
38a21b8c2f | ||
|
|
e8dc3c650a | ||
|
|
38db727e2f | ||
|
|
de6f998fbc | ||
|
|
2138a882a0 | ||
|
|
063750948d | ||
|
|
51cdcab328 | ||
|
|
db0ba7ad89 | ||
|
|
2597ec2c3d | ||
|
|
b3bbb30a6b | ||
|
|
0a56782780 | ||
|
|
201da01ae7 | ||
|
|
abf62bdf1f | ||
|
|
1b5332cd45 | ||
|
|
083cf3ac90 | ||
|
|
bdf87e32e8 | ||
|
|
410f1b3d23 | ||
|
|
e57a141b36 | ||
|
|
9b8faf2b27 | ||
|
|
1ae63ebe01 | ||
|
|
548e891004 | ||
|
|
9df8b7c25e | ||
|
|
95b237c3c7 | ||
|
|
0a0368864d | ||
|
|
203af51f02 | ||
|
|
98e8a9bd67 | ||
|
|
29cf81c45e | ||
|
|
aff910c85a | ||
|
|
4ac363cdb2 | ||
|
|
f011631c67 | ||
|
|
d26b5de742 | ||
|
|
a4078e97bd | ||
|
|
dc959d6a41 | ||
|
|
61bab89189 | ||
|
|
3a0d0c182c | ||
|
|
19f37b537a | ||
|
|
9e44195694 | ||
|
|
f45ad26429 | ||
|
|
86351887f4 | ||
|
|
8f99cd5f2b | ||
|
|
dc67a5cb5b | ||
|
|
e971ca3686 | ||
|
|
46e22ba573 | ||
|
|
f1aba77b1b | ||
|
|
05e6de4fe2 | ||
|
|
7e108de502 | ||
|
|
074de26cbd | ||
|
|
05637fa64b | ||
|
|
ebf20e9236 | ||
|
|
35d7597a25 | ||
|
|
f91b7154d4 | ||
|
|
fdbdbd50fc | ||
|
|
9ffa564abd | ||
|
|
a9df9cfd86 | ||
|
|
d226b02a49 | ||
|
|
fa9b5308cd | ||
|
|
60d8a667af | ||
|
|
328aa3779c | ||
|
|
b1b43f487c | ||
|
|
344cb39a44 | ||
|
|
bcefa92f30 | ||
|
|
245263d2ad | ||
|
|
dd7589323e | ||
|
|
4aed599d8c | ||
|
|
cd275138f3 | ||
|
|
476cc6045f | ||
|
|
553378085f | ||
|
|
2958f906e4 | ||
|
|
68f909b91d | ||
|
|
78bde7f817 | ||
|
|
e7964ee99d | ||
|
|
8f44a57158 | ||
|
|
d33393d3fd | ||
|
|
7595351b1d | ||
|
|
3edddac0c1 | ||
|
|
0a86ffe01b | ||
|
|
563365b712 | ||
|
|
b6fdd4511c | ||
|
|
b24035c80a | ||
|
|
58c6b137b0 | ||
|
|
fd6e56cc5f | ||
|
|
d0ffd7d9f9 | ||
|
|
272327af89 | ||
|
|
e83ba595aa | ||
|
|
04917b72d4 | ||
|
|
e0617b209d | ||
|
|
1b4e02eb62 | ||
|
|
5ae6c1c845 | ||
|
|
e034421ea9 | ||
|
|
1cbaabdda0 | ||
|
|
577f46153f | ||
|
|
3116880b75 | ||
|
|
5961306813 | ||
|
|
acf2c854d2 | ||
|
|
bf3b2d396b | ||
|
|
3c6796bd7b | ||
|
|
22c3d34877 | ||
|
|
b151192394 | ||
|
|
fb405c64ab | ||
|
|
3826f40c6f | ||
|
|
0156cffe0f | ||
|
|
a19741aba9 | ||
|
|
85eca2167b | ||
|
|
431e43ac6d | ||
|
|
936706e880 | ||
|
|
1ecf975b53 | ||
|
|
7859145409 | ||
|
|
77694de6ff | ||
|
|
83de73ccdb | ||
|
|
d8938ebf77 | ||
|
|
2d4039ab69 | ||
|
|
e584e336f8 | ||
|
|
27b5fd93fd | ||
|
|
249df86dfd | ||
|
|
ff01c3df7b | ||
|
|
2c30c03ef7 | ||
|
|
93f12c59e6 | ||
|
|
3cc29ff016 | ||
|
|
b336e3633d | ||
|
|
4a891f74bd | ||
|
|
27dbae3703 | ||
|
|
f7800adb68 | ||
|
|
c472c2a3c7 | ||
|
|
1b95e01ea3 | ||
|
|
6da9be2d65 | ||
|
|
fd2fb6c605 | ||
|
|
04b2643b4f | ||
|
|
c4d700c1b0 | ||
|
|
2bcfea9b2b | ||
|
|
8b07e92391 | ||
|
|
a2ac21130a | ||
|
|
ea6adbbf56 | ||
|
|
b11c72d0ae | ||
|
|
77970a6b0d | ||
|
|
6a0701fa65 | ||
|
|
a062e283fe | ||
|
|
624acb8e18 | ||
|
|
67311264d7 | ||
|
|
b97086a8bd | ||
|
|
ce0da53f86 | ||
|
|
1a27cdd0ea | ||
|
|
7b45131486 | ||
|
|
06de81b61b | ||
|
|
a331d27945 | ||
|
|
926176bbb6 | ||
|
|
5cd86d23e6 | ||
|
|
8e178f5895 | ||
|
|
9496b9cfaf | ||
|
|
6fc2d42fe0 | ||
|
|
1eb41f32dc | ||
|
|
bc75bffed2 | ||
|
|
944d808bc6 | ||
|
|
885178eed5 | ||
|
|
7e37f9dc79 | ||
|
|
7cd077a79b | ||
|
|
7c2df65514 | ||
|
|
2324cb888b | ||
|
|
4ae9cca6f1 | ||
|
|
ed851fe399 | ||
|
|
776013b0f4 | ||
|
|
6f0039ebf1 | ||
|
|
8d0c35f133 | ||
|
|
bc61d106e4 | ||
|
|
d0208b0ecc | ||
|
|
5df1d77c04 | ||
|
|
29dc0b5980 | ||
|
|
a4983f8d7d | ||
|
|
ecf852567c | ||
|
|
f9f931b2b6 | ||
|
|
024715fbf1 | ||
|
|
73be6989ff | ||
|
|
67003ed469 | ||
|
|
2758b3cc47 | ||
|
|
36da77a2ff | ||
|
|
b663f71878 | ||
|
|
398a78b2f6 | ||
|
|
2dea993804 | ||
|
|
7b0d3b14bc | ||
|
|
0d6199d0cb | ||
|
|
56d65bfaba | ||
|
|
d83978760e | ||
|
|
3e08a71a95 | ||
|
|
5ca09b0081 | ||
|
|
5e1f177d1c | ||
|
|
86a6b2e246 | ||
|
|
3a16724fbe | ||
|
|
5d1a3fb079 | ||
|
|
f0bf7aa0b6 | ||
|
|
4942ebaec1 | ||
|
|
9beab4d50d | ||
|
|
758d9f8a83 | ||
|
|
dd45bebc3e | ||
|
|
0263d37d43 | ||
|
|
d0b87936db | ||
|
|
0f4b5d4305 | ||
|
|
c0eb12f572 | ||
|
|
cc395b54dd | ||
|
|
80f35370ab | ||
|
|
98e7f467b7 | ||
|
|
d3ae9360ce | ||
|
|
b44ccae796 | ||
|
|
1060189d78 | ||
|
|
8eb8760a46 | ||
|
|
1486c5e170 | ||
|
|
10b31fcd4a | ||
|
|
82f3613ed7 | ||
|
|
3354effff0 | ||
|
|
3557de3485 | ||
|
|
5c3eea3ccb | ||
|
|
220443fc99 | ||
|
|
47f46fd930 | ||
|
|
bf6da2d971 | ||
|
|
ff5970e1ac | ||
|
|
343e19fcc7 | ||
|
|
6d38d0c04d | ||
|
|
a0eb35f989 | ||
|
|
603717eaa4 | ||
|
|
ec84e66722 | ||
|
|
df7194667e | ||
|
|
eeb686b4fe | ||
|
|
3869395513 | ||
|
|
0306a4a018 | ||
|
|
094ddfec46 | ||
|
|
2151dbecd6 | ||
|
|
c8775fb10b | ||
|
|
a85777ff02 | ||
|
|
918431f075 | ||
|
|
a24ed084b1 | ||
|
|
1c851d7b17 | ||
|
|
4a19bfebc4 | ||
|
|
034c139777 | ||
|
|
67f60c0859 | ||
|
|
8ad62e204a | ||
|
|
070485eb08 | ||
|
|
194678c7ba | ||
|
|
ca30bd4d7b | ||
|
|
6ce10b5be6 | ||
|
|
41ac56e54b | ||
|
|
6b8127ae84 | ||
|
|
f2e14cdddc | ||
|
|
3ae19a8364 | ||
|
|
6c4a0cbb34 | ||
|
|
71324ba5c1 | ||
|
|
69c3c62577 | ||
|
|
3cf05b40de | ||
|
|
40f9d9a318 | ||
|
|
4644c594f0 | ||
|
|
06cf2ebecf | ||
|
|
77825342f5 | ||
|
|
9ff17a93c1 | ||
|
|
85c857bbe0 | ||
|
|
6806007060 | ||
|
|
693bca5709 | ||
|
|
2a88463919 | ||
|
|
be63a22d2f | ||
|
|
f86d6975ad | ||
|
|
fd0ca02038 | ||
|
|
863566f1a0 | ||
|
|
74c1d25692 | ||
|
|
a633502675 | ||
|
|
ceacae003a | ||
|
|
bc4226990f | ||
|
|
e0470b7641 | ||
|
|
919916ea23 | ||
|
|
e137178765 | ||
|
|
112b77bb01 | ||
|
|
50d7ec3d29 | ||
|
|
ad9490efcb | ||
|
|
e45977e763 | ||
|
|
9c80367706 | ||
|
|
1f2ef9874d | ||
|
|
0701a091ef | ||
|
|
b6aeb4a028 | ||
|
|
5cadeb52bf | ||
|
|
597db38489 | ||
|
|
cfe9997452 | ||
|
|
8badedd49f | ||
|
|
5ed42b364f | ||
|
|
f52bc35465 | ||
|
|
82d1264634 | ||
|
|
61cfdc4a55 | ||
|
|
3cfbe4aa83 | ||
|
|
842c801b46 | ||
|
|
ca7332957a | ||
|
|
09024baefe | ||
|
|
2824665652 | ||
|
|
611c35110e | ||
|
|
14c74db96f | ||
|
|
f2f6618177 | ||
|
|
3ee983b98b | ||
|
|
4a477c7dd5 | ||
|
|
b0b4bdc74e | ||
|
|
7fae00435b | ||
|
|
870a5b4095 | ||
|
|
7ecbc27ea3 | ||
|
|
ee6945525e | ||
|
|
5f241919a3 | ||
|
|
fe3ef4e1f6 | ||
|
|
523759e650 | ||
|
|
b7c7dd5b91 | ||
|
|
5db8b32021 | ||
|
|
1485ef7e2d | ||
|
|
f100477484 | ||
|
|
b210e4bc35 | ||
|
|
f14c67f247 | ||
|
|
4f8cd30a21 | ||
|
|
ab671132f9 | ||
|
|
013b2b62d7 | ||
|
|
8c19fcf54a | ||
|
|
5d111795b5 | ||
|
|
7decbc7e6c | ||
|
|
ea26b9ba4a | ||
|
|
d2abbb002a | ||
|
|
b4c3c6fb71 | ||
|
|
6f9f65bf4d | ||
|
|
9bd20715f9 | ||
|
|
5aa81a3461 | ||
|
|
b236e4c97b | ||
|
|
8627439479 | ||
|
|
2b531fdbb2 | ||
|
|
7048164e25 | ||
|
|
5d79c895f8 | ||
|
|
5d822fd8a9 | ||
|
|
2e070e63b7 | ||
|
|
9e7a34e950 | ||
|
|
bb17d06f22 | ||
|
|
41c86ac8b6 | ||
|
|
9aba7a35be | ||
|
|
0b817f0313 | ||
|
|
eb20fff0ac | ||
|
|
7975c05395 | ||
|
|
1b65295161 | ||
|
|
9525db0f35 | ||
|
|
d40e28e340 | ||
|
|
c288001abf | ||
|
|
03b0239538 | ||
|
|
dfff84a92c | ||
|
|
fa4ea016b9 | ||
|
|
cb5bba1c14 | ||
|
|
bb0dd6e358 | ||
|
|
1234c49d13 | ||
|
|
d3e6057d92 | ||
|
|
66922986a2 | ||
|
|
04d8a37e55 | ||
|
|
21796aea67 | ||
|
|
c327239c1a | ||
|
|
13f8b029aa | ||
|
|
45f52b7a54 | ||
|
|
57ea516f86 | ||
|
|
f89e73dc19 | ||
|
|
d58292fc73 | ||
|
|
8cd5b372cf | ||
|
|
f02fd40538 | ||
|
|
0aa7f0297f | ||
|
|
f23e269bd8 | ||
|
|
98968e0eaf | ||
|
|
7b172f6bbd | ||
|
|
12b340d7c5 | ||
|
|
5b166271d3 | ||
|
|
1e6075037f | ||
|
|
e057d7d5b0 | ||
|
|
84a8de4574 | ||
|
|
739caf0b8c | ||
|
|
c917bbdcae | ||
|
|
5c1e61ccbb | ||
|
|
d2e138864a | ||
|
|
791d037220 | ||
|
|
cab578f7ef | ||
|
|
59ab1bac26 | ||
|
|
cfdcb037f6 | ||
|
|
7466e7452f | ||
|
|
701b0cdb86 | ||
|
|
4743814033 | ||
|
|
b36d4d3821 | ||
|
|
9ec97dab68 | ||
|
|
874a9b1dd1 | ||
|
|
4f6450eef9 | ||
|
|
995bd926ab | ||
|
|
7fe6be5052 | ||
|
|
8cb2301501 | ||
|
|
ec32883e46 | ||
|
|
c8d0dc6ba2 | ||
|
|
84e895c56d | ||
|
|
e8e7caa0d1 | ||
|
|
dbc04701b1 | ||
|
|
b37f2f36b4 | ||
|
|
0ab96218a6 | ||
|
|
8ac5de449f | ||
|
|
b44b55c08f | ||
|
|
4aca626164 | ||
|
|
961bc7e92a | ||
|
|
89e8564325 | ||
|
|
d1db19a441 | ||
|
|
e17733d680 | ||
|
|
95cbe155c5 | ||
|
|
e76aac1499 | ||
|
|
a5e784bfb0 | ||
|
|
ea7de5c045 | ||
|
|
5a3cd2d0c7 | ||
|
|
7f27af260d | ||
|
|
8aea3e273a | ||
|
|
b97e8f3601 | ||
|
|
9e2836fe7f | ||
|
|
0e470f0fee | ||
|
|
17edd856d3 | ||
|
|
833a96998b | ||
|
|
df0dee3269 | ||
|
|
672027dc7e | ||
|
|
cf953a0147 | ||
|
|
f1525b7cd9 | ||
|
|
55f395b593 | ||
|
|
7d5ff0910f | ||
|
|
92005c0fdb | ||
|
|
b982612903 | ||
|
|
86386450f0 | ||
|
|
6c979f7c2d | ||
|
|
7d221552ee | ||
|
|
5de1cd959a | ||
|
|
598509e7cd | ||
|
|
41f12df14b | ||
|
|
4e6dcc5f54 | ||
|
|
cfb6980ebd | ||
|
|
11f94739ab | ||
|
|
ed9d9e3268 | ||
|
|
fa55f38258 | ||
|
|
bb575d5839 | ||
|
|
c4270621c9 | ||
|
|
152081f15d | ||
|
|
80c78dab9f | ||
|
|
3b3bdb8c5d | ||
|
|
f44392f561 | ||
|
|
506763ad17 | ||
|
|
2e012cee38 | ||
|
|
61d017517a | ||
|
|
be024cb372 | ||
|
|
17531e646b | ||
|
|
f3c0187fb7 | ||
|
|
8a06e87a6c | ||
|
|
008d84d3e3 | ||
|
|
cf4b27d510 | ||
|
|
9458642eb9 | ||
|
|
c5847184c0 | ||
|
|
a6dd27ee7d | ||
|
|
70d2f24e1d | ||
|
|
96bb17d70c | ||
|
|
0249653e17 | ||
|
|
2107b6f147 | ||
|
|
a59584bb6e | ||
|
|
16ff43de75 | ||
|
|
d52eb382b8 | ||
|
|
f381dd768b | ||
|
|
77cfa63196 | ||
|
|
8faaef4a7b | ||
|
|
3985fdcca4 | ||
|
|
c7f35eb8a2 | ||
|
|
87cbbdbc9a | ||
|
|
ed58641d41 | ||
|
|
751a1a77cd | ||
|
|
b4f3741ac7 | ||
|
|
da166bc537 | ||
|
|
4ffbd357ee | ||
|
|
6007a95683 | ||
|
|
07bcc67597 | ||
|
|
c7141d7503 | ||
|
|
65dd4bc1e0 | ||
|
|
ed7ee5aacd | ||
|
|
888d1d4bf3 | ||
|
|
52c05558f9 | ||
|
|
c888ca5b58 | ||
|
|
d8e55f4b9b | ||
|
|
715875adf8 | ||
|
|
d9d6f1e044 | ||
|
|
07566b6484 | ||
|
|
0250627b3e | ||
|
|
a8786acf0d | ||
|
|
1d5fb5cb39 | ||
|
|
5ea2712d0a | ||
|
|
d5dc5d5367 | ||
|
|
d9033515d1 | ||
|
|
e15b54ebf3 | ||
|
|
9cea53f0aa | ||
|
|
3ef862a907 | ||
|
|
dcce797fc2 | ||
|
|
89bb0e2e7a | ||
|
|
62bf040f30 | ||
|
|
385d74ac5d | ||
|
|
883a814dea | ||
|
|
e974f5463b | ||
|
|
212b2fc1b7 | ||
|
|
f5076128be | ||
|
|
2432e5c914 | ||
|
|
15ded4312e | ||
|
|
5c80f3127d | ||
|
|
4a2d7689ac | ||
|
|
f164357478 | ||
|
|
c317734ad2 | ||
|
|
e49a1b3fbe | ||
|
|
6991fc5683 | ||
|
|
ce29efcc7b | ||
|
|
2a00f6bcb6 | ||
|
|
8f6131d3c8 | ||
|
|
c29023c32f | ||
|
|
0f8dd43382 | ||
|
|
d6a5c5ef11 | ||
|
|
89b7b2045a | ||
|
|
156861c34a | ||
|
|
5b8b9fcf1d | ||
|
|
8bab6408e0 | ||
|
|
be03852aa8 | ||
|
|
c562dbbb19 | ||
|
|
d47f2e2acc | ||
|
|
a8e8598b71 | ||
|
|
c759e395a2 | ||
|
|
e0dc9eb988 | ||
|
|
88b4d059ef | ||
|
|
10f32bce21 | ||
|
|
fab0a978c0 | ||
|
|
ec0868baf6 | ||
|
|
ff036770de | ||
|
|
05af9bce96 | ||
|
|
ff94827328 | ||
|
|
aa824a25ca | ||
|
|
8dd1a36e72 | ||
|
|
e502833abe | ||
|
|
1aafc1c083 | ||
|
|
099db8cf1e | ||
|
|
ca62aec622 | ||
|
|
5ba5a6fc9f | ||
|
|
4476cc3c3d | ||
|
|
b6f6267019 | ||
|
|
4c57e11d8f | ||
|
|
7992c89828 | ||
|
|
ffdd6a70f1 | ||
|
|
0f70dfbb61 | ||
|
|
cff4bac9c6 | ||
|
|
ca7e6922b3 | ||
|
|
988aaf421c | ||
|
|
880c3ecf57 | ||
|
|
2488331d42 | ||
|
|
1fdf8e2759 | ||
|
|
dd608c50d5 | ||
|
|
c007038152 | ||
|
|
fd0896a7c8 | ||
|
|
5eb22f717a | ||
|
|
d1bd31a4bc | ||
|
|
bea6267981 | ||
|
|
7cf045623f | ||
|
|
e35bfab126 | ||
|
|
54fe322b6d | ||
|
|
810936476f | ||
|
|
80785c39a6 | ||
|
|
ca5b3daf3d | ||
|
|
67107928c7 | ||
|
|
75b6be1725 | ||
|
|
5d9a6ffb52 | ||
|
|
9e4befec1c | ||
|
|
f3dd536f6a | ||
|
|
9a9aa7b7f7 | ||
|
|
fba97e0a54 | ||
|
|
3f4744daf2 | ||
|
|
250202c4f2 | ||
|
|
cbd6c84d42 | ||
|
|
eb02171890 | ||
|
|
9ab7ea9cd5 | ||
|
|
007e30cb80 | ||
|
|
8c9f9ee8ce | ||
|
|
8768660bb8 | ||
|
|
4b839dfa02 | ||
|
|
082725fe59 | ||
|
|
2ed4169aa7 | ||
|
|
f27c3760b5 | ||
|
|
91c6a4daf3 | ||
|
|
3d8b5e5494 | ||
|
|
262e79b220 | ||
|
|
2d434e6953 | ||
|
|
906e01185e | ||
|
|
8754684c48 | ||
|
|
54ce743e20 | ||
|
|
d7163a795d | ||
|
|
2a588fd8dd | ||
|
|
fa134f3c3d | ||
|
|
10c1b91ecc | ||
|
|
217e3c3d7e | ||
|
|
e1af6ad1f9 | ||
|
|
8e88a3b54a | ||
|
|
09759e06b0 | ||
|
|
4438188cc1 | ||
|
|
25cf28155e | ||
|
|
80552f69b7 | ||
|
|
8861812d22 | ||
|
|
363f424ec5 | ||
|
|
7d3671d207 | ||
|
|
39e96989c4 | ||
|
|
7267078670 | ||
|
|
1c98908d20 | ||
|
|
99aabafa01 | ||
|
|
c2696aad1a | ||
|
|
7013100660 | ||
|
|
b941988f6d | ||
|
|
c93c0ca5b4 | ||
|
|
658ef6e5cd | ||
|
|
d5a3d22c31 | ||
|
|
8b6585f9a3 | ||
|
|
e470fbfa72 | ||
|
|
2c49fe49d6 | ||
|
|
903588de7f | ||
|
|
8eeb18c79b | ||
|
|
5bec716fa4 | ||
|
|
b07c5d990a | ||
|
|
2dfc9408b7 | ||
|
|
3781626643 | ||
|
|
f9e5735edc | ||
|
|
70ee96cffe | ||
|
|
7e36112181 | ||
|
|
9f1817fd9c | ||
|
|
4245f13b69 | ||
|
|
5c8edd7337 | ||
|
|
8aa862d7ef | ||
|
|
6419acc71d | ||
|
|
abe46dfa18 | ||
|
|
02b064bc94 | ||
|
|
5cb0a3fbf7 | ||
|
|
3c0d6b6f23 | ||
|
|
b6e38e2cf8 | ||
|
|
56f9dfddad | ||
|
|
8a8be6660e | ||
|
|
2236a29aef | ||
|
|
018745b405 | ||
|
|
f25aba392b | ||
|
|
4958752d6f | ||
|
|
ec1ba0096f | ||
|
|
132d28b22a | ||
|
|
436f46a088 | ||
|
|
a16b62762d | ||
|
|
d2a88178cc | ||
|
|
7cc2773a10 | ||
|
|
f637fd145d | ||
|
|
689d2c74d3 | ||
|
|
54c333e64d | ||
|
|
a771b888b0 | ||
|
|
30379e879e | ||
|
|
dc7de12994 | ||
|
|
0ea4ccd793 | ||
|
|
dd8ddb6116 | ||
|
|
de889f3342 | ||
|
|
5cfaf7cdea | ||
|
|
444c110278 | ||
|
|
bc6f75fedd | ||
|
|
c59656f610 | ||
|
|
869f9a0346 | ||
|
|
60eab73c17 | ||
|
|
104d738cb9 | ||
|
|
230c6a017f | ||
|
|
4d96dca30f | ||
|
|
8fa83c3d9e | ||
|
|
46dd32aa01 | ||
|
|
e5c531edeb | ||
|
|
c57b0d3fdb | ||
|
|
0399650bc9 | ||
|
|
4697c902fd | ||
|
|
d717f5db4f | ||
|
|
0f8c27c703 | ||
|
|
bac5057a37 | ||
|
|
701b284c21 | ||
|
|
b7a5df624a | ||
|
|
1b8870dc68 | ||
|
|
024c84928d | ||
|
|
2c5f83bdc3 | ||
|
|
1e60dd17b4 | ||
|
|
7b3b35fcc5 | ||
|
|
62a72b6ab8 | ||
|
|
aff94d2e5e | ||
|
|
6432e55c7e | ||
|
|
7c79c659ea | ||
|
|
ea66b49e73 | ||
|
|
ccf693d517 | ||
|
|
41810fe9b7 | ||
|
|
fb4388b9e4 | ||
|
|
a0dc8fd44a | ||
|
|
63182e80e0 | ||
|
|
f786c8c0bc | ||
|
|
838beb4db3 | ||
|
|
e8d42810e6 | ||
|
|
9a32ecfa17 | ||
|
|
35f4ba710c | ||
|
|
7f664d6fc7 | ||
|
|
b93a47c35b | ||
|
|
6108c15a09 | ||
|
|
3f49c70176 | ||
|
|
78cd787622 | ||
|
|
bde2f2e43d | ||
|
|
819f9a84c9 | ||
|
|
ee516370d0 | ||
|
|
03fcac8d1f | ||
|
|
becba49c87 | ||
|
|
7522ca87d2 | ||
|
|
224103b181 | ||
|
|
fa32e922d3 | ||
|
|
68ceaa82e3 | ||
|
|
2e7e02b681 | ||
|
|
0febba6169 | ||
|
|
1aaaa84816 | ||
|
|
3e862a0b60 | ||
|
|
a957a6e543 | ||
|
|
240573d5ff | ||
|
|
c18695ea3b | ||
|
|
ebbc29b357 | ||
|
|
233e588c3b | ||
|
|
83ad01c37b | ||
|
|
3f25b7e247 | ||
|
|
ca3f5a5ebf | ||
|
|
5fcbd5bbde | ||
|
|
6d537f5d29 | ||
|
|
ed0ba7072f | ||
|
|
e5047bb27f | ||
|
|
f0df778b81 | ||
|
|
1cc50efb9d | ||
|
|
8bbbd12d3d | ||
|
|
6374bcef3f | ||
|
|
eff339a165 | ||
|
|
2de443b4fb | ||
|
|
31abb99698 | ||
|
|
443757125d | ||
|
|
f355a4e384 | ||
|
|
1739d5ec16 | ||
|
|
aa51c37774 | ||
|
|
dc57774f63 | ||
|
|
b25822189e | ||
|
|
28c1f63871 | ||
|
|
ba11994396 | ||
|
|
fe41d5c799 | ||
|
|
9d5ee0b9ac | ||
|
|
8cf519cf16 | ||
|
|
67147237e4 | ||
|
|
710384ef89 | ||
|
|
8f3f6c49f1 | ||
|
|
1d250748ca | ||
|
|
cd5527e07e | ||
|
|
3f131bb40d | ||
|
|
2491163e92 | ||
|
|
3005c3e722 | ||
|
|
4bf71f6a66 | ||
|
|
40f9687fd1 | ||
|
|
1f22d30eb2 | ||
|
|
2f7b01aa6f | ||
|
|
f5823abaa0 | ||
|
|
4ce2da89cb | ||
|
|
e00fbbeedb | ||
|
|
99a9fadcab | ||
|
|
4faa7180bc | ||
|
|
b28b86ad9f | ||
|
|
dfcba6cafc | ||
|
|
3bb9bc1e12 | ||
|
|
047fe169bb | ||
|
|
7cf5688273 | ||
|
|
d41e7f0f81 | ||
|
|
2c3e5c8eb7 | ||
|
|
868c8c3f3a | ||
|
|
f20a6a2563 | ||
|
|
2321f016d9 | ||
|
|
c479c73331 | ||
|
|
8d08687706 | ||
|
|
bfb95e632c | ||
|
|
43a771e35a | ||
|
|
f685b5cedc | ||
|
|
422fcfd9e3 | ||
|
|
1a7ddd1797 | ||
|
|
78bf7977f3 | ||
|
|
9979ee2eab | ||
|
|
a8487af7a5 | ||
|
|
4c7691dcfa | ||
|
|
ab232c3f27 | ||
|
|
3c0256c930 | ||
|
|
b387f54c4a | ||
|
|
a3bc436f53 | ||
|
|
a3644aa1ba | ||
|
|
54a73c8288 | ||
|
|
f2986195bd | ||
|
|
54303a4d00 | ||
|
|
7b09c726cc | ||
|
|
bd1779d53d | ||
|
|
5fbbb27a99 | ||
|
|
598cde07fb | ||
|
|
bfd5866cb0 | ||
|
|
2dcbdd601a | ||
|
|
50f8099ebb | ||
|
|
fcb590d227 | ||
|
|
1d48313dcf | ||
|
|
3f4206fe4e | ||
|
|
984aa362ed | ||
|
|
7db5937bb2 | ||
|
|
3e7fc28ab9 | ||
|
|
ddf82aa900 | ||
|
|
fc3716c0e9 | ||
|
|
d63e05f4ef | ||
|
|
dcdbe22d86 | ||
|
|
44eab143ab | ||
|
|
4c0f415bad | ||
|
|
6cb97e75c9 | ||
|
|
52f08ff793 | ||
|
|
cd9f72db09 | ||
|
|
56518de40b | ||
|
|
b9c2f8fd49 | ||
|
|
f2a4fe493a | ||
|
|
b98863b6a7 | ||
|
|
1751bf30ba | ||
|
|
7e406436fa | ||
|
|
62f25ad33f | ||
|
|
785af1611c | ||
|
|
f8d2768816 | ||
|
|
8aa311131e | ||
|
|
69f94f64f0 | ||
|
|
d211c6bbc9 | ||
|
|
8a773cdf66 | ||
|
|
851eb06d5e | ||
|
|
a74f47d19c | ||
|
|
08157dde81 | ||
|
|
ce1797cdb5 | ||
|
|
025c8f6ad1 | ||
|
|
14e2f003e2 | ||
|
|
96c535923d | ||
|
|
eea6a57e1f | ||
|
|
abb6ccf08d | ||
|
|
6a7e65dd82 | ||
|
|
326e52e5f8 | ||
|
|
e050f2437b | ||
|
|
c052ff5c9e | ||
|
|
c25d7932e7 | ||
|
|
df7acfdd89 | ||
|
|
aab41a7b2d | ||
|
|
587bd2239f | ||
|
|
d4f543dcf6 | ||
|
|
49b6522e3b | ||
|
|
9fbeab43f7 | ||
|
|
22afaf202d | ||
|
|
575dc41c30 | ||
|
|
472c5f9b44 | ||
|
|
b6f92bf7c2 | ||
|
|
3ef9ee3c60 | ||
|
|
1d93611ee7 | ||
|
|
044cc34b13 | ||
|
|
ecd603a9cf | ||
|
|
7a4df6cc1a | ||
|
|
9fc73d258f | ||
|
|
19a19f10d6 | ||
|
|
9c7ce581e7 | ||
|
|
c2f5609ea2 | ||
|
|
1bb1fbbc84 | ||
|
|
01345f2bbf | ||
|
|
fd2cfe8080 | ||
|
|
ef061ef32b | ||
|
|
50244bf8ea | ||
|
|
b509aa7df1 | ||
|
|
ec41dd2e70 | ||
|
|
2368161132 | ||
|
|
420656ea95 | ||
|
|
827adada11 | ||
|
|
adffab13d9 | ||
|
|
62125c5b72 | ||
|
|
c3a573229d | ||
|
|
b979a32abf | ||
|
|
66ca301ca9 | ||
|
|
7e4835801d | ||
|
|
2d109c7630 | ||
|
|
5d97f90fd8 | ||
|
|
84272b4725 | ||
|
|
49af0bf631 | ||
|
|
80cf483ded | ||
|
|
90a9d69cdf | ||
|
|
010952e9c0 | ||
|
|
0cb1adb38a | ||
|
|
e304fb11f2 | ||
|
|
ae0ce1510a | ||
|
|
f24009919e | ||
|
|
113ac52c4e | ||
|
|
fa63920938 | ||
|
|
014c9f518f | ||
|
|
128e4bf9da | ||
|
|
1e8154cde3 | ||
|
|
01b6281db0 | ||
|
|
806f509b79 | ||
|
|
a9d7bf8698 | ||
|
|
69bd70a61c | ||
|
|
7948a3cba7 | ||
|
|
061cec61f5 | ||
|
|
774fb546ef | ||
|
|
5e740012c7 | ||
|
|
07a036670b | ||
|
|
18d5c37fec | ||
|
|
f278fa2147 | ||
|
|
9801c5d11c | ||
|
|
3f28a79c69 | ||
|
|
fcd27a9506 | ||
|
|
04f8b6b4a1 | ||
|
|
d82c4687de | ||
|
|
f96a3b7330 | ||
|
|
ae78bb82b2 | ||
|
|
8f372838e7 | ||
|
|
bbb4bd1996 | ||
|
|
90e8cac12f | ||
|
|
778f563611 | ||
|
|
51b951643b | ||
|
|
82b3c9dda6 | ||
|
|
9cd6727d12 | ||
|
|
1fe5b8927a | ||
|
|
526ea43ae4 | ||
|
|
0130f7d984 | ||
|
|
75de6eb263 | ||
|
|
3f612da0ac | ||
|
|
b6549c401b | ||
|
|
aee62ebd2d | ||
|
|
4d06c80983 | ||
|
|
167089c194 | ||
|
|
ec5480f330 | ||
|
|
7dbda02e18 | ||
|
|
38b04d92bd | ||
|
|
e4e04113b0 | ||
|
|
3594ae0248 | ||
|
|
9ef0c35932 | ||
|
|
ae03ac9878 | ||
|
|
30a2da196b | ||
|
|
125d4584bb | ||
|
|
ed6ba797b1 | ||
|
|
c6dbc2f572 | ||
|
|
40ca1fc5e5 | ||
|
|
83960e51a2 | ||
|
|
23e4f9e92f | ||
|
|
35042af9ec | ||
|
|
b6f51bdae3 | ||
|
|
cb0b47bcd4 | ||
|
|
cdb188d7c8 | ||
|
|
6d3bb42783 | ||
|
|
8bed755ab9 | ||
|
|
724615fe3e | ||
|
|
92a2e9532b | ||
|
|
e43392d013 | ||
|
|
7473a74576 | ||
|
|
812b9ad97c | ||
|
|
109cda8c30 | ||
|
|
e47fc2d513 | ||
|
|
bf32aa52fa | ||
|
|
9c351ac215 | ||
|
|
ed3305ee14 | ||
|
|
b75286807d | ||
|
|
611006af73 | ||
|
|
7730ffda49 | ||
|
|
8fa3c30073 | ||
|
|
c69417664f | ||
|
|
4d7f779c28 | ||
|
|
07149fb846 | ||
|
|
1b330f5d76 | ||
|
|
6ce16a8796 | ||
|
|
87ca7a84af | ||
|
|
7c7a643cc3 | ||
|
|
ac367e92c1 | ||
|
|
8a9647ac3f | ||
|
|
a5b732c818 | ||
|
|
e472006efa | ||
|
|
c1665e0ca0 | ||
|
|
d1c79b8cd6 | ||
|
|
fd0cf263eb | ||
|
|
0ac5dbc79b | ||
|
|
7aee3b9601 | ||
|
|
8f7323e685 | ||
|
|
33d39f33d7 | ||
|
|
257cd69842 | ||
|
|
a8d057a164 | ||
|
|
86c6f8ab09 | ||
|
|
1a58432b86 | ||
|
|
4806f7a932 | ||
|
|
9a74b049dd | ||
|
|
4b72d4d7c4 | ||
|
|
f5aa90d1ab | ||
|
|
97a21ab738 | ||
|
|
1c68f7bdee | ||
|
|
dcebee8ca6 | ||
|
|
5a931fd592 | ||
|
|
d79910c0ae | ||
|
|
cf11f08698 | ||
|
|
a13a20b4e4 | ||
|
|
453a079aa6 | ||
|
|
9b8f207fde | ||
|
|
667e7b0d4e | ||
|
|
c76a634721 | ||
|
|
895db4a26a | ||
|
|
d389a8c4e2 | ||
|
|
affe2433a9 | ||
|
|
1b781d557e | ||
|
|
7fb3806693 | ||
|
|
437623e69c | ||
|
|
1cf8f60e75 | ||
|
|
c2d96b3788 | ||
|
|
bd2e365181 | ||
|
|
b5b3e9483d | ||
|
|
4831735a50 | ||
|
|
10a35d132a | ||
|
|
5567a55665 | ||
|
|
f08b01359d | ||
|
|
269bc59f5b | ||
|
|
093d371a83 | ||
|
|
10e00dc5bf | ||
|
|
13c8d0afa0 | ||
|
|
1dda883862 | ||
|
|
a016127afe | ||
|
|
6e10579633 | ||
|
|
a446ecd4fb | ||
|
|
8da55ec81c | ||
|
|
1caeaa0eb5 | ||
|
|
94aa642c30 | ||
|
|
fbf8a04728 | ||
|
|
a712949cd1 | ||
|
|
e0557192c4 | ||
|
|
ad914bf3b1 | ||
|
|
a7b91c19dd | ||
|
|
5aae42a2e4 | ||
|
|
034541671d | ||
|
|
355c98aa2a | ||
|
|
48234c908d | ||
|
|
e99ea77069 | ||
|
|
27ce6b622c | ||
|
|
24b5447ba7 | ||
|
|
9490034412 | ||
|
|
1abb180d1c | ||
|
|
b8b112cb7b | ||
|
|
fcb66a43cc | ||
|
|
4ec6fa3eb0 | ||
|
|
b9ebf2bcca | ||
|
|
03102cd681 | ||
|
|
e905503bb9 | ||
|
|
5857a937d5 | ||
|
|
ed4646153f | ||
|
|
34df653536 | ||
|
|
8954e51224 | ||
|
|
ab18225237 | ||
|
|
a7e2928f1e | ||
|
|
de33c7375b | ||
|
|
afe3ce4ab5 | ||
|
|
095995da87 | ||
|
|
5832523446 | ||
|
|
68be10b661 | ||
|
|
0a9ce752cc | ||
|
|
9d76265e33 | ||
|
|
4b30e33ce8 | ||
|
|
34bdd15364 | ||
|
|
caa7b10091 | ||
|
|
ac56a5ffdd | ||
|
|
aa74178622 | ||
|
|
61b7752cce | ||
|
|
0f8395365e | ||
|
|
2fd9de8456 | ||
|
|
a53d8cf5c7 | ||
|
|
551ca6771f | ||
|
|
04bae1efd9 | ||
|
|
e09a9185f5 | ||
|
|
fe89dc3ac4 | ||
|
|
66dbd22805 | ||
|
|
826be00fbc | ||
|
|
a88c9bfaac | ||
|
|
c8982fb2ab | ||
|
|
5e13865c5c | ||
|
|
e70169f591 | ||
|
|
c0eeea5c87 | ||
|
|
6e36390826 | ||
|
|
675c285dff | ||
|
|
e408250b7b | ||
|
|
235ae5b7c5 | ||
|
|
f326de9c68 | ||
|
|
fc56101afb | ||
|
|
2f66faa8aa | ||
|
|
2116736bac | ||
|
|
afb02b37f1 | ||
|
|
2eb1cffa8f | ||
|
|
4b18f648ec | ||
|
|
b268f4e453 | ||
|
|
72560736bd | ||
|
|
e038584f2b | ||
|
|
90960afe94 | ||
|
|
aaf203ded3 | ||
|
|
cf120047af | ||
|
|
fa3b1bb203 | ||
|
|
75ddd71585 | ||
|
|
242ff3bcda | ||
|
|
d98ed61bf9 | ||
|
|
ca3ef737e2 | ||
|
|
dfc7a9c75b | ||
|
|
c11112ac00 | ||
|
|
f88cb8e788 | ||
|
|
e88564dbf1 | ||
|
|
1543405443 | ||
|
|
2700ec010a | ||
|
|
7ec91cf4f1 | ||
|
|
469bea5b56 | ||
|
|
5c823e79e7 | ||
|
|
aed949724e | ||
|
|
e24e46eade | ||
|
|
8d49ce7cf4 | ||
|
|
8b71d81d23 | ||
|
|
7df5f1f4d3 | ||
|
|
5dc22b1d42 | ||
|
|
989212ee46 | ||
|
|
80eccc1057 | ||
|
|
f26fb3b5b7 | ||
|
|
1da3f83138 | ||
|
|
ca47fb50ce | ||
|
|
af51652b87 | ||
|
|
f925c1bec1 | ||
|
|
8cf203f6f3 | ||
|
|
c1bbbc4334 | ||
|
|
491bf56e6d | ||
|
|
eb90779d28 | ||
|
|
2832e3ab8c | ||
|
|
fc0693dbc1 | ||
|
|
2efb0154ce | ||
|
|
1388a7926f | ||
|
|
5be16235dd | ||
|
|
5c825755aa | ||
|
|
cb45b113fd | ||
|
|
fddb1809de | ||
|
|
2393271c03 | ||
|
|
aba51afc4b | ||
|
|
c800b2ff00 | ||
|
|
d28c115bbd | ||
|
|
fafd875493 | ||
|
|
36b5933866 | ||
|
|
d2f20b4e3f | ||
|
|
ed3e1fb7aa | ||
|
|
95bc70b440 | ||
|
|
2d9361b8f6 | ||
|
|
3355f16a30 | ||
|
|
4eb9586199 | ||
|
|
c25071f0b8 | ||
|
|
d6a69a838e | ||
|
|
b996114209 | ||
|
|
4c634b6fd0 | ||
|
|
8f18c3d581 | ||
|
|
47c1b3b295 | ||
|
|
6a22ae05d2 | ||
|
|
2c4eb67104 | ||
|
|
08f68c6634 | ||
|
|
5bb4de58d7 | ||
|
|
46c1e80c19 | ||
|
|
f72202c406 | ||
|
|
a72cb696f6 | ||
|
|
93452a0e80 | ||
|
|
ba2ddb8634 | ||
|
|
dc84d780c8 | ||
|
|
0be7965639 | ||
|
|
097fb4d819 | ||
|
|
e1c95ffaa7 | ||
|
|
3649168f15 | ||
|
|
0900ed204c | ||
|
|
4c85b1fad7 | ||
|
|
823a10712e | ||
|
|
85b79775ef | ||
|
|
13fb40defd | ||
|
|
830f2f2b01 | ||
|
|
02cfe5d653 | ||
|
|
c0c66e7d88 | ||
|
|
71b28721f7 | ||
|
|
880f32f4e2 | ||
|
|
9ec7631540 | ||
|
|
529b964ade | ||
|
|
b4058077c4 | ||
|
|
087f0e35a0 | ||
|
|
4958768ba7 | ||
|
|
b015d97d60 | ||
|
|
cc75b96e20 | ||
|
|
deb4891b2b | ||
|
|
58396b345d | ||
|
|
84aa0eca18 | ||
|
|
fb335107f6 | ||
|
|
0cfb447f42 | ||
|
|
386298a891 | ||
|
|
ebb5201416 | ||
|
|
fd59504781 | ||
|
|
d2dfcf2de5 | ||
|
|
e94866ce13 | ||
|
|
ec095578dd | ||
|
|
aa69d9bf11 | ||
|
|
122f355016 | ||
|
|
4c03199557 | ||
|
|
5b974d529e | ||
|
|
33208e663d | ||
|
|
8e853f5434 | ||
|
|
a594c517c8 | ||
|
|
b1406c6f65 | ||
|
|
4e927a1d1e | ||
|
|
d023f252c3 | ||
|
|
68e1bb08b9 | ||
|
|
43b27c90e4 | ||
|
|
7605c9a84a | ||
|
|
2eb5bf959c | ||
|
|
80fb3fea08 | ||
|
|
bbff88a8fb | ||
|
|
0633f491ba | ||
|
|
cacd6a9a14 | ||
|
|
ffd8fddff1 | ||
|
|
cda0e4150d | ||
|
|
50da726697 | ||
|
|
9110e2c365 | ||
|
|
ce1c7543d2 | ||
|
|
5b511a5f28 | ||
|
|
0a4f36c865 | ||
|
|
7334692d00 | ||
|
|
d55ba8e189 | ||
|
|
1f9e22eed2 | ||
|
|
5493ca5978 | ||
|
|
8a6c22ad6c | ||
|
|
b24d5f497d | ||
|
|
53f209b307 | ||
|
|
e8494f94ae | ||
|
|
62780a8112 | ||
|
|
e2978233bb | ||
|
|
d8ae741a94 | ||
|
|
cea4f5f444 | ||
|
|
76e3ef6749 | ||
|
|
1f175cacd6 | ||
|
|
3f7d12e35c | ||
|
|
b7de048b17 | ||
|
|
3f70b1238c | ||
|
|
3a42715095 | ||
|
|
960166b0f7 | ||
|
|
77ce64ff3f | ||
|
|
e1b0a0324d | ||
|
|
69580ac974 | ||
|
|
02553a7caa | ||
|
|
9965fa8540 | ||
|
|
86cadfd43e | ||
|
|
cb206eb2b7 | ||
|
|
45285761aa | ||
|
|
04a5818d21 | ||
|
|
8f5dbe61d9 | ||
|
|
b95cff8792 | ||
|
|
890359af58 | ||
|
|
eba37acafe | ||
|
|
3359c049e3 | ||
|
|
92ff40e650 | ||
|
|
c639387bfc | ||
|
|
6672f1a558 | ||
|
|
12648e0bc6 | ||
|
|
e5bf88a14d | ||
|
|
ab802cb4dd | ||
|
|
c9cf54b928 | ||
|
|
139dda07f9 | ||
|
|
26acf44cbe | ||
|
|
c5ac13977f | ||
|
|
7cdb059d34 | ||
|
|
77e9c8e4a9 | ||
|
|
c5a0935c45 | ||
|
|
adde8c49e0 | ||
|
|
8524ee3a3a | ||
|
|
8e2b4dc688 | ||
|
|
21594eb231 | ||
|
|
53cdcae9e9 | ||
|
|
480630323d | ||
|
|
c81bee11ed | ||
|
|
28510b8a4e | ||
|
|
56d48bc823 | ||
|
|
df2b4f0328 | ||
|
|
48aa3db82e | ||
|
|
4becb38c22 | ||
|
|
07ff716331 | ||
|
|
31d5abf02b | ||
|
|
93053a329f | ||
|
|
805c7ae08d | ||
|
|
c581a7ed57 | ||
|
|
7d17791fb8 | ||
|
|
ebdfca122e | ||
|
|
617257e540 | ||
|
|
ff2b0d34ce | ||
|
|
0c8aef2859 | ||
|
|
ef486091cf | ||
|
|
19fefee5e5 | ||
|
|
69db13338e | ||
|
|
ec088b2481 | ||
|
|
4f1fe5422e | ||
|
|
a93d2389cc | ||
|
|
d6939b3374 | ||
|
|
a2717d1111 | ||
|
|
d2143c79b2 | ||
|
|
d3997fb035 | ||
|
|
e4c731b48b | ||
|
|
a8637cffd9 | ||
|
|
4a32a517de | ||
|
|
8ad9343805 | ||
|
|
ee553bea11 | ||
|
|
127c80caf5 | ||
|
|
73cc13d786 | ||
|
|
f950d2f7b4 | ||
|
|
574ff6acea | ||
|
|
6271ae1c81 | ||
|
|
4d00399f21 | ||
|
|
0191634d61 | ||
|
|
f09131f5ca | ||
|
|
c79ed94aba | ||
|
|
f3556e8c99 | ||
|
|
8965be2fbf | ||
|
|
182a82773d | ||
|
|
1c73dee318 | ||
|
|
e32b697912 | ||
|
|
afd024c4c6 | ||
|
|
d9770441ff | ||
|
|
330aab9846 | ||
|
|
5f490e417e | ||
|
|
599fd346bf | ||
|
|
bbd5c039b5 | ||
|
|
4897d17671 | ||
|
|
d68d2380e1 | ||
|
|
b64eca4153 | ||
|
|
80035673ac | ||
|
|
d6b264b65e | ||
|
|
773a3191f5 | ||
|
|
1d72aa5c14 | ||
|
|
e2b561b2d5 | ||
|
|
2e7053e65c | ||
|
|
a45fab6c18 | ||
|
|
8d1c625d4b | ||
|
|
dfcb84c873 | ||
|
|
21f7fc13f4 | ||
|
|
3736159357 | ||
|
|
30400b2af3 | ||
|
|
0a1bc55d9b | ||
|
|
481df1acd5 | ||
|
|
91946a7adb | ||
|
|
c8b244f2b9 | ||
|
|
6a879a3f91 | ||
|
|
719f661d06 | ||
|
|
39f8edc395 | ||
|
|
115c381ea0 | ||
|
|
91eaa7ac03 | ||
|
|
05fe01e1cd | ||
|
|
32b37f9ee2 | ||
|
|
ce44d6c03a | ||
|
|
5d179987b2 | ||
|
|
40fe3fc25a | ||
|
|
6f66815874 | ||
|
|
98390818c2 | ||
|
|
339bc1c0d2 | ||
|
|
6bebcdeca5 | ||
|
|
ce4e56aef0 | ||
|
|
a925fb989f | ||
|
|
0335e0f752 | ||
|
|
f1c5d707d6 | ||
|
|
c9530db36e | ||
|
|
d49f0c7c92 | ||
|
|
ded19d6105 | ||
|
|
b7e2a4bd14 | ||
|
|
b3947dfbb7 | ||
|
|
1f50b7585e | ||
|
|
e5311f8921 | ||
|
|
f6bdf3e04a | ||
|
|
30a8db04ce | ||
|
|
c11af0bb10 | ||
|
|
362116d3b6 | ||
|
|
a8a33b1569 | ||
|
|
dd500512a1 | ||
|
|
888b787d9c | ||
|
|
afbad29c08 | ||
|
|
07fc0ef341 | ||
|
|
2eb4b9602f | ||
|
|
fe9a890243 |
10
.codacy.yml
10
.codacy.yml
@@ -1,10 +0,0 @@
|
||||
---
|
||||
engines:
|
||||
duplication:
|
||||
exclude_paths:
|
||||
- "*"
|
||||
exclude_paths:
|
||||
- vendor/**/*
|
||||
- tests/**/*
|
||||
- "**_test.go"
|
||||
- contrib/*
|
||||
@@ -2,7 +2,7 @@ FROM dokku/dokku:latest
|
||||
|
||||
RUN apt-get update
|
||||
RUN apt-get install --no-install-recommends -y build-essential file nano && \
|
||||
apt-get install --no-install-recommends -y help2man shellcheck uuid-runtime wget xmlstarlet && \
|
||||
apt-get install --no-install-recommends -y software-properties-common help2man shellcheck uuid-runtime wget xmlstarlet && \
|
||||
apt-get clean autoclean && \
|
||||
apt-get autoremove --yes && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
"context": ".."
|
||||
},
|
||||
"containerEnv": {
|
||||
"DOKKU_HOSTNAME": "dokku.me",
|
||||
"DOKKU_HOST_ROOT": "${localWorkspaceFolder}/tmp/data/home/dokku",
|
||||
"DOKKU_LIB_HOST_ROOT": "${localWorkspaceFolder}/tmp/data/var/lib/dokku",
|
||||
"GO_ROOT_MOUNT": "${localWorkspaceFolder}:/go/src/github.com/dokku/dokku"
|
||||
},
|
||||
"customizations": {
|
||||
@@ -29,9 +31,10 @@
|
||||
],
|
||||
"overrideCommand": false,
|
||||
"postCreateCommand": "setup-dev-env",
|
||||
"postStartCommand": "printenv > .vscode/devcontainer.env",
|
||||
"runArgs": [
|
||||
"--init"
|
||||
],
|
||||
"workspaceFolder": "/root/go/src/github.com/dokku/dokku",
|
||||
"workspaceMount": "type=bind,source=${localWorkspaceFolder},target=/root/go/src/github.com/dokku/dokku,consistency=cached"
|
||||
}
|
||||
}
|
||||
28
.github/commands/bump-azure
vendored
28
.github/commands/bump-azure
vendored
@@ -18,7 +18,11 @@ main() {
|
||||
|
||||
cd tmp
|
||||
|
||||
$GH_FOLDER/bin/gh auth login --with-token <<<"$BOT_GITHUB_API_TOKEN"
|
||||
if [[ -n "$BOT_GITHUB_API_TOKEN" ]]; then
|
||||
$GH_FOLDER/bin/gh auth login --with-token <<<"$BOT_GITHUB_API_TOKEN"
|
||||
else
|
||||
echo "BOT_GITHUB_API_TOKEN is not set, skipping gh auth login"
|
||||
fi
|
||||
|
||||
echo "=====> Cloning quickstart templates"
|
||||
rm -rf azure-quickstart-templates >/dev/null
|
||||
@@ -35,15 +39,29 @@ main() {
|
||||
contents="$(jq --arg VERSION "$VERSION" '.parameters.dokkuVersion.defaultValue = $VERSION' application-workloads/dokku/dokku-vm/azuredeploy.json)"
|
||||
echo "${contents}" >application-workloads/dokku/dokku-vm/azuredeploy.json
|
||||
|
||||
# update the version in main.bicep
|
||||
# the line being updated looks like this:
|
||||
# param dokkuVersion string = '0.28.4'
|
||||
# we need to update the value of dokkuVersion to the new version
|
||||
sed -i "s/param dokkuVersion string = '[^']*'/param dokkuVersion string = '$VERSION'/" application-workloads/dokku/dokku-vm/main.bicep
|
||||
|
||||
echo "=====> Updating remote repository"
|
||||
git add application-workloads/dokku/dokku-vm
|
||||
git checkout -b dokku-$VERSION
|
||||
git commit -m "Update dokku-vm dokku version to $VERSION"
|
||||
git remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/azure-quickstart-templates.git"
|
||||
git push -f origin dokku-$VERSION
|
||||
if [[ -z "$BOT_GITHUB_API_TOKEN" ]] || [[ -z "$BOT_GITHUB_USERNAME" ]]; then
|
||||
echo "BOT_GITHUB_API_TOKEN or BOT_GITHUB_USERNAME is not set, skipping git remote set-url"
|
||||
else
|
||||
git remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/azure-quickstart-templates.git"
|
||||
git push -f origin dokku-$VERSION
|
||||
fi
|
||||
|
||||
echo "=====> Creating upstream pull request"
|
||||
../$GH_FOLDER/bin/gh pr create --head dokku:dokku-$VERSION --repo Azure/azure-quickstart-templates --title "Update dokku-vm dokku version to $VERSION" --body ''
|
||||
if [[ -z "$BOT_GITHUB_API_TOKEN" ]] || [[ -z "$BOT_GITHUB_USERNAME" ]]; then
|
||||
echo "BOT_GITHUB_API_TOKEN or BOT_GITHUB_USERNAME is not set, skipping gh pr create"
|
||||
else
|
||||
echo "=====> Creating upstream pull request"
|
||||
../$GH_FOLDER/bin/gh pr create --head dokku:dokku-$VERSION --repo Azure/azure-quickstart-templates --title "Update dokku-vm dokku version to $VERSION" --body ''
|
||||
fi
|
||||
|
||||
popd &>/dev/null
|
||||
}
|
||||
|
||||
1
.github/commands/ci-setup
vendored
1
.github/commands/ci-setup
vendored
@@ -1,6 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
set -x
|
||||
|
||||
DOKKU_DOMAIN=${DOKKU_DOMAIN:="dokku.me"}
|
||||
|
||||
|
||||
28
.github/dependabot.yml
vendored
28
.github/dependabot.yml
vendored
@@ -134,6 +134,13 @@ updates:
|
||||
open-pull-requests-limit: 2
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: gomod
|
||||
directory: "/plugins/scheduler-k3s"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 2
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: gomod
|
||||
directory: "/plugins/scheduler"
|
||||
schedule:
|
||||
@@ -267,6 +274,13 @@ updates:
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: npm
|
||||
directory: "/tests/apps/multi"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: npm
|
||||
directory: "/tests/apps/nodejs-express"
|
||||
schedule:
|
||||
@@ -309,13 +323,6 @@ updates:
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: npm
|
||||
directory: "/tests/apps/.websocket.disabled"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: github-actions
|
||||
directory: "/"
|
||||
schedule:
|
||||
@@ -386,6 +393,13 @@ updates:
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: pip
|
||||
directory: "/tests/apps/dockerfile-release"
|
||||
schedule:
|
||||
interval: daily
|
||||
open-pull-requests-limit: 10
|
||||
labels:
|
||||
- "type: dependencies"
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/tests/apps/dockerfile-app-json-formations"
|
||||
schedule:
|
||||
|
||||
52
.github/workflows/ci.yml
vendored
52
.github/workflows/ci.yml
vendored
@@ -19,12 +19,12 @@ env:
|
||||
|
||||
jobs:
|
||||
check-commit:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
outputs:
|
||||
skip: ${{ steps.check-commit.outputs.skip }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
|
||||
@@ -43,7 +43,7 @@ jobs:
|
||||
|
||||
build:
|
||||
name: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
needs: check-commit
|
||||
if: ${{ needs.check-commit.outputs.skip != 'true' }}
|
||||
outputs:
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
timeout-minutes: 45
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: set up qemu
|
||||
uses: docker/setup-qemu-action@v3
|
||||
@@ -70,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@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
@@ -83,11 +83,11 @@ jobs:
|
||||
build-image-amd64:
|
||||
name: build-image.linux/amd64
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
timeout-minutes: 20
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: build-image
|
||||
uses: ./.github/actions/build-image
|
||||
@@ -97,11 +97,11 @@ jobs:
|
||||
build-image-arm64:
|
||||
name: build-image.linux/arm64
|
||||
needs: build
|
||||
runs-on: buildjet-4vcpu-ubuntu-2204-arm
|
||||
runs-on: ubuntu-24.04-arm
|
||||
timeout-minutes: 20
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: build-image
|
||||
uses: ./.github/actions/build-image
|
||||
@@ -111,16 +111,16 @@ jobs:
|
||||
unit-tests:
|
||||
name: unit.${{ matrix.index }}
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix: ${{fromJson(needs.build.outputs.matrix)}}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v6
|
||||
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@v4
|
||||
- uses: actions/upload-artifact@v5
|
||||
with:
|
||||
name: test-results-${{ matrix.index }}
|
||||
path: test-results
|
||||
@@ -151,15 +151,15 @@ jobs:
|
||||
docker-deploy-tests:
|
||||
name: docker
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
name: build
|
||||
path: build
|
||||
@@ -167,17 +167,21 @@ jobs:
|
||||
- name: ci-setup
|
||||
run: ./.github/commands/ci-setup
|
||||
|
||||
- name: docker-container-setup
|
||||
run: |
|
||||
./tests/ci/setup.sh docker
|
||||
|
||||
- name: test docker deploys
|
||||
shell: bash
|
||||
timeout-minutes: 20
|
||||
run: |
|
||||
./tests/ci/setup.sh docker
|
||||
docker exec dokku bash -c "cat /etc/sudoers.d/dokku-nginx"
|
||||
DOKKU_SSH_PORT=3022 sudo -E make -e test-ci-docker
|
||||
|
||||
go-tests:
|
||||
name: go.${{ matrix.index }}
|
||||
needs: build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -186,10 +190,10 @@ jobs:
|
||||
GITHUB_NODE_INDEX: ${{ matrix.index }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
|
||||
- name: download packages
|
||||
uses: actions/download-artifact@v4
|
||||
uses: actions/download-artifact@v6
|
||||
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@v4
|
||||
- uses: actions/upload-artifact@v5
|
||||
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@v4
|
||||
uses: actions/download-artifact@v6
|
||||
with:
|
||||
path: test-results
|
||||
|
||||
|
||||
10
.github/workflows/codeql-analysis.yml
vendored
10
.github/workflows/codeql-analysis.yml
vendored
@@ -30,7 +30,7 @@ concurrency:
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
# workaround for https://github.com/github/codeql/issues/14235
|
||||
- name: Remove go.work file
|
||||
@@ -50,7 +50,7 @@ jobs:
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
uses: github/codeql-action/init@v4
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@@ -61,7 +61,7 @@ jobs:
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
uses: github/codeql-action/autobuild@v4
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
@@ -71,4 +71,4 @@ jobs:
|
||||
# uses a compiled language
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
uses: github/codeql-action/analyze@v4
|
||||
|
||||
6
.github/workflows/docs.yml
vendored
6
.github/workflows/docs.yml
vendored
@@ -13,15 +13,15 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Cloning repo
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: "Setup python 3.10"
|
||||
uses: actions/setup-python@v5
|
||||
uses: actions/setup-python@v6
|
||||
with:
|
||||
python-version: '3.10'
|
||||
|
||||
|
||||
36
.github/workflows/lint.yml
vendored
36
.github/workflows/lint.yml
vendored
@@ -17,22 +17,22 @@ concurrency:
|
||||
jobs:
|
||||
hadolint:
|
||||
name: hadolint
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Run hadolint
|
||||
uses: hadolint/hadolint-action@54c9adbab1582c2ef04b2016b760714a4bfde3cf
|
||||
uses: hadolint/hadolint-action@2332a7b74a6de0dda2e2221d575162eba76ba5e5
|
||||
# v3.0.0 => 4b5806eb9c6bee4954fc0e0cc3ad6175fc9782c1
|
||||
|
||||
markdown-lint:
|
||||
name: markdown-lint
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Setup node
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v6
|
||||
with:
|
||||
node-version: '20'
|
||||
cache: 'npm'
|
||||
@@ -44,10 +44,10 @@ jobs:
|
||||
|
||||
packer:
|
||||
name: packer
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Setup packer
|
||||
uses: hashicorp/setup-packer@main
|
||||
with:
|
||||
@@ -56,35 +56,29 @@ jobs:
|
||||
run: "make image/init/digitalocean"
|
||||
env:
|
||||
PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Get changed files in the docs folder
|
||||
id: changed-files-specific
|
||||
uses: tj-actions/changed-files@v44.5.5
|
||||
with:
|
||||
files: contrib/images/digitalocean/**
|
||||
- name: Run `packer validate`
|
||||
env:
|
||||
DIGITALOCEAN_TOKEN: ${{ secrets.DIGITALOCEAN_TOKEN }}
|
||||
if: steps.changed-files-specific.outputs.any_changed == 'true'
|
||||
run: "make image/validate/digitalocean"
|
||||
|
||||
shellcheck:
|
||||
name: shellcheck
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Run shellcheck
|
||||
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38
|
||||
# 1.1.0 => 94e0aab03ca135d11a35e5bfc14e6746dc56e7e9
|
||||
|
||||
shfmt:
|
||||
name: shfmt
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Run shfmt
|
||||
uses: luizm/action-sh-checker@c6edb3de93e904488b413636d96c6a56e3ad671a
|
||||
uses: luizm/action-sh-checker@17bd25a6ee188d2b91f677060038f4ba37ba14b2
|
||||
# v0.5.0 => edd0e45ecff35b05f162052b50df50976c1b74fc
|
||||
env:
|
||||
SHFMT_OPTS: -l -bn -ci -i 2 -d
|
||||
@@ -93,10 +87,10 @@ jobs:
|
||||
|
||||
yamllint:
|
||||
name: yamllint
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Clone
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Run yamllint
|
||||
uses: ibiqlik/action-yamllint@2576378a8e339169678f9939646ee3ee325e845c
|
||||
# v3.1.1 => 2576378a8e339169678f9939646ee3ee325e845c
|
||||
|
||||
41
.github/workflows/release.yml
vendored
41
.github/workflows/release.yml
vendored
@@ -19,13 +19,13 @@ on:
|
||||
jobs:
|
||||
release:
|
||||
name: release
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
env:
|
||||
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||
outputs:
|
||||
version: ${{ steps.version.outputs.version }}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -73,18 +73,18 @@ jobs:
|
||||
run: echo "version=$(cat build/next-version)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: upload packages
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Setup packer
|
||||
uses: hashicorp/setup-packer@main
|
||||
@@ -109,18 +109,18 @@ jobs:
|
||||
PKR_VAR_dokku_version="${VERSION:1}" make image/build/digitalocean
|
||||
|
||||
- name: upload packages
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v5
|
||||
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
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Bump Azure Template
|
||||
env:
|
||||
BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
||||
@@ -136,6 +136,31 @@ jobs:
|
||||
runs-on: macos-latest
|
||||
needs: release
|
||||
steps:
|
||||
- name: Brew doctor
|
||||
run: |
|
||||
brew doctor || true
|
||||
- name: Brew cleanup
|
||||
run: |
|
||||
echo "====> Running brew cleanup"
|
||||
brew cleanup || true
|
||||
echo "====> Untapping homebrew/core"
|
||||
brew untap homebrew/core || true
|
||||
echo "====> Untapping homebrew/cask"
|
||||
brew untap homebrew/cask || true
|
||||
echo "====> Untapping aws/tap"
|
||||
brew untap aws/tap || true
|
||||
echo "====> Untapping hashicorp/tap"
|
||||
brew untap hashicorp/tap || true
|
||||
echo "====> Uninstalling openssl@1.1"
|
||||
brew uninstall openssl@1.1 || true
|
||||
echo "====> Uninstalling ruby@3.0"
|
||||
brew uninstall ruby@3.0 || true
|
||||
echo "====> Running brew cleanup"
|
||||
brew cleanup || true
|
||||
- name: Brew doctor
|
||||
run: brew doctor || true
|
||||
- name: Brew config
|
||||
run: brew config
|
||||
- name: Bump Homebrew Formula
|
||||
env:
|
||||
HOMEBREW_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -13,3 +13,4 @@ tmp
|
||||
coverage.out
|
||||
site
|
||||
go.work.sum
|
||||
node_modules
|
||||
1
.well-known/funding-manifest-urls
Normal file
1
.well-known/funding-manifest-urls
Normal file
@@ -0,0 +1 @@
|
||||
https://dokku.com/funding.json
|
||||
@@ -97,7 +97,7 @@ need to do
|
||||
|
||||
### Which branch to base the work
|
||||
|
||||
All changes should be be based on the latest master commit.
|
||||
All changes should be based on the latest master commit.
|
||||
|
||||
### Submitting Changes
|
||||
|
||||
|
||||
25
Dockerfile
25
Dockerfile
@@ -1,4 +1,4 @@
|
||||
FROM phusion/baseimage:focal-1.2.0
|
||||
FROM phusion/baseimage:noble-1.0.2
|
||||
|
||||
CMD ["/sbin/my_init"]
|
||||
|
||||
@@ -16,25 +16,38 @@ RUN addgroup --gid $DOKKU_GID dokku \
|
||||
COPY ./tests/dhparam.pem /tmp/dhparam.pem
|
||||
COPY ./build/package/ /tmp
|
||||
|
||||
ENV DOKKU_INIT_SYSTEM=sv
|
||||
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
# hadolint ignore=DL3005,DL3008
|
||||
RUN mkdir -p /etc/apt/keyrings \
|
||||
&& mkdir -p /etc/apt/keyrings \
|
||||
&& apt-get remove -y systemd && apt-get autoremove -y && apt-get update && apt-get -y --no-install-recommends install gpg lsb-release openssl openssh-server rsync software-properties-common \
|
||||
&& curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \
|
||||
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null \
|
||||
&& add-apt-repository ppa:cncf-buildpacks/pack-cli \
|
||||
&& apt-get update \
|
||||
&& apt-get -y --no-install-recommends install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \
|
||||
&& apt-get -y --no-install-recommends install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin pack-cli \
|
||||
&& curl -o /tmp/nixpacks.bash -sSL https://nixpacks.com/install.sh \
|
||||
&& chmod +x /tmp/nixpacks.bash \
|
||||
&& NIXPACKS_BIN_DIR=/usr/bin BIN_DIR=/usr/bin /tmp/nixpacks.bash \
|
||||
&& test -x /usr/bin/nixpacks \
|
||||
&& rm -rf /tmp/nixpacks.bash \
|
||||
&& curl -o /tmp/railpack.bash -sSL https://railpack.com/install.sh \
|
||||
&& chmod +x /tmp/railpack.bash \
|
||||
&& RAILPACK_BIN_DIR=/usr/bin BIN_DIR=/usr/bin /tmp/railpack.bash \
|
||||
&& test -x /usr/bin/railpack \
|
||||
&& rm -rf /tmp/railpack.bash \
|
||||
&& echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections \
|
||||
&& echo "dokku dokku/skip_key_file boolean $DOKKU_SKIP_KEY_FILE" | debconf-set-selections \
|
||||
&& echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | debconf-set-selections \
|
||||
&& curl -sSL https://packagecloud.io/dokku/dokku/gpgkey | apt-key add - \
|
||||
&& echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ focal main" | tee /etc/apt/sources.list.d/dokku.list \
|
||||
&& echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ noble main" | tee /etc/apt/sources.list.d/dokku.list \
|
||||
&& mkdir -p /etc/nginx/ \
|
||||
&& cp /tmp/dhparam.pem /etc/nginx/dhparam.pem \
|
||||
&& apt-get update \
|
||||
&& apt-get upgrade -y \
|
||||
&& apt-get -y --no-install-recommends --only-upgrade install openssl openssh-server \
|
||||
&& apt-get -y --no-install-recommends install rsync "/tmp/dokku-$(dpkg --print-architecture).deb" \
|
||||
&& apt-get -y --no-install-recommends install lambda-builder "/tmp/dokku-$(dpkg --print-architecture).deb" \
|
||||
&& apt-get purge -y syslog-ng-core \
|
||||
&& apt-get autoremove -y \
|
||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
@@ -45,6 +58,7 @@ COPY ./docker .
|
||||
|
||||
RUN \
|
||||
rsync -a /tmp/ / \
|
||||
&& chmod +x /usr/local/bin/* \
|
||||
&& rm -rf /tmp/* \
|
||||
&& rm /etc/runit/runsvdir/default/sshd/down \
|
||||
&& chown -R dokku:dokku /home/dokku/ \
|
||||
@@ -59,7 +73,6 @@ RUN \
|
||||
&& ln -sf /mnt/dokku/var/lib/dokku/data /var/lib/dokku/data \
|
||||
&& ln -sf /mnt/dokku/var/lib/dokku/services /var/lib/dokku/services \
|
||||
&& mv /etc/my_init.d/00_regen_ssh_host_keys.sh /etc/my_init.d/15_regen_ssh_host_keys \
|
||||
&& rm -f /usr/bin/systemctl \
|
||||
&& rm -f /etc/nginx/sites-enabled/default /usr/share/nginx/html/index.html /etc/my_init.d/10_syslog-ng.init \
|
||||
&& rm -f /usr/local/openresty/nginx/conf/sites-enabled/default /usr/share/openresty/html/index.html \
|
||||
&& sed -i '/imklog/d' /etc/rsyslog.conf \
|
||||
|
||||
1499
HISTORY.md
1499
HISTORY.md
File diff suppressed because it is too large
Load Diff
8
Makefile
8
Makefile
@@ -11,7 +11,7 @@ PROCFILE_UTIL_URL ?= $(shell jq -r --arg name procfile-util --arg arch $(TARGET
|
||||
SIGIL_URL ?= $(shell jq -r --arg name gliderlabs-sigil --arg arch $(TARGETARCH) '.predependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||
SSHCOMMAND_URL ?= $(shell jq -r --arg name sshcommand --arg arch $(TARGETARCH) '.dependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||
STACK_URL ?= https://github.com/gliderlabs/herokuish.git
|
||||
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-22
|
||||
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-24
|
||||
DOKKU_LIB_ROOT ?= /var/lib/dokku
|
||||
PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/plugins
|
||||
CORE_PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/core-plugins
|
||||
@@ -54,7 +54,7 @@ go-build:
|
||||
basedir=$(PWD); \
|
||||
for dir in plugins/*; do \
|
||||
if [ -e $$dir/Makefile ]; then \
|
||||
$(MAKE) -e -C $$dir $(PLUGIN_MAKE_TARGET) || exit $$? ;\
|
||||
GO_ARGS='$(GO_ARGS)' CGO_ENABLED=0 GOOS=linux GOARCH=$(GOARCH) GOWORK=off $(MAKE) -e -C $$dir $(PLUGIN_MAKE_TARGET) || exit $$? ;\
|
||||
fi ;\
|
||||
done
|
||||
|
||||
@@ -64,7 +64,7 @@ ifndef PLUGIN_NAME
|
||||
$(error PLUGIN_NAME not specified)
|
||||
endif
|
||||
if [ -e plugins/$(PLUGIN_NAME)/Makefile ]; then \
|
||||
$(MAKE) -e -C plugins/$(PLUGIN_NAME) $(PLUGIN_MAKE_TARGET) || exit $$? ;\
|
||||
GO_ARGS='$(GO_ARGS)' CGO_ENABLED=0 GOOS=linux GOARCH=$(GOARCH) GOWORK=off $(MAKE) -e -C plugins/$(PLUGIN_NAME) $(PLUGIN_MAKE_TARGET) || exit $$? ;\
|
||||
fi
|
||||
|
||||
go-clean:
|
||||
@@ -131,7 +131,7 @@ plugin-dependencies: plugn procfile-util
|
||||
plugins: plugn procfile-util docker
|
||||
sudo -E dokku plugin:install --core
|
||||
|
||||
dependencies: apt-update docker-image-labeler docker-container-healthchecker lambda-builder netrc sshcommand plugn procfile-util docker help2man man-db sigil dos2unix jq parallel
|
||||
dependencies: apt-update jq docker-image-labeler docker-container-healthchecker lambda-builder netrc sshcommand plugn procfile-util docker help2man man-db sigil dos2unix parallel
|
||||
$(MAKE) -e stack
|
||||
|
||||
apt-update:
|
||||
|
||||
@@ -74,9 +74,8 @@ Support us with a monthly donation and help us continue our activities. [[Become
|
||||
|
||||
A fresh VM running any of the following operating systems:
|
||||
|
||||
- Ubuntu 20.04 / 22.04 x64 - Any currently supported release
|
||||
- Debian 10+ x64
|
||||
- Arch Linux x64 *(experimental)*
|
||||
- Ubuntu 22.04 / 24.04 (amd64/arm64) - Any currently supported release
|
||||
- Debian 11+ (amd64/arm64)
|
||||
|
||||
An SSH keypair that can be used for application deployment. If this exists before installation, it will be automatically imported into dokku.
|
||||
Otherwise, you will need to import the keypair manually after installation using `dokku ssh-keys:add`.
|
||||
@@ -86,8 +85,8 @@ Otherwise, you will need to import the keypair manually after installation using
|
||||
To install the latest stable release, run the following commands as a user who has access to `sudo`:
|
||||
|
||||
```shell
|
||||
wget -NP . https://dokku.com/install/v0.34.7/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.7 bash bootstrap.sh
|
||||
wget -NP . https://dokku.com/install/v0.37.0/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.37.0 bash bootstrap.sh
|
||||
```
|
||||
|
||||
You can then proceed to configure your server domain (via `dokku domains:set-global`) and user access (via `dokku ssh-keys:add`) to complete the installation.
|
||||
|
||||
20
Vagrantfile
vendored
20
Vagrantfile
vendored
@@ -1,7 +1,7 @@
|
||||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
BOX_NAME = ENV["BOX_NAME"] || "bento/ubuntu-20.04"
|
||||
BOX_NAME = ENV["BOX_NAME"] || "bento/ubuntu-24.04"
|
||||
BOX_CPUS = ENV["BOX_CPUS"] || "1"
|
||||
BOX_MEMORY = ENV["BOX_MEMORY"] || "1024"
|
||||
DOKKU_DOMAIN = ENV["DOKKU_DOMAIN"] || "dokku.me"
|
||||
@@ -9,7 +9,7 @@ DOKKU_IP = ENV["DOKKU_IP"] || "10.0.0.2"
|
||||
PREBUILT_STACK_URL = File.exist?("#{File.dirname(__FILE__)}/stack.tgz") ? 'file:///root/dokku/stack.tgz' : nil
|
||||
PUBLIC_KEY_PATH = "#{Dir.home}/.ssh/id_rsa.pub"
|
||||
|
||||
make_cmd = "DEBIAN_FRONTEND=noninteractive make -e install"
|
||||
make_cmd = "TARGETARCH=$(dpkg --print-architecture) DEBIAN_FRONTEND=noninteractive make -e install"
|
||||
if PREBUILT_STACK_URL
|
||||
make_cmd = "PREBUILT_STACK_URL='#{PREBUILT_STACK_URL}' #{make_cmd}"
|
||||
end
|
||||
@@ -39,9 +39,11 @@ Vagrant::configure("2") do |config|
|
||||
end
|
||||
|
||||
config.vm.define "empty", autostart: false
|
||||
config.vm.synced_folder ".", "/vagrant", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
|
||||
|
||||
config.vm.define "dokku", primary: true do |vm|
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
|
||||
@@ -53,7 +55,7 @@ Vagrant::configure("2") do |config|
|
||||
vb.customize ["modifyvm", :id, "--cableconnected1", "on"]
|
||||
end
|
||||
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git build-essential jq >/dev/null && cd /root/dokku && #{make_cmd}"
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git build-essential jq nginx >/dev/null && cd /root/dokku && #{make_cmd}"
|
||||
vm.vm.provision :shell do |s|
|
||||
s.inline = <<-EOT
|
||||
echo '"\e[5~": history-search-backward' > /root/.inputrc
|
||||
@@ -72,19 +74,19 @@ Vagrant::configure("2") do |config|
|
||||
config.vm.define "dokku-windows", autostart: false do |vm|
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git dos2unix >/dev/null"
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git dos2unix nginx >/dev/null"
|
||||
vm.vm.provision :shell, :inline => "cd /vagrant/ && export DOKKU_BRANCH=`git symbolic-ref -q --short HEAD 2>/dev/null` && export DOKKU_TAG=`git describe --tags --exact-match 2>/dev/null` && cd /root/ && cp /vagrant/bootstrap.sh ./ && dos2unix bootstrap.sh && bash bootstrap.sh"
|
||||
end
|
||||
|
||||
config.vm.define "dokku-deb", autostart: false do |vm|
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
vm.vm.provision :shell, :inline => "cd /root/dokku && make install-from-deb"
|
||||
end
|
||||
|
||||
config.vm.define "build", autostart: false do |vm|
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git >/dev/null && cd /root/dokku && #{make_cmd}"
|
||||
@@ -93,9 +95,9 @@ Vagrant::configure("2") do |config|
|
||||
|
||||
config.vm.define "build-arch", autostart: false do |vm|
|
||||
vm.vm.box = "bugyt/archlinux"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/dokku"
|
||||
vm.vm.synced_folder File.dirname(__FILE__), "/dokku", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
if Pathname.new("#{File.dirname(__FILE__)}/../dokku-arch").exist?
|
||||
vm.vm.synced_folder "#{File.dirname(__FILE__)}/../dokku-arch", "/dokku-arch"
|
||||
vm.vm.synced_folder "#{File.dirname(__FILE__)}/../dokku-arch", "/dokku-arch", type: "nfs", nfs_version: 4, nfs_udp: false
|
||||
end
|
||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||
vm.vm.network :private_network, ip: DOKKU_IP
|
||||
|
||||
49
bootstrap.sh
49
bootstrap.sh
@@ -3,7 +3,7 @@ set -eo pipefail
|
||||
[[ $TRACE ]] && set -x
|
||||
|
||||
# A script to bootstrap dokku.
|
||||
# It expects to be run on Ubuntu 20.04/22.04 via 'sudo`
|
||||
# It expects to be run on Ubuntu 22.04/24.04 via 'sudo`
|
||||
# If installing a tag higher than 0.3.13, it may install dokku via a package (so long as the package is higher than 0.3.13)
|
||||
# It checks out the dokku source code from GitHub into ~/dokku and then runs 'make install' from dokku source.
|
||||
|
||||
@@ -12,7 +12,7 @@ set -eo pipefail
|
||||
# That's good because it prevents our output overlapping with wget's.
|
||||
# It also means that we can't run a partially downloaded script.
|
||||
|
||||
SUPPORTED_VERSIONS="Debian [10, 11, 12], Ubuntu [18.04, 20.04, 22.04]"
|
||||
SUPPORTED_VERSIONS="Debian [11, 12, 13], Ubuntu [22.04, 24.04]"
|
||||
|
||||
log-fail() {
|
||||
declare desc="log fail formatter"
|
||||
@@ -48,9 +48,15 @@ install-requirements() {
|
||||
apt-get update -qq >/dev/null
|
||||
apt-get -qq -y --no-install-recommends install gpg-agent
|
||||
fi
|
||||
if ! dpkg -l | grep -q software-properties-common; then
|
||||
if ! command -v lsb_release &>/dev/null; then
|
||||
apt-get update -qq >/dev/null
|
||||
apt-get -qq -y --no-install-recommends install software-properties-common
|
||||
apt-get -qq -y --no-install-recommends install lsb-release
|
||||
fi
|
||||
if [[ "$DOKKU_DISTRO_VERSION" -lt "13" ]]; then
|
||||
if ! dpkg -l | grep -q software-properties-common; then
|
||||
apt-get update -qq >/dev/null
|
||||
apt-get -qq -y --no-install-recommends install software-properties-common
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
ubuntu)
|
||||
@@ -122,7 +128,22 @@ install-dokku-from-source() {
|
||||
log-fail "This installation script requires apt-get. For manual installation instructions, consult https://dokku.com/docs/getting-started/advanced-installation/"
|
||||
fi
|
||||
|
||||
apt-get -qq -y --no-install-recommends install sudo git make software-properties-common
|
||||
apt-get -qq -y --no-install-recommends install sudo git make
|
||||
case "$DOKKU_DISTRO" in
|
||||
debian)
|
||||
if [[ "$DOKKU_DISTRO_VERSION" -lt "13" ]]; then
|
||||
if ! dpkg -l | grep -q software-properties-common; then
|
||||
apt-get -qq -y --no-install-recommends install software-properties-common
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
ubuntu)
|
||||
if ! dpkg -l | grep -q software-properties-common; then
|
||||
apt-get -qq -y --no-install-recommends install software-properties-common
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
cd /root
|
||||
if [[ ! -d /root/dokku ]]; then
|
||||
git clone "$DOKKU_REPO" /root/dokku
|
||||
@@ -160,7 +181,7 @@ install-dokku-from-deb-package() {
|
||||
local NO_INSTALL_RECOMMENDS=${DOKKU_NO_INSTALL_RECOMMENDS:=""}
|
||||
local OS_ID
|
||||
|
||||
if ! in-array "$DOKKU_DISTRO_VERSION" "18.04" "20.04" "22.04" "10" "11" "12"; then
|
||||
if ! in-array "$DOKKU_DISTRO_VERSION" "22.04" "24.04" "10" "11" "12" "13"; then
|
||||
log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
|
||||
fi
|
||||
|
||||
@@ -181,26 +202,26 @@ install-dokku-from-deb-package() {
|
||||
wget -nv -O - https://get.docker.com/ | sh
|
||||
fi
|
||||
|
||||
OS_ID="$(lsb_release -cs 2>/dev/null || echo "jammy")"
|
||||
OS_ID="$(lsb_release -cs 2>/dev/null || echo "noble")"
|
||||
if ! in-array "$DOKKU_DISTRO" "debian" "ubuntu" "raspbian"; then
|
||||
DOKKU_DISTRO="ubuntu"
|
||||
OS_ID="jammy"
|
||||
OS_ID="noble"
|
||||
fi
|
||||
|
||||
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
|
||||
OS_IDS=("focal" "jammy")
|
||||
OS_IDS=("jammy" "noble")
|
||||
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||
OS_ID="jammy"
|
||||
OS_ID="noble"
|
||||
fi
|
||||
elif [[ "$DOKKU_DISTRO" == "debian" ]]; then
|
||||
OS_IDS=("stretch" "buster" "bullseye" "bookworm")
|
||||
OS_IDS=("bullseye" "bookworm" "trixie")
|
||||
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||
OS_ID="bullseye"
|
||||
OS_ID="bookworm"
|
||||
fi
|
||||
elif [[ "$DOKKU_DISTRO" == "raspbian" ]]; then
|
||||
OS_IDS=("buster" "bullseye")
|
||||
OS_IDS=("bullseye" "bookworm" "trixie")
|
||||
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||
OS_ID="bullseye"
|
||||
OS_ID="bookworm"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
GO_ARGS ?=
|
||||
GO_PLUGIN_MAKE_TARGET ?= build
|
||||
GO_REPO_ROOT := /go/src/github.com/dokku/dokku
|
||||
BUILD_IMAGE := golang:1.21.6
|
||||
BUILD_IMAGE := golang:1.25.1
|
||||
GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache
|
||||
GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod
|
||||
GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT)
|
||||
|
||||
@@ -1,8 +1,24 @@
|
||||
FROM ubuntu:20.04
|
||||
FROM ubuntu:24.04
|
||||
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
RUN apt-get update -qq && apt-get -qq -y --no-install-recommends install ca-certificates curl gcc git jq build-essential wget ruby-dev lintian python3 rpm help2man man-db sudo
|
||||
RUN curl -sL -o /usr/local/share/ca-certificates/GlobalSignRootCA_R3.crt https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
|
||||
RUN update-ca-certificates
|
||||
RUN apt-get update -qq && apt-get -qq -y --no-install-recommends install \
|
||||
adduser \
|
||||
build-essential \
|
||||
ca-certificates \
|
||||
coreutils \
|
||||
curl \
|
||||
gcc \
|
||||
git \
|
||||
help2man \
|
||||
jq \
|
||||
libc-bin \
|
||||
lintian \
|
||||
man-db \
|
||||
openssh-client \
|
||||
python3 \
|
||||
rpm \
|
||||
ruby-dev \
|
||||
sudo \
|
||||
wget
|
||||
RUN command -v fpm || gem install fpm
|
||||
|
||||
@@ -125,7 +125,7 @@ main() {
|
||||
|
||||
echo "====> Rebuild versions"
|
||||
if [[ -f "tmp/docs-build/versions.json" ]]; then
|
||||
python contrib/sort-mkdocs-versions
|
||||
python3 contrib/sort-mkdocs-versions
|
||||
else
|
||||
echo " No version file exists"
|
||||
fi
|
||||
|
||||
@@ -23,7 +23,7 @@ COPY . ${WORKDIR}
|
||||
ENV GOPATH=/go
|
||||
ENV GOROOT=/usr/local/go
|
||||
|
||||
FROM builder as amd64
|
||||
FROM builder AS amd64
|
||||
|
||||
ARG PLUGIN_MAKE_TARGET
|
||||
ARG DOKKU_VERSION=master
|
||||
@@ -38,7 +38,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
|
||||
make version copyfiles \
|
||||
&& make deb-dokku
|
||||
|
||||
FROM builder as arm64
|
||||
FROM builder AS arm64
|
||||
|
||||
COPY --from=amd64 /tmp /tmp
|
||||
COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated
|
||||
|
||||
@@ -15,7 +15,7 @@ def download_file(filename, url):
|
||||
|
||||
|
||||
def upload_file(filename):
|
||||
versions = ["jammy"]
|
||||
versions = ["noble"]
|
||||
cmd_template = "package_cloud push dokku/dokku/ubuntu/{0} {1}"
|
||||
for version in versions:
|
||||
cmd = cmd_template.format(version, filename)
|
||||
@@ -25,7 +25,7 @@ def upload_file(filename):
|
||||
def main():
|
||||
auth = HTTPBasicAuth(PACKAGECLOUD_TOKEN, "")
|
||||
base = requests.get(
|
||||
"https://packagecloud.io/api/v1/repos/dokku/dokku/packages/deb/ubuntu/focal.json",
|
||||
"https://packagecloud.io/api/v1/repos/dokku/dokku/packages/deb/ubuntu/jammy.json",
|
||||
auth=auth,
|
||||
)
|
||||
data = base.json()
|
||||
|
||||
@@ -2,94 +2,94 @@
|
||||
"dependencies": [
|
||||
{
|
||||
"name": "docker-container-healthchecker",
|
||||
"version": "0.11.0",
|
||||
"version": "0.14.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.11.0/docker-container-healthchecker-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.11.0/docker-container-healthchecker-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.14.0/docker-container-healthchecker-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.14.0/docker-container-healthchecker-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "docker-image-labeler",
|
||||
"version": "0.8.0",
|
||||
"version": "0.8.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.0/docker-image-labeler-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.0/docker-image-labeler-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.1/docker-image-labeler-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.8.1/docker-image-labeler-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lambda-builder",
|
||||
"version": "0.8.0",
|
||||
"version": "0.9.1",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/lambda-builder/releases/download/v0.8.0/lambda-builder-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/lambda-builder/releases/download/v0.8.0/lambda-builder-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/lambda-builder/releases/download/v0.9.1/lambda-builder-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/lambda-builder/releases/download/v0.9.1/lambda-builder-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "netrc",
|
||||
"version": "0.10.0",
|
||||
"version": "0.10.2",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/netrc/releases/download/v0.10.0/netrc-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/netrc/releases/download/v0.10.0/netrc-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/netrc/releases/download/v0.10.2/netrc-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/netrc/releases/download/v0.10.2/netrc-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "procfile-util",
|
||||
"version": "0.19.0",
|
||||
"version": "0.20.3",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/procfile-util/releases/download/v0.19.0/procfile-util-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/procfile-util/releases/download/v0.19.0/procfile-util-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/procfile-util/releases/download/v0.20.3/procfile-util-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/procfile-util/releases/download/v0.20.3/procfile-util-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "sshcommand",
|
||||
"version": "0.18.0",
|
||||
"version": "0.20.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/sshcommand/releases/download/v0.18.0/sshcommand",
|
||||
"arm64": "https://github.com/dokku/sshcommand/releases/download/v0.18.0/sshcommand"
|
||||
"amd64": "https://github.com/dokku/sshcommand/releases/download/v0.20.0/sshcommand",
|
||||
"arm64": "https://github.com/dokku/sshcommand/releases/download/v0.20.0/sshcommand"
|
||||
}
|
||||
}
|
||||
],
|
||||
"predependencies": [
|
||||
{
|
||||
"name": "gliderlabs-sigil",
|
||||
"version": "0.11.0",
|
||||
"version": "0.11.4",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.0/sigil-linux-amd64",
|
||||
"arm64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.0/sigil-linux-arm64"
|
||||
"amd64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.4/sigil-linux-amd64",
|
||||
"arm64": "https://github.com/gliderlabs/sigil/releases/download/v0.11.4/sigil-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "plugn",
|
||||
"version": "0.15.3",
|
||||
"version": "0.16.0",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/plugn/releases/download/v0.15.3/plugn-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/plugn/releases/download/v0.15.3/plugn-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/plugn/releases/download/v0.16.0/plugn-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/plugn/releases/download/v0.16.0/plugn-linux-arm64"
|
||||
}
|
||||
}
|
||||
],
|
||||
"recommendations": [
|
||||
{
|
||||
"name": "dokku-event-listener",
|
||||
"version": "0.17.0",
|
||||
"version": "0.17.2",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.0/dokku-event-listener-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.0/dokku-event-listener-linux-arm64"
|
||||
"amd64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.2/dokku-event-listener-linux-amd64",
|
||||
"arm64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.17.2/dokku-event-listener-linux-arm64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "dokku-update",
|
||||
"version": "0.9.4",
|
||||
"version": "0.9.6",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/dokku/dokku-update/releases/download/v0.9.4/dokku-update",
|
||||
"arm64": "https://github.com/dokku/dokku-update/releases/download/v0.9.4/dokku-update"
|
||||
"amd64": "https://github.com/dokku/dokku-update/releases/download/v0.9.6/dokku-update",
|
||||
"arm64": "https://github.com/dokku/dokku-update/releases/download/v0.9.6/dokku-update"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "herokuish",
|
||||
"version": "0.9.2",
|
||||
"version": "0.11.5",
|
||||
"urls": {
|
||||
"amd64": "https://github.com/gliderlabs/herokuish/releases/download/v0.9.2/herokuish_0.9.2_linux_x86_64.tgz",
|
||||
"arm64": "https://github.com/gliderlabs/herokuish/releases/download/v0.9.2/herokuish_0.9.2_linux_x86_64.tgz"
|
||||
"amd64": "https://github.com/gliderlabs/herokuish/releases/download/v0.11.5/herokuish_0.11.5_linux_x86_64.tgz",
|
||||
"arm64": "https://github.com/gliderlabs/herokuish/releases/download/v0.11.5/herokuish_0.11.5_linux_x86_64.tgz"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
[[ $DOKKU_TRACE ]] && set -x
|
||||
export DOKKU_PORT=${DOKKU_PORT:=22}
|
||||
export DOKKU_PORT=${DOKKU_PORT:=}
|
||||
export DOKKU_HOST=${DOKKU_HOST:=}
|
||||
export DOKKU_APP_PATH=${DOKKU_APP_PATH:=}
|
||||
|
||||
fn-random-number() {
|
||||
[[ -n "$1" ]] && RANGE="$1"
|
||||
@@ -61,12 +62,42 @@ fn-dokku-host() {
|
||||
echo "$DOKKU_HOST"
|
||||
}
|
||||
|
||||
fn-dokku-app() {
|
||||
declare DOKKU_GIT_REMOTE="$1" DOKKU_REMOTE_HOST="$2"
|
||||
remote_output="$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | head -n 1 | awk '{print $2}')"
|
||||
|
||||
# check if there is a scheme
|
||||
if echo "$remote_output" | grep -qEi "ssh://"; then
|
||||
echo "$remote_output" | grep -Ei "ssh://dokku@$DOKKU_REMOTE_HOST" | cut -f2 -d'@' | cut -f2 -d'/' 2>/dev/null
|
||||
else
|
||||
echo "$remote_output" | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | cut -f2 -d'@' | cut -f2 -d':' 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
fn-dokku-port() {
|
||||
declare DOKKU_GIT_REMOTE="$1" DOKKU_REMOTE_HOST="$2"
|
||||
remote_output="$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | head -n 1 | awk '{print $2}')"
|
||||
|
||||
if echo "$remote_output" | grep -qEi "ssh://"; then
|
||||
local output="$(echo "$remote_output" | grep -Ei "ssh://dokku@$DOKKU_REMOTE_HOST" | cut -f2 -d'@' | cut -f1 -d'/' 2>/dev/null)"
|
||||
# check if output has a : and if so, get the port
|
||||
if echo "$output" | grep -qEi ":"; then
|
||||
echo "$output" | cut -f2 -d':' 2>/dev/null
|
||||
else
|
||||
echo "22"
|
||||
fi
|
||||
else
|
||||
echo "22"
|
||||
fi
|
||||
}
|
||||
|
||||
fn-get-remote() {
|
||||
git config dokku.remote 2>/dev/null || echo "dokku"
|
||||
}
|
||||
|
||||
main() {
|
||||
declare CMD="$1" APP_ARG="$2"
|
||||
|
||||
local APP="" DOKKU_GIT_REMOTE="$(fn-get-remote)" DOKKU_REMOTE_HOST=""
|
||||
local cmd_set=false next_index=1 skip=false args=("$@")
|
||||
|
||||
@@ -84,6 +115,10 @@ main() {
|
||||
APP=${args[$next_index]}
|
||||
skip=true
|
||||
shift 2
|
||||
elif [[ "$arg" == "--app-path" ]]; then
|
||||
DOKKU_APP_PATH=${args[$next_index]}
|
||||
skip=true
|
||||
shift 2
|
||||
elif [[ "$arg" == "--remote" ]]; then
|
||||
DOKKU_GIT_REMOTE=${args[$next_index]}
|
||||
skip=true
|
||||
@@ -103,6 +138,11 @@ main() {
|
||||
next_index=$((next_index + 1))
|
||||
done
|
||||
|
||||
if [[ -n "$DOKKU_APP_PATH" ]]; then
|
||||
pushd "$DOKKU_APP_PATH" &>/dev/null || exit 1
|
||||
trap 'popd &>/dev/null || true' RETURN INT TERM
|
||||
fi
|
||||
|
||||
DOKKU_REMOTE_HOST="$(fn-dokku-host "$DOKKU_GIT_REMOTE" "$DOKKU_HOST")"
|
||||
if [[ -z "$DOKKU_REMOTE_HOST" ]] && [[ "$CMD" != remote ]] && [[ "$CMD" != remote:* ]]; then
|
||||
fn-client-help-msg
|
||||
@@ -111,14 +151,28 @@ main() {
|
||||
if [[ -z "$APP" ]]; then
|
||||
if [[ -d .git ]] || git rev-parse --git-dir &>/dev/null; then
|
||||
set +e
|
||||
APP=$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | head -n 1 | cut -f2 -d'@' | cut -f1 -d' ' | cut -f2 -d':' 2>/dev/null)
|
||||
APP="$(fn-dokku-app "$DOKKU_GIT_REMOTE" "$DOKKU_REMOTE_HOST")"
|
||||
set -e
|
||||
else
|
||||
echo " ! This is not a git repository" 1>&2
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -z "$DOKKU_PORT" ]]; then
|
||||
DOKKU_PORT="$(fn-dokku-port "$DOKKU_GIT_REMOTE" "$DOKKU_REMOTE_HOST")"
|
||||
fi
|
||||
|
||||
case "$CMD" in
|
||||
remote:show)
|
||||
echo "dokku-app: $APP"
|
||||
echo "dokku-git-remote: $DOKKU_GIT_REMOTE"
|
||||
echo "dokku-host: $DOKKU_HOST"
|
||||
echo "dokku-port: $DOKKU_PORT"
|
||||
echo "dokku-remote-host: $DOKKU_REMOTE_HOST"
|
||||
echo "dokku-ssh-user: dokku"
|
||||
echo "dokku-constructed-remote: ssh://dokku@$DOKKU_REMOTE_HOST:$DOKKU_PORT/$APP"
|
||||
exit 0
|
||||
;;
|
||||
apps:create)
|
||||
if [[ -z "$APP" ]] && [[ -z "$APP_ARG" ]]; then
|
||||
APP=$(fn-random-name)
|
||||
|
||||
@@ -12,7 +12,7 @@ pkgs=(apache2-utils
|
||||
curl
|
||||
man-db
|
||||
|
||||
netcat
|
||||
netcat-traditional
|
||||
net-tools
|
||||
|
||||
parallel
|
||||
@@ -49,7 +49,7 @@ echo '--> Setting up dokku apt repository'
|
||||
curl -fsSL https://packagecloud.io/dokku/dokku/gpgkey -o /etc/apt/keyrings/dokku.asc
|
||||
|
||||
cat >/etc/apt/sources.list.d/dokku.list <<EOM
|
||||
deb [arch=amd64 signed-by=/etc/apt/keyrings/dokku.asc] https://packagecloud.io/dokku/dokku/ubuntu/ jammy main
|
||||
deb [arch=amd64 signed-by=/etc/apt/keyrings/dokku.asc] https://packagecloud.io/dokku/dokku/ubuntu/ noble main
|
||||
EOM
|
||||
|
||||
echo '--> Install dependencies for dokku from new repository'
|
||||
|
||||
@@ -355,7 +355,7 @@ function checkFirewall {
|
||||
elif [[ $OS == "CentOS Linux" ]] || [[ $OS == "CentOS Stream" ]] || [[ $OS == "Rocky Linux" ]] || [[ $OS == "AlmaLinux" ]]; then
|
||||
if [ -f /usr/lib/systemd/system/csf.service ]; then
|
||||
fw="csf"
|
||||
if [[ $(systemctl status $fw >/dev/null 2>&1) ]]; then
|
||||
if systemctl status $fw >/dev/null 2>&1; then
|
||||
|
||||
FW_VER="\e[32m[PASS]\e[0m Firewall service (${fw}) is active\n"
|
||||
((PASS++))
|
||||
@@ -497,7 +497,7 @@ osv=0
|
||||
|
||||
if [[ $OS == "Ubuntu" ]]; then
|
||||
ost=1
|
||||
if [[ $VER == "22.10" ]] || [[ $VER == "22.04" ]] || [[ $VER == "20.04" ]] || [[ $VER == "18.04" ]] || [[ $VER == "16.04" ]]; then
|
||||
if [[ $VER == "24.04" ]] || [[ $VER == "22.10" ]] || [[ $VER == "22.04" ]] || [[ $VER == "20.04" ]] || [[ $VER == "18.04" ]] || [[ $VER == "16.04" ]]; then
|
||||
osv=1
|
||||
fi
|
||||
|
||||
@@ -513,6 +513,9 @@ elif [[ "$OS" =~ Debian.* ]]; then
|
||||
11)
|
||||
osv=1
|
||||
;;
|
||||
12)
|
||||
osv=1
|
||||
;;
|
||||
*)
|
||||
osv=2
|
||||
;;
|
||||
@@ -538,7 +541,7 @@ elif [[ $OS == "CentOS Stream" ]]; then
|
||||
fi
|
||||
elif [[ $OS == "Rocky Linux" ]]; then
|
||||
ost=1
|
||||
if [[ $VER =~ 8\. ]]; then
|
||||
if [[ $VER =~ 8\. ]] || [[ $VER =~ 9\. ]]; then
|
||||
osv=1
|
||||
else
|
||||
osv=2
|
||||
|
||||
@@ -12,7 +12,7 @@ variable "dokku_version" {
|
||||
}
|
||||
|
||||
source "digitalocean" "ubuntu" {
|
||||
image = "ubuntu-22-04-x64"
|
||||
image = "ubuntu-24-04-x64"
|
||||
region = "nyc1"
|
||||
size = "s-1vcpu-512mb-10gb"
|
||||
ssh_username = "root"
|
||||
@@ -30,6 +30,7 @@ build {
|
||||
"echo '--> Waiting until cloud-init is complete'",
|
||||
"/usr/bin/cloud-init status --wait",
|
||||
]
|
||||
valid_exit_codes = [0, 2]
|
||||
}
|
||||
|
||||
provisioner "file" {
|
||||
|
||||
@@ -134,7 +134,7 @@ fn-publish-package() {
|
||||
[[ "$RELEASE_TYPE" == "raspbian" ]] && DIST=raspbian
|
||||
|
||||
if [[ "$RELEASE_TYPE" == "raspbian" ]]; then
|
||||
OS_IDS=("buster" "bullseye")
|
||||
OS_IDS=("bullseye" "bookworm" "trixie")
|
||||
for OS_ID in "${OS_IDS[@]}"; do
|
||||
log-info "(release-dokku) pushing deb to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||
@@ -144,7 +144,7 @@ fn-publish-package() {
|
||||
fi
|
||||
done
|
||||
elif [[ "$DIST" == "ubuntu" ]]; then
|
||||
OS_IDS=("focal" "jammy")
|
||||
OS_IDS=("jammy" "noble")
|
||||
for OS_ID in "${OS_IDS[@]}"; do
|
||||
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||
@@ -155,7 +155,7 @@ fn-publish-package() {
|
||||
done
|
||||
|
||||
DIST=debian
|
||||
OS_IDS=("buster" "bullseye" "bookworm")
|
||||
OS_IDS=("bullseye" "bookworm" "trixie")
|
||||
for OS_ID in "${OS_IDS[@]}"; do
|
||||
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||
@@ -183,9 +183,9 @@ fn-replace-version() {
|
||||
|
||||
fn-repo-merged-requests() {
|
||||
declare desc="Retrieves all pull request ids since a given release of dokku"
|
||||
declare TAG="$1" IS_PATCH="$2"
|
||||
declare CURRENT_VERSION="$1" NEXT_VERSION="$2" IS_PATCH="$3"
|
||||
if [[ "$IS_PATCH" == "true" ]]; then
|
||||
git log "v${TAG}..HEAD" --oneline | grep "Merge pull request" | cut -d' ' -f 5 | cut -d '#' -f2
|
||||
git log "v${CURRENT_VERSION}..HEAD" --oneline | grep "Merge pull request" | cut -d' ' -f 5 | cut -d '#' -f2
|
||||
else
|
||||
curl -u "$RELEASE_GITHUB_USERNAME:$RELEASE_GITHUB_API_TOKEN" --fail -sS "https://api.github.com/search/issues?q=repo:dokku/dokku+milestone:v${NEXT_VERSION}+is:pr&per_page=100" | jq '.items[].number'
|
||||
fi
|
||||
@@ -225,14 +225,14 @@ fn-repo-update() {
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/development/release-process.md
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/getting-started/install/docker.md
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/getting-started/installation/index.md
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/home.html
|
||||
fn-replace-version "v$CURRENT_VERSION" "v$NEXT_VERSION" docs/home.html
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/template.html
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" README.md
|
||||
|
||||
if [[ "$RELEASE" == 'patch' ]]; then
|
||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/assets/versions.json
|
||||
else
|
||||
versions=$(python -c 'import json,sys;d=json.load(sys.stdin);d["max-versions"].append("'"${NEXT_VERSION}"'"); print(json.dumps(d, indent=2, sort_keys=True))' <docs/assets/versions.json)
|
||||
versions=$(python3 -c 'import json,sys;d=json.load(sys.stdin);d["max-versions"].append("'"${NEXT_VERSION}"'"); print(json.dumps(d, indent=2, sort_keys=True))' <docs/assets/versions.json)
|
||||
echo "$versions" >docs/assets/versions.json
|
||||
git add docs/assets/versions.json
|
||||
fi
|
||||
@@ -256,7 +256,7 @@ fn-repo-update-history-and-commit() {
|
||||
|
||||
mkdir -p /tmp/github-data
|
||||
|
||||
for PULL_REQUEST_ID in $(fn-repo-merged-requests "$CURRENT_VERSION" "$IS_PATCH"); do
|
||||
for PULL_REQUEST_ID in $(fn-repo-merged-requests "$CURRENT_VERSION" "$NEXT_VERSION" "$IS_PATCH"); do
|
||||
ISSUE_FILE="/tmp/github-data/${PULL_REQUEST_ID}.json"
|
||||
if [[ ! -f "$ISSUE_FILE" ]]; then
|
||||
while true; do
|
||||
|
||||
@@ -70,7 +70,7 @@ def get_nav_from_selector(soup: BeautifulSoup, selector: str, docs_dir: str):
|
||||
children = os.listdir(docs_dir + "/" + child_dir)
|
||||
|
||||
children.sort(
|
||||
key=lambda x: list(map(int, x.split("-")[0].split("."))),
|
||||
key=lambda x: list(map(int, x.split("-")[0].split("."))) if "." in x else [-1, -1, -1],
|
||||
reverse=True,
|
||||
)
|
||||
children = [child_dir + c for c in children]
|
||||
|
||||
4
deb.mk
4
deb.mk
@@ -16,7 +16,7 @@ install-from-deb:
|
||||
|
||||
@echo "--> Installing dokku"
|
||||
wget -qO- https://packagecloud.io/dokku/dokku/gpgkey | sudo tee /etc/apt/trusted.gpg.d/dokku.asc
|
||||
@echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ $(shell lsb_release -cs 2>/dev/null || echo "focal") main" | sudo tee /etc/apt/sources.list.d/dokku.list
|
||||
@echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ $(shell lsb_release -cs 2>/dev/null || echo "noble") main" | sudo tee /etc/apt/sources.list.d/dokku.list
|
||||
sudo apt-get update -qq >/dev/null
|
||||
sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install dokku
|
||||
|
||||
@@ -27,7 +27,7 @@ deb-all: deb-setup deb-dokku
|
||||
deb-setup:
|
||||
@echo "-> Updating deb repository and installing build requirements"
|
||||
@sudo apt-get update -qq >/dev/null
|
||||
@sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install gcc git build-essential wget ruby-dev ruby1.9.1 lintian >/dev/null 2>&1
|
||||
@sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install gcc git build-essential wget ruby-dev lintian >/dev/null 2>&1
|
||||
@command -v fpm >/dev/null || sudo gem install fpm --no-ri --no-rdoc
|
||||
@ssh -o StrictHostKeyChecking=no git@github.com || true
|
||||
|
||||
|
||||
6
debian/control
vendored
6
debian/control
vendored
@@ -1,11 +1,11 @@
|
||||
Package: dokku
|
||||
Version: 0.34.7
|
||||
Version: 0.37.0
|
||||
Section: web
|
||||
Priority: optional
|
||||
Architecture: amd64
|
||||
Depends: apache2-utils, locales, git, cpio, curl, man-db, netcat, sshcommand, docker-engine-cs (>= 17.05.0) | docker-engine (>= 17.05.0) | docker-io (>= 17.05.0) | docker.io (>= 17.05.0) | docker-ce (>= 17.05.0) | docker-ee (>= 17.05.0) | moby-engine, docker-compose-plugin | moby-compose, docker-buildx-plugin | moby-buildx, docker-container-healthchecker, docker-image-labeler, lambda-builder, net-tools, netrc, parallel, procfile-util, rsync, rsyslog, dos2unix, jq, unzip, util-linux
|
||||
Depends: apache2-utils, locales, git, cpio, cron, curl, man-db, netcat, sshcommand, docker-engine-cs (>= 19.03.0) | docker-engine (>= 19.03.0) | docker-io (>= 19.03.0) | docker.io (>= 19.03.0) | docker-ce (>= 19.03.0) | docker-ee (>= 19.03.0) | moby-engine, docker-compose-plugin | moby-compose, docker-buildx-plugin | moby-buildx, docker-container-healthchecker, docker-image-labeler, lambda-builder, net-tools, netrc, parallel, procfile-util, rsync, dos2unix, jq, unzip, util-linux
|
||||
Recommends: herokuish, bash-completion, dokku-update, dokku-event-listener
|
||||
Pre-Depends: gliderlabs-sigil, nginx (>= 1.8.0) | openresty, bind9-dnsutils, cgroupfs-mount | cgroup-lite, plugn, sudo, python3, debconf
|
||||
Pre-Depends: gliderlabs-sigil, nginx (>= 1.8.0) | openresty, bind9-dnsutils, debconf, plugn, sudo, python3, rsyslog
|
||||
Maintainer: Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>
|
||||
Description: Docker-powered PaaS that helps build and manage the lifecycle of applications
|
||||
Dokku is an extensible, open source Platform as a Service
|
||||
|
||||
3
debian/postinst
vendored
3
debian/postinst
vendored
@@ -128,9 +128,6 @@ case "$1" in
|
||||
configure)
|
||||
mandb
|
||||
[ ! -x /usr/bin/docker.io ] || ln -sf /usr/bin/docker.io /usr/local/bin/docker
|
||||
if [[ -f /sbin/modprobe ]]; then
|
||||
modprobe aufs || echo "WARNING: Restart server to finish installing dokku!"
|
||||
fi
|
||||
|
||||
setup-user
|
||||
setup-storage
|
||||
|
||||
26
debian/prerm
vendored
26
debian/prerm
vendored
@@ -11,39 +11,39 @@ ps_backtrace() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
declare -i pid=$1
|
||||
declare -i pid="$1"
|
||||
ppid=0
|
||||
header_modifier=""
|
||||
while :; do
|
||||
if [ $ppid -ne 0 ]; then
|
||||
if [[ "$ppid" -ne 0 ]]; then
|
||||
header_modifier=h
|
||||
fi
|
||||
ppid=$(ps -o ppid= $pid)
|
||||
ps uww $header_modifier -p $pid
|
||||
if [ $pid -eq 1 ]; then
|
||||
ppid="$(ps -o ppid= "$pid")"
|
||||
ps uww $header_modifier -p "$pid"
|
||||
if [[ "$pid" -eq 1 ]] || [[ "$pid" -eq 0 ]]; then
|
||||
break
|
||||
fi
|
||||
pid=$ppid
|
||||
pid="$ppid"
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
# HACK: Ensure that we only delete data when purging dokku from the system
|
||||
if ps_backtrace $BASHPID 2>/dev/null | grep dpkg | grep -- "--purge" >/dev/null; then
|
||||
if ps_backtrace "$BASHPID" 2>/dev/null | grep dpkg | grep -- "--purge" >/dev/null; then
|
||||
echo "Processing purge"
|
||||
|
||||
echo "Destroying deployed applications"
|
||||
for app in $(DOKKU_QUIET_OUTPUT=1 dokku apps:list); do
|
||||
dokku --force apps:destroy $app
|
||||
dokku --force apps:destroy "$app"
|
||||
done
|
||||
|
||||
# HACK: Only disable core plugins, as we don't know what data users store in non-core plugin directories
|
||||
echo "Disabling all core plugins"
|
||||
find ${DOKKU_LIB_ROOT}/core-plugins/available -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
|
||||
if [ ! -d ${DOKKU_LIB_ROOT}/plugins/available/$plugin ]; then
|
||||
rm ${DOKKU_LIB_ROOT}/plugins/available/$plugin
|
||||
PLUGIN_PATH=${DOKKU_LIB_ROOT}/core-plugins plugn disable $plugin
|
||||
PLUGIN_PATH=${DOKKU_LIB_ROOT}/plugins plugn disable $plugin
|
||||
find "${DOKKU_LIB_ROOT}/core-plugins/available" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
|
||||
if [[ ! -d "${DOKKU_LIB_ROOT}/plugins/available/$plugin" ]]; then
|
||||
rm "${DOKKU_LIB_ROOT}/plugins/available/$plugin"
|
||||
PLUGIN_PATH="${DOKKU_LIB_ROOT}/core-plugins" plugn disable "$plugin"
|
||||
PLUGIN_PATH="${DOKKU_LIB_ROOT}/plugins" plugn disable "$plugin"
|
||||
fi
|
||||
done
|
||||
else
|
||||
|
||||
4
docker/etc/cron.d/docker-builder-prune
Normal file
4
docker/etc/cron.d/docker-builder-prune
Normal file
@@ -0,0 +1,4 @@
|
||||
PATH=/usr/local/bin:/usr/bin:/bin
|
||||
SHELL=/bin/bash
|
||||
|
||||
5 4 * * * root /usr/local/bin/docker builder prune -f >>/var/log/dokku/builder-prune.log 2>&1
|
||||
@@ -20,7 +20,11 @@ log-warn() {
|
||||
support-userns() {
|
||||
chown 0:0 /usr/bin/sudo
|
||||
chmod 4755 /usr/bin/sudo
|
||||
chown 0:0 /usr/lib/sudo/sudoers.so
|
||||
if [[ -f /usr/lib/sudo/sudoers.so ]]; then
|
||||
chown 0:0 /usr/lib/sudo/sudoers.so
|
||||
elif [[ -f /usr/libexec/sudo/sudoers.so ]]; then
|
||||
chown 0:0 /usr/libexec/sudo/sudoers.so
|
||||
fi
|
||||
chown -R 0:0 /etc/sudoers
|
||||
chown -R 0:0 /etc/sudoers.d
|
||||
chown -R 0:0 /run/sshd
|
||||
@@ -54,6 +58,22 @@ main() {
|
||||
fi
|
||||
done
|
||||
|
||||
touch /etc/default/dokku
|
||||
echo "export DOKKU_INIT_SYSTEM=sv" >>/etc/default/dokku
|
||||
if [[ -x /usr/local/bin/docker ]]; then
|
||||
echo "export DOCKER_BIN=/usr/local/bin/docker" >>/etc/default/dokku
|
||||
fi
|
||||
|
||||
if [[ -n "$DOKKU_HOST_ROOT" ]]; then
|
||||
echo "export DOKKU_HOST_ROOT=$DOKKU_HOST_ROOT" >>/etc/default/dokku
|
||||
chown dokku:dokku /etc/default/dokku
|
||||
fi
|
||||
|
||||
if [[ -n "$DOKKU_LIB_HOST_ROOT" ]]; then
|
||||
echo "export DOKKU_LIB_HOST_ROOT=$DOKKU_LIB_HOST_ROOT" >>/etc/default/dokku
|
||||
chown dokku:dokku /etc/default/dokku
|
||||
fi
|
||||
|
||||
if [[ -f /mnt/dokku/plugin-list ]]; then
|
||||
while read line; do
|
||||
local plugin_name="$(echo "$line" | awk -F: '{print $1}')"
|
||||
@@ -65,22 +85,17 @@ main() {
|
||||
done </mnt/dokku/plugin-list
|
||||
fi
|
||||
|
||||
# run core install triggers to force create any folders that may be missing
|
||||
dokku plugin:install
|
||||
|
||||
if [[ -n "$DOKKU_HOSTNAME" ]]; then
|
||||
echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections
|
||||
echo "dokku dokku/vhost_enable boolean true" | debconf-set-selections
|
||||
dokku --quiet domains:set-global "$DOKKU_HOSTNAME"
|
||||
fi
|
||||
|
||||
if [[ -x /usr/local/bin/docker ]]; then
|
||||
mkdir -p /home/dokku/.dokkurc
|
||||
echo "export DOCKER_BIN=/usr/local/bin/docker" >"/home/dokku/.dokkurc/DOCKER_BIN"
|
||||
fi
|
||||
|
||||
if [[ -n "$DOKKU_HOST_ROOT" ]]; then
|
||||
touch /etc/default/dokku
|
||||
echo "export DOKKU_HOST_ROOT=$DOKKU_HOST_ROOT" >>/etc/default/dokku
|
||||
chown dokku:dokku /etc/default/dokku
|
||||
fi
|
||||
echo "dokku dokku/skip_key_file boolean true" | debconf-set-selections
|
||||
echo "dokku dokku/key_file string /root/.ssh/id_rsa.pub" | debconf-set-selections
|
||||
|
||||
NGINX_ROOT="/etc/nginx"
|
||||
if [[ -x /usr/bin/openresty ]]; then
|
||||
|
||||
133
docker/etc/ssh/sshd_config
Normal file
133
docker/etc/ssh/sshd_config
Normal file
@@ -0,0 +1,133 @@
|
||||
# $OpenBSD: sshd_config,v 1.80 2008/07/02 02:24:18 djm Exp $
|
||||
|
||||
# This is the sshd server system-wide configuration file. See
|
||||
# sshd_config(5) for more information.
|
||||
|
||||
# This sshd was compiled with PATH=/usr/bin:/bin:/usr/sbin:/sbin
|
||||
|
||||
# The strategy used for options in the default sshd_config shipped with
|
||||
# OpenSSH is to specify options with their default value where
|
||||
# possible, but leave them commented. Uncommented options change a
|
||||
# default value.
|
||||
|
||||
UseDNS no
|
||||
|
||||
Port 22
|
||||
Port 22333
|
||||
#AddressFamily any
|
||||
#ListenAddress 0.0.0.0
|
||||
#ListenAddress ::
|
||||
|
||||
# Disable legacy (protocol version 1) support in the server for new
|
||||
# installations. In future the default will change to require explicit
|
||||
# activation of protocol 1
|
||||
Protocol 2
|
||||
|
||||
# HostKey for protocol version 1
|
||||
#HostKey /etc/ssh_host_key
|
||||
# HostKeys for protocol version 2
|
||||
#HostKey /etc/ssh_host_rsa_key
|
||||
#HostKey /etc/ssh_host_dsa_key
|
||||
|
||||
# Lifetime and size of ephemeral version 1 server key
|
||||
#KeyRegenerationInterval 1h
|
||||
#ServerKeyBits 1024
|
||||
|
||||
# Logging
|
||||
# obsoletes QuietMode and FascistLogging
|
||||
SyslogFacility AUTHPRIV
|
||||
#LogLevel INFO
|
||||
|
||||
# Authentication:
|
||||
|
||||
#LoginGraceTime 2m
|
||||
#PermitRootLogin yes
|
||||
#StrictModes yes
|
||||
#MaxAuthTries 6
|
||||
#MaxSessions 10
|
||||
|
||||
#RSAAuthentication yes
|
||||
#PubkeyAuthentication yes
|
||||
#AuthorizedKeysFile .ssh/authorized_keys
|
||||
|
||||
# For this to work you will also need host keys in /etc/ssh_known_hosts
|
||||
#RhostsRSAAuthentication no
|
||||
# similar for protocol version 2
|
||||
#HostbasedAuthentication no
|
||||
# Change to yes if you don't trust ~/.ssh/known_hosts for
|
||||
# RhostsRSAAuthentication and HostbasedAuthentication
|
||||
#IgnoreUserKnownHosts no
|
||||
# Don't read the user's ~/.rhosts and ~/.shosts files
|
||||
#IgnoreRhosts yes
|
||||
|
||||
# To disable tunneled clear text passwords, change to no here! Also,
|
||||
# remember to set the UsePAM setting to 'no'.
|
||||
PasswordAuthentication no
|
||||
#PermitEmptyPasswords no
|
||||
|
||||
# SACL options
|
||||
# The default for the SACLSupport option is now "no", as this option has been
|
||||
# depreciated in favor of SACL enforcement in the PAM configuration (/etc/pam.d/sshd).
|
||||
#SACLSupport no
|
||||
|
||||
# Change to no to disable s/key passwords
|
||||
# Disabled for passenger-docker. We only allow key authentication.
|
||||
ChallengeResponseAuthentication no
|
||||
|
||||
# Kerberos options
|
||||
#KerberosAuthentication no
|
||||
#KerberosOrLocalPasswd yes
|
||||
#KerberosTicketCleanup yes
|
||||
|
||||
# GSSAPI options
|
||||
#GSSAPIAuthentication no
|
||||
#GSSAPICleanupCredentials yes
|
||||
#GSSAPIStrictAcceptorCheck yes
|
||||
#GSSAPIKeyExchange no
|
||||
|
||||
# Set this to 'yes' to enable PAM authentication, account processing,
|
||||
# and session processing. If this is enabled, PAM authentication will
|
||||
# be allowed through the ChallengeResponseAuthentication and
|
||||
# PasswordAuthentication. Depending on your PAM configuration,
|
||||
# PAM authentication via ChallengeResponseAuthentication may bypass
|
||||
# the setting of "PermitRootLogin without-password".
|
||||
# If you just want the PAM account and session checks to run without
|
||||
# PAM authentication, then enable this but set PasswordAuthentication
|
||||
# and ChallengeResponseAuthentication to 'no'.
|
||||
# Also, PAM will deny null passwords by default. If you need to allow
|
||||
# null passwords, add the " nullok" option to the end of the
|
||||
# securityserver.so line in /etc/pam.d/sshd.
|
||||
UsePAM yes
|
||||
|
||||
#AllowAgentForwarding yes
|
||||
#AllowTcpForwarding yes
|
||||
#GatewayPorts no
|
||||
X11Forwarding yes
|
||||
#X11DisplayOffset 10
|
||||
#X11UseLocalhost yes
|
||||
#PrintMotd yes
|
||||
#PrintLastLog yes
|
||||
#TCPKeepAlive yes
|
||||
#UseLogin no
|
||||
#UsePrivilegeSeparation yes
|
||||
#PermitUserEnvironment no
|
||||
#Compression delayed
|
||||
#ClientAliveInterval 0
|
||||
#ClientAliveCountMax 3
|
||||
#UseDNS yes
|
||||
#PidFile /var/run/sshd.pid
|
||||
#MaxStartups 10
|
||||
#PermitTunnel no
|
||||
#ChrootDirectory none
|
||||
|
||||
# no default banner path
|
||||
#Banner none
|
||||
|
||||
# override default of no subsystems
|
||||
Subsystem sftp /usr/lib/openssh/sftp-server
|
||||
|
||||
# Example of overriding settings on a per-user basis
|
||||
#Match User anoncvs
|
||||
# X11Forwarding no
|
||||
# AllowTcpForwarding no
|
||||
# ForceCommand cvs server
|
||||
@@ -1 +1 @@
|
||||
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-container-healthchecker,/usr/bin/docker-image-labeler,/usr/bin/pack
|
||||
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-container-healthchecker,/usr/bin/docker-image-labeler,/usr/bin/lambda-builder,/usr/bin/nixpacks,/usr/bin/railpack,/usr/bin/pack
|
||||
|
||||
20
docker/usr/local/bin/lambda-builder
Normal file
20
docker/usr/local/bin/lambda-builder
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
[[ $TRACE ]] && set -x
|
||||
|
||||
main() {
|
||||
declare desc="re-runs lambda-builder commands as sudo"
|
||||
local LAMBDA_BUILDER_BIN=""
|
||||
if [[ -x "/usr/bin/lambda-builder" ]]; then
|
||||
LAMBDA_BUILDER_BIN="/usr/bin/lambda-builder"
|
||||
fi
|
||||
|
||||
if [[ -z "$LAMBDA_BUILDER_BIN" ]]; then
|
||||
echo "! No lambda-builder binary found" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo -E "$LAMBDA_BUILDER_BIN" "$@"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
20
docker/usr/local/bin/nixpacks
Normal file
20
docker/usr/local/bin/nixpacks
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
[[ $TRACE ]] && set -x
|
||||
|
||||
main() {
|
||||
declare desc="re-runs nixpacks commands as sudo"
|
||||
local NIXPACKS_BIN=""
|
||||
if [[ -x "/usr/bin/nixpacks" ]]; then
|
||||
NIXPACKS_BIN="/usr/bin/nixpacks"
|
||||
fi
|
||||
|
||||
if [[ -z "$NIXPACKS_BIN" ]]; then
|
||||
echo "! No nixpacks binary found" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo -E "$NIXPACKS_BIN" "$@"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
20
docker/usr/local/bin/railpack
Normal file
20
docker/usr/local/bin/railpack
Normal file
@@ -0,0 +1,20 @@
|
||||
#!/usr/bin/env bash
|
||||
set -eo pipefail
|
||||
[[ $TRACE ]] && set -x
|
||||
|
||||
main() {
|
||||
declare desc="re-runs railpack commands as sudo"
|
||||
local RAILPACK_BIN=""
|
||||
if [[ -x "/usr/bin/railpack" ]]; then
|
||||
RAILPACK_BIN="/usr/bin/railpack"
|
||||
fi
|
||||
|
||||
if [[ -z "$RAILPACK_BIN" ]]; then
|
||||
echo "! No railpack binary found" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
sudo -E "$RAILPACK_BIN" "$@"
|
||||
}
|
||||
|
||||
main "$@"
|
||||
2
docs/_build/Dockerfile
vendored
2
docs/_build/Dockerfile
vendored
@@ -1,4 +1,4 @@
|
||||
FROM python:3.12.4-alpine
|
||||
FROM python:3.14.0-alpine
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
|
||||
2
docs/_build/entrypoint
vendored
2
docs/_build/entrypoint
vendored
@@ -3,7 +3,7 @@ set -eo pipefail
|
||||
|
||||
write-mkdocs() {
|
||||
if [[ -f /usr/src/source/contrib/write-mkdocs ]]; then
|
||||
if ! python /usr/src/source/contrib/write-mkdocs; then
|
||||
if ! python3 /usr/src/source/contrib/write-mkdocs; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
36
docs/_build/requirements.txt
vendored
36
docs/_build/requirements.txt
vendored
@@ -1,23 +1,23 @@
|
||||
beautifulsoup4==4.12.3
|
||||
click==8.1.7
|
||||
beautifulsoup4==4.14.2
|
||||
click==8.3.1
|
||||
ghp-import==2.1.0
|
||||
importlib-metadata==8.0.0
|
||||
Jinja2==3.1.4
|
||||
Markdown>=3.2.1,<3.7
|
||||
MarkupSafe==2.1.5
|
||||
importlib-metadata==8.7.0
|
||||
Jinja2==3.1.6
|
||||
Markdown>=3.2.1,<3.11
|
||||
MarkupSafe==3.0.3
|
||||
mergedeep==1.3.4
|
||||
mkdocs==1.6.0
|
||||
mkdocs==1.6.1
|
||||
mkdocs-exclude==1.0.2
|
||||
mkdocs-material==9.5.28
|
||||
mkdocs-material==9.7.0
|
||||
mkdocs-material-extensions==1.3.1
|
||||
packaging==24.1
|
||||
Pygments==2.18.0
|
||||
pymdown-extensions==10.8.1
|
||||
pyparsing==3.1.2
|
||||
packaging==25.0
|
||||
Pygments==2.19.2
|
||||
pymdown-extensions==10.17.1
|
||||
pyparsing==3.2.5
|
||||
python-dateutil==2.9.0.post0
|
||||
PyYAML==6.0.1
|
||||
pyyaml_env_tag==0.1
|
||||
six==1.16.0
|
||||
soupsieve==2.5
|
||||
watchdog==4.0.1
|
||||
zipp==3.19.2
|
||||
PyYAML==6.0.3
|
||||
pyyaml_env_tag==1.1
|
||||
six==1.17.0
|
||||
soupsieve==2.8
|
||||
watchdog==6.0.0
|
||||
zipp==3.23.0
|
||||
|
||||
@@ -56,14 +56,19 @@ Please keep the above in mind when utilizing deployment tasks.
|
||||
|
||||
### Changing the `app.json` location
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `app.json` file to use for a given app. This can be done via the `app-json:set` command. If a value is specified and that file does not exist within the repository, Dokku will continue the build process as if the repository has no `app.json` file.
|
||||
The `app.json` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
For deploys via the `git:from-image` and `git:load-image` commands, the `app.json` is extracted from the configured `WORKDIR` property of the image. For all other deploys - git push, `git:from-archive`, `git:sync` - will have the `app.json` extracted directly from the source code. Both cases will respect the configured `appjson-path` property value.
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `appjson-path` property:
|
||||
|
||||
```shell
|
||||
dokku app-json:set node-js-app appjson-path .dokku/app.json
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, Dokku will continue the build process as if the repository has no `app.json`.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
|
||||
@@ -3,57 +3,89 @@
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.3.17
|
||||
|
||||
Pass [container options](https://docs.docker.com/engine/reference/run/) to the `docker run` command during Dokku's `build`, `deploy` and `run` phases
|
||||
|
||||
```
|
||||
docker-options:add <app> <phase(s)> OPTION # Add Docker option to app for phase (comma-separated phase list)
|
||||
docker-options:clear <app> [<phase(s)>...] # Clear a docker options from application
|
||||
docker-options:clear <app> [<phase(s)>...] # Clear a docker options from app
|
||||
docker-options:remove <app> <phase(s)> OPTION # Remove Docker option from app for phase (comma-separated phase list)
|
||||
docker-options:report [<app>] [<flag>] # Displays a docker options report for one or more apps
|
||||
```
|
||||
|
||||
> When specifying multiple phases, they **must** be comma-separated _without_ spaces in between each phase, like so:
|
||||
>
|
||||
> ```shell
|
||||
> dokku docker-options:add node-js-app deploy,run "-v /var/log/node-js-app:/app/logs"
|
||||
> ```
|
||||
The `docker-options` plugin allows users to specify custom [container options](https://docs.docker.com/engine/reference/run/) for containers created by Dokku at various phases.
|
||||
|
||||
## About Dokku phases
|
||||
## Usage
|
||||
|
||||
Dokku deploys your application in multiple "phases" and the `docker-options` plugin allows you to pass arguments to their underlying docker container:
|
||||
### Background
|
||||
|
||||
- `build`: the container that executes the appropriate buildpack
|
||||
- `deploy`: the container that executes your running/deployed application
|
||||
- `run`: the container that executes any arbitrary command via `dokku run`
|
||||
#### Phases
|
||||
|
||||
Manipulation of docker options will not restart running containers. This enables multiple options to be set/unset before final application. As such, changing an app's docker options must be followed by a `dokku ps:rebuild` in order to take effect.
|
||||
Dokku deploys your app in multiple "phases" and the `docker-options` plugin allows you to pass arguments to their underlying docker container:
|
||||
|
||||
- `build`: The `build` phase is used to provide container options that are available during the build process for use by the various builders.
|
||||
- A given builder may strip out or ignore options that are unsupported by the builder in question - as an example, the `dockerfile` builder does not support mounted volumes.
|
||||
- `deploy`: The `deploy` phase is used to provide container options that are set on _deployed_ process types. This covers every process type specified in an app `Procfile` as well as any default processes your app may deploy.
|
||||
- The `deploy` phase is usually the correct phase to add options for running containers.
|
||||
- `run`: The `run` phase is used to provide container options to one-off containers created by `dokku run`, `dokku run:detached`, and any cron tasks specified in your `app.json`.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> The `run` phase does _not_ correspond 1-to-1 to `docker run` or `docker container run` commands. Specifying a container option at the `run` phase will only be invoked on containers created by the `run` plugin and cron tasks. Please be sure to specify options at the correct phase for your use-case.
|
||||
|
||||
Adding or removing docker-options will not apply to any running containers, and only applies to containers created _after_ the options have been modified. As such, changing an app's docker options must be followed by a `dokku ps:rebuild` or a deploy in order to take effect.
|
||||
|
||||
#### Supported Docker Options
|
||||
|
||||
More information on supported Docker options can be found [here](https://docs.docker.com/engine/reference/commandline/run/).
|
||||
|
||||
Container options configured via the `docker-options` plugin are not used to modify the process a container runs. Container options are the `[OPTIONS]` portion of the following, where `[CONTAINER_COMMAND]` and `[ARG]` are the process and the arguments passed to it that are launched in the created container: `docker run [OPTIONS] [CONTAINER_COMMAND] [ARG...]`. Please see the documentation for [customizing the run command](/docs/deployment/builders/dockerfiles.md#customizing-the-run-command) or use a [Procfile](/docs/deployment/builders/dockerfiles.md#procfiles-and-multiple-processes) to modify the command used by a Dockerfile-based container.
|
||||
|
||||
## Examples
|
||||
#### Mounting volumes and host directories
|
||||
|
||||
### Add Docker options
|
||||
Docker supports volume and host directory mounting via the `-v` or `--volume` flags. In order to simplify usage, Dokku provides a `storage` plugin as an abstraction to interact with persistent storage. In most cases, the Dokku project recommends using the persistent storage plugin over directly manipulating docker options at different phases. See the [persistent storage documentation](/docs/advanced-usage/persistent-storage.md) for more information on how to attach persistent storage to your app.
|
||||
|
||||
Add some options for the deployed/running app and when executing [`dokku run`](/docs/processes/one-off-tasks.md):
|
||||
### Commands
|
||||
|
||||
#### Add Docker options
|
||||
|
||||
To add a docker option to an app, use the `docker-options:add` command. This takes an app name, a comma-separated list of phases, and the docker-option to add.
|
||||
|
||||
```shell
|
||||
# Mount a host volume in a Docker container: "-v /host/path:/container/path"
|
||||
dokku docker-options:add node-js-app deploy "-v /var/log/node-js-app:/app/logs"
|
||||
dokku docker-options:add node-js-app run "-v /var/log/node-js-app:/app/logs"
|
||||
dokku docker-options:add node-js-app deploy "--ulimit nofile=12"
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> When [mounting a host directory](https://docs.docker.com/engine/reference/run/#volume-shared-filesystems) in a Dokku app you should first create that directory as user `dokku` and then mount the directory under `/app` in the container using `docker-options` as above. Otherwise the app will lack write permission in the directory.
|
||||
|
||||
### Remove a Docker option
|
||||
Multiple phases can be specified by using a comma when specifying phases:
|
||||
|
||||
```shell
|
||||
dokku docker-options:remove node-js-app run "-v /var/log/node-js-app:/app/logs"
|
||||
dokku docker-options:add node-js-app deploy,run "--ulimit nofile=12"
|
||||
```
|
||||
|
||||
### Clear all Docker options for an app
|
||||
The `docker-options:add` does not support setting multiple options in a single call. To specify multiple options, call `docker-options:add` multiple times.
|
||||
|
||||
```shell
|
||||
dokku docker-options:add node-js-app deploy "--ulimit nofile=12"
|
||||
dokku docker-options:add node-js-app deploy "--shm-size 256m"
|
||||
```
|
||||
|
||||
#### Remove a Docker option
|
||||
|
||||
To remove docker options from an app, use the `docker-options:remove` command. This takes an app name, a comma-separated list of phases, and the docker-option to remove.
|
||||
|
||||
```shell
|
||||
dokku docker-options:remove node-js-app run ""--ulimit nofile=12"
|
||||
```
|
||||
|
||||
Multiple phases can be specified by using a comma when specifying phases:
|
||||
|
||||
```shell
|
||||
dokku docker-options:remove node-js-app deploy,run "--ulimit nofile=12"
|
||||
```
|
||||
|
||||
The `docker-options:remove` does not support setting multiple options in a single call. To specify multiple options, call `docker-options:remove` multiple times.
|
||||
|
||||
```shell
|
||||
dokku docker-options:remove node-js-app deploy "--ulimit nofile=12"
|
||||
dokku docker-options:remove node-js-app deploy "--shm-size 256m"
|
||||
```
|
||||
|
||||
#### Clear all Docker options for an app
|
||||
|
||||
Docker options can be removed for a specific app using the `docker-options:clear` command.
|
||||
|
||||
@@ -84,7 +116,7 @@ dokku docker-options:clear node-js-app build,run
|
||||
-----> Clearing docker-options for node-js-app on phase run
|
||||
```
|
||||
|
||||
### Displaying docker-options reports for an app
|
||||
#### Displaying docker-options reports for an app
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.8.1
|
||||
@@ -98,8 +130,8 @@ dokku docker-options:report
|
||||
```
|
||||
=====> node-js-app docker options information
|
||||
Docker options build:
|
||||
Docker options deploy: -v /var/log/node-js-app:/app/logs
|
||||
Docker options run: -v /var/log/node-js-app:/app/logs
|
||||
Docker options deploy: --ulimit nofile=12 --shm-size 256m
|
||||
Docker options run: --ulimit nofile=12 --shm-size 256m
|
||||
=====> python-sample docker options information
|
||||
Docker options build:
|
||||
Docker options deploy:
|
||||
|
||||
@@ -74,8 +74,8 @@ By default, permissions are set for usage with Herokuish buildpacks. These permi
|
||||
- This is used for apps deployed with Buildpacks via Herokuish.
|
||||
- `--chown heroku`: Use `1000:1000` as the folder permissions.
|
||||
- This is used for apps deployed with Cloud Native Buildpacks using the `heroku/builder` builder.
|
||||
- `--chown packeto`: Use `2000:2000` as the folder permissions.
|
||||
- This is used for apps deployed with Cloud Native Buildpacks using the `cloudfoundry/cnb` or `packeto` builders.
|
||||
- `--chown paketo`: Use `2000:2000` as the folder permissions.
|
||||
- This is used for apps deployed with Cloud Native Buildpacks using the `cloudfoundry/cnb` or `paketo` builders.
|
||||
- `--chown root`: Use `0:0` as the folder permissions.
|
||||
- This is used for containers that run their processes as root, as is typical for most Dockerfile or Docker image deploys.
|
||||
- `--chown false`: Skips the `chown` call.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
```
|
||||
plugin:disable <name> # Disable an installed plugin (third-party only)
|
||||
plugin:enable <name> # Enable a previously disabled plugin
|
||||
plugin:install [--core|--git-url] [--committish branch|commit|tag] [--name custom-plugin-name] # Optionally download git-url (and pin to the specified branch/commit/tag) & run install trigger for active plugins (or only core ones)
|
||||
plugin:install [--core|git-url] [--committish branch|commit|tag] [--name custom-plugin-name] [--skip-install-trigger] # Optionally download git-url (and pin to the specified branch/commit/tag) & run install trigger for active plugins (or only core ones)
|
||||
plugin:installed <name> # Checks if a plugin is installed
|
||||
plugin:install-dependencies [--core] # Run install-dependencies trigger for active plugins (or only core ones)
|
||||
plugin:list # Print active plugins
|
||||
@@ -36,35 +36,35 @@ dokku plugin:list
|
||||
|
||||
```
|
||||
plugn: dev
|
||||
00_dokku-standard 0.34.7 enabled dokku core standard plugin
|
||||
20_events 0.34.7 enabled dokku core events logging plugin
|
||||
app-json 0.34.7 enabled dokku core app-json plugin
|
||||
apps 0.34.7 enabled dokku core apps plugin
|
||||
build-env 0.34.7 enabled dokku core build-env plugin
|
||||
buildpacks 0.34.7 enabled dokku core buildpacks plugin
|
||||
certs 0.34.7 enabled dokku core certificate management plugin
|
||||
checks 0.34.7 enabled dokku core checks plugin
|
||||
common 0.34.7 enabled dokku core common plugin
|
||||
config 0.34.7 enabled dokku core config plugin
|
||||
docker-options 0.34.7 enabled dokku core docker-options plugin
|
||||
domains 0.34.7 enabled dokku core domains plugin
|
||||
enter 0.34.7 enabled dokku core enter plugin
|
||||
git 0.34.7 enabled dokku core git plugin
|
||||
logs 0.34.7 enabled dokku core logs plugin
|
||||
network 0.34.7 enabled dokku core network plugin
|
||||
nginx-vhosts 0.34.7 enabled dokku core nginx-vhosts plugin
|
||||
plugin 0.34.7 enabled dokku core plugin plugin
|
||||
proxy 0.34.7 enabled dokku core proxy plugin
|
||||
ps 0.34.7 enabled dokku core ps plugin
|
||||
repo 0.34.7 enabled dokku core repo plugin
|
||||
resource 0.34.7 enabled dokku core resource plugin
|
||||
scheduler-docker-local 0.34.7 enabled dokku core scheduler-docker-local plugin
|
||||
shell 0.34.7 enabled dokku core shell plugin
|
||||
ssh-keys 0.34.7 enabled dokku core ssh-keys plugin
|
||||
storage 0.34.7 enabled dokku core storage plugin
|
||||
tags 0.34.7 enabled dokku core tags plugin
|
||||
tar 0.34.7 enabled dokku core tar plugin
|
||||
trace 0.34.7 enabled dokku core trace plugin
|
||||
00_dokku-standard 0.37.0 enabled dokku core standard plugin
|
||||
20_events 0.37.0 enabled dokku core events logging plugin
|
||||
app-json 0.37.0 enabled dokku core app-json plugin
|
||||
apps 0.37.0 enabled dokku core apps plugin
|
||||
build-env 0.37.0 enabled dokku core build-env plugin
|
||||
buildpacks 0.37.0 enabled dokku core buildpacks plugin
|
||||
certs 0.37.0 enabled dokku core certificate management plugin
|
||||
checks 0.37.0 enabled dokku core checks plugin
|
||||
common 0.37.0 enabled dokku core common plugin
|
||||
config 0.37.0 enabled dokku core config plugin
|
||||
docker-options 0.37.0 enabled dokku core docker-options plugin
|
||||
domains 0.37.0 enabled dokku core domains plugin
|
||||
enter 0.37.0 enabled dokku core enter plugin
|
||||
git 0.37.0 enabled dokku core git plugin
|
||||
logs 0.37.0 enabled dokku core logs plugin
|
||||
network 0.37.0 enabled dokku core network plugin
|
||||
nginx-vhosts 0.37.0 enabled dokku core nginx-vhosts plugin
|
||||
plugin 0.37.0 enabled dokku core plugin plugin
|
||||
proxy 0.37.0 enabled dokku core proxy plugin
|
||||
ps 0.37.0 enabled dokku core ps plugin
|
||||
repo 0.37.0 enabled dokku core repo plugin
|
||||
resource 0.37.0 enabled dokku core resource plugin
|
||||
scheduler-docker-local 0.37.0 enabled dokku core scheduler-docker-local plugin
|
||||
shell 0.37.0 enabled dokku core shell plugin
|
||||
ssh-keys 0.37.0 enabled dokku core ssh-keys plugin
|
||||
storage 0.37.0 enabled dokku core storage plugin
|
||||
tags 0.37.0 enabled dokku core tags plugin
|
||||
tar 0.37.0 enabled dokku core tar plugin
|
||||
trace 0.37.0 enabled dokku core trace plugin
|
||||
```
|
||||
|
||||
> [!WARNING]
|
||||
@@ -128,6 +128,12 @@ The `--core` flag may also be indicated as the sole argument, though it is only
|
||||
dokku plugin:install --core
|
||||
```
|
||||
|
||||
If installing plugins in a Dockerfile, you will want to skip the `install` trigger. This will be run on container boot.
|
||||
|
||||
```shell
|
||||
dokku plugin:install https://github.com/dokku/smoke-test-plugin.git --name smoke-test-plugin --skip-install-trigger
|
||||
```
|
||||
|
||||
Finally, all flags may be omitted to trigger the `install` procedures for both core and third-party plugins:
|
||||
|
||||
```shell
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
|
||||
- The `plugin:list` command no longer outputs the version for the `plugn` binary.
|
||||
- Users building docker images that run Dokku will need to use a new sudoer wrapper for the `docker-image-labeler` binary to work correctly. A reference version has been placed in the `docker` skeleton directory. This should only impact platform developers, and users of our Docker image will already have the file available.
|
||||
- The `dokku` user's cron is now in use by Dokku itself. Customizations will be overwritten. Users are encouraged to use a cron entry in `/etc/cron.d/dokku` to avoid this issue.
|
||||
- The `dokku` user's cron is now in use by Dokku itself. Customizations will be overwritten. Users are encouraged to use a cron file at `/etc/cron.d/dokku` to avoid this issue.
|
||||
- As of 0.23.0, Dokku will now inject the `max-size` log driver option for applications. This is restricted to app-configured log driver values empty, `local` or `json-file` in 0.23.1 to increase setup compatibility. Users who configure alternative log drivers at the system level will need to either set the global `max-size` property to `unlimited` or switch to the built-in `vector` logging support.
|
||||
|
||||
17
docs/appendices/0.35.0-migration-guide.md
Normal file
17
docs/appendices/0.35.0-migration-guide.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# 0.35.0 Migration Guide
|
||||
|
||||
## Changes
|
||||
|
||||
- The provided `dokku/dokku:latest` Docker image now runs Ubuntu 24.04 Noble. Users that install custom packages within their docker-based installations should be sure to check package compatibility with Ubuntu 24.04.
|
||||
- The default image used for Cloud Native Buildpack builds is now `heroku/builder:24`, and is based on both the `heroku-24` stack as well as Ubuntu 24.04. Users that wish to stick with the old, `heroku-22`/Ubuntu 22.04 builder may specify `heroku/buildpacks:22` as their builder image. Please see the [cloud native buildpack deployment documentation](/docs/deployment/builders/cloud-native-buildpacks.md#customizing-the-buildpack-stack-builder) for more information on how to specify a custom buildpack stack builder.
|
||||
- The default image used for Herokuish Buildpack builds is now `gliderlabs/herokuish:latest-24`, and is based on both the `heroku-24` stack as well as Ubuntu 24.04. Users that wish to stick with the old, `heroku-22`/Ubuntu 22.04 builder may specify `gliderlabs/herokuish:latest-22` as their builder image. Please see the [herokuish buildpack deployment documentation](/docs/deployment/builders/herokuish-buildpacks.md#customizing-the-buildpack-stack-builder) for more information on how to specify a custom buildpack stack builder.
|
||||
- The `vector` image used by Dokku for enhanced logging support has been upgraded from 0.39.x to 0.41.x. To take advantage of the new image, execute the following commands:
|
||||
```
|
||||
dokku logs:vector-stop
|
||||
dokku logs:vector-start
|
||||
```
|
||||
- The `openresty` image used by Dokku for proxying via openresty has been upgraded from 0.8.0 to 0.9.0. To take advantage of the new image, execute the following commands:
|
||||
```
|
||||
dokku openresty:stop
|
||||
dokku openresty:start
|
||||
```
|
||||
12
docs/appendices/0.36.0-migration-guide.md
Normal file
12
docs/appendices/0.36.0-migration-guide.md
Normal file
@@ -0,0 +1,12 @@
|
||||
# 0.36.0 Migration Guide
|
||||
|
||||
## Changes
|
||||
|
||||
- Process stop timeouts are now configured via the `ps` property `stop-timeout-seconds`. Existing `DOKKU_DOCKER_STOP_TIMEOUT` environment variables will be automatically migrated to the new value.
|
||||
- Processes now default to a `30` second stop timeout.
|
||||
- The `domains:clear` command no longer runs domain setup after clearing the domains. Use `domains:reset` or run `domains:setup` manually to have the same effect.
|
||||
- The deprecated `DOKKU_DISABLE_ANSI_PREFIX_REMOVAL` setting has been removed. Dokku deploys no longer use shell escape codes to modify output, and thus deploy output may now contain `remote:` as a prefix in each lines output.
|
||||
|
||||
## Deprecations
|
||||
|
||||
Ubuntu 20.04 is now a deprecated installation target. The operating system will be considered EOL by Canonical in April 2025. Users are encouraged to upgrade to Ubuntu 24.04 or consider switching their instllation method to the [Docker-based installation method](/docs/getting-started/install/docker.md) to avoid any disruption in usage.
|
||||
15
docs/appendices/0.37.0-migration-guide.md
Normal file
15
docs/appendices/0.37.0-migration-guide.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# 0.36.0 Migration Guide
|
||||
|
||||
## Changes
|
||||
|
||||
- The `app.json` file format is now parsed as JSONC and supports inline comments.
|
||||
- The `scheduler-k3s:cluster-add` command is now `scheduler-k3s:cluster:add`.
|
||||
- The `scheduler-k3s:cluster-list` command is now `scheduler-k3s:cluster:list`.
|
||||
- The `scheduler-k3s:cluster-remove` command is now `scheduler-k3s:cluster:remove`.
|
||||
|
||||
## Removals
|
||||
|
||||
- Support for the `DOKKU_DOCKERFILE_CACHE_BUILD` environment variable has been removed. Use the `docker-options` plugin to set build arguments for your app instead.
|
||||
- Support for the `DOKKU_DOCKER_BUILD_OPTS` environment variable has been removed. Use the `docker-options` plugin to set build arguments for your app instead.
|
||||
- Support for the `no-cache` nixpacks property has been removed. Use the `docker-options` plugin to set build arguments for your app instead.
|
||||
- Support for customizing the label-key for the caddy proxy has been removed. Always use `caddy.` as a prefix for your caddy directives.
|
||||
155
docs/appendices/file-formats/app-json.md
Normal file
155
docs/appendices/file-formats/app-json.md
Normal file
@@ -0,0 +1,155 @@
|
||||
# app.json
|
||||
|
||||
`app.json` is a manifest format for describing web apps. It declares cron tasks, healthchecks, and other information required to run an app on Dokku. This document describes the schema in detail.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> While the `app.json` format used by Dokku is based on the one [supported by Heroku](https://devcenter.heroku.com/articles/app-json-schema), not all Heroku functionality is supported by Dokku.
|
||||
|
||||
## Cron
|
||||
|
||||
```json
|
||||
{
|
||||
"cron": [
|
||||
{
|
||||
"command": "echo 'hello'",
|
||||
"schedule": "0 1 * * *"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
(list, optional) A list of cron resources. Keys are the names of the process types. The values are an object containing one or more of the following properties:
|
||||
|
||||
- `command`: (string, required)
|
||||
- `maintenance`: (boolean, optional)
|
||||
- `schedule`: (string, required)
|
||||
- `concurrency_policy`: (string, optional, default: `allow`, options: `allow`, `forbid`, `replace`)
|
||||
|
||||
## Formation
|
||||
|
||||
```json
|
||||
{
|
||||
"formation": {
|
||||
"web": {
|
||||
"max_parallel": 1,
|
||||
"quantity": 1
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(object, optional) A key-value object for process type configuration. Keys are the names of the process types. The values are an object containing one or more of the following properties:
|
||||
|
||||
- `autoscaling` (map of string to object, optional) autoscaling rules. See the autoscaling section for more details
|
||||
- `max_parallel`: (int, optional) number of instances to deploy in parallel at a given time
|
||||
- `quantity`: (int, optional) number of processes to maintain. Default 1 for web processes, 0 for all others.
|
||||
|
||||
### Autoscaling
|
||||
|
||||
```json
|
||||
{
|
||||
"formation": {
|
||||
"web": {
|
||||
"autoscaling": {
|
||||
"cooldown_period_seconds": 300,
|
||||
"max_quantity": 10,
|
||||
"min_quantity": 1,
|
||||
"polling_interval_seconds": 30,
|
||||
"triggers": {
|
||||
"http": {
|
||||
"metadata": {
|
||||
"url": "https://example.com/health"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(object, optional) A key-value object for autoscaling configuration. Keys are the names of the process types. The values are an object containing one or more of the following properties:
|
||||
|
||||
- `cooldown_period_seconds`: (int, optional)
|
||||
- `max_quantity`: (int, optional)
|
||||
- `min_quantity`: (int, optional)
|
||||
- `polling_interval_seconds`: (int, optional)
|
||||
- `triggers`: (object, optional)
|
||||
|
||||
An autoscaling trigger consists of the following properties:
|
||||
|
||||
- `name`: (string, optional)
|
||||
- `type`: (string, optional)
|
||||
- `metadata`: (object, optional)
|
||||
|
||||
## Healthchecks
|
||||
|
||||
```json
|
||||
{
|
||||
"healthchecks": {
|
||||
"web": [
|
||||
{
|
||||
"type": "startup",
|
||||
"name": "web check",
|
||||
"description": "Checking if the app responds to the /health/ready endpoint",
|
||||
"path": "/health/ready",
|
||||
"attempts": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(object, optional) A key-value object specifying healthchecks to run for a given process type.
|
||||
|
||||
- `attempts`: (int, optional)
|
||||
- `command`: (list of strings, optional)
|
||||
- `content`: (string, optional)
|
||||
- `httpHeaders`: (list of header objects, optional)
|
||||
- `initialDelay`: (int, optional)
|
||||
- `listening`: (boolean, optional)
|
||||
- `name`: (string, optional)
|
||||
- `path`: (string, optional)
|
||||
- `port`: (int, optional)
|
||||
- `scheme`: (string, optional)
|
||||
- `timeout`: (int, optional)
|
||||
- `type`: (string, optional)
|
||||
- `uptime`: (int, optional)
|
||||
- `wait`: (int, optional)
|
||||
- `warn`: (boolean, optional)
|
||||
- `onFailure`: (object, optional)
|
||||
|
||||
## Scripts
|
||||
|
||||
```json
|
||||
{
|
||||
"scripts": {
|
||||
"dokku": {
|
||||
"predeploy": "touch /app/predeploy.test",
|
||||
"postdeploy": "curl https://some.external.api.service.com/deployment?state=success"
|
||||
},
|
||||
"postdeploy": "curl https://some.external.api.service.com/created?state=success"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
(object, optional) A key-value object specifying scripts or shell commands to execute at different stages in the build/release process.
|
||||
|
||||
- `dokku.predeploy`: (string, optional)
|
||||
- When to use: This should be used if your app does not support arbitrary build commands and you need to make changes to the built image.
|
||||
- Are changes committed to the image at this phase: Yes
|
||||
- Example use-cases
|
||||
- Bundling assets in a slightly different way
|
||||
- Installing a custom package from source or copying a binary into place
|
||||
- `dokku.postdeploy`: (string, optional)
|
||||
- When to use: This should be used in conjunction with external systems to signal the completion of your deploy.
|
||||
- Are changes committed to the image at this phase: No
|
||||
- Example use-cases
|
||||
- Notifying slack that your app is deployed
|
||||
- Coordinating traffic routing with a central load balancer
|
||||
- `postdeploy`: (string, optional)
|
||||
- When to use: This should be used when you wish to run a command _once_, after the app is created and not on subsequent deploys to the app.
|
||||
- Are changes committed to the image at this phase: No
|
||||
- Example use-cases
|
||||
- Setting up OAuth clients and DNS
|
||||
- Loading seed/test data into the app’s test database
|
||||
14
docs/appendices/file-formats/buildpacks-file.md
Normal file
14
docs/appendices/file-formats/buildpacks-file.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# .buildpacks
|
||||
|
||||
The `.buildpacks` file is used to specify the buildpacks for an application. It is a list of buildpack URLs.
|
||||
|
||||
```shell
|
||||
https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
When installed, a buildpack is checked to see if it is a git repository via `git ls-remote`. If it is not, the buildpack is checked to see if it ends in `.tgz`, `.tar.gz`, `.tbz`, `tar.bz`, or `.tar` and is downloaded/extracted before being executed.
|
||||
|
||||
If the buildpack is located on Github, a shorthand can be used in the form of `organization/buildpack-name`. This will be expanded to the `https://github.com/organization/heroku-buildpack-buildpack-name.git`. The `heroku-community` organization name is treated as `heroku`.
|
||||
|
||||
Comments are not allowed in the `.buildpacks` file.
|
||||
3
docs/appendices/file-formats/dockerfile.md
Normal file
3
docs/appendices/file-formats/dockerfile.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Dockerfile
|
||||
|
||||
A Dockerfile is used to build a Docker image for an application. Please refer to the [Dockerfile reference](https://docs.docker.com/reference/dockerfile/) for more information.
|
||||
16
docs/appendices/file-formats/lambda-yml.md
Normal file
16
docs/appendices/file-formats/lambda-yml.md
Normal file
@@ -0,0 +1,16 @@
|
||||
# lambda.yml
|
||||
|
||||
The `lambda.yml` file is used to configure a Lambda application.
|
||||
|
||||
```yaml
|
||||
---
|
||||
build_image: mlupin/docker-lambda:dotnetcore3.1-build
|
||||
builder: dotnet
|
||||
run_image: mlupin/docker-lambda:dotnetcore3.1
|
||||
```
|
||||
|
||||
## Fields
|
||||
|
||||
`build_image`: A docker image that is accessible by the docker daemon. The `build_image` should be based on an existing Lambda image - builders may fail if they cannot run within the specified `build_image`. The build will fail if the image is inaccessible by the docker daemon.
|
||||
`builder`: The name of a builder. This may be used if multiple builders match and a specific builder is desired. If an invalid builder is specified, the build will fail.
|
||||
`run_image`: A docker image that is accessible by the docker daemon. The `run_image` should be based on an existing Lambda image - built images may fail to start if they are not compatible with the produced artifact. The generation of the `run_image` will fail if the image is inaccessible by the docker daemon.
|
||||
3
docs/appendices/file-formats/nginx-conf-sigil.md
Normal file
3
docs/appendices/file-formats/nginx-conf-sigil.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# nginx.conf.sigil
|
||||
|
||||
The `nginx.conf.sigil` file is used to configure the nginx server for an application. The default template can be found [here](https://github.com/dokku/dokku/blob/master/plugins/nginx-vhosts/templates/nginx.conf.sigil). Dokku uses a tool named [sigil](https://github.com/gliderlabs/sigil) to generate the nginx configuration based on the template provided.
|
||||
3
docs/appendices/file-formats/nixpacks-toml.md
Normal file
3
docs/appendices/file-formats/nixpacks-toml.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# nixpacks.toml
|
||||
|
||||
The `nixpacks.toml` file is used to configure an application when built with the `nixpacks` builder. Please refer to the [nixpacks.toml documentation](https://nixpacks.com/docs/configuration/file.md) for more information.
|
||||
48
docs/appendices/file-formats/procfile.md
Normal file
48
docs/appendices/file-formats/procfile.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Procfile
|
||||
|
||||
A Procfile is a file that was [promoted by Heroku](https://blog.heroku.com/the_new_heroku_1_process_model_procfile) for their platform as an easy way to specify one or more distinct processes to run within Heroku. This format has since been picked up by various other tools and platforms.
|
||||
|
||||
## General Overview
|
||||
|
||||
The `procfile-util` tool expects a Procfile to be defined as one or more lines containing one of:
|
||||
|
||||
- a comment (preceeded by a `#` symbol or two `//` characters)
|
||||
- a process-type/command combination (with optional trailing whitespace or trailing comment)
|
||||
- when there is a trailing comment, the `#` symbol/`//` characters _must_ be preceeded by one or more `whitespace` characters.
|
||||
- a blank line (with optional trailing whitespace)
|
||||
|
||||
Comments and blank lines are ignored, while process-type/command combinations look like the following:
|
||||
|
||||
```
|
||||
<process type>: <command>
|
||||
```
|
||||
|
||||
The syntax is defined as follows:
|
||||
|
||||
- `<process type>` – any character in the class `[A-Za-z0-9_-]+`, a process type is a name for your command, such as `web`, `worker`, `urgentworker`, `clock`, etc.
|
||||
- `<command>` – a command used to launch the process, such as `rake jobs:work`
|
||||
|
||||
Additional rules are as follows:
|
||||
|
||||
- contain at most 63 characters
|
||||
|
||||
A Procfile that does not match any of the above rules will be considered invalid, and not be processed. This is to avoid issues where a Procfile may contain merge conflicts or other improper content, thus resulting in unwanted runtime behavior for applications.
|
||||
|
||||
Finally, process types within a Procfile may not overlap and must be unique. Rather than assuming that the last or first specified is correct, `procfile-util` will fail to parse the Procfile with the relevant error.
|
||||
|
||||
### Strict Mode
|
||||
|
||||
> Strict mode can be triggered on `procfile-util` via the `--strict` flag.
|
||||
|
||||
In strict mode, the character set of a process type changes.
|
||||
|
||||
- `<process type>` – a valid DNS Label Name as per [RFC 1123](https://tools.ietf.org/html/rfc1123), a process type is a name for your command, such as `web`, `worker`, `urgentworker`, `clock`, etc.
|
||||
|
||||
This syntax differs common interpretations of valid `<process type>` values in that we define the process type as a DNS Label name, versus the regex `[A-Za-z0-9_]+`. The reason for this is that processes defined within Procfiles are commonly used in DNS entries. Rather than have a second level of platform-specific validation in place, this project implicitly defines the format for the process-type.
|
||||
|
||||
Given the above, a valid process type can be generalized to the following rules (as taken from the [Kubernetes documentation](https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names)):
|
||||
|
||||
- contain at most 63 characters
|
||||
- contain only lowercase alphanumeric characters or '-'
|
||||
- start with an alphanumeric character
|
||||
- end with an alphanumeric character
|
||||
3
docs/appendices/file-formats/project-toml.md
Normal file
3
docs/appendices/file-formats/project-toml.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# project.toml
|
||||
|
||||
The project descriptor file allows app developers to provide configuration for apps deployed to Dokku via the `pack` builder. Please refer to the [project.toml documentation](https://buildpacks.io/docs/reference/config/project-descriptor/) for more information.
|
||||
3
docs/appendices/file-formats/railpack-json.md
Normal file
3
docs/appendices/file-formats/railpack-json.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# railpack.json
|
||||
|
||||
The `railpack.json` file is used to configure an application when built with the `railpack` builder. Please refer to the [railpack.json documentation](https://railpack.com/config/file) for more information.
|
||||
@@ -2,10 +2,10 @@
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-70x70.png"/>
|
||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-150x150.png"/>
|
||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-310x310.png"/>
|
||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-310x150.png"/>
|
||||
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/mstile-70x70.png"/>
|
||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/mstile-150x150.png"/>
|
||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/mstile-310x310.png"/>
|
||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/mstile-310x150.png"/>
|
||||
<TileColor>#da532c</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
|
||||
@@ -2,37 +2,37 @@
|
||||
"name": "Dokku",
|
||||
"icons": [
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.37.0\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
||||
"sizes": "36x36",
|
||||
"type": "image\/png",
|
||||
"density": "0.75"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.37.0\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
||||
"sizes": "48x48",
|
||||
"type": "image\/png",
|
||||
"density": "1.0"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.37.0\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
||||
"sizes": "72x72",
|
||||
"type": "image\/png",
|
||||
"density": "1.5"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.37.0\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
||||
"sizes": "96x96",
|
||||
"type": "image\/png",
|
||||
"density": "2.0"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.37.0\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
||||
"sizes": "144x144",
|
||||
"type": "image\/png",
|
||||
"density": "3.0"
|
||||
},
|
||||
{
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.34.7\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.37.0\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image\/png",
|
||||
"density": "4.0"
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
"0.31.5",
|
||||
"0.32.4",
|
||||
"0.33.9",
|
||||
"0.34.7"
|
||||
"0.34.9",
|
||||
"0.35.20",
|
||||
"0.36.11",
|
||||
"0.37.0"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -28,26 +28,6 @@ gem install dokku-cli
|
||||
|
||||
See [documentation here](https://github.com/SebastianSzturo/dokku-cli) for more information.
|
||||
|
||||
## (ruby) DokkuClient
|
||||
|
||||
DokkuClient is another rubygem that acts as a client for your Dokku installation with built-in support for certain external plugins. You can install it via the following shell command (assuming you have ruby and rubygems installed):
|
||||
|
||||
```shell
|
||||
gem install dokku_client
|
||||
```
|
||||
|
||||
See [documentation here](https://github.com/netguru/dokku_client) for more information.
|
||||
|
||||
## (ruby) Dokkufy
|
||||
|
||||
Dokkufy is a rubygem that handles automation of certain tasks, such as Dokku setup, plugin installation, etc. You can install it via the following shell command (assuming you have ruby and rubygems installed):
|
||||
|
||||
```shell
|
||||
gem install dokkufy
|
||||
```
|
||||
|
||||
See [documentation here](https://github.com/cbetta/dokkufy) for more information.
|
||||
|
||||
## (ruby) Dockland
|
||||
|
||||
Dockland is a rubygem that acts as a client for your Dokku installation. You can install it via the following shell command (assuming you have ruby and rubygems installed):
|
||||
|
||||
@@ -123,8 +123,8 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
||||
| [Host post-build command hook](https://github.com/baikunz/dokku-post-deploy-script) | [baikunz][] | 0.4.0+ |
|
||||
| [Host pre-build command hook](https://github.com/fteychene/dokku-build-hook) | [fteychene][] | 0.4.0+ |
|
||||
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
|
||||
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
|
||||
| [HTTP Auth Secure Apps](https://github.com/matto1990/dokku-secure-apps) | [matto1990][] | 0.4.0+ |
|
||||
| [Image Size Limit](https://github.com/Tashows/dokku-image-size-limit) | [Tashows][] | |
|
||||
| [Litestream](https://github.com/AxelTheGerman/dokku-litestream)<sup>4</sup> | [AxelTheGerman][] | 0.27.0+ |
|
||||
| [Monit (Health Checks)](https://github.com/mbreit/dokku-monit) | [mbreit][] | 0.8.0+ |
|
||||
| [Monit](https://github.com/cjblomqvist/dokku-monit) | [cjblomqvist][] | 0.3.x |
|
||||
@@ -321,6 +321,7 @@ The following plugins are no longer maintained by their developers.
|
||||
[sekjun9878]: https://github.com/sekjun9878
|
||||
[statianzo]: https://github.com/statianzo
|
||||
[stuartpb]: https://github.com/stuartpb
|
||||
[Tashows]: https://github.com/Tashows
|
||||
[thrashr888]: https://github.com/thrashr888
|
||||
[wmluke]: https://github.com/wmluke
|
||||
[zenedith]: https://github.com/zenedith
|
||||
|
||||
@@ -13,6 +13,7 @@ domains:enable <app> # Enable VHOST support
|
||||
domains:remove <app> <domain> [<domain> ...] # Remove domains from app
|
||||
domains:remove-global <domain> [<domain> ...] # Remove global domain names
|
||||
domains:report [<app>|--global] [<flag>] # Displays a domains report for one or more apps
|
||||
domains:reset <app> # Reset app domains to global-configured domains
|
||||
domains:set <app> <domain> [<domain> ...] # Set domains for app
|
||||
domains:set-global <domain> [<domain> ...] # Set global domain names
|
||||
```
|
||||
@@ -33,7 +34,7 @@ If an FQDN such as `dokku.org` is used as the application name, the global virtu
|
||||
|
||||
You can optionally override this in a plugin by implementing the `nginx-hostname` plugin trigger. If the `nginx-hostname` plugin has no output, the normal hostname algorithm will be executed. See the [plugin trigger documentation](/docs/development/plugin-triggers.md#nginx-hostname) for more information.
|
||||
|
||||
## Disabling VHOSTS
|
||||
## Enabling and disabling VHOSTS
|
||||
|
||||
If desired, it is possible to disable vhosts with the domains plugin.
|
||||
|
||||
@@ -41,8 +42,21 @@ If desired, it is possible to disable vhosts with the domains plugin.
|
||||
dokku domains:disable node-js-app
|
||||
```
|
||||
|
||||
Vhosts can also be disabled for all apps:
|
||||
|
||||
```shell
|
||||
dokku domains:disable --all
|
||||
```
|
||||
|
||||
On subsequent deploys, the nginx virtualhost will be discarded. This is useful when deploying internal-facing services that should not be publicly routeable. As of 0.4.0, nginx will still be configured to proxy your app on some random high port. This allows internal services to maintain the same port between deployments. You may change this port by setting `DOKKU_PROXY_PORT` and/or `DOKKU_PROXY_SSL_PORT` (for services configured to use SSL.)
|
||||
|
||||
To re-enable, run the `domains:enable` subcommand:
|
||||
|
||||
```shell
|
||||
dokku domains:enable node-js-app
|
||||
dokku domains:enable --all
|
||||
```
|
||||
|
||||
The domains plugin allows you to specify custom domains for applications. This plugin is aware of any ssl certificates that are imported via `certs:add`. Be aware that disabling domains (with `domains:disable`) will override any custom domains.
|
||||
|
||||
```shell
|
||||
@@ -62,6 +76,9 @@ dokku domains:remove node-js-app dokku.me
|
||||
|
||||
# set all custom domains for app
|
||||
dokku domains:set node-js-app dokku.me dokku.org
|
||||
|
||||
# delete all app domains and configure available global domains on it
|
||||
dokku domains:reset node-js-app
|
||||
```
|
||||
|
||||
## Displaying domains reports for an app
|
||||
|
||||
@@ -8,7 +8,7 @@ The `config` plugin provides the following commands to manage your variables:
|
||||
config:show (<app>|--global) Pretty-print an app or global environment
|
||||
config:bundle (<app>|--global) [--merged] Bundle environment into tarfile
|
||||
config:clear (<app>|--global) Clears environment variables
|
||||
config:export (<app>|--global) [--envfile] Export a global or app environment
|
||||
config:export (<app>|--global) [--format <format>] Export a global or app environment
|
||||
config:get (<app>|--global) KEY Display a global or app-specific config value
|
||||
config:keys (<app>|--global) [--merged] Show keys set in environment
|
||||
config:set [--encoded] [--no-restart] (<app>|--global) KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars
|
||||
@@ -39,7 +39,7 @@ dokku config:set node-js-app KEY="VAL\ WITH\ SPACES"
|
||||
Dokku can also read base64 encoded values. That's the easiest way to set a value with newlines or spaces. To set a value with newlines you need to base64 encode it first and pass the `--encoded` flag:
|
||||
|
||||
```shell
|
||||
dokku config:set --encoded node-js-app KEY="$(base64 ~/.ssh/id_rsa)"
|
||||
dokku config:set --encoded node-js-app KEY="$(base64 -w 0 ~/.ssh/id_rsa)"
|
||||
```
|
||||
|
||||
When setting or unsetting environment variables, you may wish to avoid an application restart. This is useful when developing plugins or when setting multiple environment variables in a scripted manner. To do so, use the `--no-restart` flag:
|
||||
@@ -101,7 +101,6 @@ The following config variables have special meanings and can be set in a variety
|
||||
| `DOKKU_APP_PROXY_TYPE` | `nginx` | `dokku proxy:set` | |
|
||||
| `DOKKU_APP_RESTORE` | `1` | `dokku config:set` <br /> `dokku ps:stop` | |
|
||||
| `DOKKU_APP_SHELL` | `/bin/bash` | `dokku config:set` | Allows users to change the default shell used by Dokku for `dokku enter` and execution of deployment tasks. |
|
||||
| `DOKKU_APP_TYPE` | `herokuish` | Auto-detected by using buildpacks or dockerfile | |
|
||||
| `DOKKU_CHECKS_DISABLED` | none | `dokku checks:disable` | |
|
||||
| `DOKKU_CHECKS_ENABLED` | none | `dokku checks:enable` | |
|
||||
| `DOKKU_CHECKS_SKIPPED` | none | `dokku checks:skip` | |
|
||||
@@ -110,10 +109,7 @@ The following config variables have special meanings and can be set in a variety
|
||||
| `DOKKU_CHECKS_ATTEMPTS` | `5` | `dokku config:set` | Number of retries for to run for a specific check before marking it as a failure
|
||||
| `DOKKU_DEFAULT_CHECKS_WAIT` | `10` | `dokku config:set` | If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running. |
|
||||
| `DOKKU_DISABLE_PROXY` | none | `dokku proxy:disable` <br /> `dokku proxy:enable` | Disables the proxy in front of your application, resulting in publicly routing the docker container. |
|
||||
| `DOKKU_DISABLE_ANSI_PREFIX_REMOVAL` | none | `dokku config:set` <br /> `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Disables removal of the ANSI prefix during deploys. Can be used in cases where the client deployer does not understand ansi escape codes. |
|
||||
| `DOKKU_DISABLE_APP_AUTOCREATION` | none | `dokku config:set` | Disables automatic creation of a non-existent app on deploy. |
|
||||
| `DOKKU_DOCKER_STOP_TIMEOUT` | `10` | `dokku config:set` | Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands _also_ respect this value. If not specified, the docker defaults for the [docker stop command](https://docs.docker.com/engine/reference/commandline/stop/) will be used.|
|
||||
| `DOKKU_DOCKERFILE_CACHE_BUILD` | none | `dokku config:set` | |
|
||||
| `DOKKU_DOCKERFILE_START_CMD` | none | `dokku config:set` | |
|
||||
| `DOKKU_PARALLEL_ARGUMENTS`. | none | `dokku config:set` | Allows passing custom arguments to parallel for `ps:*all` commands |
|
||||
| `DOKKU_PROXY_PORT` | automatically assigned | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` <br /> `dokku config:set` | |
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
174
docs/deployment/builders/buildpack-management.md
Normal file
174
docs/deployment/builders/buildpack-management.md
Normal file
@@ -0,0 +1,174 @@
|
||||
# Buildpacks Management
|
||||
|
||||
> [!NOTE]
|
||||
> Buildpacks commands apply to both herokuish and CNB-based builds
|
||||
|
||||
```
|
||||
buildpacks:add [--index 1] <app> <buildpack> # Add new app buildpack while inserting into list of buildpacks if necessary
|
||||
buildpacks:clear <app> # Clear all buildpacks set on the app
|
||||
buildpacks:list <app> # List all buildpacks for an app
|
||||
buildpacks:remove <app> <buildpack> # Remove a buildpack set on the app
|
||||
buildpacks:report [<app>] [<flag>] # Displays a buildpack report for one or more apps
|
||||
buildpacks:set [--index 1] <app> <buildpack> # Set new app buildpack at a given position defaulting to the first buildpack if no index is specified
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Listing Buildpacks in Use
|
||||
|
||||
The `buildpacks:list` command can be used to show buildpacks that have been set for an app. This will omit any auto-detected buildpacks.
|
||||
|
||||
```shell
|
||||
# running for an app with no buildpacks specified
|
||||
dokku buildpacks:list node-js-app
|
||||
```
|
||||
|
||||
```
|
||||
-----> test buildpack urls
|
||||
```
|
||||
|
||||
```shell
|
||||
# running for an app with two buildpacks specified
|
||||
dokku buildpacks:list node-js-app
|
||||
```
|
||||
|
||||
```
|
||||
-----> test buildpack urls
|
||||
https://github.com/heroku/heroku-buildpack-python.git
|
||||
https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
```
|
||||
|
||||
### Adding custom buildpacks
|
||||
|
||||
> Please check the documentation for your particular buildpack as you may need to include configuration files (such as a Procfile) in your project root.
|
||||
|
||||
To add a custom buildpack, use the `buildpacks:add` command:
|
||||
|
||||
```shell
|
||||
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
```
|
||||
|
||||
When no buildpacks are currently specified, the specified buildpack will be the only one executed for detection and compilation.
|
||||
|
||||
Multiple buildpacks may be specified by using the `buildpacks:add` command multiple times.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
```
|
||||
|
||||
Buildpacks are executed in order, may be inserted at a specified index via the `--index` flag. This flag is specified starting at a 1-index value.
|
||||
|
||||
```shell
|
||||
# will add the golang buildpack at the second position, bumping all proceeding ones by 1 position
|
||||
dokku buildpacks:add --index 2 node-js-app https://github.com/heroku/heroku-buildpack-golang.git
|
||||
```
|
||||
|
||||
### Overwriting a buildpack position
|
||||
|
||||
In some cases, it may be necessary to swap out a given buildpack. Rather than needing to re-specify each buildpack, the `buildpacks:set` command can be used to overwrite a buildpack at a given position.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
By default, this will overwrite the _first_ buildpack specified. To specify an index, the `--index` flag may be used. This flag is specified starting at a 1-index value, and defaults to `1`.
|
||||
|
||||
```shell
|
||||
# the following are equivalent commands
|
||||
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
dokku buildpacks:set --index 1 node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
If the index specified is larger than the number of buildpacks currently configured, the buildpack will be appended to the end of the list.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:set --index 99 node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
### Removing a buildpack
|
||||
|
||||
> At least one of a buildpack or index must be specified
|
||||
|
||||
A single buildpack can be removed by name via the `buildpacks:remove` command.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:remove node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
Buildpacks can also be removed by index via the `--index` flag. This flag is specified starting at a 1-index value.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:remove node-js-app --index 1
|
||||
```
|
||||
|
||||
### Clearing all buildpacks
|
||||
|
||||
> This does not affect automatically detected buildpacks, nor does it impact any specified `BUILDPACK_URL` environment variable.
|
||||
|
||||
The `buildpacks:clear` command can be used to clear all configured buildpacks for a specified app.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:clear node-js-app
|
||||
```
|
||||
|
||||
### Using a specific buildpack version
|
||||
|
||||
> Always remember to pin your buildpack versions when using the multi-buildpacks method, or you may find deploys changing your deployed environment.
|
||||
|
||||
By default, builders will pin their vendored buildpacks, resulting in a consistent build result for your application. There may be occasions where the pinned version results in a broken deploy, or does not have a particular feature that is required to build your project. To use a more recent version of a given buildpack, the buildpack may be specified _without_ a Git commit SHA like so:
|
||||
|
||||
```shell
|
||||
# using the latest nodejs buildpack
|
||||
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-nodejs
|
||||
```
|
||||
|
||||
This will use the latest commit on the `master` branch of the specified buildpack. To pin to a newer version of a buildpack, a sha may also be specified by using the form `REPOSITORY_URL#COMMIT_SHA`, where `COMMIT_SHA` is any tree-ish git object - usually a git tag.
|
||||
|
||||
```shell
|
||||
# using v87 of the nodejs buildpack
|
||||
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-nodejs#v87
|
||||
```
|
||||
|
||||
### Displaying buildpack reports for an app
|
||||
|
||||
You can get a report about the app's buildpacks status using the `buildpacks:report` command:
|
||||
|
||||
```shell
|
||||
dokku buildpacks:report
|
||||
```
|
||||
|
||||
```
|
||||
=====> node-js-app buildpacks information
|
||||
Buildpacks computed stack: gliderlabs/herokuish:v0.7.0-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-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-24
|
||||
Buildpacks global stack: gliderlabs/herokuish:latest-24
|
||||
Buildpacks list:
|
||||
Buildpacks stack:
|
||||
```
|
||||
|
||||
You can run the command for a specific app also.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:report node-js-app
|
||||
```
|
||||
|
||||
```
|
||||
=====> node-js-app buildpacks information
|
||||
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
```
|
||||
|
||||
You can pass flags which will output only the value of the specific information you want. For example:
|
||||
|
||||
```shell
|
||||
dokku buildpacks:report node-js-app --buildpacks-list
|
||||
```
|
||||
@@ -14,8 +14,8 @@ buildpacks:set-property [--global|<app>] <key> <value> # Set or clear a buildpa
|
||||
|
||||
Cloud Native Buildpacks are an evolution over the Buildpacks technology provided by the Herokuish builder. See the [herokuish buildpacks documentation](/docs/deployment/builders/herokuish-buildpacks.md) for more information on how to clear buildpack build cache for an application.
|
||||
|
||||
> [!WARNING]
|
||||
> This functionality uses the `pack` cli from the [Cloud Native Buildpacks](https://buildpacks.io) project to build apps. As the integration is experimental in Dokku, it is likely to change over time.
|
||||
> [!NOTE]
|
||||
> This functionality uses the `pack` cli from the [Cloud Native Buildpacks](https://buildpacks.io) project to build apps.
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -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.
|
||||
While pack is well-supported in Dokku, 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.
|
||||
@@ -41,16 +41,7 @@ As this functionality is highly experimental, there are a number of caveats. Ple
|
||||
|
||||
### Detection
|
||||
|
||||
This builder will be auto-detected in either the following cases:
|
||||
|
||||
- The `DOKKU_CNB_EXPERIMENTAL` app environment variable is set to `1`.
|
||||
|
||||
```shell
|
||||
dokku config:set --no-restart node-js-app DOKKU_CNB_EXPERIMENTAL=1
|
||||
```
|
||||
|
||||
- A `project.toml` file exists in the root of the app repository.
|
||||
- This file is consumed by `pack-cli` and used to describe how the app is built.
|
||||
This builder will be auto-detected if a `project.toml` file exists in the root of the app repository. This file is consumed by `pack-cli` and used to describe how the app is built.
|
||||
|
||||
The builder can also be specified via the `builder:set` command:
|
||||
|
||||
@@ -62,14 +53,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 +138,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 +152,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
|
||||
@@ -194,8 +199,6 @@ dokku config:set node-js-app DOKKU_DOCKERFILE_START_CMD="--harmony server.js"
|
||||
|
||||
To tell Docker what to run.
|
||||
|
||||
Setting `$DOKKU_DOCKERFILE_CACHE_BUILD` to `true` or `false` will enable or disable Docker's image layer cache. Lastly, for more granular build control, you may also pass any `docker build` option to `docker`, by setting `$DOKKU_DOCKER_BUILD_OPTS`.
|
||||
|
||||
### Procfiles and multiple processes
|
||||
|
||||
> [!IMPORTANT]
|
||||
|
||||
@@ -4,12 +4,6 @@
|
||||
> Subcommands new as of 0.15.0
|
||||
|
||||
```
|
||||
buildpacks:add [--index 1] <app> <buildpack> # Add new app buildpack while inserting into list of buildpacks if necessary
|
||||
buildpacks:clear <app> # Clear all buildpacks set on the app
|
||||
buildpacks:list <app> # List all buildpacks for an app
|
||||
buildpacks:remove <app> <buildpack> # Remove a buildpack set on the app
|
||||
buildpacks:report [<app>] [<flag>] # Displays a buildpack report for one or more apps
|
||||
buildpacks:set [--index 1] <app> <buildpack> # Set new app buildpack at a given position defaulting to the first buildpack if no index is specified
|
||||
buildpacks:set-property [--global|<app>] <key> <value> # Set or clear a buildpacks property for an app
|
||||
```
|
||||
|
||||
@@ -49,104 +43,6 @@ dokku builder:set node-js-app selected herokuish
|
||||
|
||||
> Dokku will only select the `dockerfile` builder if both the `herokuish` and `pack` builders are not detected and a Dockerfile exists. See the [dockerfile builder documentation](/docs/deployment/builders/dockerfiles.md) for more information on how that builder functions.
|
||||
|
||||
### Listing Buildpacks in Use
|
||||
|
||||
The `buildpacks:list` command can be used to show buildpacks that have been set for an app. This will omit any auto-detected buildpacks.
|
||||
|
||||
```shell
|
||||
# running for an app with no buildpacks specified
|
||||
dokku buildpacks:list node-js-app
|
||||
```
|
||||
|
||||
```
|
||||
-----> test buildpack urls
|
||||
```
|
||||
|
||||
```shell
|
||||
# running for an app with two buildpacks specified
|
||||
dokku buildpacks:list node-js-app
|
||||
```
|
||||
|
||||
```
|
||||
-----> test buildpack urls
|
||||
https://github.com/heroku/heroku-buildpack-python.git
|
||||
https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
```
|
||||
|
||||
### Adding custom buildpacks
|
||||
|
||||
> Please check the documentation for your particular buildpack as you may need to include configuration files (such as a Procfile) in your project root.
|
||||
|
||||
To add a custom buildpack, use the `buildpacks:add` command:
|
||||
|
||||
```shell
|
||||
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
```
|
||||
|
||||
When no buildpacks are currently specified, the specified buildpack will be the only one executed for detection and compilation.
|
||||
|
||||
Multiple buildpacks may be specified by using the `buildpacks:add` command multiple times.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
dokku buildpacks:add node-js-app https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
```
|
||||
|
||||
Buildpacks are executed in order, may be inserted at a specified index via the `--index` flag. This flag is specified starting at a 1-index value.
|
||||
|
||||
```shell
|
||||
# will add the golang buildpack at the second position, bumping all proceeding ones by 1 position
|
||||
dokku buildpacks:add --index 2 node-js-app https://github.com/heroku/heroku-buildpack-golang.git
|
||||
```
|
||||
|
||||
### Overwriting a buildpack position
|
||||
|
||||
In some cases, it may be necessary to swap out a given buildpack. Rather than needing to re-specify each buildpack, the `buildpacks:set` command can be used to overwrite a buildpack at a given position.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
By default, this will overwrite the _first_ buildpack specified. To specify an index, the `--index` flag may be used. This flag is specified starting at a 1-index value, and defaults to `1`.
|
||||
|
||||
```shell
|
||||
# the following are equivalent commands
|
||||
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
dokku buildpacks:set --index 1 node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
If the index specified is larger than the number of buildpacks currently configured, the buildpack will be appended to the end of the list.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:set --index 99 node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
### Removing a buildpack
|
||||
|
||||
> At least one of a buildpack or index must be specified
|
||||
|
||||
A single buildpack can be removed by name via the `buildpacks:remove` command.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:remove node-js-app https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
```
|
||||
|
||||
Buildpacks can also be removed by index via the `--index` flag. This flag is specified starting at a 1-index value.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:remove node-js-app --index 1
|
||||
```
|
||||
|
||||
### Clearing all buildpacks
|
||||
|
||||
> This does not affect automatically detected buildpacks, nor does it impact any specified `BUILDPACK_URL` environment variable.
|
||||
|
||||
The `buildpacks:clear` command can be used to clear all configured buildpacks for a specified app.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:clear node-js-app
|
||||
```
|
||||
|
||||
### Customizing the Buildpack stack builder
|
||||
|
||||
> [!IMPORTANT]
|
||||
@@ -166,7 +62,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
|
||||
@@ -207,49 +103,6 @@ The default value may be set by passing an empty value for the option.
|
||||
dokku builder-herokuish:set --global allowed
|
||||
```
|
||||
|
||||
### Displaying buildpack reports for an app
|
||||
|
||||
You can get a report about the app's buildpacks status using the `buildpacks:report` command:
|
||||
|
||||
```shell
|
||||
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 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 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 list:
|
||||
Buildpacks stack:
|
||||
```
|
||||
|
||||
You can run the command for a specific app also.
|
||||
|
||||
```shell
|
||||
dokku buildpacks:report node-js-app
|
||||
```
|
||||
|
||||
```
|
||||
=====> node-js-app buildpacks information
|
||||
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||
```
|
||||
|
||||
You can pass flags which will output only the value of the specific information you want. For example:
|
||||
|
||||
```shell
|
||||
dokku buildpacks:report node-js-app --buildpacks-list
|
||||
```
|
||||
|
||||
### Displaying builder-herokuish reports for an app
|
||||
|
||||
> [!IMPORTANT]
|
||||
@@ -309,24 +162,6 @@ If an application was previously deployed via Dockerfile, the following commands
|
||||
dokku ports:clear node-js-app
|
||||
```
|
||||
|
||||
### Using a specific buildpack version
|
||||
|
||||
> Always remember to pin your buildpack versions when using the multi-buildpacks method, or you may find deploys changing your deployed environment.
|
||||
|
||||
By default, Dokku uses the [gliderlabs/herokuish](https://github.com/gliderlabs/herokuish/) project, which pins all of it's vendored buildpacks. There may be occasions where the pinned version results in a broken deploy, or does not have a particular feature that is required to build your project. To use a more recent version of a given buildpack, the buildpack may be specified _without_ a Git commit SHA like so:
|
||||
|
||||
```shell
|
||||
# using the latest nodejs buildpack
|
||||
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-nodejs
|
||||
```
|
||||
|
||||
This will use the latest commit on the `master` branch of the specified buildpack. To pin to a newer version of a buildpack, a sha may also be specified by using the form `REPOSITORY_URL#COMMIT_SHA`, where `COMMIT_SHA` is any tree-ish git object - usually a git tag.
|
||||
|
||||
```shell
|
||||
# using v87 of the nodejs buildpack
|
||||
dokku buildpacks:set node-js-app https://github.com/heroku/heroku-buildpack-nodejs#v87
|
||||
```
|
||||
|
||||
### `curl` build timeouts
|
||||
|
||||
Certain buildpacks may time out in retrieving dependencies via `curl`. This can happen when your network connection is poor or if there is significant network congestion. You may see a message similar to `gzip: stdin: unexpected end of file` after a `curl` command.
|
||||
@@ -345,3 +180,32 @@ See the [repository management documentation](/docs/advanced-usage/repository-ma
|
||||
### Specifying commands via Procfile
|
||||
|
||||
See the [Procfile documentation](/docs/processes/process-management.md#procfile) for more information on how to specify different processes for your app.
|
||||
|
||||
### Listing Buildpacks in Use
|
||||
|
||||
See the [buildpack management documentation](/docs/processes/process-management.md#listing-buildpacks-in-use) for more information on how to list buildpacks in use.
|
||||
|
||||
### Adding custom buildpacks
|
||||
|
||||
See the [buildpack management documentation](/docs/processes/process-management.md#adding-custom-buildpacks) for more information on how to add custom buildpacks.
|
||||
|
||||
### Overwriting a buildpack position
|
||||
|
||||
See the [buildpack management documentation](/docs/processes/process-management.md#overwriting-a-buildpack-position) for more information on how to overwrite a buildpack position.
|
||||
|
||||
### Removing a buildpack
|
||||
|
||||
See the [buildpack management documentation](/docs/processes/process-management.md#removing-a-buildpack) for more information on how to remove a buildpack.
|
||||
|
||||
### Clearing all buildpacks
|
||||
|
||||
See the [buildpack management documentation](/docs/processes/process-management.md#clearing-all-buildpacks) for more information on how to clear all buildpacks.
|
||||
|
||||
### Using a specific buildpack version
|
||||
|
||||
See the [buildpack management documentation](/docs/processes/process-management.md#using-a-specific-buildpack-version) for more information on how to using a specific buildpack version
|
||||
|
||||
|
||||
### Displaying buildpack reports for an app
|
||||
|
||||
See the [buildpack management documentation](/docs/processes/process-management.md#displaying-buildpack-reports-for-an-app) for more information on how to display buildpack reports for an app.
|
||||
@@ -42,14 +42,19 @@ The `lambda` builder plugin delegates all build logic to [lambda-builder](https:
|
||||
|
||||
### Changing the `lambda.yml` location
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `lambda.yml` file to use for a given app. This can be done via the `builder-lambda:set` command. If a value is specified and that file does not exist in the app's build directory, then the build will fail.
|
||||
The `lambda.yml` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
For deploys via the `git:from-image` and `git:load-image` commands, the `lambda.yml` is extracted from the configured `WORKDIR` property of the image. For all other deploys - git push, `git:from-archive`, `git:sync` - will have the `lambda.yml` extracted directly from the source code. Both cases will respect the configured `lambdayml-path` property value.
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `lambdayml-path` property:
|
||||
|
||||
```shell
|
||||
dokku builder-lambda:set node-js-app lambdayml-path .dokku/lambda.yml
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, the build will fail.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
|
||||
@@ -47,12 +47,19 @@ dokku docker-options:add node-js-app build '--env NODE_ENV=production'
|
||||
|
||||
### Changing the `nixpacks.toml` location
|
||||
|
||||
When deploying a monorepo, it may be desirable to specify the specific path of the `nixpacks.toml` file to use for a given app. This can be done via the `builder-nixpacks:set` command. If a value is specified and that file does not exist in the app's build directory, then the build will fail.
|
||||
The `nixpacks.toml` is expected to be found in a specific directory, depending on the deploy approach:
|
||||
|
||||
- The `WORKDIR` of the Docker image for deploys resulting from `git:from-image` and `git:load-image` commands.
|
||||
- The root of the source code tree for all other deploys (git push, `git:from-archive`, `git:sync`).
|
||||
|
||||
Sometimes it may be desirable to set a different path for a given app, e.g. when deploying from a monorepo. This can be done via the `nixpackstoml-path` property:
|
||||
|
||||
```shell
|
||||
dokku builder-nixpacks:set node-js-app nixpackstoml-path nixpacks2.toml
|
||||
dokku builder-nixpacks:set node-js-app nixpackstoml-path .dokku/nixpacks.toml
|
||||
```
|
||||
|
||||
The value is the path to the desired file *relative* to the base search directory, and will never be treated as absolute paths in any context. If that file does not exist within the repository, the build will fail.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
@@ -73,28 +80,10 @@ dokku builder-nixpacks:set --global nixpackstoml-path
|
||||
|
||||
### Disabling cache
|
||||
|
||||
Cache is enabled by default, but can be disabled by setting the `no-cache` property to `true`:
|
||||
Disable cache using the [docker-options] plugin:
|
||||
|
||||
```shell
|
||||
dokku builder-nixpacks:set node-js-app no-cache true
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku builder-nixpacks:set node-js-app no-cache
|
||||
```
|
||||
|
||||
The `no-cache` property can also be set globally. The global default is `false`, and the global value is used when no app-specific value is set.
|
||||
|
||||
```shell
|
||||
dokku builder-nixpacks:set --global no-cache true
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku builder-nixpacks:set --global no-cache
|
||||
dokku docker-options:add node-js-app build "--no-cache"
|
||||
```
|
||||
|
||||
### Displaying builder-nixpacks reports for an app
|
||||
@@ -110,23 +99,14 @@ dokku builder-nixpacks:report
|
||||
Builder-nixpacks computed nixpackstoml path: nixpacks2.toml
|
||||
Builder-nixpacks global nixpackstoml path: nixpacks.toml
|
||||
Builder-nixpacks nixpackstoml path: nixpacks2.toml
|
||||
Builder-nixpacks computed no cache: true
|
||||
Builder-nixpacks global no cache: false
|
||||
Builder-nixpacks no cache: true
|
||||
=====> python-sample builder-nixpacks information
|
||||
Builder-nixpacks computed nixpackstoml path: nixpacks.toml
|
||||
Builder-nixpacks global nixpackstoml path: nixpacks.toml
|
||||
Builder-nixpacks nixpackstoml path:
|
||||
Builder-nixpacks computed no cache: false
|
||||
Builder-nixpacks global no cache: false
|
||||
Builder-nixpacks no cache:
|
||||
=====> ruby-sample builder-nixpacks information
|
||||
Builder-nixpacks computed nixpackstoml path: nixpacks.toml
|
||||
Builder-nixpacks global nixpackstoml path: nixpacks.toml
|
||||
Builder-nixpacks nixpackstoml path:
|
||||
Builder-nixpacks computed no cache: false
|
||||
Builder-nixpacks global no cache: false
|
||||
Builder-nixpacks no cache:
|
||||
```
|
||||
|
||||
You can run the command for a specific app also.
|
||||
@@ -140,17 +120,14 @@ dokku builder-nixpacks:report node-js-app
|
||||
Builder-nixpacks computed nixpackstoml path: nixpacks2.toml
|
||||
Builder-nixpacks global nixpackstoml path: nixpacks.toml
|
||||
Builder-nixpacks nixpackstoml path: nixpacks2.toml
|
||||
Builder-nixpacks computed no cache: true
|
||||
Builder-nixpacks global no cache: false
|
||||
Builder-nixpacks no cache: true
|
||||
```
|
||||
|
||||
You can pass flags which will output only the value of the specific information you want. For example:
|
||||
|
||||
```shell
|
||||
dokku builder-nixpacks:report node-js-app --builder-nixpacks-no-cache
|
||||
dokku builder-nixpacks:report node-js-app --builder-nixpacks-nixpackstoml-path
|
||||
```
|
||||
|
||||
```
|
||||
true
|
||||
nixpacks2.toml
|
||||
```
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
142
docs/deployment/builders/railpack.md
Normal file
142
docs/deployment/builders/railpack.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# Railpack
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.37.0
|
||||
|
||||
The `railpack` builder builds apps via [Railpack](https://railpack.com/), a buildpack alternative.
|
||||
|
||||
## Usage
|
||||
|
||||
### Requirements
|
||||
|
||||
Before using Railpacks, the following steps must be taken:
|
||||
|
||||
- Install the `railpack` cli: The `railpack` cli tool is not included by default with Dokku or as a dependency. It must also be installed as shown on [this page](https://railpack.com/installation).
|
||||
- Create a `buildkit` builder: Railpack uses buildkit.
|
||||
```shell
|
||||
docker run --rm --privileged -d --name buildkit moby/buildkit
|
||||
```
|
||||
- Set the buildkit builder: Update the `/etc/default/dokku` file to set `BUILDKIT_HOST`:
|
||||
```shell
|
||||
touch /etc/default/dokku
|
||||
echo "export BUILDKIT_HOST='docker-container://buildkit'" >> /etc/default/dokku
|
||||
````
|
||||
|
||||
### Detection
|
||||
|
||||
This builder will be auto-detected in the following case:
|
||||
|
||||
- A `railpack.json` exists in the root of the app repository.
|
||||
|
||||
The builder may also be selected via the `builder:set` command
|
||||
|
||||
```shell
|
||||
dokku builder:set node-js-app selected railpack
|
||||
```
|
||||
|
||||
### Supported languages
|
||||
|
||||
See the [upstream railpack documentation](https://railpack.com/) for further information on what languages and frameworks are supported.
|
||||
|
||||
### Build-time configuration variables
|
||||
|
||||
For security reasons - and as per [Docker recommendations](https://github.com/docker/docker/issues/13490) - railpack-based deploys have variables available only during runtime.
|
||||
|
||||
For users that require customization in the `build` phase, you may use build arguments via the [docker-options plugin](/docs/advanced-usage/docker-options.md). All environment variables set by the `config` plugin are automatically exported within the railpack build environment, and thus `--env` only requires setting a key without a value.
|
||||
|
||||
```shell
|
||||
dokku docker-options:add node-js-app build '--env NODE_ENV'
|
||||
```
|
||||
|
||||
Alternatively, a full value may be provided in the form of `--env KEY=VALUE`:
|
||||
|
||||
```shell
|
||||
dokku docker-options:add node-js-app build '--env NODE_ENV=production'
|
||||
```
|
||||
|
||||
### Changing the `railpack.json` location
|
||||
|
||||
The `railpack.json` 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 `railpackjson-path` property:
|
||||
|
||||
```shell
|
||||
dokku builder-railpack:set node-js-app railpackjson-path .dokku/railpack.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, the build will fail.
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku builder-railpack:set node-js-app railpackjson-path
|
||||
```
|
||||
|
||||
The `railpackjson-path` property can also be set globally. The global default is `railpack.json`, and the global value is used when no app-specific value is set.
|
||||
|
||||
```shell
|
||||
dokku builder-railpack:set --global railpackjson-path railpack2.json
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku builder-railpack:set --global railpackjson-path
|
||||
```
|
||||
|
||||
### Disabling cache
|
||||
|
||||
Disable cache using the [docker-options] plugin:
|
||||
|
||||
```shell
|
||||
dokku docker-options:add node-js-app build "--no-cache"
|
||||
```
|
||||
|
||||
### Displaying builder-railpack reports for an app
|
||||
|
||||
You can get a report about the app's storage status using the `builder-railpack:report` command:
|
||||
|
||||
```shell
|
||||
dokku builder-railpack:report
|
||||
```
|
||||
|
||||
```
|
||||
=====> node-js-app builder-railpack information
|
||||
Builder-railpack computed railpackjson path: railpack2.json
|
||||
Builder-railpack global railpackjson path: railpack.json
|
||||
Builder-railpack railpackjson path: railpack2.json
|
||||
=====> python-sample builder-railpack information
|
||||
Builder-railpack computed railpackjson path: railpack.json
|
||||
Builder-railpack global railpackjson path: railpack.json
|
||||
Builder-railpack railpackjson path:
|
||||
=====> ruby-sample builder-railpack information
|
||||
Builder-railpack computed railpackjson path: railpack.json
|
||||
Builder-railpack global railpackjson path: railpack.json
|
||||
Builder-railpack railpackjson path:
|
||||
```
|
||||
|
||||
You can run the command for a specific app also.
|
||||
|
||||
```shell
|
||||
dokku builder-railpack:report node-js-app
|
||||
```
|
||||
|
||||
```
|
||||
=====> node-js-app builder-railpack information
|
||||
Builder-railpack computed railpackjson path: railpack2.json
|
||||
Builder-railpack global railpackjson path: railpack.json
|
||||
Builder-railpack railpackjson path: railpack2.json
|
||||
```
|
||||
|
||||
You can pass flags which will output only the value of the specific information you want. For example:
|
||||
|
||||
```shell
|
||||
dokku builder-railpack:report node-js-app --builder-railpack-railpackjson-path
|
||||
```
|
||||
|
||||
```
|
||||
railpack2.json
|
||||
```
|
||||
@@ -11,6 +11,7 @@ Assuming a Docker image can be run as a CI task with environment variables injec
|
||||
- [gitlab-ci](https://about.gitlab.com/stages-devops-lifecycle/continuous-integration/)
|
||||
- [semaphoreci](https://semaphoreci.com/)
|
||||
- [travisci](https://travis-ci.com/)
|
||||
- [woodpecker ci](https://woodpecker-ci.org/)
|
||||
|
||||
## Simple Usage
|
||||
|
||||
|
||||
@@ -13,10 +13,10 @@ on:
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-24.04
|
||||
steps:
|
||||
- name: Cloning repo
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
29
docs/deployment/continuous-integration/woodpecker-ci.md
Normal file
29
docs/deployment/continuous-integration/woodpecker-ci.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Woodpecker CI
|
||||
|
||||
[Woodpecker CI](https://woodpecker-ci.org/docs/intro) can be used to automatically deploy a Dokku application via the official [dokku/ci-docker-image](https://github.com/dokku/ci-docker-image). The simplest example is as follows:
|
||||
|
||||
```yaml
|
||||
when:
|
||||
- event: push
|
||||
branch: main
|
||||
|
||||
clone:
|
||||
git:
|
||||
image: woodpeckerci/plugin-git
|
||||
settings:
|
||||
partial: false
|
||||
depth: 0
|
||||
|
||||
steps:
|
||||
- name: deploy
|
||||
image: dokku/ci-docker-image
|
||||
environment:
|
||||
GIT_REMOTE_URL: ssh://dokku@dokku.me:22/appname
|
||||
SSH_PRIVATE_KEY:
|
||||
from_secret: DOKKU_ME_SSH_DEPLOY_KEY
|
||||
commands:
|
||||
- dokku-deploy
|
||||
```
|
||||
|
||||
- The standard `clone` stage is replaced with one that performs a complete clone of the repository (the default is a shallow clone, which dokku would reject).
|
||||
- A `GIT_REMOTE_URL` and a `SSH_PRIVATE_KEY` (with help of the `from_secret` directive) suffice to carry out a deployment.
|
||||
@@ -116,10 +116,12 @@ dokku logs:vector-start --vector-image timberio/vector:latest-debian
|
||||
|
||||
The `vector` container will be started with the following volume mounts:
|
||||
|
||||
- `/var/lib/dokku/data/logs/vector.json:/etc/vector/vector.json`
|
||||
- `/var/lib/dokku/data/logs:/etc/vector`
|
||||
- `/var/run/docker.sock:/var/run/docker.sock`
|
||||
- `/var/log/dokku/apps:/var/log/dokku/apps`
|
||||
|
||||
The `/etc/vector` mount includes the `vector.json` configuration file, but also may be used to provide extra files to the vector container.
|
||||
|
||||
The final volume mount - `/var/log/dokku/apps` - may be used for users that wish to ship logs to a file on disk that may be later logrotated. This directory is owned by the `dokku` user and group, with permissions set to `0755`. At this time, log-rotation is not configured for this directory.
|
||||
|
||||
#### Stopping the Vector container
|
||||
@@ -232,4 +234,47 @@ For some sinks - such as the `http` sink - it may be useful to use special chara
|
||||
dokku logs:set test vector-sink "http://?uri=https%3A//loggerservice.com%3A1234/%3Ftoken%3Dabc1234%26type%3Dvector"
|
||||
```
|
||||
|
||||
For kubernetes, it may be necessary to use template syntax - `{{ .parent.child }}` - in the sink configuration. Naively using brackets will fail due to the Helm chart install process assuming that the template should be interpreted at Helm install time vs by Vector itself. To avoid this, use `base64enc:` values (available only for top-level properties at this time). The following example shows how to use `{{ pod }}` as a value.
|
||||
|
||||
```shell
|
||||
# encode the value with a Helm `print` statement wrapper
|
||||
encoded="$(echo '{{ print "{{ pod }}" }}' | base64)"
|
||||
# the value of encoded should be: e3sgcHJpbnQgInt7IHBvZCB9fSIgfX0K
|
||||
|
||||
# set the value
|
||||
dokku logs:set test vector-sink "http://?process=base64enc%3A${encoded}"
|
||||
```
|
||||
|
||||
This will transform the value to it's encoded form when configuring Vector sinks for Kubernetes.
|
||||
|
||||
Please read the [sink documentation](https://vector.dev/docs/reference/configuration/sinks/) for your sink of choice to configure the sink as desired.
|
||||
|
||||
##### Configuring the app label
|
||||
|
||||
Logs shipped by vector include the label `com.dokku.app-name`, which is an alias for the app name. This can be changed via the `app-label-alias` logs property with the `logs:set` command. Specifying a new alias will reload any running vector container.
|
||||
|
||||
```shell
|
||||
# setting the sink value in quotes is encouraged to avoid
|
||||
# issues with ampersand encoding in shell commands
|
||||
dokku logs:set node-js-app app-label-alias "app-name"
|
||||
```
|
||||
|
||||
An alias may be removed by setting an empty value, which will also reload the running vector container.
|
||||
|
||||
```shell
|
||||
dokku logs:set node-js-app app-label-alias
|
||||
```
|
||||
|
||||
Only one alias may be specified on a per-app basis at a given time.
|
||||
|
||||
App label aliases can also be specified globally by specifying the `--global` flag to `logs:set` with no app name specified:
|
||||
|
||||
```shell
|
||||
dokku logs:set --global app-label-alias "app-name"
|
||||
```
|
||||
|
||||
As with app-specific label alias settings, the global value may also be cleared by setting no value.
|
||||
|
||||
```shell
|
||||
dokku logs:set --global app-label-alias
|
||||
```
|
||||
|
||||
@@ -71,7 +71,7 @@ All commands have the application name automatically set via the `--app` flag on
|
||||
|
||||
The client supports several environment variables:
|
||||
|
||||
- `DOKKU_HOST` (default: `dokku` git remote): Used to interact with a specific remote server. Can be overridden via the `--remote` flag.
|
||||
- `DOKKU_HOST` (default: `dokku` git remote): Used to interact with a specific remote server. Can be overridden via the `--remote` flag. Must specify the `--app` flag when specified.
|
||||
- `DOKKU_PORT` (default: `22`): Used to specify a port to connect to the Dokku server on.
|
||||
|
||||
It also supports several flags (all flags unspecified here are passed as is to the server):
|
||||
@@ -99,6 +99,12 @@ To list all available remotes, run `dokku remote:list`. This is equivalent to ru
|
||||
|
||||
To add a remote, run `dokku remote:add $REMOTE_NAME dokku@dokku.me:$APP_NAME`, replacing `$REMOTE_NAME` with your desired remote name, the `$APP_NAME` with your desired app name and the host `dokku.me` with your Dokku host. This is equivalent to running `git remote add $REMOTE_NAME dokku@dokku.me:$APP_NAME`.
|
||||
|
||||
The following remote formats are supported:
|
||||
|
||||
- `dokku@HOSTNAME.TLD:APP_NAME`
|
||||
- `ssh://dokku@HOSTNAME.TLD/APP_NAME`
|
||||
- `ssh://dokku@HOSTNAME.TLD:HOST_PORT/APP_NAME`
|
||||
|
||||
To remove a remote, run `dokku remote:remove $REMOTE_NAME`. This is equivalent to running `git remote remove $REMOTE_NAME`.
|
||||
|
||||
By default, the remote in use is `dokku`. To change the remote the client uses by default, run `dokku remote:set $REMOTE_NAME`, where `$REMOTE_NAME` is the name of your desired remote. This will not check the value specified, so that remote *must* be available or errors will occur when running normal client commands. Note that specifying `--remote` when running dokku commands will override this configuration value.
|
||||
|
||||
@@ -7,11 +7,15 @@
|
||||
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:cluster:add [ssh://user@host:port] # Adds a server node to a Dokku-managed cluster
|
||||
scheduler-k3s:cluster:list # Lists all nodes in a Dokku-managed cluster
|
||||
scheduler-k3s:cluster:remove [node-id] # Removes client node to a Dokku-managed cluster
|
||||
scheduler-k3s:ensure-charts # Ensures the k3s charts are installed
|
||||
scheduler-k3s:initialize # Initializes a cluster
|
||||
scheduler-k3s:labels:set <app|--global> <property> (<value>) [--process-type PROCESS_TYPE] <--resource-type RESOURCE_TYPE>, Set or clear a label for a given app/process-type/resource-type combination
|
||||
scheduler-k3s: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:profiles:add <profile> [--role ROLE] [--insecure-allow-unknown-hosts] [--taint-scheduling] [--kubelet-args KUBELET_ARGS] Adds a node profile to the k3s cluster
|
||||
scheduler-k3s:profiles:list [--format json|stdout] # Lists all node profiles in the k3s cluster
|
||||
scheduler-k3s:profiles:remove <profile> # Removes a node profile from the k3s cluster
|
||||
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
|
||||
@@ -61,7 +65,7 @@ By default, Dokku will attempt to auto-detect the IP address of the server. In c
|
||||
dokku scheduler-k3s:initialize --server-ip 192.168.20.15
|
||||
```
|
||||
|
||||
Dokku's k3s integration natively uses `nginx` as it's ingress load balancer via [ingress-nginx](https://github.com/kubernetes/ingress-nginx). Properties set by the `nginx` plugin will be respected, either by turning them into annotations or creating a custom server/location snippet that the `ingress-nginx` project can use.
|
||||
Dokku's k3s integration natively uses `nginx` as it's ingress load balancer via [ingress-nginx](https://github.com/kubernetes/ingress-nginx). Properties set by the `nginx` plugin will be respected, either by turning them into annotations or creating a custom server/location snippet that the `ingress-nginx` project can use. A `ps:restart` is required after changing nginx properties in order to have them apply to running resources.
|
||||
|
||||
Dokku can also use Traefik on cluster initialization via the [Traefik's CRDs](https://doc.traefik.io/traefik/providers/kubernetes-crd/). To change the ingress, set the `--ingress-class` flag:
|
||||
|
||||
@@ -76,22 +80,38 @@ dokku scheduler-k3s:initialize --ingress-class traefik
|
||||
|
||||
#### Adding a worker node
|
||||
|
||||
Nodes that run app workloads can be added via the `scheduler-k3s:cluster-add` command. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in worker mode. Workers are typically used to run app workloads.
|
||||
Nodes that run app workloads can be added via the `scheduler-k3s:cluster:add` command. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in worker mode. Workers are typically used to run app workloads.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:cluster-add ssh://root@worker-1.example.com
|
||||
dokku scheduler-k3s:cluster:add ssh://root@worker-1.example.com
|
||||
```
|
||||
|
||||
Per-node kubelet flags can be supplied by passing `--kubelet-args` with a comma-separated `key=value` list. This is useful for tuning scheduler capacity or enforcing cluster-wide defaults at the node level.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:cluster:add \
|
||||
--kubelet-args allowed-unsafe-sysctls=net.ipv6.conf.all.disable_ipv6 \
|
||||
ssh://root@worker-1.example.com
|
||||
```
|
||||
|
||||
Multiple kubelet arguments can be specified in the same call by separating them with commas. The following example enables IPv4 forwarding while also increasing the pod density on the worker.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:cluster:add \
|
||||
--kubelet-args allowed-unsafe-sysctls=net.ipv6.conf.all.disable_ipv6,max-pods=150 \
|
||||
ssh://root@worker-2.example.com
|
||||
```
|
||||
|
||||
If the server isn't in the `known_hosts` file, the connection will fail. This can be bypassed by setting the `--insecure-allow-unknown-hosts` flag:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:cluster-add --insecure-allow-unknown-hosts ssh://root@worker-1.example.com
|
||||
dokku scheduler-k3s:cluster:add --insecure-allow-unknown-hosts ssh://root@worker-1.example.com
|
||||
```
|
||||
|
||||
By default, Dokku will attempt to auto-detect the IP address of the Dokku server for the remote server to connect to. In cases where the auto-detected IP address is incorrect, an override may be specified via the `--server-ip` flag:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:cluster-add --server-ip 192.168.20.15 ssh://root@worker-1.example.com
|
||||
dokku scheduler-k3s:cluster:add --server-ip 192.168.20.15 ssh://root@worker-1.example.com
|
||||
```
|
||||
|
||||
#### Adding a server node
|
||||
@@ -101,28 +121,28 @@ dokku scheduler-k3s:cluster-add --server-ip 192.168.20.15 ssh://root@worker-1.ex
|
||||
|
||||
Server nodes are typically used to replicate the cluster state, and it is recommended to have an odd number of nodes spread across several availability zones (datacenters in close proximity within a region). This allows for higher availability in the event of a cluster failure. Server nodes run control-plane services such as the traefik load balancer and the etcd backing store.
|
||||
|
||||
Server nodes can also be added with the `scheduler-k3s:cluster-add` command by specifying `--role server`. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in server mode.
|
||||
Server nodes can also be added with the `scheduler-k3s:cluster:add` command by specifying `--role server`. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in server mode.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:cluster-add --role server ssh://root@server-1.example.com
|
||||
dokku scheduler-k3s:cluster:add --role server ssh://root@server-1.example.com
|
||||
```
|
||||
|
||||
Server nodes allow any workloads to be scheduled on them by default, in addition to the control-plane, etcd, and the scheduler itself. To avoid app workloads being scheduled on your control-plane, use the `--taint-scheduling` flag:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:cluster-add --role server --taint-scheduling ssh://root@server-1.example.com
|
||||
dokku scheduler-k3s:cluster:add --role server --taint-scheduling ssh://root@server-1.example.com
|
||||
```
|
||||
|
||||
If the server isn't in the `known_hosts` file, the connection will fail. This can be bypassed by setting the `--insecure-allow-unknown-hosts` flag:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:cluster-add --role server --insecure-allow-unknown-hosts ssh://root@server-1.example.com
|
||||
dokku scheduler-k3s:cluster:add --role server --insecure-allow-unknown-hosts ssh://root@server-1.example.com
|
||||
```
|
||||
|
||||
By default, Dokku will attempt to auto-detect the IP address of the Dokku server for the remote server to connect to. In cases where the auto-detected IP address is incorrect, an override may be specified via the `--server-ip` flag:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:cluster-add --role server --server-ip 192.168.20.15 ssh://root@server-1.example.com
|
||||
dokku scheduler-k3s:cluster:add --role server --server-ip 192.168.20.15 ssh://root@server-1.example.com
|
||||
```
|
||||
|
||||
#### Changing the network interface
|
||||
@@ -133,110 +153,85 @@ When attaching an worker or server node, the K3s plugin will look at the IP asso
|
||||
dokku scheduler-k3s:set --global network-interface eth1
|
||||
```
|
||||
|
||||
### Changing deploy timeouts
|
||||
### Node Profiles
|
||||
|
||||
By default, app deploys will timeout after 300s. To customize this value, set the `deploy-timeout` property via `scheduler-k3s:set`:
|
||||
Node profiles capture repeatable `scheduler-k3s:cluster:add` options so you can join multiple nodes with identical settings. A profile name can be specified for the `scheduler-k3s:cluster:add` command via the `--profile <name>` flag. Any flags passed directly to `scheduler-k3s:cluster:add` override the stored values for that run.
|
||||
|
||||
#### Listing profiles
|
||||
|
||||
Display stored profiles to understand which roles and behaviors will be used.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:profiles:list
|
||||
```
|
||||
|
||||
```
|
||||
name role
|
||||
awesome-profile worker
|
||||
```
|
||||
|
||||
This command also takes an optional `--format` flag to specify a format for the output. Options include `json` and `stdout`
|
||||
|
||||
#### Adding profiles
|
||||
|
||||
Create or update a profile that defines how new nodes should be prepared before joining the cluster.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:profiles:add edge-workers \
|
||||
--role worker \
|
||||
--insecure-allow-unknown-hosts \
|
||||
--kubelet-args protect-kernel-defaults=true,eviction-hard=memory.available<200Mi
|
||||
```
|
||||
|
||||
Profile names must be alphanumeric, may include internal dashes, cannot start/end with a dash, and must be ≤32 characters. Other than the `--server-ip` flag, all flags used for `scheduler-k3s:cluster:add` are valid for the `scheduler-k3s:profiles:add` command.
|
||||
|
||||
#### scheduler-k3s:profiles:remove
|
||||
|
||||
Delete a profile once it’s no longer required.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:profiles:remove edge-workers
|
||||
```
|
||||
|
||||
Removal only deletes the stored definition; nodes that already joined the cluster keep their existing configuration.
|
||||
|
||||
### Changing deployment settings
|
||||
|
||||
The k3s plugin provides a number of settings that can be used to managed deployments on a per-app basis. The following table outlines ones not covered elsewhere:
|
||||
|
||||
| Name | Description | Global Default |
|
||||
|-----------------------|---------------------------------------------------|--------------------|
|
||||
| `deploy-timeout` | Controls when app deploys will timeout in seconds | `300s` |
|
||||
| `kustomize-root-path` | Controls the folder context from the deployed repository used for Kustomize | `config/kustomize` |
|
||||
| `image-pull-secrets` | Name of a kubernetes secret used to auth against a registry | Contents of `~/.docker/config.json` from Dokku server |
|
||||
| `namespace` | Controls the namespace used for resource creation | `default` |
|
||||
| `rollback-on-failure` | Whether to rollback failed deploys | `false` |
|
||||
| `shm-size` | Default shared memory size for pods | Kubernetes default |
|
||||
|
||||
All settings can be set via the `scheduler-k3s:set` command. Using `deploy-timeout` as an example:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app deploy-timeout 60s
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
The default value may be set by passing an empty value for the option in question:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app deploy-timeout
|
||||
```
|
||||
|
||||
The `deploy-timeout` property can also be set globally. The global default is `300s`.
|
||||
Properties can also be set globally. If not set for an app, the global value will apply.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global deploy-timeout 60s
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
The global default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global deploy-timeout
|
||||
```
|
||||
|
||||
### Customizing the namespace
|
||||
|
||||
By default, app deploys will run against the `default` Kubernetes namespace. To customize this value, set the `namespace` property via `scheduler-k3s:set`:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app namespace lollipop
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app namespace
|
||||
```
|
||||
|
||||
The `namespace` property can also be set globally. The global default is `default`.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global namespace 60s
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global namespace
|
||||
```
|
||||
|
||||
### Enabling rollback on failure
|
||||
|
||||
By default, app deploys do not rollback on failure. To enable this functionality, set the `rollback-on-failure` property via `scheduler-k3s:set`:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app rollback-on-failure true
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app rollback-on-failure
|
||||
```
|
||||
|
||||
The `rollback-on-failure` property can also be set globally. The global default is `false`.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global rollback-on-failure false
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global rollback-on-failure
|
||||
```
|
||||
|
||||
### Using image pull secrets
|
||||
|
||||
When authenticating against a registry via `registry:login`, the scheduler-k3s plugin will authenticate all servers in the cluster against the registry specified. If desired, an image pull secret can be used instead. To customize this value, set the `image-pull-secrets` property via `scheduler-k3s:set`:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app image-pull-secrets lollipop
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app image-pull-secrets
|
||||
```
|
||||
|
||||
The `image-pull-secrets` property can also be set globally. The global default is empty string, and k3s will use Dokku's locally configured `~/.docker/config.json` for any private registry pulls.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global image-pull-secrets 60s
|
||||
```
|
||||
|
||||
The default value may be set by passing an empty value for the option.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global image-pull-secrets
|
||||
```
|
||||
|
||||
### SSL Certificates
|
||||
|
||||
#### Enabling letsencrypt integration
|
||||
@@ -279,6 +274,18 @@ The default value may be set by passing an empty value for the option.
|
||||
dokku scheduler-k3s:set --global letsencrypt-server staging
|
||||
```
|
||||
|
||||
Letsencrypt can be completely disabled for a given app by setting the `letsencrypt-server` to `false`
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set node-js-app letsencrypt-server false
|
||||
```
|
||||
|
||||
The server can also be disabled globally, and then conditionally enabled on a per-app basis:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global letsencrypt-server false
|
||||
```
|
||||
|
||||
### Customizing Annotations and Labels
|
||||
|
||||
> [!NOTE]
|
||||
@@ -312,6 +319,8 @@ The following resource types are supported:
|
||||
- `traefik_ingressroute`
|
||||
- `traefik_middleware`
|
||||
|
||||
A `ps:restart` is required after setting annotations in order to have them apply to running resources.
|
||||
|
||||
#### Removing an annotation
|
||||
|
||||
To unset an annotation, pass an empty value:
|
||||
@@ -321,6 +330,8 @@ dokku scheduler-k3s:annotations:set node-js-app annotation.key --resource-type d
|
||||
dokku scheduler-k3s:annotations:set node-js-app annotation.key --resource-type deployment --process-type web
|
||||
```
|
||||
|
||||
A `ps:restart` is required after removing annotations in order to remove them from running resources.
|
||||
|
||||
#### Setting Labels
|
||||
|
||||
Dokku injects certain labels into each created resource by default, but it may be necessary to inject others for tighter integration with third-party tools. The `scheduler-k3s:labels:set` command can be used to perform this task. The command takes an app name and a required `--resource-type` flag.
|
||||
@@ -349,6 +360,8 @@ The following resource types are supported:
|
||||
- `traefik_ingressroute`
|
||||
- `traefik_middleware`
|
||||
|
||||
A `ps:restart` is required after setting labels in order to have them apply to running resources.
|
||||
|
||||
#### Removing a label
|
||||
|
||||
To unset an label, pass an empty value:
|
||||
@@ -358,6 +371,8 @@ dokku scheduler-k3s:annotations:set node-js-app label.key --resource-type deploy
|
||||
dokku scheduler-k3s:labels:set node-js-app label.key --resource-type deployment --process-type web
|
||||
```
|
||||
|
||||
A `ps:restart` is required after removing labels in order to remove them from running resources.
|
||||
|
||||
### Autoscaling
|
||||
|
||||
#### Workload Autoscaling
|
||||
@@ -408,6 +423,55 @@ Each value in the `metadata` stanza can use the following interpolated strings:
|
||||
- `DOKKU_PROCESS_TYPE`: The name of the process being scaled
|
||||
- `DOKKU_APP_NAME`: The name of the app being scaled
|
||||
|
||||
##### HTTP Autoscaling
|
||||
|
||||
In addition to the built-in scalers that Keda provides, Dokku also supports Keda's HTTP Add On. This requires that the addon be properly installed and configured. For existing k3s clusters, this can be performed by the `scheduler-k3s:ensure-charts` command:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:ensure-charts
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> Users who wish to use this functionality on a cluster not managed by Dokku will need to manually install the `keda-http-add-on` into the `keda` namespace. Please consult the `keda-http-add-on` [install documentation](https://kedacore.github.io/http-add-on/install.html) for further details.
|
||||
|
||||
> [!WARNING]
|
||||
> If the `keda-http-add-on` chart is not installed, then this trigger will be ignored.
|
||||
|
||||
Once the chart is configured, an `http` trigger can be specified like so:
|
||||
|
||||
```json
|
||||
{
|
||||
"formation": {
|
||||
"web": {
|
||||
"autoscaling": {
|
||||
"min_quantity": 1,
|
||||
"max_quantity": 10,
|
||||
"triggers": [
|
||||
{
|
||||
"type": "http",
|
||||
"metadata": {
|
||||
"scaledown_period_seconds": "150",
|
||||
"request_rate_target_value": "50"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The following metadata properties are supported with the http autoscaler:
|
||||
|
||||
- `scale_by`: (default: `request_rate`) whether to scale by `concurrency` or `request_rate`.
|
||||
- `scaledown_period_seconds`: (default: `300`) period to wait after the last reported active before scaling the resource back to 0.
|
||||
- `request_rate_granularity_seconds`: (default: `1`) granualarity of the aggregated requests for the request rate calculation.
|
||||
- `request_rate_target_value`: (default: `100`) target value for the request rate.
|
||||
- `request_rate_window_seconds`: (default: `60`) aggregation window for the request rate calculation.
|
||||
- `concurrency_target_value`: (default: `100`) target value for the request concurrency.
|
||||
|
||||
Note that due to Keda limitations, scaling is done by _either_ `concurrency` or `request_rate`.
|
||||
|
||||
#### Workload Autoscaling Authentication
|
||||
|
||||
Most Keda triggers require some form of authentication to query for data. In the Kubernetes API, they are represented by `TriggerAuthentication` and `ClusterTriggerAuthentication` resources. Dokku can manage these via the `scheduler-k3s:autoscaling-auth` commands, and includes generated resources with each helm release generated by a deploy.
|
||||
@@ -470,6 +534,30 @@ dokku scheduler-k3s:autoscaling-auth:report node-js-app --include-metadata
|
||||
Datadog datadogSite: us5.datadoghq.com
|
||||
```
|
||||
|
||||
### Integrating Kustomize
|
||||
|
||||
Dokku supports integration with [Kustomize](https://kustomize.io/) to further customize the generated helm charts for app deployments. For example, a `config/kustomize/kustomization.yaml` file with the following contents will override the scale for each process deployed to `3`:
|
||||
|
||||
```yaml
|
||||
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||
kind: Kustomization
|
||||
resources:
|
||||
- rendered.yaml
|
||||
patches:
|
||||
- patch: |-
|
||||
- op: replace
|
||||
path: /spec/replicas
|
||||
value: 3
|
||||
target:
|
||||
group: apps
|
||||
version: v1
|
||||
kind: Deployment
|
||||
```
|
||||
|
||||
When using Kustomize with Dokku, all Kustomize-files _must_ be placed in the `config/kustomize` folder, with a `kustomization.yaml` file being the entrypoint to Kustomize. Dokku will render the helm chart to a `rendered.yaml` file, and then execute Kustomize with the `config/kustomize` folder as the context.
|
||||
|
||||
See the [Kustomize](https://kustomize.io/) website for more details on how to use Kustomize.
|
||||
|
||||
### Using kubectl remotely
|
||||
|
||||
> [!WARNING]
|
||||
@@ -513,6 +601,35 @@ dokku scheduler-k3s:set --global kube-context
|
||||
|
||||
The default value for the `kube-context` is an empty string, and will result in Dokku using the current context within the kubeconfig.
|
||||
|
||||
### Customizing Helm Chart Properties
|
||||
|
||||
Dokku includes a number of helm charts by default with settings that are optimized for Dokku. That said, it may be useful to further customize the charts for a given environment. Users can customize which charts are installed by setting properties prefixed with `chart.$CHART_NAME.` with the `--global` flag.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global chart.cert-manager.version 1.13.3
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> Properties follow dot-notation, and are expanded according to Helm's internal logic. See the [Helm documentation](https://helm.sh/docs/helm/helm_install/#helm-install) for `helm install` for further details.
|
||||
|
||||
To unset a chart property, omit the value from the `scheduler-k3s:set` call:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:set --global chart.cert-manager.version
|
||||
```
|
||||
|
||||
A `scheduler-k3s:ensure-charts` command with the `--force` flag is required after changing any chart properties in order to have them apply. This will install all charts, not just the ones that have changed.
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:ensure-charts --force
|
||||
```
|
||||
|
||||
Alternatively, a comma separated list of chart names can be specified to only force install the specified charts:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:ensure-charts --charts cert-manager
|
||||
```
|
||||
|
||||
## Scheduler Interface
|
||||
|
||||
The following sections describe implemented and unimplemented scheduler functionality for the `k3s` scheduler.
|
||||
@@ -524,17 +641,26 @@ This plugin implements various functionality through `plugn` triggers to integra
|
||||
- `apps:clone`
|
||||
- `apps:destroy`
|
||||
- `apps:rename`
|
||||
- `docker-options`:
|
||||
- The following docker options are translated into their kubernetes equivalents:
|
||||
- `--cap-add`
|
||||
- `--cap-drop`
|
||||
- `--privileged`
|
||||
- `cron`
|
||||
- `enter`
|
||||
- `deploy`
|
||||
- healthchecks
|
||||
- Due to Kubernetes limitations, only a single healthcheck is supported for each of the `liveness`, `readiness`, and `startup` healthchecks
|
||||
- Due to Kubernetes limitations, content checks are not supported
|
||||
- Ports specified in the `app.json` are ignored in favor of the container port on the port mapping detected
|
||||
- Due to Kubernetes limitations, only a single healthcheck is supported for each of the `liveness`, `readiness`, and `startup` healthchecks
|
||||
- Due to Kubernetes limitations, content checks are not supported
|
||||
- Ports specified in the `app.json` are ignored in favor of the container port on the port mapping detected
|
||||
- `logs`
|
||||
- `nginx`
|
||||
- Properties set by the `nginx` plugin will be respected, either by turning them into annotations or creating a custom server/location snippet that the `ingress-nginx` project can use. A `ps:restart` after changing any nginx properties is required in order to have them apply.
|
||||
- The `nginx:access-logs` and `nginx:error-logs` commands will fetch logs from one running `ingress-nginx` pod.
|
||||
- The `nginx:show-config` command will retrieve any `server` blocks associated with a domain attached to the app from one running `ingress-nginx` pod.
|
||||
- `ps:stop`
|
||||
- `run`
|
||||
- The `scheduler-post-run` trigger is not always triggered
|
||||
- The `scheduler-post-run` trigger is not always triggered
|
||||
- `run:detached`
|
||||
- `run:list`
|
||||
|
||||
@@ -550,7 +676,20 @@ The following Dokku functionality is not implemented at this time.
|
||||
|
||||
### Logging support
|
||||
|
||||
App logs for the `logs` command are fetched by Dokku from running containers via the `kubectl` cli. Persisting logs via Vector is not implemented at this time. Users may choose to configure the Vector Kubernetes integration directly by following [this guide](https://vector.dev/docs/setup/installation/platforms/kubernetes/).
|
||||
App logs for the `logs` command are fetched by Dokku from running containers via the Kubernetes api. While the `k3s` scheduler does not integrate with the `logs:vector-*` subcommands, it does respect the global `vector-sink` logs property. When that property is set, the `scheduler-k3s:ensure-charts` command can be utilized to reconfigure vector to ship kubernetes logs to the provided sink.
|
||||
|
||||
To setup log shipping, configure the global `vector-sink` property for the `logs` plugin.. Note that this can be run before _or_ after the `scheduler-k3s:ensure-charts` command - if run before, the `scheduler-k3s:ensure-charts` subcommand will pick up the value.
|
||||
|
||||
```shell
|
||||
dokku logs:set --global vector-sink "console://?encoding[codec]=json"
|
||||
```
|
||||
|
||||
Next, run the `scheduler-k3s:ensure-charts` command with the `vector` chart to force the `k3s` scheduler to reconfigure vector with the specified sink:
|
||||
|
||||
```shell
|
||||
dokku scheduler-k3s:ensure-charts --charts vector
|
||||
```
|
||||
Please see the [vector logs documentation](/docs/deployment/logs.md#configuring-a-log-sink) for more information on specifying vector sinks.
|
||||
|
||||
### Supported Resource Management Properties
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ At this time, the following dokku commands are used to implement a complete sche
|
||||
- `apps:clone`: handles app cloning
|
||||
- triggers: post-app-clone-setup
|
||||
- `cron`: generates cron tasks for the app
|
||||
- triggers: cron-write
|
||||
- triggers: scheduler-cron-write
|
||||
- `deploy`: deploys app proceses and checks the status of a deploy
|
||||
- triggers: scheduler-app-status, scheduler-deploy, scheduler-is-deployed, scheduler-logs-failed
|
||||
- `enter`: enters a running container
|
||||
@@ -112,7 +112,9 @@ At this time, the following dokku commands are used to implement a complete sche
|
||||
- `run:logs`: fetches running container logs
|
||||
- triggers: scheduler-run-logs
|
||||
- `ps:stop`: stops app processes
|
||||
- triggers: scheduler-stop
|
||||
- triggers: scheduler-stop, scheduler-cron-write
|
||||
- `ps:start`: starts app processes
|
||||
- triggers: scheduler-deploy, scheduler-cron-write
|
||||
- `ps:inspect`: outputs inspect output for processes in an app
|
||||
- triggers: scheduler-inspect
|
||||
|
||||
|
||||
@@ -36,12 +36,15 @@ dokku checks:set node-js-app wait-to-retire 30
|
||||
|
||||
Defaults to `60`.
|
||||
|
||||
## Setting stop grace period
|
||||
|
||||
You can set the `stop-timeout-seconds` property on the `ps` plugin to change this value (default: `30`). See the [process management documentation](/docs/processes/process-management.md#changing-process-management-settings) for more information.
|
||||
|
||||
## Configuring check settings using the `config` plugin
|
||||
|
||||
There are certain settings that can be configured via environment variables:
|
||||
|
||||
- `DOKKU_DEFAULT_CHECKS_WAIT`: (default: `10`) If no user-defined checks are specified - or if the process being checked is not a `web` process - this is the period of time Dokku will wait before checking that a container is still running.
|
||||
- `DOKKU_DOCKER_STOP_TIMEOUT`: (default: `10`) Configurable grace period given to the `docker stop` command. If a container has not stopped by this time, a `kill -9` signal or equivalent is sent in order to force-terminate the container. Both the `ps:stop` and `apps:destroy` commands *also* respect this value. If not specified, the Docker defaults for the [`docker stop` command](https://docs.docker.com/engine/reference/commandline/stop/) will be used.
|
||||
|
||||
The following settings may also be specified in the `app.json` file, though are available as environment variables in order to ease application reuse.
|
||||
|
||||
@@ -150,13 +153,13 @@ One or more healthchecks can be defined in the `app.json` file - see the [deploy
|
||||
{
|
||||
"healthchecks": {
|
||||
"web": [
|
||||
{
|
||||
"type": "startup",
|
||||
"name": "web check",
|
||||
"description": "Checking if the app responds to the /health/ready endpoint",
|
||||
"path": "/health/ready",
|
||||
"attempts": 3
|
||||
}
|
||||
{
|
||||
"type": "startup",
|
||||
"name": "web check",
|
||||
"description": "Checking if the app responds to the /health/ready endpoint",
|
||||
"path": "/health/ready",
|
||||
"attempts": 3
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,6 +119,21 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `app-json-is-valid`
|
||||
|
||||
- Description: Checks to see if the provided app.json file is valid
|
||||
- Invoked by: Appjson extraction during deployment
|
||||
- Arguments: `$APP $APP_JSON_PATH`
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `app-maybe-create`
|
||||
|
||||
- Description: Creates an app (gated by whether this is globally enabled or not)
|
||||
@@ -567,7 +582,7 @@ APP="$1"; PROPERTY="$2"
|
||||
|
||||
### `cron-entries`
|
||||
|
||||
- Description: Allows injecting cron entries into the written out scheduled cron task list. Each entry is newline delimited, and individual entries come in the form `$SCHEDULE;$FULL_COMMAND;$ARBITRARY_DATA`. Individual implementations of cron writing can decide whether and how to include these cron entries. The `ARBITRARY_DATA` includes the log file path for the basic `docker-local` cron implementation.
|
||||
- Description: Allows injecting cron tasks into the written out scheduled cron task list. Each entry is newline delimited, and individual tasks come in the form `$SCHEDULE;$FULL_COMMAND;$ARBITRARY_DATA`. Individual implementations of cron writing can decide whether and how to include these cron tasks. The `ARBITRARY_DATA` includes the log file path for the basic `docker-local` cron implementation.
|
||||
- Invoked by:
|
||||
- Arguments: `$DOKKU_SCHEDULER`
|
||||
- Example:
|
||||
@@ -583,22 +598,6 @@ DOKKU_SCHEDULER="$1"
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `cron-write`
|
||||
|
||||
- Description: Force triggers writing out cron entries
|
||||
- Invoked by:
|
||||
- Arguments:
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `dependencies`
|
||||
|
||||
- Description: Used to install system-level dependencies.
|
||||
@@ -1700,7 +1699,7 @@ curl "http://httpstat.us/200"
|
||||
### `post-domains-update`
|
||||
|
||||
- Description: Allows you to run commands once the domain for an app has been updated. It also sends in the command that has been used. This can be "add", "clear" or "remove". The third argument will be the optional list of domains
|
||||
- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`, `dokku domains:set`
|
||||
- Invoked by: `dokku domains:add`, `dokku domains:clear`, `dokku domains:remove`, `dokku domains:reset`, `dokku domains:set`
|
||||
- Arguments: `$APP` `action name` `domains`
|
||||
- Example:
|
||||
|
||||
@@ -2051,7 +2050,9 @@ CMD="cat > gm && \
|
||||
dpkg -s graphicsmagick &>/dev/null || \
|
||||
(apt-get update -qq && apt-get -qq -y --no-install-recommends install graphicsmagick && apt-get clean)"
|
||||
|
||||
CID=$(docker run $DOKKU_GLOBAL_RUN_ARGS -i -a stdin $IMAGE /bin/bash -c "$CMD")
|
||||
CID_FILE=/tmp/cid-file
|
||||
docker run $DOKKU_GLOBAL_RUN_ARGS -i -a stdin --cidfile /tmp/cid-file "$IMAGE" /bin/bash -c "$CMD"
|
||||
CID="$(cat "$CID_FILE")"
|
||||
test $(docker wait $CID) -eq 0
|
||||
DOCKER_COMMIT_LABEL_ARGS=("--change" "LABEL org.label-schema.schema-version=1.0" "--change" "LABEL org.label-schema.vendor=dokku" "--change" "LABEL com.dokku.app-name=$APP")
|
||||
docker commit "${DOCKER_COMMIT_LABEL_ARGS[@]}" $CID $IMAGE >/dev/null
|
||||
@@ -2443,6 +2444,26 @@ DOKKU_SCHEDULER="$1"; APP="$2";
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-cron-write`
|
||||
|
||||
> [!WARNING]
|
||||
> The scheduler plugin trigger apis are under development and may change
|
||||
> between minor releases until the 1.0 release.
|
||||
|
||||
- Description: Force triggers writing out cron tasks. Arguments are optional.
|
||||
- Invoked by: `ps:start`, `ps:stop`, `cron:set`
|
||||
- Arguments: `$DOKKU_SCHEDULER $APP`
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-deploy`
|
||||
|
||||
> [!WARNING]
|
||||
@@ -2583,6 +2604,26 @@ DOKKU_SCHEDULER="$1"; APP="$2";
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-proxy-logs`
|
||||
|
||||
> [!WARNING]
|
||||
> The scheduler plugin trigger apis are under development and may change
|
||||
> between minor releases until the 1.0 release.
|
||||
|
||||
- Description: Allows you to run scheduler commands when retrieving failed container logs
|
||||
- Invoked by: `dokku nginx:access-logs` and `dokku nginx:error-logs`
|
||||
- Arguments: `$DOKKU_SCHEDULER $APP $PROXY_TYPE $LOG_TYPE $TAIL $NUM_LINES`
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
DOKKU_SCHEDULER="$1"; APP="$2"; $PROXY_TYPE="$3"; LOG_TYPE="$4"; TAIL="$5"; NUM_LINES="$6"
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-pre-restore`
|
||||
|
||||
> [!WARNING]
|
||||
@@ -2764,6 +2805,26 @@ DOKKU_SCHEDULER="$1"; APP="$2"; CONTAINER="$3"; TAIL="$4"; PRETTY_PRINT="$5"; NU
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-run-retire`
|
||||
|
||||
> [!WARNING]
|
||||
> The scheduler plugin trigger apis are under development and may change
|
||||
> between minor releases until the 1.0 release.
|
||||
|
||||
- Description: Allows you to retire containers started by the `run` command
|
||||
- Invoked by: `dokku run:retire`
|
||||
- Arguments: `$DOKKU_SCHEDULER $APP`
|
||||
- Example:
|
||||
|
||||
```shell
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||
DOKKU_SCHEDULER="$1"; APP="$2";
|
||||
|
||||
# TODO
|
||||
```
|
||||
|
||||
### `scheduler-run-stop`
|
||||
|
||||
> [!WARNING]
|
||||
|
||||
@@ -29,7 +29,7 @@ The workflow looks like this:
|
||||
```shell
|
||||
# having dokku-arch in ../dokku-arch
|
||||
vagrant up build-arch
|
||||
# wait for "==> build-arch: ==> Finished making: dokku 0.34.7-2 (Mon Feb 22 23:20:37 CET 2016)"
|
||||
# wait for "==> build-arch: ==> Finished making: dokku 0.37.0-2 (Mon Feb 22 23:20:37 CET 2016)"
|
||||
cd ../dokku-arch
|
||||
git add PKGBUILD .SRCINFO
|
||||
git commit -m 'Update to dokku 0.9.9'
|
||||
|
||||
@@ -9,11 +9,11 @@ We maintain the Dokku test harness within the `tests` directory:
|
||||
|
||||
## Continuous Integration
|
||||
|
||||
All pull requests have tests run against them on [GitHub Actions](https://github.com/features/actions), a continuous integration platform that provides Docker support for Ubuntu Focal 20.04.
|
||||
All pull requests have tests run against them on [GitHub Actions](https://github.com/features/actions), a continuous integration platform that provides Docker support for Ubuntu Noble 24.04.
|
||||
|
||||
If you wish to skip tests for a particular commit, e.g. documentation changes, you may add the `[ci skip]` designator to your commit message. Commits that _should_ be tested but have the above designator will not be merged.
|
||||
|
||||
While we do provide official packages for a variety of platforms, as our test suite currently runs on Ubuntu Focal 20.04, we only provide official installation support for that platform and the latest LTS release of Ubuntu (currently 20.04).
|
||||
While we do provide official packages for a variety of platforms, as our test suite currently runs on Ubuntu Noble 24.04, we only provide official installation support for that platform and the supported LTS releases of Ubuntu (currently 22.04, and 24.04).
|
||||
|
||||
## Local Test Execution
|
||||
|
||||
|
||||
@@ -89,6 +89,7 @@ cd /var
|
||||
touch swap.img
|
||||
chmod 600 swap.img
|
||||
|
||||
swapoff /var/swap.img
|
||||
dd if=/dev/zero of=/var/swap.img bs=1024k count=1000
|
||||
mkswap /var/swap.img
|
||||
swapon /var/swap.img
|
||||
@@ -96,5 +97,8 @@ free
|
||||
|
||||
echo "/var/swap.img none swap sw 0 0" >> /etc/fstab
|
||||
```
|
||||
Note: it may be necessary to call swapoff, mkswap and swapon explicitly: `sudo /sbin/swapoff /var/swap.img`, etc.
|
||||
|
||||
[Reference](https://www.digitalocean.com/community/tutorials/how-to-configure-virtual-memory-swap-file-on-a-vps)
|
||||
|
||||
[Add'l Reference](https://serverfault.com/questions/994297/increase-swap-file-size-that-already-exists-ec-2-linux)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
1. Login to your [DigitalOcean](https://m.do.co/c/fe06b043a083) account.
|
||||
2. Click **Create a Droplet**.
|
||||
3. Under **Choose an image > Marketplace**, search latest **Dokku** release for Ubuntu 20.04 _(version numbers may vary)_.
|
||||
3. Under **Choose an image > Marketplace**, search latest **Dokku** release for Ubuntu 24.04 _(version numbers may vary)_.
|
||||
4. Under **Choose a size**, select your machine spec.
|
||||
5. Under **Choose a datacenter region**, select your region.
|
||||
6. Add an SSH Key.
|
||||
@@ -32,5 +32,3 @@
|
||||
# replace dokku.me with a hostname pointed at your server
|
||||
dokku domains:set-global dokku.me
|
||||
```
|
||||
|
||||
13. Once the web UI has been submitted, you will be redirected to our [application deployment tutorial](/docs/deployment/application-deployment.md), which will guide you through deploying a sample application to your Dokku server.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Pull the dokku/dokku image:
|
||||
|
||||
```shell
|
||||
docker pull dokku/dokku:0.34.7
|
||||
docker pull dokku/dokku:0.37.0
|
||||
```
|
||||
|
||||
Next, run the image.
|
||||
@@ -19,17 +19,15 @@ docker container run -d \
|
||||
--publish 8443:443 \
|
||||
--volume /var/lib/dokku:/mnt/dokku \
|
||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||
dokku/dokku:0.34.7
|
||||
dokku/dokku:0.37.0
|
||||
```
|
||||
|
||||
Alternatively, you can use `docker-compose.yml`:
|
||||
|
||||
```yaml
|
||||
version: "3.8"
|
||||
|
||||
services:
|
||||
dokku:
|
||||
image: dokku/dokku:0.34.7
|
||||
image: dokku/dokku:0.37.0
|
||||
container_name: dokku
|
||||
network_mode: bridge
|
||||
ports:
|
||||
@@ -85,9 +83,9 @@ redis: https://github.com/dokku/dokku-redis.git
|
||||
The alternative is to build a custom docker image via a custom Dockerfile. This Dockerfile can run any `plugin:install` command. Note that the version installed at that time will be the one that persists. Below is an example Dockerfile showing this method.
|
||||
|
||||
```Dockerfile
|
||||
FROM dokku/dokku:0.34.7
|
||||
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
|
||||
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git redis
|
||||
FROM dokku/dokku:0.37.0
|
||||
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git --skip-install-trigger
|
||||
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git --skip-install-trigger
|
||||
```
|
||||
|
||||
## SSH Key Management
|
||||
|
||||
@@ -19,7 +19,7 @@ source openrc.sh # Set the environment variables for DreamHost Cloud
|
||||
|
||||
This allows OpenStack client to connect to DreamHost API endpoints.
|
||||
The command below creates a new server instance named `my-dokku-instance`
|
||||
based on Ubuntu 20.04, with 2 GB RAM and 1 CPU (the flavor called
|
||||
based on Ubuntu 24.04, with 2 GB RAM and 1 CPU (the flavor called
|
||||
`supersonic`), opening network port access to HTTP and SSH (the
|
||||
`default` security group), and the name of the chosen SSH key. This
|
||||
key will be automatically added to the new server in the
|
||||
@@ -28,7 +28,7 @@ be reused by Dokku.
|
||||
|
||||
```sh
|
||||
openstack server create \
|
||||
--image Ubuntu-20.04 \
|
||||
--image Ubuntu-24.04 \
|
||||
--flavor gp1.supersonic \
|
||||
--security-group default \
|
||||
--key-name $YOUR_SSH_KEYNAME \
|
||||
|
||||
@@ -9,8 +9,8 @@ Dokku is an extensible, open source Platform as a Service that runs on a single
|
||||
To start using Dokku, you'll need a system that meets the following minimum requirements:
|
||||
|
||||
- A fresh installation of any of the following operating systems:
|
||||
- [Ubuntu 20.04/22.04](https://www.ubuntu.com/download)
|
||||
- [Debian 10+ x64](https://www.debian.org/distrib/)
|
||||
- [Ubuntu 22.04/24.04](https://www.ubuntu.com/download)
|
||||
- [Debian 11+ x64](https://www.debian.org/distrib/)
|
||||
- A server with one of the following architectures
|
||||
- AMD64 (alternatively known as `x86_64`), commonly used for Intel cloud servers
|
||||
- ARMV8 (alternatively known as `arm64`), commonly used for Raspberry PI and AWS Graviton
|
||||
@@ -37,8 +37,8 @@ To install the latest stable version of Dokku, you can run the following shell c
|
||||
|
||||
```shell
|
||||
# for debian systems, installs Dokku via apt-get
|
||||
wget -NP . https://dokku.com/install/v0.34.7/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.34.7 bash bootstrap.sh
|
||||
wget -NP . https://dokku.com/install/v0.37.0/bootstrap.sh
|
||||
sudo DOKKU_TAG=v0.37.0 bash bootstrap.sh
|
||||
```
|
||||
|
||||
The installation process takes about 5-10 minutes, depending upon internet connection speed.
|
||||
@@ -49,7 +49,7 @@ Once the installation is complete, you should configure an ssh key and set your
|
||||
|
||||
```shell
|
||||
# usually your key is already available under the current user's `~/.ssh/authorized_keys` file
|
||||
cat ~/.ssh/authorized_keys | dokku ssh-keys:add admin
|
||||
cat ~/.ssh/authorized_keys | sudo dokku ssh-keys:add admin
|
||||
|
||||
# you can use any domain you already have access to
|
||||
# this domain should have an A record or CNAME pointing at your server's IP
|
||||
|
||||
@@ -226,11 +226,21 @@ sudo ufw disable
|
||||
|
||||
### I can't connect to my application because the server is sending an invalid response, or can't provide a secure connection
|
||||
|
||||
This isn't usually an issue with Dokku, but rather an app config problem. This can happen when your application is configured to enforce secure connections/HSTS, but you don't have SSL set up for the app.
|
||||
This is normally a config problem with your app, rather than an issue with Dokku.
|
||||
|
||||
In Rails at least, if your `application.rb` or `environmnents/production.rb` include the line `configure.force_ssl = true` which includes HSTS, try commenting that out and redeploying.
|
||||
One common cause is an application configured to enforce secure connections/HSTS, but SSL is not set up. In Ruby on Rails, if your `application.rb` or `config/environments/production.rb` include the line `configure.force_ssl = true`, try commenting that line out and redeploying. If this solves the issue temporarily, longer-term you should consider [configuring SSL](/docs/configuration/ssl.md).
|
||||
|
||||
|
||||
### I deployed a new application, but an existing application is being served when I visit it
|
||||
|
||||
This problem has the same cause as the previous issue: your application is attempting to enforce SSL, but SSL is not configured. Disabling SSL enforcement should solve the problem.
|
||||
|
||||
The underlying cause is best understood with an example. Let's say you already have `https://apples.example.com/` working, and you're trying to deploy `bananas.example.com/`. But whenever you visit `bananas.example.com` you see `apples.example.com` instead. This is caused by `bananas.example.com` forcing SSL:
|
||||
|
||||
1. Your browser sends a request to `http://bananas.example.com`.
|
||||
1. `bananas.example.com` issues a redirect to `https://bananas.example.com`.
|
||||
1. Your browser sends a request to `https://bananas.example.com`. But you haven't configured SSL for `bananas.example.com` yet! So this request ends up routed to `https://apples.example.com`, which _does_ have an SSL config.
|
||||
|
||||
If this solves the issue temporarily, longer term you should consider [configuring SSL](/docs/configuration/ssl.md).
|
||||
|
||||
### My application deploys properly, but won't load in browser "connection refused"
|
||||
|
||||
|
||||
@@ -18,6 +18,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.37](/docs/appendices/0.37.0-migration-guide.md)
|
||||
- [Upgrading to 0.36](/docs/appendices/0.36.0-migration-guide.md)
|
||||
- [Upgrading to 0.35](/docs/appendices/0.35.0-migration-guide.md)
|
||||
- [Upgrading to 0.34](/docs/appendices/0.34.0-migration-guide.md)
|
||||
- [Upgrading to 0.33](/docs/appendices/0.33.0-migration-guide.md)
|
||||
- [Upgrading to 0.32](/docs/appendices/0.32.0-migration-guide.md)
|
||||
@@ -40,7 +43,9 @@ Before upgrading, check the migration guides to get comfortable with new feature
|
||||
- [Upgrading to 0.6](/docs/appendices/0.6.0-migration-guide.md)
|
||||
- [Upgrading to 0.5](/docs/appendices/0.5.0-migration-guide.md)
|
||||
|
||||
## Before upgrading
|
||||
## Upgrade Process
|
||||
|
||||
### Before upgrading
|
||||
|
||||
If you'll be updating docker or the herokuish package simultaneously, it's recommended
|
||||
that you stop all applications before upgrading and rebuild afterwards. This is not
|
||||
@@ -69,16 +74,17 @@ dokku --quiet apps:list | xargs -L1 dokku ps:stop
|
||||
dokku --quiet apps | xargs -L1 dokku ps:stop
|
||||
```
|
||||
|
||||
## After upgrading
|
||||
### Upgrading
|
||||
|
||||
After upgrading, you should rebuild the applications to take advantage of any
|
||||
new buildpacks that were released:
|
||||
> [!IMPORTANT]
|
||||
> Unless specified, the `bootstrap.sh` script installs Dokku via a Debian package (`.deb`). Using either the `dokku-update` or `apt` methods are enough to perform an upgrade of Dokku.
|
||||
|
||||
```shell
|
||||
dokku ps:rebuild --all
|
||||
```
|
||||
Please read the migration guides for each version in between your currently installed version of Dokku and the version you are upgrading to in order to ensure minimal downtime.
|
||||
|
||||
## Upgrading using `dokku-update`
|
||||
#### Upgrading using `dokku-update`
|
||||
|
||||
> [!WARNING]
|
||||
> The `dokku-update` package currently does not support upgrading to a specific version of Dokku. If this is required by a particular migration guide, use the `apt` method for upgrading.
|
||||
|
||||
We provide a helpful binary called `dokku-update`. This is a recommended package that:
|
||||
|
||||
@@ -89,22 +95,32 @@ We provide a helpful binary called `dokku-update`. This is a recommended package
|
||||
This binary is available on Debian and RPM-based systems from our package repositories under the name `dokku-update`. When installing from source,
|
||||
this is available from a separate Github repository at [dokku/dokku-update](https://github.com/dokku/dokku-update).
|
||||
|
||||
## Upgrading using `apt`
|
||||
#### Upgrading using `apt`
|
||||
|
||||
If Dokku was installed in a Debian or Ubuntu system, via `apt-get install dokku` or `bootstrap.sh`, you can upgrade with `apt-get`:
|
||||
|
||||
```shell
|
||||
# update your local apt cache
|
||||
sudo apt-get update -qq
|
||||
sudo apt-get update
|
||||
|
||||
# update dokku and its dependencies
|
||||
sudo apt-get -qq -y --no-install-recommends install dokku herokuish sshcommand plugn gliderlabs-sigil dokku-update dokku-event-listener
|
||||
sudo apt-get --no-install-recommends install dokku herokuish sshcommand plugn gliderlabs-sigil dokku-update dokku-event-listener
|
||||
|
||||
# or just upgrade every package:
|
||||
sudo apt-get upgrade
|
||||
```
|
||||
|
||||
## Upgrading from source
|
||||
To upgrade to a specific version of Dokku, specify it on the `apt-get` call:
|
||||
|
||||
```shell
|
||||
# specify the version _without_ the `v` prefix
|
||||
sudo apt-get dokku=$VERSION
|
||||
```
|
||||
|
||||
#### Upgrading from source
|
||||
|
||||
> [!CAUTION]
|
||||
> Dokku is not normally installed from source. Executing a source upgrade when the installation was performed via apt package may result in an inoperable system and will require manual work to get Dokku in a working state.
|
||||
|
||||
If you installed Dokku from source (less common), upgrade with:
|
||||
|
||||
@@ -127,3 +143,13 @@ git clone https://github.com/gliderlabs/herokuish.git
|
||||
cd herokuish
|
||||
CIRCLECI=true IMAGE_NAME=gliderlabs/herokuish BUILD_TAG=latest make build/docker
|
||||
```
|
||||
|
||||
### After upgrading
|
||||
|
||||
After upgrading, you should rebuild the applications to take advantage of any
|
||||
new buildpacks that were released:
|
||||
|
||||
```shell
|
||||
dokku ps:rebuild --all
|
||||
```
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ If you’re stuck, there are a number of places you can get help:
|
||||
|
||||
## The Official Dokku Website
|
||||
|
||||
- [https://dokku.com/docs/](/docs/)
|
||||
- [https://dokku.com/docs/getting-started/installation/](/docs/getting-started/installation/)
|
||||
|
||||
The Official Dokku website is always a great place to visit. It features links to oft-used developer tools, community plugins, and guides on using Dokku.
|
||||
|
||||
|
||||
136
docs/home.html
136
docs/home.html
@@ -10,26 +10,26 @@
|
||||
<meta name="author" content="">
|
||||
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/favicon.ico">
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/manifest.json">
|
||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/favicon.ico">
|
||||
<meta name="apple-mobile-web-app-title" content="Dokku">
|
||||
<meta name="application-name" content="Dokku">
|
||||
<meta name="msapplication-TileColor" content="#da532c">
|
||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/favicons/browserconfig.xml">
|
||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/mstile-144x144.png">
|
||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/favicons/browserconfig.xml">
|
||||
<meta name="theme-color" content="#ffffff">
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
|
||||
@@ -38,7 +38,7 @@
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.34.7/docs/assets/style.css" rel="stylesheet">
|
||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.37.0/docs/assets/style.css" rel="stylesheet">
|
||||
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
|
||||
</head>
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
<main class="container px-4 px-lg-5">
|
||||
<div class="row">
|
||||
<div class="col-lg-7">
|
||||
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.34.7</span></span></a>
|
||||
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.37.0</span></span></a>
|
||||
<h1 class="text-white hero-heading mt-5">An open source PAAS alternative to Heroku.</h1>
|
||||
<h4 class="text-white mt-5">Dokku helps you build and manage the lifecycle of applications from building to scaling.</h4>
|
||||
<div class="d-flex mt-5">
|
||||
@@ -125,7 +125,7 @@
|
||||
</p>
|
||||
<p class="line">
|
||||
<span class="prompt">$</span>
|
||||
<span class="command">sudo DOKKU_TAG=v0.34.7 bash bootstrap.sh</span>
|
||||
<span class="command">sudo DOKKU_TAG=v0.37.0 bash bootstrap.sh</span>
|
||||
</p>
|
||||
<br>
|
||||
|
||||
@@ -226,9 +226,9 @@
|
||||
</svg>
|
||||
Create</a>
|
||||
<a class="nav-link" id="nav-deploy-tab" data-bs-toggle="tab" href="#nav-deploy" role="tab" aria-controls="nav-deploy" aria-selected="false">
|
||||
<svg width="32" height="32" viewBox="0 0.34.72" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M29.8709 1.40551C29.8591 1.34642 29.8311 1.29205 29.7903 1.24881C29.7495 1.20556 29.6976 1.17524 29.6407 1.16141C25.8466 0.20375 17.082 3.61605 12.3285 8.51812C11.4813 9.38524 10.7088 10.3268 10.0198 11.3321C8.55457 11.1953 7.08939 11.3105 5.84189 11.8721C2.31916 13.4706 1.29423 17.6454 1.00817 19.4376C0.992669 19.5358 0.999288 19.6364 1.02751 19.7315C1.05574 19.8267 1.10481 19.9138 1.17093 19.9862C1.23705 20.0586 1.31844 20.1144 1.40878 20.1491C1.49913 20.1838 1.59601 20.1966 1.69192 20.1865L7.34824 19.5456C7.35215 19.9859 7.37777 20.4257 7.42498 20.8633C7.4545 21.1658 7.58527 21.4482 7.79477 21.6618L9.98487 23.9221C10.1921 24.1384 10.466 24.2734 10.7593 24.3037C11.1808 24.3522 11.6044 24.3786 12.0285 24.3829L11.4082 30.2153C11.3985 30.34.7 11.411 30.414 11.4446 30.507C11.4783 30.6001 11.5323 30.684 11.6023 30.7521C11.6724 30.8202 11.7567 30.8708 11.8487 30.9C11.9408 30.9291 12.0381 30.936 12.1331 30.9202C13.8704 30.6322 17.9241 29.5744 19.4639 25.9396C20.0081 24.6508 20.1198 23.1466 19.9942 21.6417C20.9712 20.9312 21.8861 20.134 22.7285 19.2591C27.4994 14.3627 30.7849 5.51625 29.8709 1.40551ZM18.4878 12.9162C18.0711 12.4862 17.7873 11.9384 17.6723 11.3419C17.5573 10.7455 17.6162 10.1273 17.8417 9.56541C18.0672 9.00356 18.449 8.52333 18.939 8.18546C19.4289 7.84759 20.005 7.66725 20.5942 7.66725C21.1835 7.66725 21.7595 7.84759 22.2494 8.18546C22.7394 8.52333 23.1212 9.00356 23.3467 9.56541C23.5722 10.1273 23.6311 10.7455 23.5161 11.3419C23.4011 11.9384 23.1173 12.4862 22.7006 12.9162C22.4242 13.202 22.0959 13.4288 21.7344 13.5835C21.373 13.7383 20.9855 13.8179 20.5942 13.8179C20.2029 13.8179 19.8154 13.7383 19.454 13.5835C19.0926 13.4288 18.7642 13.202 18.4878 12.9162Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M5.29982 22.8765C4.60428 22.9646 3.95721 23.29 3.46136 23.801C2.232 25.074 2.11548 29.7889 2.11548 29.7889C2.11548 29.7889 6.68686 29.6687 7.91692 28.3985C8.41409 27.8876 8.72993 27.2187 8.81347 26.4997" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M29.8709 1.40551C29.8591 1.34642 29.8311 1.29205 29.7903 1.24881C29.7495 1.20556 29.6976 1.17524 29.6407 1.16141C25.8466 0.20375 17.082 3.61605 12.3285 8.51812C11.4813 9.38524 10.7088 10.3268 10.0198 11.3321C8.55457 11.1953 7.08939 11.3105 5.84189 11.8721C2.31916 13.4706 1.29423 17.6454 1.00817 19.4376C0.992669 19.5358 0.999288 19.6364 1.02751 19.7315C1.05574 19.8267 1.10481 19.9138 1.17093 19.9862C1.23705 20.0586 1.31844 20.1144 1.40878 20.1491C1.49913 20.1838 1.59601 20.1966 1.69192 20.1865L7.34824 19.5456C7.35215 19.9859 7.37777 20.4257 7.42498 20.8633C7.4545 21.1658 7.58527 21.4482 7.79477 21.6618L9.98487 23.9221C10.1921 24.1384 10.466 24.2734 10.7593 24.3037C11.1808 24.3522 11.6044 24.3786 12.0285 24.3829L11.4082 30.2153C11.3985 30.3141 11.411 30.414 11.4446 30.507C11.4783 30.6001 11.5323 30.684 11.6023 30.7521C11.6724 30.8202 11.7567 30.8708 11.8487 30.9C11.9408 30.9291 12.0381 30.936 12.1331 30.9202C13.8704 30.6322 17.9241 29.5744 19.4639 25.9396C20.0081 24.6508 20.1198 23.1466 19.9942 21.6417C20.9712 20.9312 21.8861 20.134 22.7285 19.2591C27.4994 14.3627 30.7849 5.51625 29.8709 1.40551ZM18.4878 12.9162C18.0711 12.4862 17.7873 11.9384 17.6723 11.3419C17.5573 10.7455 17.6162 10.1273 17.8417 9.56541C18.0672 9.00356 18.449 8.52333 18.939 8.18546C19.4289 7.84759 20.005 7.66725 20.5942 7.66725C21.1835 7.66725 21.7595 7.84759 22.2494 8.18546C22.7394 8.52333 23.1212 9.00356 23.3467 9.56541C23.5722 10.1273 23.6311 10.7455 23.5161 11.3419C23.4011 11.9384 23.1173 12.4862 22.7006 12.9162C22.4242 13.202 22.0959 13.4288 21.7344 13.5835C21.373 13.7383 20.9855 13.8179 20.5942 13.8179C20.2029 13.8179 19.8154 13.7383 19.454 13.5835C19.0926 13.4288 18.7642 13.202 18.4878 12.9162Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||
<path d="M5.29982 22.8765C4.60428 22.9646 3.95721 23.29 3.46136 23.801C2.232 25.074 2.11548 29.7889 2.11548 29.7889C2.11548 29.7889 6.68686 29.6687 7.91692 28.3985C8.41409 27.8876 8.72993 27.2187 8.81347 26.4997" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||
</svg>
|
||||
Deploy</a>
|
||||
<a class="nav-link" id="nav-scale-tab" data-bs-toggle="tab" href="#nav-scale" role="tab" aria-controls="nav-scale" aria-selected="false">
|
||||
@@ -343,17 +343,17 @@
|
||||
<a xlink:href="https://github.com/dokku/dokku-letsencrypt" target="_blank">
|
||||
<g id="letsencrypt" data-bs-toggle="svg-tooltip" data-bs-placement="bottom" title="Let's Encrypt" filter="url(#filter4_d_55_77)" transform="translate(225.257,418.257) translate(-225.257,-418.257)" style="animation: 30s linear infinite both letsencrypt_t;">
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(225.257,418.257)"/>
|
||||
<path d="M194,421.271L194,409.133L196.949,409.133L196.949,418.716L201.646,418.716L201.646,421.27L194,421.27L194,421.271ZM211.362,417.105L211.362,417.448C211.362,417.562,211.356,417.67,211.345,417.774L205.156,417.774C205.179,418.014,205.251,418.231,205.371,418.425C205.491,418.62,205.645,418.788,205.834,418.931C206.022,419.074,206.234,419.185,206.468,419.265C206.702,419.345,206.945,419.385,207.197,419.385C207.642,419.385,208.02,419.302,208.328,419.137C208.637,418.971,208.888,418.757,209.082,418.494L211.037,419.728C210.637,420.311,210.108,420.759,209.451,421.074C208.794,421.387,208.031,421.545,207.163,421.545C206.522,421.545,205.917,421.445,205.345,421.245C204.774,421.045,204.274,420.754,203.845,420.371C203.417,419.988,203.08,419.517,202.834,418.957C202.588,418.397,202.466,417.757,202.466,417.036C202.466,416.34,202.585,415.708,202.825,415.142C203.065,414.577,203.391,414.097,203.803,413.702C204.214,413.308,204.699,413.002,205.26,412.785C205.82,412.568,206.426,412.459,207.077,412.459C207.705,412.459,208.282,412.565,208.808,412.776C209.334,412.988,209.785,413.293,210.163,413.693C210.54,414.093,210.833,414.579,211.045,415.151C211.256,415.722,211.362,416.374,211.362,417.105ZM208.773,416.025C208.773,415.579,208.633,415.196,208.353,414.876C208.073,414.556,207.653,414.396,207.093,414.396C206.819,414.396,206.568,414.439,206.339,414.525C206.11,414.611,205.911,414.728,205.739,414.876C205.568,415.025,205.43,415.199,205.328,415.399C205.225,415.599,205.168,415.808,205.156,416.025L208.773,416.025ZM215.853,414.825L215.853,418.095C215.853,418.496,215.93,418.797,216.085,418.998C216.238,419.199,216.515,419.299,216.916,419.299C217.053,419.299,217.198,419.288,217.353,419.265C217.507,419.242,217.635,419.208,217.739,419.162L217.773,421.219C217.579,421.287,217.333,421.347,217.036,421.399C216.738,421.45,216.442,421.476,216.144,421.476C215.573,421.476,215.093,421.404,214.704,421.261C214.315,421.118,214.004,420.912,213.77,420.642C213.536,420.373,213.367,420.052,213.264,419.68C213.161,419.307,213.11,418.892,213.11,418.434L213.11,414.825L211.739,414.825L211.739,412.734L213.093,412.734L213.093,410.488L215.853,410.488L215.853,412.734L217.858,412.734L217.858,414.825L215.853,414.825ZM226.961,415.253C226.732,415.036,226.464,414.854,226.156,414.705C225.847,414.556,225.521,414.482,225.179,414.482C224.915,414.482,224.673,414.534,224.45,414.636C224.227,414.739,224.116,414.917,224.116,415.167C224.116,415.407,224.238,415.579,224.484,415.682C224.73,415.785,225.127,415.899,225.676,416.025C225.996,416.093,226.319,416.191,226.644,416.316C226.97,416.442,227.264,416.608,227.527,416.813C227.79,417.019,228.001,417.27,228.162,417.568C228.321,417.865,228.402,418.219,228.402,418.63C228.402,419.168,228.293,419.622,228.076,419.993C227.859,420.364,227.576,420.664,227.227,420.893C226.879,421.122,226.487,421.287,226.053,421.39C225.619,421.493,225.184,421.544,224.75,421.544C224.053,421.544,223.37,421.433,222.701,421.21C222.033,420.987,221.476,420.658,221.03,420.224L222.607,418.561C222.858,418.836,223.167,419.064,223.533,419.247C223.899,419.43,224.287,419.521,224.699,419.521C224.928,419.521,225.153,419.467,225.376,419.358C225.599,419.25,225.71,419.058,225.71,418.784C225.71,418.521,225.574,418.327,225.299,418.201C225.025,418.075,224.597,417.944,224.013,417.806C223.716,417.738,223.419,417.647,223.122,417.532C222.824,417.418,222.559,417.264,222.325,417.07C222.091,416.876,221.899,416.636,221.751,416.35C221.602,416.064,221.528,415.721,221.528,415.321C221.528,414.807,221.636,414.37,221.854,414.01C222.071,413.649,222.351,413.356,222.694,413.127C223.037,412.898,223.417,412.73,223.834,412.621C224.251,412.512,224.665,412.458,225.077,412.458C225.716,412.458,226.342,412.558,226.954,412.758C227.565,412.958,228.082,413.258,228.505,413.658L226.961,415.253ZM220.429,408.901C219.585,408.901,218.925,409.509,218.925,410.285C218.925,411.103,219.481,411.652,220.309,411.652C220.38,411.652,220.447,411.645,220.51,411.633C220.377,412.238,219.794,412.672,219.243,412.759L219.131,412.777L219.131,414.082L219.276,414.068C219.945,414.004,220.605,413.7,221.089,413.234C221.72,412.626,222.053,411.749,222.053,410.696C222.053,409.656,221.37,408.901,220.429,408.901Z" fill="#2C3C69" transform="translate(211.252,415.223) translate(-211.252,-415.223)"/>
|
||||
<path d="M194,423.748L194,435.885L202.468,435.885L202.468,433.382L196.828,433.382L196.828,430.862L201.868,430.862L201.868,428.514L196.828,428.514L196.828,426.216L202.16,426.216L202.16,423.748L194,423.748Z" fill="#2C3C69" transform="translate(198.234,429.817) translate(-198.234,-429.817)"/>
|
||||
<path d="M209.886,431.222L209.886,435.885L212.715,435.885L212.715,430.605C212.715,430.182,212.661,429.759,212.552,429.336C212.444,428.914,212.267,428.539,212.021,428.214C211.775,427.888,211.453,427.622,211.052,427.417C210.652,427.211,210.166,427.108,209.595,427.108C209.298,427.108,209.018,427.149,208.755,427.228C208.492,427.308,208.249,427.411,208.026,427.537C207.804,427.663,207.609,427.814,207.444,427.991C207.277,428.168,207.144,428.348,207.04,428.531L207.006,428.531L207.006,427.348L204.28,427.348L204.28,435.885L207.109,435.885L207.109,431.257C207.109,431.017,207.14,430.785,207.203,430.562C207.266,430.34.707.36,430.142,207.486,429.971C207.611,429.8,207.769,429.665,207.957,429.568C208.146,429.471,208.366,429.422,208.617,429.422C208.868,429.422,209.077,429.471,209.243,429.568C209.409,429.665,209.537,429.797,209.628,429.962C209.72,430.128,209.786,430.319,209.826,430.537C209.865,430.754,209.886,430.982,209.886,431.222Z" fill="#2C3C69" transform="translate(208.498,431.496) translate(-208.498,-431.496)"/>
|
||||
<path d="M219.297,429.611C219.571,429.737,219.788,429.902,219.948,430.108L221.576,428.223C221.405,428.051,221.202,427.894,220.967,427.751C220.733,427.608,220.476,427.488,220.196,427.391C219.916,427.294,219.624,427.217,219.322,427.16C219.019,427.102,218.713,427.074,218.405,427.074C217.742,427.074,217.118,427.179,216.533,427.391C215.949,427.602,215.441,427.905,215.01,428.299C214.579,428.694,214.24,429.171,213.993,429.731C213.745,430.291,213.622,430.92,213.622,431.617C213.622,432.325,213.745,432.96,213.993,433.52C214.24,434.08,214.579,434.556,215.01,434.951C215.441,435.345,215.949,435.645,216.533,435.851C217.118,436.056,217.747,436.159,218.422,436.159C219.05,436.159,219.645,436.062,220.205,435.868C220.764,435.674,221.222,435.405,221.576,435.062L220.016,433.159C219.845,433.365,219.619,433.522,219.339,433.631C219.059,433.74,218.776,433.794,218.491,433.794C218.182,433.794,217.905,433.737,217.659,433.622C217.413,433.508,217.202,433.351,217.025,433.151C216.847,432.951,216.713,432.72,216.622,432.456C216.531,432.194,216.485,431.914,216.485,431.617C216.485,431.319,216.534,431.04,216.631,430.777C216.728,430.514,216.862,430.282,217.034,430.082C217.205,429.883,217.411,429.722,217.651,429.602C217.891,429.482,218.159,429.422,218.457,429.422C218.742,429.422,219.022,429.485,219.297,429.611Z" fill="#2C3C69" transform="translate(217.599,431.617) translate(-217.599,-431.617)"/>
|
||||
<path d="M227.818,429.594C227.943,429.606,228.066,429.629,228.187,429.662L228.308,427.176C228.239,427.154,228.15,427.136,228.042,427.125C227.933,427.114,227.821,427.108,227.707,427.108C227.182,427.108,226.719,427.246,226.319,427.522C225.918,427.798,225.61,428.155,225.393,428.592L225.359,428.592L225.359,427.358L222.65,427.358L222.65,435.885L225.461,435.885L225.461,431.508C225.461,431.337,225.496,431.138,225.564,430.91C225.633,430.682,225.744,430.471,225.899,430.277C226.053,430.083,226.259,429.918,226.516,429.781C226.773,429.645,227.09,429.576,227.467,429.576C227.581,429.576,227.699,429.582,227.818,429.594Z" fill="#2C3C69" transform="translate(225.479,431.496) translate(-225.479,-431.496)"/>
|
||||
<path d="M234.217,438.362C234.429,438.014,234.62,437.616,234.792,437.171L238.615,427.348L235.632,427.348L233.935,432.834L233.883,432.834L231.98,427.348L228.861,427.348L232.426,435.748L232.152,436.451C232.015,436.816,231.849,437.099,231.655,437.299C231.461,437.499,231.147,437.599,230.712,437.599C230.575,437.599,230.423,437.585,230.258,437.556C230.092,437.528,229.94,437.49,229.804,437.445L229.495,439.811C229.7,439.867,229.943,439.913,230.224,439.947C230.503,439.982,230.774,439.999,231.038,439.999C231.574,439.999,232.04,439.936,232.435,439.811C232.829,439.685,233.172,439.5,233.463,439.254C233.755,439.008,234.006,438.71,234.217,438.362Z" fill="#2C3C69" transform="translate(233.738,433.673) translate(-233.738,-433.673)"/>
|
||||
<path d="M253.34,432.709L253.34,429.439L255.345,429.439L255.345,427.348L253.34,427.348L253.34,425.102L250.58,425.102L250.58,427.348L249.226,427.348L249.226,429.439L250.597,429.439L250.597,433.048C250.597,433.506,250.648,433.922,250.751,434.294C250.854,434.667,251.023,434.987,251.257,435.256C251.491,435.526,251.802,435.732,252.191,435.875C252.58,436.018,253.06,436.09,253.631,436.09C253.929,436.09,254.225,436.065,254.523,436.013C254.82,435.962,255.066,435.902,255.26,435.833L255.226,433.776C255.122,433.822,254.994,433.856,254.84,433.879C254.685,433.903,254.54,433.913,254.403,433.913C254.002,433.913,253.725,433.814,253.572,433.613C253.417,433.411,253.34,433.111,253.34,432.709Z" fill="#2C3C69" transform="translate(252.286,430.596) translate(-252.286,-430.596)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M248.848,431.582C248.848,432.177,248.757,432.748,248.574,433.297C248.391,433.845,248.125,434.328,247.777,434.745C247.429,435.162,247.003,435.497,246.5,435.748C245.997,435.999,245.426,436.125,244.785,436.125C244.26,436.125,243.763,436.02,243.294,435.809C242.825,435.597,242.46,435.308,242.197,434.943L242.163,434.943L242.163,440L239.351,440L239.351,427.348L242.026,427.348L242.026,428.394L242.077,428.394C242.34,428.051,242.703,427.751,243.166,427.494C243.628,427.237,244.174,427.108,244.803,427.108C245.42,427.108,245.979,427.228,246.482,427.468C246.985,427.708,247.411,428.034,247.76,428.445C248.109,428.856,248.377,429.334,248.565,429.877C248.754,430.419,248.848,430.988,248.848,431.582ZM245.994,430.777C246.08,431.04,246.123,431.308,246.123,431.582C246.123,431.857,246.08,432.128,245.994,432.396C245.909,432.664,245.783,432.902,245.617,433.107C245.451,433.313,245.243,433.479,244.991,433.605C244.74,433.73,244.448,433.793,244.117,433.793C243.797,433.793,243.511,433.73,243.26,433.605C243.008,433.479,242.794,433.313,242.617,433.107C242.439,432.902,242.303,432.668,242.206,432.405C242.108,432.142,242.06,431.873,242.06,431.599C242.06,431.325,242.108,431.056,242.206,430.793C242.303,430.531,242.439,430.296,242.617,430.091C242.794,429.885,243.008,429.719,243.26,429.594C243.511,429.468,243.797,429.405,244.117,429.405C244.449,429.405,244.74,429.468,244.991,429.594C245.242,429.72,245.451,429.882,245.617,430.082C245.783,430.282,245.909,430.514,245.994,430.777Z" fill="#2C3C69" transform="translate(244.1,433.554) translate(-244.1,-433.554)"/>
|
||||
<path d="M249.292,410.898L246.185,410.898L246.185,409.302C246.185,408.028,245.148,406.992,243.874,406.992C242.6,406.992,241.563,408.029,241.563,409.302L241.563,410.898L238.456,410.898L238.456,409.302C238.456,406.315,240.886,403.884,243.874,403.884C246.862,403.884,249.292,406.315,249.292,409.302L249.292,410.898L249.292,410.898Z" fill="#F9A11D" transform="translate(243.874,407.391) translate(-243.874,-407.391)"/>
|
||||
<path d="M250.545,410.898L237.203,410.898C236.633,410.898,236.167,411.364,236.167,411.933L236.167,421.803C236.167,422.373,236.633,422.839,237.203,422.839L250.545,422.839C251.115,422.839,251.581,422.373,251.581,421.803L251.581,411.933C251.581,411.364,251.115,410.898,250.545,410.898ZM244.55,417.378L244.55,418.716C244.55,419.089,244.247,419.391,243.874,419.391C243.501,419.391,243.198,419.088,243.198,418.716L243.198,417.378C242.782,417.142,242.501,416.697,242.501,416.184C242.501,415.426,243.116,414.812,243.874,414.812C244.632,414.812,245.247,415.426,245.247,416.184C245.247,416.696,244.966,417.142,244.55,417.378L244.55,417.378Z" fill="#2C3C69" transform="translate(243.874,416.868) translate(-243.874,-416.868)"/>
|
||||
<path d="M235.85,409.426L232.631,409.426C232.109,409.426,231.686,409.003,231.686,408.481C231.686,407.959,232.109,407.535,232.631,407.535L235.85,407.535C236.372,407.535,236.796,407.959,236.796,408.481C236.796,409.003,236.372,409.426,235.85,409.426L235.85,409.426ZM238.118,404.362C237.907,404.362,237.694,404.291,237.518,404.146L234.972,402.052C234.568,401.721,234.51,401.125,234.842,400.722C235.174,400.318,235.769,400.26,236.173,400.592L238.719,402.686C239.122,403.017,239.181,403.613,238.849,404.016C238.662,404.244,238.391,404.362,238.118,404.362L238.118,404.362ZM243.874,402.136C243.352,402.136,242.929,401.712,242.929,401.19L242.929,397.945C242.929,397.423,243.352,397,243.874,397C244.396,397,244.819,397.423,244.819,397.945L244.819,401.19C244.819,401.712,244.396,402.136,243.874,402.136L243.874,402.136ZM249.63,404.362C249.356,404.362,249.086,404.244,248.899,404.016C248.567,403.613,248.625,403.017,249.028,402.686L251.575,400.592C251.979,400.26,252.574,400.318,252.906,400.722C253.237,401.125,253.179,401.721,252.776,402.052L250.229,404.146C250.054,404.291,249.841,404.362,249.63,404.362ZM255.117,409.426L251.867,409.426C251.345,409.426,250.922,409.003,250.922,408.481C250.922,407.959,251.345,407.535,251.867,407.535L255.117,407.535C255.639,407.535,256.063,407.959,256.063,408.481C256.063,409.003,255.639,409.426,255.117,409.426Z" fill="#F9A11D" transform="translate(243.875,403.213) translate(-243.875,-403.213)"/>
|
||||
<path d="M194,421.271L194,409.133L196.949,409.133L196.949,418.716L201.646,418.716L201.646,421.27L194,421.27L194,421.271ZM211.362,417.105L211.362,417.448C211.362,417.562,211.356,417.67,211.345,417.774L205.156,417.774C205.179,418.014,205.251,418.231,205.371,418.425C205.491,418.62,205.645,418.788,205.834,418.931C206.022,419.074,206.234,419.185,206.468,419.265C206.702,419.345,206.945,419.385,207.197,419.385C207.642,419.385,208.02,419.302,208.328,419.137C208.637,418.971,208.888,418.757,209.082,418.494L211.037,419.728C210.637,420.311,210.108,420.759,209.451,421.074C208.794,421.387,208.031,421.545,207.163,421.545C206.522,421.545,205.917,421.445,205.345,421.245C204.774,421.045,204.274,420.754,203.845,420.371C203.417,419.988,203.08,419.517,202.834,418.957C202.588,418.397,202.466,417.757,202.466,417.036C202.466,416.34,202.585,415.708,202.825,415.142C203.065,414.577,203.391,414.097,203.803,413.702C204.214,413.308,204.699,413.002,205.26,412.785C205.82,412.568,206.426,412.459,207.077,412.459C207.705,412.459,208.282,412.565,208.808,412.776C209.334,412.988,209.785,413.293,210.163,413.693C210.54,414.093,210.833,414.579,211.045,415.151C211.256,415.722,211.362,416.374,211.362,417.105ZM208.773,416.025C208.773,415.579,208.633,415.196,208.353,414.876C208.073,414.556,207.653,414.396,207.093,414.396C206.819,414.396,206.568,414.439,206.339,414.525C206.11,414.611,205.911,414.728,205.739,414.876C205.568,415.025,205.43,415.199,205.328,415.399C205.225,415.599,205.168,415.808,205.156,416.025L208.773,416.025ZM215.853,414.825L215.853,418.095C215.853,418.496,215.93,418.797,216.085,418.998C216.238,419.199,216.515,419.299,216.916,419.299C217.053,419.299,217.198,419.288,217.353,419.265C217.507,419.242,217.635,419.208,217.739,419.162L217.773,421.219C217.579,421.287,217.333,421.347,217.036,421.399C216.738,421.45,216.442,421.476,216.144,421.476C215.573,421.476,215.093,421.404,214.704,421.261C214.315,421.118,214.004,420.912,213.77,420.642C213.536,420.373,213.367,420.052,213.264,419.68C213.161,419.307,213.11,418.892,213.11,418.434L213.11,414.825L211.739,414.825L211.739,412.734L213.093,412.734L213.093,410.488L215.853,410.488L215.853,412.734L217.858,412.734L217.858,414.825L215.853,414.825ZM226.961,415.253C226.732,415.036,226.464,414.854,226.156,414.705C225.847,414.556,225.521,414.482,225.179,414.482C224.915,414.482,224.673,414.534,224.45,414.636C224.227,414.739,224.116,414.917,224.116,415.167C224.116,415.407,224.238,415.579,224.484,415.682C224.73,415.785,225.127,415.899,225.676,416.025C225.996,416.093,226.319,416.191,226.644,416.316C226.97,416.442,227.264,416.608,227.527,416.813C227.79,417.019,228.001,417.27,228.162,417.568C228.321,417.865,228.402,418.219,228.402,418.63C228.402,419.168,228.293,419.622,228.076,419.993C227.859,420.364,227.576,420.664,227.227,420.893C226.879,421.122,226.487,421.287,226.053,421.39C225.619,421.493,225.184,421.544,224.75,421.544C224.053,421.544,223.37,421.433,222.701,421.21C222.033,420.987,221.476,420.658,221.03,420.224L222.607,418.561C222.858,418.836,223.167,419.064,223.533,419.247C223.899,419.43,224.287,419.521,224.699,419.521C224.928,419.521,225.153,419.467,225.376,419.358C225.599,419.25,225.71,419.058,225.71,418.784C225.71,418.521,225.574,418.327,225.299,418.201C225.025,418.075,224.597,417.944,224.013,417.806C223.716,417.738,223.419,417.647,223.122,417.532C222.824,417.418,222.559,417.264,222.325,417.07C222.091,416.876,221.899,416.636,221.751,416.35C221.602,416.064,221.528,415.721,221.528,415.321C221.528,414.807,221.636,414.37,221.854,414.01C222.071,413.649,222.351,413.356,222.694,413.127C223.037,412.898,223.417,412.73,223.834,412.621C224.251,412.512,224.665,412.458,225.077,412.458C225.716,412.458,226.342,412.558,226.954,412.758C227.565,412.958,228.082,413.258,228.505,413.658L226.961,415.253ZM220.429,408.901C219.585,408.901,218.925,409.509,218.925,410.285C218.925,411.103,219.481,411.652,220.309,411.652C220.38,411.652,220.447,411.645,220.51,411.633C220.377,412.238,219.794,412.672,219.243,412.759L219.131,412.777L219.131,414.082L219.276,414.068C219.945,414.004,220.605,413.7,221.089,413.234C221.72,412.626,222.053,411.749,222.053,410.696C222.053,409.656,221.37,408.901,220.429,408.901Z" fill="#2C3C69" transform="translate(211.252,415.223) translate(-211.252,-415.223)" />
|
||||
<path d="M194,423.748L194,435.885L202.468,435.885L202.468,433.382L196.828,433.382L196.828,430.862L201.868,430.862L201.868,428.514L196.828,428.514L196.828,426.216L202.16,426.216L202.16,423.748L194,423.748Z" fill="#2C3C69" transform="translate(198.234,429.817) translate(-198.234,-429.817)" />
|
||||
<path d="M209.886,431.222L209.886,435.885L212.715,435.885L212.715,430.605C212.715,430.182,212.661,429.759,212.552,429.336C212.444,428.914,212.267,428.539,212.021,428.214C211.775,427.888,211.453,427.622,211.052,427.417C210.652,427.211,210.166,427.108,209.595,427.108C209.298,427.108,209.018,427.149,208.755,427.228C208.492,427.308,208.249,427.411,208.026,427.537C207.804,427.663,207.609,427.814,207.444,427.991C207.277,428.168,207.144,428.348,207.04,428.531L207.006,428.531L207.006,427.348L204.28,427.348L204.28,435.885L207.109,435.885L207.109,431.257C207.109,431.017,207.14,430.785,207.203,430.562C207.266,430.34,207.36,430.142,207.486,429.971C207.611,429.8,207.769,429.665,207.957,429.568C208.146,429.471,208.366,429.422,208.617,429.422C208.868,429.422,209.077,429.471,209.243,429.568C209.409,429.665,209.537,429.797,209.628,429.962C209.72,430.128,209.786,430.319,209.826,430.537C209.865,430.754,209.886,430.982,209.886,431.222Z" fill="#2C3C69" transform="translate(208.498,431.496) translate(-208.498,-431.496)" />
|
||||
<path d="M219.297,429.611C219.571,429.737,219.788,429.902,219.948,430.108L221.576,428.223C221.405,428.051,221.202,427.894,220.967,427.751C220.733,427.608,220.476,427.488,220.196,427.391C219.916,427.294,219.624,427.217,219.322,427.16C219.019,427.102,218.713,427.074,218.405,427.074C217.742,427.074,217.118,427.179,216.533,427.391C215.949,427.602,215.441,427.905,215.01,428.299C214.579,428.694,214.24,429.171,213.993,429.731C213.745,430.291,213.622,430.92,213.622,431.617C213.622,432.325,213.745,432.96,213.993,433.52C214.24,434.08,214.579,434.556,215.01,434.951C215.441,435.345,215.949,435.645,216.533,435.851C217.118,436.056,217.747,436.159,218.422,436.159C219.05,436.159,219.645,436.062,220.205,435.868C220.764,435.674,221.222,435.405,221.576,435.062L220.016,433.159C219.845,433.365,219.619,433.522,219.339,433.631C219.059,433.74,218.776,433.794,218.491,433.794C218.182,433.794,217.905,433.737,217.659,433.622C217.413,433.508,217.202,433.351,217.025,433.151C216.847,432.951,216.713,432.72,216.622,432.456C216.531,432.194,216.485,431.914,216.485,431.617C216.485,431.319,216.534,431.04,216.631,430.777C216.728,430.514,216.862,430.282,217.034,430.082C217.205,429.883,217.411,429.722,217.651,429.602C217.891,429.482,218.159,429.422,218.457,429.422C218.742,429.422,219.022,429.485,219.297,429.611Z" fill="#2C3C69" transform="translate(217.599,431.617) translate(-217.599,-431.617)" />
|
||||
<path d="M227.818,429.594C227.943,429.606,228.066,429.629,228.187,429.662L228.308,427.176C228.239,427.154,228.15,427.136,228.042,427.125C227.933,427.114,227.821,427.108,227.707,427.108C227.182,427.108,226.719,427.246,226.319,427.522C225.918,427.798,225.61,428.155,225.393,428.592L225.359,428.592L225.359,427.358L222.65,427.358L222.65,435.885L225.461,435.885L225.461,431.508C225.461,431.337,225.496,431.138,225.564,430.91C225.633,430.682,225.744,430.471,225.899,430.277C226.053,430.083,226.259,429.918,226.516,429.781C226.773,429.645,227.09,429.576,227.467,429.576C227.581,429.576,227.699,429.582,227.818,429.594Z" fill="#2C3C69" transform="translate(225.479,431.496) translate(-225.479,-431.496)" />
|
||||
<path d="M234.217,438.362C234.429,438.014,234.62,437.616,234.792,437.171L238.615,427.348L235.632,427.348L233.935,432.834L233.883,432.834L231.98,427.348L228.861,427.348L232.426,435.748L232.152,436.451C232.015,436.816,231.849,437.099,231.655,437.299C231.461,437.499,231.147,437.599,230.712,437.599C230.575,437.599,230.423,437.585,230.258,437.556C230.092,437.528,229.94,437.49,229.804,437.445L229.495,439.811C229.7,439.867,229.943,439.913,230.224,439.947C230.503,439.982,230.774,439.999,231.038,439.999C231.574,439.999,232.04,439.936,232.435,439.811C232.829,439.685,233.172,439.5,233.463,439.254C233.755,439.008,234.006,438.71,234.217,438.362Z" fill="#2C3C69" transform="translate(233.738,433.673) translate(-233.738,-433.673)" />
|
||||
<path d="M253.34,432.709L253.34,429.439L255.345,429.439L255.345,427.348L253.34,427.348L253.34,425.102L250.58,425.102L250.58,427.348L249.226,427.348L249.226,429.439L250.597,429.439L250.597,433.048C250.597,433.506,250.648,433.922,250.751,434.294C250.854,434.667,251.023,434.987,251.257,435.256C251.491,435.526,251.802,435.732,252.191,435.875C252.58,436.018,253.06,436.09,253.631,436.09C253.929,436.09,254.225,436.065,254.523,436.013C254.82,435.962,255.066,435.902,255.26,435.833L255.226,433.776C255.122,433.822,254.994,433.856,254.84,433.879C254.685,433.903,254.54,433.913,254.403,433.913C254.002,433.913,253.725,433.814,253.572,433.613C253.417,433.411,253.34,433.111,253.34,432.709Z" fill="#2C3C69" transform="translate(252.286,430.596) translate(-252.286,-430.596)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M248.848,431.582C248.848,432.177,248.757,432.748,248.574,433.297C248.391,433.845,248.125,434.328,247.777,434.745C247.429,435.162,247.003,435.497,246.5,435.748C245.997,435.999,245.426,436.125,244.785,436.125C244.26,436.125,243.763,436.02,243.294,435.809C242.825,435.597,242.46,435.308,242.197,434.943L242.163,434.943L242.163,440L239.351,440L239.351,427.348L242.026,427.348L242.026,428.394L242.077,428.394C242.34,428.051,242.703,427.751,243.166,427.494C243.628,427.237,244.174,427.108,244.803,427.108C245.42,427.108,245.979,427.228,246.482,427.468C246.985,427.708,247.411,428.034,247.76,428.445C248.109,428.856,248.377,429.334,248.565,429.877C248.754,430.419,248.848,430.988,248.848,431.582ZM245.994,430.777C246.08,431.04,246.123,431.308,246.123,431.582C246.123,431.857,246.08,432.128,245.994,432.396C245.909,432.664,245.783,432.902,245.617,433.107C245.451,433.313,245.243,433.479,244.991,433.605C244.74,433.73,244.448,433.793,244.117,433.793C243.797,433.793,243.511,433.73,243.26,433.605C243.008,433.479,242.794,433.313,242.617,433.107C242.439,432.902,242.303,432.668,242.206,432.405C242.108,432.142,242.06,431.873,242.06,431.599C242.06,431.325,242.108,431.056,242.206,430.793C242.303,430.531,242.439,430.296,242.617,430.091C242.794,429.885,243.008,429.719,243.26,429.594C243.511,429.468,243.797,429.405,244.117,429.405C244.449,429.405,244.74,429.468,244.991,429.594C245.242,429.72,245.451,429.882,245.617,430.082C245.783,430.282,245.909,430.514,245.994,430.777Z" fill="#2C3C69" transform="translate(244.1,433.554) translate(-244.1,-433.554)" />
|
||||
<path d="M249.292,410.898L246.185,410.898L246.185,409.302C246.185,408.028,245.148,406.992,243.874,406.992C242.6,406.992,241.563,408.029,241.563,409.302L241.563,410.898L238.456,410.898L238.456,409.302C238.456,406.315,240.886,403.884,243.874,403.884C246.862,403.884,249.292,406.315,249.292,409.302L249.292,410.898L249.292,410.898Z" fill="#F9A11D" transform="translate(243.874,407.391) translate(-243.874,-407.391)" />
|
||||
<path d="M250.545,410.898L237.203,410.898C236.633,410.898,236.167,411.364,236.167,411.933L236.167,421.803C236.167,422.373,236.633,422.839,237.203,422.839L250.545,422.839C251.115,422.839,251.581,422.373,251.581,421.803L251.581,411.933C251.581,411.364,251.115,410.898,250.545,410.898ZM244.55,417.378L244.55,418.716C244.55,419.089,244.247,419.391,243.874,419.391C243.501,419.391,243.198,419.088,243.198,418.716L243.198,417.378C242.782,417.142,242.501,416.697,242.501,416.184C242.501,415.426,243.116,414.812,243.874,414.812C244.632,414.812,245.247,415.426,245.247,416.184C245.247,416.696,244.966,417.142,244.55,417.378L244.55,417.378Z" fill="#2C3C69" transform="translate(243.874,416.868) translate(-243.874,-416.868)" />
|
||||
<path d="M235.85,409.426L232.631,409.426C232.109,409.426,231.686,409.003,231.686,408.481C231.686,407.959,232.109,407.535,232.631,407.535L235.85,407.535C236.372,407.535,236.796,407.959,236.796,408.481C236.796,409.003,236.372,409.426,235.85,409.426L235.85,409.426ZM238.118,404.362C237.907,404.362,237.694,404.291,237.518,404.146L234.972,402.052C234.568,401.721,234.51,401.125,234.842,400.722C235.174,400.318,235.769,400.26,236.173,400.592L238.719,402.686C239.122,403.017,239.181,403.613,238.849,404.016C238.662,404.244,238.391,404.362,238.118,404.362L238.118,404.362ZM243.874,402.136C243.352,402.136,242.929,401.712,242.929,401.19L242.929,397.945C242.929,397.423,243.352,397,243.874,397C244.396,397,244.819,397.423,244.819,397.945L244.819,401.19C244.819,401.712,244.396,402.136,243.874,402.136L243.874,402.136ZM249.63,404.362C249.356,404.362,249.086,404.244,248.899,404.016C248.567,403.613,248.625,403.017,249.028,402.686L251.575,400.592C251.979,400.26,252.574,400.318,252.906,400.722C253.237,401.125,253.179,401.721,252.776,402.052L250.229,404.146C250.054,404.291,249.841,404.362,249.63,404.362ZM255.117,409.426L251.867,409.426C251.345,409.426,250.922,409.003,250.922,408.481C250.922,407.959,251.345,407.535,251.867,407.535L255.117,407.535C255.639,407.535,256.063,407.959,256.063,408.481C256.063,409.003,255.639,409.426,255.117,409.426Z" fill="#F9A11D" transform="translate(243.875,403.213) translate(-243.875,-403.213)" />
|
||||
</g>
|
||||
</a>
|
||||
<a xlink:href="https://github.com/dokku/dokku-redis-plugin" target="_blank">
|
||||
@@ -374,21 +374,21 @@
|
||||
<a xlink:href="https://github.com/dokku/dokku-mariadb-plugin" target="_blank">
|
||||
<g id="mariadb" data-bs-toggle="svg-tooltip" data-bs-placement="bottom" title="MariaDB" filter="url(#filter6_d_55_77)" transform="translate(327.257,547.257) translate(-327.257,-547.257)" style="animation: 30s linear infinite both mariadb_t;">
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(327.257,547.257)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M350.845,524.066C350.042,524.092,350.296,524.323,348.56,524.751C346.809,525.181,344.66,525.048,342.782,525.84C337.148,528.203,336.022,536.269,330.908,539.158C327.095,541.319,323.224,541.492,319.757,542.567C317.475,543.283,314.99,544.748,312.91,546.524C311.307,547.908,311.264,549.124,309.588,550.858C307.794,552.712,302.452,550.889,300.055,553.729C300.835,554.515,301.176,554.738,302.71,554.532C302.392,555.133,300.52,555.642,300.887,556.529C301.274,557.462,305.798,558.092,309.9,555.607C311.815,554.449,313.338,552.782,316.314,552.372C320.185,551.857,324.634,552.701,329.083,553.348C328.418,555.324,327.089,556.641,326.02,558.201C325.691,558.557,326.685,558.597,327.817,558.382C329.857,557.879,331.313,557.472,332.873,556.576C334.762,555.476,335.048,552.647,337.38,552.041C338.671,554.028,342.175,554.496,344.371,552.907C342.458,552.364,341.93,548.285,342.574,546.494C343.186,544.795,343.79,542.074,344.405,539.821C345.067,537.408,345.31,534.361,346.113,533.147C347.317,531.298,348.649,530.663,349.811,529.623C350.966,528.58,352.023,527.566,351.989,525.174C351.978,524.405,351.581,523.978,350.851,524.001L350.845,524.066Z" fill="#002B64" transform="translate(326.022,541.257) translate(-326.022,-541.257)"/>
|
||||
<path d="M301.733,556.422C304.651,556.841,306.442,556.422,308.811,555.402C310.813,554.532,312.74,552.744,315.109,551.993C318.576,550.878,322.389,551.995,326.116,552.217C327.02,552.271,327.918,552.272,328.805,552.175C330.189,551.326,330.16,548.16,331.507,547.842C331.467,552.291,329.637,554.978,327.722,557.549C331.767,556.838,334.164,554.515,335.782,551.395C336.276,550.451,336.698,549.437,337.071,548.362C337.648,548.804,337.32,550.153,337.611,550.881C340.387,549.336,341.973,545.797,343.042,542.243C344.261,538.112,344.758,533.923,345.544,532.71C346.309,531.517,347.502,530.78,348.606,530.017C349.842,529.148,350.946,528.244,351.137,526.58C349.831,526.459,349.53,526.158,349.337,525.499C348.684,525.869,348.083,525.947,347.404,525.967C346.815,525.985,346.168,525.959,345.376,526.04C338.847,526.71,338.009,533.927,333.821,538C333.514,538.298,333.185,538.575,332.838,538.835C331.371,539.927,329.574,540.71,327.927,541.342C325.246,542.365,322.698,542.44,320.185,543.324C318.339,543.971,316.458,544.913,314.956,545.95C314.577,546.209,314.219,546.476,313.893,546.745C313.003,547.473,312.419,548.279,311.853,549.111C311.27,549.966,310.709,550.847,309.851,551.688C308.462,553.051,303.264,552.086,301.444,553.352C301.241,553.492,301.08,553.661,300.968,553.863C301.964,554.317,302.632,554.038,303.779,554.164C303.929,555.253,301.413,555.9,301.785,556.4L301.733,556.422Z" fill="#C49A6C" transform="translate(326.053,541.524) translate(-326.053,-541.524)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M341.311,548.333C341.389,549.581,342.114,552.06,342.753,552.666C341.499,552.972,339.344,552.467,338.795,551.583C339.079,550.306,340.56,549.139,341.317,548.347L341.311,548.333Z" fill="#C49A6C" transform="translate(340.774,550.544) translate(-340.774,-550.544)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M343.045,528.688C343.969,529.491,345.911,528.847,345.564,527.25C344.125,527.13,343.293,527.619,343.045,528.688Z" fill="#002B64" transform="translate(344.325,528.133) translate(-344.325,-528.133)"/>
|
||||
<path d="M349.4,526.666C349.154,527.183,348.684,527.847,348.684,529.162C348.682,529.388,348.513,529.543,348.51,529.194C348.522,527.909,348.862,527.354,349.223,526.626C349.391,526.326,349.492,526.45,349.401,526.667L349.4,526.666Z" fill="#002B64" transform="translate(348.973,527.923) translate(-348.973,-527.923)"/>
|
||||
<path d="M349.4,526.666C349.111,527.157,348.412,528.058,348.297,529.367C348.275,529.592,348.093,529.731,348.121,529.384C348.246,528.107,348.805,527.306,349.23,526.61C349.422,526.327,349.513,526.459,349.402,526.667L349.4,526.666Z" fill="#002B64" transform="translate(348.784,528.021) translate(-348.784,-528.021)"/>
|
||||
<path d="M349.112,526.377C348.782,526.842,347.705,527.923,347.479,529.217C347.439,529.438,347.245,529.564,347.302,529.219C347.535,527.956,348.464,526.962,348.943,526.301C349.159,526.035,349.238,526.174,349.111,526.372L349.112,526.377Z" fill="#002B64" transform="translate(348.232,527.793) translate(-348.232,-527.793)"/>
|
||||
<path d="M348.823,526.088C348.43,526.504,347.147,527.879,346.743,529.122C346.671,529.335,346.462,529.431,346.567,529.098C346.974,527.879,348.098,526.568,348.667,525.978C348.918,525.745,348.976,525.894,348.823,526.072L348.823,526.088Z" fill="#002B64" transform="translate(347.723,527.587) translate(-347.723,-527.587)"/>
|
||||
<path d="M336.092,563.3L336.092,570.461L335.188,570.461L335.188,569.233C334.368,570.213,333.434,570.704,332.388,570.704C331.334,570.704,330.444,570.34.729.726,569.584C329.005,568.829,328.647,567.934,328.647,566.899C328.647,565.855,329.012,564.964,329.739,564.237C330.467,563.491,331.341,563.117,332.356,563.117C333.526,563.117,334.474,563.617,335.202,564.615L335.202,563.307L336.106,563.307L336.092,563.3ZM335.257,566.933C335.257,566.114,334.981,565.426,334.433,564.868C333.884,564.301,333.209,564.019,332.409,564.019C331.617,564.019,330.947,564.31,330.398,564.895C329.85,565.472,329.574,566.155,329.574,566.947C329.574,567.739,329.854,568.428,330.412,569.013C330.97,569.589,331.635,569.876,332.409,569.876C333.191,569.876,333.861,569.596,334.419,569.038C334.977,568.48,335.257,567.778,335.257,566.933" fill="#A57242" transform="translate(332.377,566.91) translate(-332.377,-566.91)"/>
|
||||
<path d="M338.213,570.415L338.213,560.73L340.224,560.73C341.601,560.73,342.611,560.833,343.253,561.04C343.901,561.238,344.458,561.556,344.926,561.997C345.395,562.428,345.755,562.958,346.005,563.59C346.258,564.218,346.384,564.957,346.384,565.802C346.384,566.64,346.186,567.429,345.789,568.166C345.401,568.903,344.871,569.46,344.197,569.839C343.531,570.218,342.569,570.406,341.305,570.406L338.207,570.406L338.213,570.415ZM339.138,569.488L340.258,569.488C341.429,569.488,342.273,569.429,342.806,569.312C343.336,569.195,343.8,568.966,344.197,568.624C344.591,568.273,344.894,567.851,345.101,567.355C345.308,566.859,345.411,566.295,345.411,565.654C345.411,565.016,345.289,564.426,345.046,563.887C344.812,563.348,344.474,562.902,344.034,562.551C343.593,562.2,343.072,561.966,342.468,561.849C341.874,561.723,340.997,561.66,339.829,561.66L339.141,561.66L339.141,569.486" fill="#A57242" transform="translate(342.296,565.572) translate(-342.296,-565.572)"/>
|
||||
<path d="M325.591,561.235C325.591,561.028,325.663,560.847,325.807,560.696C325.96,560.543,326.14,560.466,326.346,560.466C326.562,560.466,326.741,560.543,326.885,560.696C327.038,560.839,327.115,561.019,327.115,561.235C327.115,561.442,327.039,561.623,326.885,561.774C326.742,561.918,326.562,561.99,326.346,561.99C326.139,561.99,325.958,561.914,325.807,561.761C325.663,561.608,325.591,561.433,325.591,561.235L325.591,561.235ZM325.887,563.232L326.819,563.232L326.819,570.392L325.887,570.392L325.887,563.232Z" fill="#A57242" transform="translate(326.353,565.429) translate(-326.353,-565.429)"/>
|
||||
<path d="M300,570.415L301.377,560.73L301.526,560.73L305.473,568.671L309.375,560.73L309.523,560.73L310.914,570.415L309.957,570.415L309.011,563.484L305.592,570.415L305.348,570.415L301.883,563.415L300.937,570.415L300.006,570.415" fill="#A57242" transform="translate(305.457,565.572) translate(-305.457,-565.572)"/>
|
||||
<path d="M319.679,563.3L319.679,570.461L318.775,570.461L318.775,569.233C317.956,570.213,317.022,570.704,315.975,570.704C314.922,570.704,314.031,570.34.713.313,569.584C312.592,568.829,312.234,567.934,312.234,566.899C312.234,565.855,312.599,564.964,313.327,564.237C314.054,563.491,314.929,563.117,315.943,563.117C317.114,563.117,318.061,563.617,318.789,564.615L318.789,563.307L319.693,563.307L319.679,563.3ZM318.844,566.933C318.844,566.114,318.569,565.426,318.02,564.868C317.472,564.301,316.797,564.019,315.996,564.019C315.204,564.019,314.534,564.31,313.985,564.895C313.437,565.472,313.162,566.155,313.162,566.947C313.162,567.739,313.442,568.428,313.999,569.013C314.557,569.589,315.222,569.876,315.996,569.876C316.779,569.876,317.449,569.596,318.006,569.038C318.564,568.48,318.842,567.778,318.844,566.933" fill="#A57242" transform="translate(315.963,566.91) translate(-315.963,-566.91)"/>
|
||||
<path d="M321.342,563.3L322.287,563.3L322.287,564.34C322.54,563.918,322.783,563.608,323.015,563.408C323.258,563.21,323.522,563.112,323.811,563.112C324.107,563.112,324.406,563.193,324.702,563.355L324.215,564.138C324.08,564.057,323.94,564.017,323.797,564.017C323.517,564.017,323.254,564.161,323.001,564.448C322.758,564.735,322.579,565.109,322.462,565.568C322.345,566.018,322.286,566.842,322.286,568.047L322.286,570.479L321.341,570.479L321.341,563.319" fill="#A57242" transform="translate(323.022,566.795) translate(-323.022,-566.795)"/>
|
||||
<path d="M348.198,560.776L350.114,560.776C351.131,560.776,351.9,560.983,352.432,561.396C352.962,561.799,353.228,562.385,353.228,563.149C353.228,563.571,353.121,563.964,352.905,564.322C352.698,564.673,352.393,564.955,351.987,565.171C352.652,565.387,353.157,565.71,353.497,566.142C353.848,566.573,354.023,567.087,354.023,567.679C354.023,568.48,353.731,569.146,353.146,569.676C352.561,570.197,351.806,570.459,350.878,570.459L348.216,570.459L348.216,560.774L348.198,560.776ZM349.173,561.719L349.173,564.817L349.726,564.817C350.571,564.817,351.202,564.682,351.615,564.413C352.028,564.143,352.235,563.72,352.235,563.144C352.235,562.192,351.588,561.715,350.291,561.715L349.171,561.715L349.173,561.719ZM349.171,565.8L349.171,569.518L350.371,569.518C351.064,569.518,351.571,569.45,351.895,569.315C352.228,569.171,352.499,568.955,352.705,568.668C352.912,568.372,353.015,568.069,353.015,567.764C353.015,567.459,352.956,567.188,352.84,566.954C352.723,566.72,352.548,566.513,352.314,566.334C352.089,566.154,351.814,566.02,351.49,565.93C351.176,565.84,350.581,565.795,349.709,565.795L349.17,565.795" fill="#A57242" transform="translate(351.111,565.617) translate(-351.111,-565.617)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M350.845,524.066C350.042,524.092,350.296,524.323,348.56,524.751C346.809,525.181,344.66,525.048,342.782,525.84C337.148,528.203,336.022,536.269,330.908,539.158C327.095,541.319,323.224,541.492,319.757,542.567C317.475,543.283,314.99,544.748,312.91,546.524C311.307,547.908,311.264,549.124,309.588,550.858C307.794,552.712,302.452,550.889,300.055,553.729C300.835,554.515,301.176,554.738,302.71,554.532C302.392,555.133,300.52,555.642,300.887,556.529C301.274,557.462,305.798,558.092,309.9,555.607C311.815,554.449,313.338,552.782,316.314,552.372C320.185,551.857,324.634,552.701,329.083,553.348C328.418,555.324,327.089,556.641,326.02,558.201C325.691,558.557,326.685,558.597,327.817,558.382C329.857,557.879,331.313,557.472,332.873,556.576C334.762,555.476,335.048,552.647,337.38,552.041C338.671,554.028,342.175,554.496,344.371,552.907C342.458,552.364,341.93,548.285,342.574,546.494C343.186,544.795,343.79,542.074,344.405,539.821C345.067,537.408,345.31,534.361,346.113,533.147C347.317,531.298,348.649,530.663,349.811,529.623C350.966,528.58,352.023,527.566,351.989,525.174C351.978,524.405,351.581,523.978,350.851,524.001L350.845,524.066Z" fill="#002B64" transform="translate(326.022,541.257) translate(-326.022,-541.257)" />
|
||||
<path d="M301.733,556.422C304.651,556.841,306.442,556.422,308.811,555.402C310.813,554.532,312.74,552.744,315.109,551.993C318.576,550.878,322.389,551.995,326.116,552.217C327.02,552.271,327.918,552.272,328.805,552.175C330.189,551.326,330.16,548.16,331.507,547.842C331.467,552.291,329.637,554.978,327.722,557.549C331.767,556.838,334.164,554.515,335.782,551.395C336.276,550.451,336.698,549.437,337.071,548.362C337.648,548.804,337.32,550.153,337.611,550.881C340.387,549.336,341.973,545.797,343.042,542.243C344.261,538.112,344.758,533.923,345.544,532.71C346.309,531.517,347.502,530.78,348.606,530.017C349.842,529.148,350.946,528.244,351.137,526.58C349.831,526.459,349.53,526.158,349.337,525.499C348.684,525.869,348.083,525.947,347.404,525.967C346.815,525.985,346.168,525.959,345.376,526.04C338.847,526.71,338.009,533.927,333.821,538C333.514,538.298,333.185,538.575,332.838,538.835C331.371,539.927,329.574,540.71,327.927,541.342C325.246,542.365,322.698,542.44,320.185,543.324C318.339,543.971,316.458,544.913,314.956,545.95C314.577,546.209,314.219,546.476,313.893,546.745C313.003,547.473,312.419,548.279,311.853,549.111C311.27,549.966,310.709,550.847,309.851,551.688C308.462,553.051,303.264,552.086,301.444,553.352C301.241,553.492,301.08,553.661,300.968,553.863C301.964,554.317,302.632,554.038,303.779,554.164C303.929,555.253,301.413,555.9,301.785,556.4L301.733,556.422Z" fill="#C49A6C" transform="translate(326.053,541.524) translate(-326.053,-541.524)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M341.311,548.333C341.389,549.581,342.114,552.06,342.753,552.666C341.499,552.972,339.344,552.467,338.795,551.583C339.079,550.306,340.56,549.139,341.317,548.347L341.311,548.333Z" fill="#C49A6C" transform="translate(340.774,550.544) translate(-340.774,-550.544)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M343.045,528.688C343.969,529.491,345.911,528.847,345.564,527.25C344.125,527.13,343.293,527.619,343.045,528.688Z" fill="#002B64" transform="translate(344.325,528.133) translate(-344.325,-528.133)" />
|
||||
<path d="M349.4,526.666C349.154,527.183,348.684,527.847,348.684,529.162C348.682,529.388,348.513,529.543,348.51,529.194C348.522,527.909,348.862,527.354,349.223,526.626C349.391,526.326,349.492,526.45,349.401,526.667L349.4,526.666Z" fill="#002B64" transform="translate(348.973,527.923) translate(-348.973,-527.923)" />
|
||||
<path d="M349.4,526.666C349.111,527.157,348.412,528.058,348.297,529.367C348.275,529.592,348.093,529.731,348.121,529.384C348.246,528.107,348.805,527.306,349.23,526.61C349.422,526.327,349.513,526.459,349.402,526.667L349.4,526.666Z" fill="#002B64" transform="translate(348.784,528.021) translate(-348.784,-528.021)" />
|
||||
<path d="M349.112,526.377C348.782,526.842,347.705,527.923,347.479,529.217C347.439,529.438,347.245,529.564,347.302,529.219C347.535,527.956,348.464,526.962,348.943,526.301C349.159,526.035,349.238,526.174,349.111,526.372L349.112,526.377Z" fill="#002B64" transform="translate(348.232,527.793) translate(-348.232,-527.793)" />
|
||||
<path d="M348.823,526.088C348.43,526.504,347.147,527.879,346.743,529.122C346.671,529.335,346.462,529.431,346.567,529.098C346.974,527.879,348.098,526.568,348.667,525.978C348.918,525.745,348.976,525.894,348.823,526.072L348.823,526.088Z" fill="#002B64" transform="translate(347.723,527.587) translate(-347.723,-527.587)" />
|
||||
<path d="M336.092,563.3L336.092,570.461L335.188,570.461L335.188,569.233C334.368,570.213,333.434,570.704,332.388,570.704C331.334,570.704,330.444,570.33,329.726,569.584C329.005,568.829,328.647,567.934,328.647,566.899C328.647,565.855,329.012,564.964,329.739,564.237C330.467,563.491,331.341,563.117,332.356,563.117C333.526,563.117,334.474,563.617,335.202,564.615L335.202,563.307L336.106,563.307L336.092,563.3ZM335.257,566.933C335.257,566.114,334.981,565.426,334.433,564.868C333.884,564.301,333.209,564.019,332.409,564.019C331.617,564.019,330.947,564.31,330.398,564.895C329.85,565.472,329.574,566.155,329.574,566.947C329.574,567.739,329.854,568.428,330.412,569.013C330.97,569.589,331.635,569.876,332.409,569.876C333.191,569.876,333.861,569.596,334.419,569.038C334.977,568.48,335.257,567.778,335.257,566.933" fill="#A57242" transform="translate(332.377,566.91) translate(-332.377,-566.91)" />
|
||||
<path d="M338.213,570.415L338.213,560.73L340.224,560.73C341.601,560.73,342.611,560.833,343.253,561.04C343.901,561.238,344.458,561.556,344.926,561.997C345.395,562.428,345.755,562.958,346.005,563.59C346.258,564.218,346.384,564.957,346.384,565.802C346.384,566.64,346.186,567.429,345.789,568.166C345.401,568.903,344.871,569.46,344.197,569.839C343.531,570.218,342.569,570.406,341.305,570.406L338.207,570.406L338.213,570.415ZM339.138,569.488L340.258,569.488C341.429,569.488,342.273,569.429,342.806,569.312C343.336,569.195,343.8,568.966,344.197,568.624C344.591,568.273,344.894,567.851,345.101,567.355C345.308,566.859,345.411,566.295,345.411,565.654C345.411,565.016,345.289,564.426,345.046,563.887C344.812,563.348,344.474,562.902,344.034,562.551C343.593,562.2,343.072,561.966,342.468,561.849C341.874,561.723,340.997,561.66,339.829,561.66L339.141,561.66L339.141,569.486" fill="#A57242" transform="translate(342.296,565.572) translate(-342.296,-565.572)" />
|
||||
<path d="M325.591,561.235C325.591,561.028,325.663,560.847,325.807,560.696C325.96,560.543,326.14,560.466,326.346,560.466C326.562,560.466,326.741,560.543,326.885,560.696C327.038,560.839,327.115,561.019,327.115,561.235C327.115,561.442,327.039,561.623,326.885,561.774C326.742,561.918,326.562,561.99,326.346,561.99C326.139,561.99,325.958,561.914,325.807,561.761C325.663,561.608,325.591,561.433,325.591,561.235L325.591,561.235ZM325.887,563.232L326.819,563.232L326.819,570.392L325.887,570.392L325.887,563.232Z" fill="#A57242" transform="translate(326.353,565.429) translate(-326.353,-565.429)" />
|
||||
<path d="M300,570.415L301.377,560.73L301.526,560.73L305.473,568.671L309.375,560.73L309.523,560.73L310.914,570.415L309.957,570.415L309.011,563.484L305.592,570.415L305.348,570.415L301.883,563.415L300.937,570.415L300.006,570.415" fill="#A57242" transform="translate(305.457,565.572) translate(-305.457,-565.572)" />
|
||||
<path d="M319.679,563.3L319.679,570.461L318.775,570.461L318.775,569.233C317.956,570.213,317.022,570.704,315.975,570.704C314.922,570.704,314.031,570.33,313.313,569.584C312.592,568.829,312.234,567.934,312.234,566.899C312.234,565.855,312.599,564.964,313.327,564.237C314.054,563.491,314.929,563.117,315.943,563.117C317.114,563.117,318.061,563.617,318.789,564.615L318.789,563.307L319.693,563.307L319.679,563.3ZM318.844,566.933C318.844,566.114,318.569,565.426,318.02,564.868C317.472,564.301,316.797,564.019,315.996,564.019C315.204,564.019,314.534,564.31,313.985,564.895C313.437,565.472,313.162,566.155,313.162,566.947C313.162,567.739,313.442,568.428,313.999,569.013C314.557,569.589,315.222,569.876,315.996,569.876C316.779,569.876,317.449,569.596,318.006,569.038C318.564,568.48,318.842,567.778,318.844,566.933" fill="#A57242" transform="translate(315.963,566.91) translate(-315.963,-566.91)" />
|
||||
<path d="M321.342,563.3L322.287,563.3L322.287,564.34C322.54,563.918,322.783,563.608,323.015,563.408C323.258,563.21,323.522,563.112,323.811,563.112C324.107,563.112,324.406,563.193,324.702,563.355L324.215,564.138C324.08,564.057,323.94,564.017,323.797,564.017C323.517,564.017,323.254,564.161,323.001,564.448C322.758,564.735,322.579,565.109,322.462,565.568C322.345,566.018,322.286,566.842,322.286,568.047L322.286,570.479L321.341,570.479L321.341,563.319" fill="#A57242" transform="translate(323.022,566.795) translate(-323.022,-566.795)" />
|
||||
<path d="M348.198,560.776L350.114,560.776C351.131,560.776,351.9,560.983,352.432,561.396C352.962,561.799,353.228,562.385,353.228,563.149C353.228,563.571,353.121,563.964,352.905,564.322C352.698,564.673,352.393,564.955,351.987,565.171C352.652,565.387,353.157,565.71,353.497,566.142C353.848,566.573,354.023,567.087,354.023,567.679C354.023,568.48,353.731,569.146,353.146,569.676C352.561,570.197,351.806,570.459,350.878,570.459L348.216,570.459L348.216,560.774L348.198,560.776ZM349.173,561.719L349.173,564.817L349.726,564.817C350.571,564.817,351.202,564.682,351.615,564.413C352.028,564.143,352.235,563.72,352.235,563.144C352.235,562.192,351.588,561.715,350.291,561.715L349.171,561.715L349.173,561.719ZM349.171,565.8L349.171,569.518L350.371,569.518C351.064,569.518,351.571,569.45,351.895,569.315C352.228,569.171,352.499,568.955,352.705,568.668C352.912,568.372,353.015,568.069,353.015,567.764C353.015,567.459,352.956,567.188,352.84,566.954C352.723,566.72,352.548,566.513,352.314,566.334C352.089,566.154,351.814,566.02,351.49,565.93C351.176,565.84,350.581,565.795,349.709,565.795L349.17,565.795" fill="#A57242" transform="translate(351.111,565.617) translate(-351.111,-565.617)" />
|
||||
</g>
|
||||
</a>
|
||||
<a xlink:href="https://github.com/dokku/dokku-rabbitmq-plugin" target="_blank">
|
||||
@@ -400,28 +400,28 @@
|
||||
<a xlink:href="https://github.com/dokku/dokku-postgres-plugin" target="_blank">
|
||||
<g id="postgresql" data-bs-toggle="svg-tooltip" data-bs-placement="bottom" title="PostgreSQL" filter="url(#filter8_d_55_77)" transform="translate(461.257,119.257) translate(-461.257,-119.257)" style="animation: 30s linear infinite both postgresql_t;">
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(461.257,119.257)"/>
|
||||
<path d="M475.312,132.542C475.678,129.494,475.568,129.047,477.839,129.541L478.415,129.591C480.161,129.671,482.445,129.311,483.786,128.687C486.675,127.347,488.387,125.109,485.539,125.697C479.043,127.038,478.596,124.838,478.596,124.838C485.456,114.66,488.324,101.74,485.849,98.5769C479.097,89.9505,467.411,94.0298,467.216,94.1357L467.154,94.1472C465.87,93.8808,464.434,93.7217,462.82,93.6956C459.88,93.6473,457.649,94.4663,455.957,95.7498C455.957,95.7498,435.11,87.1609,436.08,106.551C436.286,110.676,441.992,137.763,448.798,129.582C451.285,126.59,453.689,124.06,453.689,124.06C454.883,124.853,456.312,125.258,457.811,125.112L457.927,125.014C457.891,125.385,457.907,125.748,457.973,126.179C456.22,128.138,456.735,128.481,453.23,129.203C449.684,129.934,451.767,131.235,453.127,131.575C454.776,131.988,458.591,132.572,461.17,128.963L461.067,129.375C461.755,129.925,461.708,133.33,461.806,135.762C461.904,138.195,462.066,140.465,462.562,141.803C463.058,143.141,463.643,146.588,468.25,145.601C472.1,144.776,475.044,143.588,475.312,132.542" fill="black" transform="translate(461.523,119.428) translate(-461.523,-119.428)"/>
|
||||
<path d="M475.312,132.542C475.678,129.494,475.568,129.047,477.839,129.541L478.415,129.591C480.161,129.671,482.445,129.311,483.786,128.687C486.675,127.347,488.387,125.109,485.539,125.697C479.043,127.038,478.596,124.838,478.596,124.838C485.456,114.66,488.324,101.74,485.849,98.5769C479.097,89.9505,467.411,94.0298,467.216,94.1357L467.154,94.1472C465.87,93.8808,464.434,93.7217,462.82,93.6956C459.88,93.6473,457.649,94.4663,455.957,95.7498C455.957,95.7498,435.11,87.1609,436.08,106.551C436.286,110.676,441.992,137.763,448.798,129.582C451.285,126.59,453.689,124.06,453.689,124.06C454.883,124.853,456.312,125.258,457.811,125.112L457.927,125.014C457.891,125.385,457.907,125.748,457.973,126.179C456.22,128.138,456.735,128.481,453.23,129.203C449.684,129.934,451.767,131.235,453.127,131.575C454.776,131.988,458.591,132.572,461.17,128.963L461.067,129.375C461.755,129.925,461.708,133.33,461.806,135.762C461.904,138.195,462.066,140.465,462.562,141.803C463.058,143.141,463.643,146.588,468.25,145.601C472.1,144.776,475.044,143.588,475.312,132.542" stroke="black" stroke-width="5.4" transform="translate(461.523,119.428) translate(-461.523,-119.428)"/>
|
||||
<path d="M485.539,125.697C479.042,127.037,478.596,124.838,478.596,124.838C485.455,114.659,488.323,101.738,485.848,98.5761C479.097,89.9502,467.411,94.0297,467.216,94.1356L467.153,94.1469C465.869,93.8804,464.433,93.7217,462.818,93.6953C459.878,93.6471,457.648,94.466,455.956,95.7492C455.956,95.7492,435.109,87.1608,436.078,106.551C436.284,110.676,441.991,137.763,448.797,129.581C451.284,126.59,453.688,124.06,453.688,124.06C454.882,124.853,456.311,125.258,457.809,125.112L457.925,125.014C457.889,125.385,457.906,125.748,457.972,126.178C456.219,128.137,456.734,128.481,453.229,129.203C449.682,129.934,451.766,131.235,453.126,131.575C454.775,131.988,458.59,132.572,461.168,128.963L461.065,129.375C461.752,129.925,462.235,132.954,462.154,135.7C462.073,138.445,462.019,140.34.762.561,141.803C463.102,143.275,463.641,146.588,468.249,145.601C472.099,144.776,474.094,142.638,474.372,139.071C474.569,136.536,475.014,136.911,475.043,134.644L475.4,133.571C475.812,130.133,475.466,129.025,477.838,129.54L478.414,129.591C480.16,129.67,482.445,129.31,483.786,128.687C486.674,127.347,488.386,125.109,485.539,125.697L485.539,125.697Z" fill="#336791" transform="translate(461.522,119.431) translate(-461.522,-119.431)"/>
|
||||
<path d="M461.448,127.667C461.269,134.063,461.493,140.503,462.119,142.068C462.745,143.633,464.085,146.677,468.693,145.69C472.543,144.865,473.944,143.268,474.551,139.742C474.999,137.149,475.862,129.945,475.973,128.469" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(468.681,136.775) translate(-468.681,-136.775)"/>
|
||||
<path d="M455.925,95.6064C455.925,95.6064,435.063,87.0798,436.033,106.47C436.239,110.595,441.946,137.683,448.752,129.501C451.239,126.509,453.488,124.162,453.488,124.162" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(445.963,112.386) translate(-445.963,-112.386)"/>
|
||||
<path d="M467.194,94.0502C466.472,94.2766,478.799,89.5439,485.804,98.4954C488.279,101.658,485.411,114.578,478.551,124.757" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(476.923,108.879) translate(-476.923,-108.879)"/>
|
||||
<path d="M478.551,124.757C478.551,124.757,478.998,126.958,485.495,125.617C488.342,125.029,486.629,127.266,483.742,128.607C481.372,129.707,476.06,129.989,475.973,128.469C475.75,124.549,478.769,125.74,478.551,124.757C478.354,123.872,477.004,123.004,476.111,120.839C475.331,118.949,465.417,104.455,478.86,106.608C479.353,106.506,475.354,93.8206,462.773,93.6144C450.195,93.4081,450.608,109.083,450.608,109.083" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="bevel" transform="translate(468.781,111.567) translate(-468.781,-111.567)"/>
|
||||
<path d="M457.927,126.098C456.174,128.057,456.689,128.401,453.184,129.123C449.637,129.854,451.721,131.155,453.081,131.495C454.73,131.907,458.545,132.491,461.123,128.882C461.908,127.783,461.119,126.029,460.04,125.582C459.519,125.366,458.823,125.096,457.927,126.098L457.927,126.098Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(456.332,128.591) translate(-456.332,-128.591)"/>
|
||||
<path d="M457.811,126.064C457.635,124.912,458.19,123.542,458.785,121.938C459.679,119.533,461.742,117.126,460.092,109.495C458.862,103.808,450.612,108.312,450.607,109.083C450.602,109.854,450.98,112.991,450.469,116.645C449.802,121.412,453.502,125.445,457.764,125.032" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(455.552,116.363) translate(-455.552,-116.363)"/>
|
||||
<path d="M455.849,108.967C455.811,109.231,456.331,109.933,457.008,110.027C457.684,110.121,458.263,109.572,458.299,109.309C458.336,109.046,457.817,108.756,457.14,108.661C456.463,108.567,455.884,108.704,455.849,108.967L455.849,108.967Z" fill="white" stroke="white" stroke-width="0.16" transform="translate(457.074,109.335) translate(-457.074,-109.335)"/>
|
||||
<path d="M476.44,108.43C476.477,108.694,475.958,109.396,475.281,109.49C474.604,109.585,474.026,109.035,473.989,108.772C473.953,108.509,474.472,108.219,475.148,108.125C475.825,108.03,476.403,108.168,476.44,108.43L476.44,108.43Z" fill="white" transform="translate(475.215,108.798) translate(-475.215,-108.798)"/>
|
||||
<path d="M478.86,106.608C478.972,108.673,478.415,110.081,478.345,112.28C478.241,115.476,479.869,119.135,477.417,122.798" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(478.146,114.703) translate(-478.146,-114.703)"/>
|
||||
<path d="M475.312,132.542C475.678,129.494,475.568,129.047,477.839,129.541L478.415,129.591C480.161,129.671,482.445,129.311,483.786,128.687C486.675,127.347,488.387,125.109,485.539,125.697C479.043,127.038,478.596,124.838,478.596,124.838C485.456,114.66,488.324,101.74,485.849,98.5769C479.097,89.9505,467.411,94.0298,467.216,94.1357L467.154,94.1472C465.87,93.8808,464.434,93.7217,462.82,93.6956C459.88,93.6473,457.649,94.4663,455.957,95.7498C455.957,95.7498,435.11,87.1609,436.08,106.551C436.286,110.676,441.992,137.763,448.798,129.582C451.285,126.59,453.689,124.06,453.689,124.06C454.883,124.853,456.312,125.258,457.811,125.112L457.927,125.014C457.891,125.385,457.907,125.748,457.973,126.179C456.22,128.138,456.735,128.481,453.23,129.203C449.684,129.934,451.767,131.235,453.127,131.575C454.776,131.988,458.591,132.572,461.17,128.963L461.067,129.375C461.755,129.925,461.708,133.33,461.806,135.762C461.904,138.195,462.066,140.465,462.562,141.803C463.058,143.141,463.643,146.588,468.25,145.601C472.1,144.776,475.044,143.588,475.312,132.542" fill="black" transform="translate(461.523,119.428) translate(-461.523,-119.428)" />
|
||||
<path d="M475.312,132.542C475.678,129.494,475.568,129.047,477.839,129.541L478.415,129.591C480.161,129.671,482.445,129.311,483.786,128.687C486.675,127.347,488.387,125.109,485.539,125.697C479.043,127.038,478.596,124.838,478.596,124.838C485.456,114.66,488.324,101.74,485.849,98.5769C479.097,89.9505,467.411,94.0298,467.216,94.1357L467.154,94.1472C465.87,93.8808,464.434,93.7217,462.82,93.6956C459.88,93.6473,457.649,94.4663,455.957,95.7498C455.957,95.7498,435.11,87.1609,436.08,106.551C436.286,110.676,441.992,137.763,448.798,129.582C451.285,126.59,453.689,124.06,453.689,124.06C454.883,124.853,456.312,125.258,457.811,125.112L457.927,125.014C457.891,125.385,457.907,125.748,457.973,126.179C456.22,128.138,456.735,128.481,453.23,129.203C449.684,129.934,451.767,131.235,453.127,131.575C454.776,131.988,458.591,132.572,461.17,128.963L461.067,129.375C461.755,129.925,461.708,133.33,461.806,135.762C461.904,138.195,462.066,140.465,462.562,141.803C463.058,143.141,463.643,146.588,468.25,145.601C472.1,144.776,475.044,143.588,475.312,132.542" stroke="black" stroke-width="5.4" transform="translate(461.523,119.428) translate(-461.523,-119.428)" />
|
||||
<path d="M485.539,125.697C479.042,127.037,478.596,124.838,478.596,124.838C485.455,114.659,488.323,101.738,485.848,98.5761C479.097,89.9502,467.411,94.0297,467.216,94.1356L467.153,94.1469C465.869,93.8804,464.433,93.7217,462.818,93.6953C459.878,93.6471,457.648,94.466,455.956,95.7492C455.956,95.7492,435.109,87.1608,436.078,106.551C436.284,110.676,441.991,137.763,448.797,129.581C451.284,126.59,453.688,124.06,453.688,124.06C454.882,124.853,456.311,125.258,457.809,125.112L457.925,125.014C457.889,125.385,457.906,125.748,457.972,126.178C456.219,128.137,456.734,128.481,453.229,129.203C449.682,129.934,451.766,131.235,453.126,131.575C454.775,131.988,458.59,132.572,461.168,128.963L461.065,129.375C461.752,129.925,462.235,132.954,462.154,135.7C462.073,138.445,462.019,140.33,462.561,141.803C463.102,143.275,463.641,146.588,468.249,145.601C472.099,144.776,474.094,142.638,474.372,139.071C474.569,136.536,475.014,136.911,475.043,134.644L475.4,133.571C475.812,130.133,475.466,129.025,477.838,129.54L478.414,129.591C480.16,129.67,482.445,129.31,483.786,128.687C486.674,127.347,488.386,125.109,485.539,125.697L485.539,125.697Z" fill="#336791" transform="translate(461.522,119.431) translate(-461.522,-119.431)" />
|
||||
<path d="M461.448,127.667C461.269,134.063,461.493,140.503,462.119,142.068C462.745,143.633,464.085,146.677,468.693,145.69C472.543,144.865,473.944,143.268,474.551,139.742C474.999,137.149,475.862,129.945,475.973,128.469" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(468.681,136.775) translate(-468.681,-136.775)" />
|
||||
<path d="M455.925,95.6064C455.925,95.6064,435.063,87.0798,436.033,106.47C436.239,110.595,441.946,137.683,448.752,129.501C451.239,126.509,453.488,124.162,453.488,124.162" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(445.963,112.386) translate(-445.963,-112.386)" />
|
||||
<path d="M467.194,94.0502C466.472,94.2766,478.799,89.5439,485.804,98.4954C488.279,101.658,485.411,114.578,478.551,124.757" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(476.923,108.879) translate(-476.923,-108.879)" />
|
||||
<path d="M478.551,124.757C478.551,124.757,478.998,126.958,485.495,125.617C488.342,125.029,486.629,127.266,483.742,128.607C481.372,129.707,476.06,129.989,475.973,128.469C475.75,124.549,478.769,125.74,478.551,124.757C478.354,123.872,477.004,123.004,476.111,120.839C475.331,118.949,465.417,104.455,478.86,106.608C479.353,106.506,475.354,93.8206,462.773,93.6144C450.195,93.4081,450.608,109.083,450.608,109.083" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="bevel" transform="translate(468.781,111.567) translate(-468.781,-111.567)" />
|
||||
<path d="M457.927,126.098C456.174,128.057,456.689,128.401,453.184,129.123C449.637,129.854,451.721,131.155,453.081,131.495C454.73,131.907,458.545,132.491,461.123,128.882C461.908,127.783,461.119,126.029,460.04,125.582C459.519,125.366,458.823,125.096,457.927,126.098L457.927,126.098Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(456.332,128.591) translate(-456.332,-128.591)" />
|
||||
<path d="M457.811,126.064C457.635,124.912,458.19,123.542,458.785,121.938C459.679,119.533,461.742,117.126,460.092,109.495C458.862,103.808,450.612,108.312,450.607,109.083C450.602,109.854,450.98,112.991,450.469,116.645C449.802,121.412,453.502,125.445,457.764,125.032" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(455.552,116.363) translate(-455.552,-116.363)" />
|
||||
<path d="M455.849,108.967C455.811,109.231,456.331,109.933,457.008,110.027C457.684,110.121,458.263,109.572,458.299,109.309C458.336,109.046,457.817,108.756,457.14,108.661C456.463,108.567,455.884,108.704,455.849,108.967L455.849,108.967Z" fill="white" stroke="white" stroke-width="0.16" transform="translate(457.074,109.335) translate(-457.074,-109.335)" />
|
||||
<path d="M476.44,108.43C476.477,108.694,475.958,109.396,475.281,109.49C474.604,109.585,474.026,109.035,473.989,108.772C473.953,108.509,474.472,108.219,475.148,108.125C475.825,108.03,476.403,108.168,476.44,108.43L476.44,108.43Z" fill="white" transform="translate(475.215,108.798) translate(-475.215,-108.798)" />
|
||||
<path d="M478.86,106.608C478.972,108.673,478.415,110.081,478.345,112.28C478.241,115.476,479.869,119.135,477.417,122.798" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(478.146,114.703) translate(-478.146,-114.703)" />
|
||||
</g>
|
||||
</a>
|
||||
<a xlink:href="https://github.com/dokku/dokku-mysql-plugin" target="_blank">
|
||||
<g id="mysql" data-bs-toggle="svg-tooltip" data-bs-placement="bottom" title="MySQL" filter="url(#filter9_d_55_77)" transform="translate(79.2566,394.257) translate(-79.2566,-394.257)" style="animation: 30s linear infinite both mysql_t;">
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(79.2566,394.257)"/>
|
||||
<path d="M39,411.45L41.6356,411.45L41.6356,401.092L45.7157,410.121C46.1971,411.214,46.8562,411.601,48.1485,411.601C49.4411,411.601,50.0746,411.214,50.5563,410.121L54.6364,401.092L54.6364,411.449L57.272,411.449L57.272,401.109C57.272,400.1,56.8664,399.612,56.0303,399.36C54.0283,398.738,52.685,399.276,52.0767,400.621L48.0726,409.533L44.1953,400.621C43.6124,399.276,42.2439,398.738,40.2419,399.36C39.4055,399.612,39,400.1,39,401.109L39,411.45L39,411.45ZM59.4635,403.019L62.0983,403.019L62.0983,408.725C62.0736,409.035,62.1982,409.763,63.642,409.785C64.3786,409.797,69.327,409.785,69.3732,409.785L69.3732,402.991L72.0141,402.991C72.0263,402.991,72.0115,412.257,72.0117,412.296C72.026,414.581,69.1626,415.078,67.8428,415.116L59.5205,415.116L59.5205,413.351C59.5353,413.351,67.8366,413.353,67.8575,413.351C69.5538,413.173,69.3535,412.334,69.3533,412.051L69.3533,411.363L63.7512,411.363C61.1447,411.339,59.4852,410.207,59.4647,408.905C59.4626,408.785,59.5209,403.076,59.4633,403.019L59.4635,403.019Z" fill="#00618A" transform="translate(55.5095,407.109) translate(-55.5095,-407.109)"/>
|
||||
<path d="M74.0451,411.45L81.6224,411.45C82.5094,411.45,83.371,411.265,84.0554,410.945C85.1957,410.424,85.7533,409.718,85.7533,408.793L85.7533,406.876C85.7533,406.12,85.1198,405.413,83.8779,404.943C83.2189,404.69,82.408,404.556,81.6224,404.556L78.4289,404.556C77.365,404.556,76.8581,404.236,76.7314,403.53C76.706,403.446,76.706,403.379,76.706,403.295L76.706,402.101C76.706,402.034,76.706,401.966,76.7314,401.882C76.8581,401.344,77.137,401.193,78.0745,401.109C78.1504,401.109,78.2518,401.092,78.328,401.092L85.8547,401.092L85.8547,399.344L78.4546,399.344C77.3902,399.344,76.8326,399.411,76.3259,399.562C74.7546,400.05,74.0704,400.823,74.0704,402.168L74.0704,403.698C74.0704,404.875,75.4136,405.884,77.6689,406.12C77.9226,406.136,78.1759,406.153,78.4291,406.153L81.1661,406.153C81.2677,406.153,81.3691,406.153,81.445,406.17C82.2814,406.237,82.636,406.389,82.8897,406.691C83.0416,406.842,83.0922,406.994,83.0922,407.162L83.0922,408.692C83.0922,408.877,82.9656,409.113,82.7124,409.314C82.4841,409.516,82.104,409.651,81.5971,409.684C81.4957,409.684,81.4198,409.701,81.3184,409.701L74.0449,409.701L74.0449,411.449L74.0451,411.45ZM102.195,408.406C102.195,410.205,103.538,411.214,106.25,411.416C106.503,411.433,106.757,411.45,107.01,411.45L113.878,411.45L113.878,409.701L106.959,409.701C105.413,409.701,104.831,409.314,104.831,408.39L104.831,399.343L102.195,399.343L102.195,408.406ZM87.4354,408.498L87.4354,402.264C87.4354,400.68,88.5529,399.719,90.762,399.416C90.9976,399.383,91.2352,399.366,91.4732,399.366L96.476,399.366C96.7298,399.366,96.9587,399.383,97.2126,399.416C99.4219,399.719,100.539,400.68,100.539,402.264L100.539,408.498C100.539,409.783,100.065,410.47,98.971,410.919L101.567,413.251L98.507,413.251L96.4066,411.364L94.2921,411.497L91.4732,411.497C90.9907,411.497,90.4829,411.43,89.9241,411.278C88.2481,410.823,87.4354,409.947,87.4354,408.498L87.4354,408.498ZM90.28,408.346C90.28,408.431,90.31.0,408.515,90.34.7,408.616C90.4831,409.341,91.1688,409.745,92.21,409.745L94.6044,409.745L92.4049,407.769L95.465,407.769L97.3835,409.492C97.7369,409.305,97.9697,409.018,98.0509,408.65C98.0762,408.566,98.0762,408.481,98.0762,408.397L98.0762,402.416C98.0762,402.348,98.0762,402.264,98.0509,402.18C97.8984,401.506,97.2128,401.118,96.1971,401.118L92.21,401.118C91.042,401.118,90.2802,401.624,90.2802,402.416L90.2802,408.346L90.28,408.346Z" fill="#E48E00" transform="translate(93.9614,406.297) translate(-93.9614,-406.297)"/>
|
||||
<path d="M116.197,396.443C114.577,396.399,113.339,396.549,112.281,396.993C111.981,397.119,111.501,397.122,111.452,397.497C111.617,397.67,111.643,397.927,111.774,398.139C112.027,398.546,112.453,399.091,112.834,399.377C113.25,399.69,113.678,400.024,114.124,400.294C114.917,400.775,115.802,401.05,116.565,401.532C117.015,401.816,117.462,402.174,117.901,402.495C118.118,402.653,118.264,402.9,118.546,402.999L118.546,402.953C118.398,402.765,118.36,402.507,118.224,402.311L117.625,401.715C117.039,400.942,116.296,400.262,115.506,399.698C114.876,399.248,113.465,398.64,113.203,397.91L113.156,397.864C113.603,397.814,114.126,397.653,114.539,397.543C115.231,397.358,115.85,397.406,116.565,397.222C116.888,397.131,117.21,397.039,117.533,396.947L117.533,396.764C117.171,396.395,116.914,395.906,116.519,395.572C115.488,394.698,114.362,393.824,113.203,393.096C112.56,392.692,111.765,392.43,111.083,392.087C110.854,391.972,110.451,391.913,110.3,391.721C109.942,391.266,109.747,390.691,109.471,390.162C108.893,389.054,108.325,387.843,107.813,386.677C107.463,385.882,107.235,385.098,106.799,384.385C104.707,380.962,102.456,378.897,98.9679,376.866C98.2258,376.434,97.3322,376.264,96.3879,376.041L94.8677,375.949C94.5584,375.82,94.2366,375.444,93.9462,375.261C92.7908,374.535,89.8272,372.955,88.9714,375.032C88.431,376.344,89.779,377.623,90.2611,378.288C90.5995,378.754,91.0327,379.276,91.2745,379.8C91.4336,380.145,91.4611,380.49,91.5971,380.855C91.9321,381.753,92.2231,382.73,92.6565,383.56C92.8755,383.98,93.1169,384.422,93.3937,384.798C93.5635,385.028,93.8543,385.13,93.9003,385.485C93.6158,385.882,93.5996,386.496,93.4397,386.998C92.7198,389.258,92.9913,392.066,94.0386,393.738C94.36,394.251,95.1169,395.352,96.1576,394.93C97.0681,394.561,96.8647,393.417,97.1251,392.408C97.184,392.18,97.1477,392.011,97.2632,391.858L97.2632,391.904L98.0924,393.554C98.706,394.538,99.7954,395.566,100.718,396.26C101.197,396.619,101.574,397.241,102.193,397.451L102.193,397.406L102.146,397.406C102.027,397.22,101.839,397.142,101.686,396.993C101.325,396.641,100.924,396.204,100.626,395.801C99.7868,394.667,99.0449,393.426,98.369,392.133C98.0462,391.516,97.7656,390.836,97.4935,390.208C97.3886,389.966,97.3899,389.6,97.1713,389.474C96.8733,389.934,96.4343,390.306,96.2038,390.85C95.8352,391.718,95.7876,392.777,95.6511,393.875C95.5703,393.904,95.606,393.884,95.5588,393.921C94.9172,393.767,94.6916,393.11,94.4534,392.546C93.85,391.12,93.7381,388.823,94.2687,387.182C94.4062,386.757,95.0268,385.419,94.7756,385.027C94.6557,384.636,94.26,384.409,94.0386,384.11C93.7646,383.74,93.491,383.253,93.3014,382.826C92.8078,381.714,92.5773,380.466,92.0577,379.342C91.8093,378.805,91.3892,378.261,91.0442,377.783C90.6623,377.254,90.2346,376.864,89.9386,376.224C89.8333,375.997,89.6903,375.633,89.8463,375.399C89.8961,375.241,89.9661,375.175,90.1229,375.124C90.3901,374.919,91.1343,375.192,91.4126,375.307C92.1515,375.613,92.768,375.904,93.3937,376.316C93.6942,376.514,93.998,376.898,94.361,377.004L94.7756,377.004C95.4241,377.152,96.1507,377.05,96.7565,377.233C97.8274,377.557,98.7871,378.061,99.6585,378.608C102.314,380.277,104.485,382.652,105.97,385.485C106.209,385.942,106.312,386.377,106.523,386.861C106.947,387.837,107.482,388.841,107.905,389.795C108.326,390.747,108.737,391.708,109.333,392.5C109.646,392.917,110.856,393.14,111.406,393.371C111.791,393.533,112.423,393.702,112.788,393.921C113.485,394.34,114.161,394.838,114.815,395.297C115.142,395.526,116.147,396.029,116.197,396.443L116.197,396.443Z" fill="#00618A" transform="translate(103.696,388.499) translate(-103.696,-388.499)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M95.6047,378.975C95.2669,378.969,95.028,379.012,94.7754,379.067L94.7754,379.113L94.8216,379.113C94.9827,379.442,95.2669,379.654,95.4664,379.938C95.6199,380.259,95.7735,380.58,95.9272,380.901L95.9731,380.855C96.2584,380.655,96.3891,380.335,96.3877,379.846C96.2734,379.727,96.2564,379.576,96.1574,379.434C96.0257,379.243,95.7708,379.135,95.6047,378.975L95.6047,378.975Z" fill="#00618A" transform="translate(95.5816,379.938) translate(-95.5816,-379.938)"/>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M115.115,409.651C115.115,410.806,116.032,411.584,117.058,411.584C118.083,411.584,119,410.806,119,409.651C119,408.497,118.083,407.718,117.058,407.718C116.032,407.718,115.115,408.497,115.115,409.651L115.115,409.651ZM118.565,409.651C118.565,410.527,117.892,411.182,117.058,411.182C116.214,411.182,115.551,410.527,115.551,409.651C115.551,408.775,116.213,408.12,117.058,408.12C117.892,408.12,118.565,408.775,118.565,409.651ZM117.581,410.754L118.016,410.754L117.379,409.785C117.721,409.749,117.98,409.584,117.98,409.182C117.98,408.734,117.695,408.548,117.146,408.548L116.281,408.548L116.281,410.754L116.654,410.754L116.654,409.801L117.001,409.801L117.581,410.754L117.581,410.754ZM116.654,409.491L116.654,408.857L117.084,408.857C117.307,408.857,117.576,408.899,117.576,409.156C117.576,409.466,117.332,409.491,117.052,409.491L116.654,409.491L116.654,409.491Z" fill="#E48E00" transform="translate(117.058,409.651) translate(-117.058,-409.651)"/>
|
||||
<ellipse fill="white" rx="51.2566" ry="51.2566" transform="translate(79.2566,394.257)"/>
|
||||
<path d="M39,411.45L41.6356,411.45L41.6356,401.092L45.7157,410.121C46.1971,411.214,46.8562,411.601,48.1485,411.601C49.4411,411.601,50.0746,411.214,50.5563,410.121L54.6364,401.092L54.6364,411.449L57.272,411.449L57.272,401.109C57.272,400.1,56.8664,399.612,56.0303,399.36C54.0283,398.738,52.685,399.276,52.0767,400.621L48.0726,409.533L44.1953,400.621C43.6124,399.276,42.2439,398.738,40.2419,399.36C39.4055,399.612,39,400.1,39,401.109L39,411.45L39,411.45ZM59.4635,403.019L62.0983,403.019L62.0983,408.725C62.0736,409.035,62.1982,409.763,63.642,409.785C64.3786,409.797,69.327,409.785,69.3732,409.785L69.3732,402.991L72.0141,402.991C72.0263,402.991,72.0115,412.257,72.0117,412.296C72.026,414.581,69.1626,415.078,67.8428,415.116L59.5205,415.116L59.5205,413.351C59.5353,413.351,67.8366,413.353,67.8575,413.351C69.5538,413.173,69.3535,412.334,69.3533,412.051L69.3533,411.363L63.7512,411.363C61.1447,411.339,59.4852,410.207,59.4647,408.905C59.4626,408.785,59.5209,403.076,59.4633,403.019L59.4635,403.019Z" fill="#00618A" transform="translate(55.5095,407.109) translate(-55.5095,-407.109)" />
|
||||
<path d="M74.0451,411.45L81.6224,411.45C82.5094,411.45,83.371,411.265,84.0554,410.945C85.1957,410.424,85.7533,409.718,85.7533,408.793L85.7533,406.876C85.7533,406.12,85.1198,405.413,83.8779,404.943C83.2189,404.69,82.408,404.556,81.6224,404.556L78.4289,404.556C77.365,404.556,76.8581,404.236,76.7314,403.53C76.706,403.446,76.706,403.379,76.706,403.295L76.706,402.101C76.706,402.034,76.706,401.966,76.7314,401.882C76.8581,401.344,77.137,401.193,78.0745,401.109C78.1504,401.109,78.2518,401.092,78.328,401.092L85.8547,401.092L85.8547,399.344L78.4546,399.344C77.3902,399.344,76.8326,399.411,76.3259,399.562C74.7546,400.05,74.0704,400.823,74.0704,402.168L74.0704,403.698C74.0704,404.875,75.4136,405.884,77.6689,406.12C77.9226,406.136,78.1759,406.153,78.4291,406.153L81.1661,406.153C81.2677,406.153,81.3691,406.153,81.445,406.17C82.2814,406.237,82.636,406.389,82.8897,406.691C83.0416,406.842,83.0922,406.994,83.0922,407.162L83.0922,408.692C83.0922,408.877,82.9656,409.113,82.7124,409.314C82.4841,409.516,82.104,409.651,81.5971,409.684C81.4957,409.684,81.4198,409.701,81.3184,409.701L74.0449,409.701L74.0449,411.449L74.0451,411.45ZM102.195,408.406C102.195,410.205,103.538,411.214,106.25,411.416C106.503,411.433,106.757,411.45,107.01,411.45L113.878,411.45L113.878,409.701L106.959,409.701C105.413,409.701,104.831,409.314,104.831,408.39L104.831,399.343L102.195,399.343L102.195,408.406ZM87.4354,408.498L87.4354,402.264C87.4354,400.68,88.5529,399.719,90.762,399.416C90.9976,399.383,91.2352,399.366,91.4732,399.366L96.476,399.366C96.7298,399.366,96.9587,399.383,97.2126,399.416C99.4219,399.719,100.539,400.68,100.539,402.264L100.539,408.498C100.539,409.783,100.065,410.47,98.971,410.919L101.567,413.251L98.507,413.251L96.4066,411.364L94.2921,411.497L91.4732,411.497C90.9907,411.497,90.4829,411.43,89.9241,411.278C88.2481,410.823,87.4354,409.947,87.4354,408.498L87.4354,408.498ZM90.28,408.346C90.28,408.431,90.3054,408.515,90.3309,408.616C90.4831,409.341,91.1688,409.745,92.21,409.745L94.6044,409.745L92.4049,407.769L95.465,407.769L97.3835,409.492C97.7369,409.305,97.9697,409.018,98.0509,408.65C98.0762,408.566,98.0762,408.481,98.0762,408.397L98.0762,402.416C98.0762,402.348,98.0762,402.264,98.0509,402.18C97.8984,401.506,97.2128,401.118,96.1971,401.118L92.21,401.118C91.042,401.118,90.2802,401.624,90.2802,402.416L90.2802,408.346L90.28,408.346Z" fill="#E48E00" transform="translate(93.9614,406.297) translate(-93.9614,-406.297)" />
|
||||
<path d="M116.197,396.443C114.577,396.399,113.339,396.549,112.281,396.993C111.981,397.119,111.501,397.122,111.452,397.497C111.617,397.67,111.643,397.927,111.774,398.139C112.027,398.546,112.453,399.091,112.834,399.377C113.25,399.69,113.678,400.024,114.124,400.294C114.917,400.775,115.802,401.05,116.565,401.532C117.015,401.816,117.462,402.174,117.901,402.495C118.118,402.653,118.264,402.9,118.546,402.999L118.546,402.953C118.398,402.765,118.36,402.507,118.224,402.311L117.625,401.715C117.039,400.942,116.296,400.262,115.506,399.698C114.876,399.248,113.465,398.64,113.203,397.91L113.156,397.864C113.603,397.814,114.126,397.653,114.539,397.543C115.231,397.358,115.85,397.406,116.565,397.222C116.888,397.131,117.21,397.039,117.533,396.947L117.533,396.764C117.171,396.395,116.914,395.906,116.519,395.572C115.488,394.698,114.362,393.824,113.203,393.096C112.56,392.692,111.765,392.43,111.083,392.087C110.854,391.972,110.451,391.913,110.3,391.721C109.942,391.266,109.747,390.691,109.471,390.162C108.893,389.054,108.325,387.843,107.813,386.677C107.463,385.882,107.235,385.098,106.799,384.385C104.707,380.962,102.456,378.897,98.9679,376.866C98.2258,376.434,97.3322,376.264,96.3879,376.041L94.8677,375.949C94.5584,375.82,94.2366,375.444,93.9462,375.261C92.7908,374.535,89.8272,372.955,88.9714,375.032C88.431,376.344,89.779,377.623,90.2611,378.288C90.5995,378.754,91.0327,379.276,91.2745,379.8C91.4336,380.145,91.4611,380.49,91.5971,380.855C91.9321,381.753,92.2231,382.73,92.6565,383.56C92.8755,383.98,93.1169,384.422,93.3937,384.798C93.5635,385.028,93.8543,385.13,93.9003,385.485C93.6158,385.882,93.5996,386.496,93.4397,386.998C92.7198,389.258,92.9913,392.066,94.0386,393.738C94.36,394.251,95.1169,395.352,96.1576,394.93C97.0681,394.561,96.8647,393.417,97.1251,392.408C97.184,392.18,97.1477,392.011,97.2632,391.858L97.2632,391.904L98.0924,393.554C98.706,394.538,99.7954,395.566,100.718,396.26C101.197,396.619,101.574,397.241,102.193,397.451L102.193,397.406L102.146,397.406C102.027,397.22,101.839,397.142,101.686,396.993C101.325,396.641,100.924,396.204,100.626,395.801C99.7868,394.667,99.0449,393.426,98.369,392.133C98.0462,391.516,97.7656,390.836,97.4935,390.208C97.3886,389.966,97.3899,389.6,97.1713,389.474C96.8733,389.934,96.4343,390.306,96.2038,390.85C95.8352,391.718,95.7876,392.777,95.6511,393.875C95.5703,393.904,95.606,393.884,95.5588,393.921C94.9172,393.767,94.6916,393.11,94.4534,392.546C93.85,391.12,93.7381,388.823,94.2687,387.182C94.4062,386.757,95.0268,385.419,94.7756,385.027C94.6557,384.636,94.26,384.409,94.0386,384.11C93.7646,383.74,93.491,383.253,93.3014,382.826C92.8078,381.714,92.5773,380.466,92.0577,379.342C91.8093,378.805,91.3892,378.261,91.0442,377.783C90.6623,377.254,90.2346,376.864,89.9386,376.224C89.8333,375.997,89.6903,375.633,89.8463,375.399C89.8961,375.241,89.9661,375.175,90.1229,375.124C90.3901,374.919,91.1343,375.192,91.4126,375.307C92.1515,375.613,92.768,375.904,93.3937,376.316C93.6942,376.514,93.998,376.898,94.361,377.004L94.7756,377.004C95.4241,377.152,96.1507,377.05,96.7565,377.233C97.8274,377.557,98.7871,378.061,99.6585,378.608C102.314,380.277,104.485,382.652,105.97,385.485C106.209,385.942,106.312,386.377,106.523,386.861C106.947,387.837,107.482,388.841,107.905,389.795C108.326,390.747,108.737,391.708,109.333,392.5C109.646,392.917,110.856,393.14,111.406,393.371C111.791,393.533,112.423,393.702,112.788,393.921C113.485,394.34,114.161,394.838,114.815,395.297C115.142,395.526,116.147,396.029,116.197,396.443L116.197,396.443Z" fill="#00618A" transform="translate(103.696,388.499) translate(-103.696,-388.499)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M95.6047,378.975C95.2669,378.969,95.028,379.012,94.7754,379.067L94.7754,379.113L94.8216,379.113C94.9827,379.442,95.2669,379.654,95.4664,379.938C95.6199,380.259,95.7735,380.58,95.9272,380.901L95.9731,380.855C96.2584,380.655,96.3891,380.335,96.3877,379.846C96.2734,379.727,96.2564,379.576,96.1574,379.434C96.0257,379.243,95.7708,379.135,95.6047,378.975L95.6047,378.975Z" fill="#00618A" transform="translate(95.5816,379.938) translate(-95.5816,-379.938)" />
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M115.115,409.651C115.115,410.806,116.032,411.584,117.058,411.584C118.083,411.584,119,410.806,119,409.651C119,408.497,118.083,407.718,117.058,407.718C116.032,407.718,115.115,408.497,115.115,409.651L115.115,409.651ZM118.565,409.651C118.565,410.527,117.892,411.182,117.058,411.182C116.214,411.182,115.551,410.527,115.551,409.651C115.551,408.775,116.213,408.12,117.058,408.12C117.892,408.12,118.565,408.775,118.565,409.651ZM117.581,410.754L118.016,410.754L117.379,409.785C117.721,409.749,117.98,409.584,117.98,409.182C117.98,408.734,117.695,408.548,117.146,408.548L116.281,408.548L116.281,410.754L116.654,410.754L116.654,409.801L117.001,409.801L117.581,410.754L117.581,410.754ZM116.654,409.491L116.654,408.857L117.084,408.857C117.307,408.857,117.576,408.899,117.576,409.156C117.576,409.466,117.332,409.491,117.052,409.491L116.654,409.491L116.654,409.491Z" fill="#E48E00" transform="translate(117.058,409.651) translate(-117.058,-409.651)" />
|
||||
</g>
|
||||
</a>
|
||||
<a xlink:href="https://github.com/dokku/dokku-nats" target="_blank">
|
||||
@@ -668,7 +668,7 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-12 align-self-start text-white">
|
||||
<p class="m-0 py-3">© 2013-2022 Dokku. Website designed & developed by <a data-bs-toggle="tooltip" data-bs-placement="right" title="Available for freelance" href="https://yasoob.me" class="text-decoration-none text-white">Yasoob Khalid</a></p>
|
||||
<p class="m-0 py-3">© Dokku. Website designed & developed by <a data-bs-toggle="tooltip" data-bs-placement="right" title="Available for freelance" href="https://yasoob.me" class="text-decoration-none text-white">Yasoob Khalid</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
> New as of 0.11.0, Enhanced in 0.20.0
|
||||
|
||||
```
|
||||
network:create <network> # Creates an attachable docker network
|
||||
network:destroy <network> # Destroys a docker network
|
||||
network:exists <network> # Checks if a docker network exists
|
||||
network:info <network> # Outputs information about a docker network
|
||||
network:list # Lists all docker networks
|
||||
network:report [<app>] [<flag>] # Displays a network report for one or more apps
|
||||
network:rebuild <app> # Rebuilds network settings for an app
|
||||
network:rebuildall # Rebuild network settings for all apps
|
||||
network:set <app> <key> (<value>) # Set or clear a network property for an app
|
||||
network:create <network> # Creates an attachable docker network
|
||||
network:destroy <network> # Destroys a docker network
|
||||
network:exists <network> # Checks if a docker network exists
|
||||
network:info <network> [--format text|json] # Outputs information about a docker network
|
||||
network:list [--format text|json] # Lists all docker networks
|
||||
network:report [<app>] [<flag>] # Displays a network report for one or more apps
|
||||
network:rebuild <app> # Rebuilds network settings for an app
|
||||
network:rebuildall # Rebuild network settings for all apps
|
||||
network:set <app> <key> (<value>) # Set or clear a network property for an app
|
||||
```
|
||||
|
||||
The Network plugin allows developers to abstract the concept of container network management, allowing developers to both change what networks a given container is attached to as well as rebuild the configuration on the fly.
|
||||
@@ -51,6 +51,21 @@ none
|
||||
test-network
|
||||
```
|
||||
|
||||
The `network:list` command also takes a `--format` flag, with the valid options including `text` (default) and `json`. The `json` output format can be used for automation purposes:
|
||||
|
||||
```shell
|
||||
dokku network:list --format json
|
||||
```
|
||||
|
||||
```
|
||||
[
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"},
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"f50fa882e7de","Internal":false,"IPv6":false,"Labels":{},"Name":"test-network","Scope":"local"},
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"host","ID":"ab6a59291443","Internal":false,"IPv6":false,"Labels":{},"Name":"host","Scope":"local"},
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"null","ID":"e2506bc8b7d7","Internal":false,"IPv6":false,"Labels":{},"Name":"none","Scope":"local"}
|
||||
]
|
||||
```
|
||||
|
||||
### Creating a network
|
||||
|
||||
> [!IMPORTANT]
|
||||
@@ -117,16 +132,30 @@ The `network:exists` command will return non-zero if the network does not exist,
|
||||
### Checking network info
|
||||
|
||||
> [!IMPORTANT]
|
||||
> New as of 0.20.0, Requires Docker 1.21+
|
||||
> New as of 0.35.3
|
||||
|
||||
Network information can be retrieved via the `network:info` command. This is a slightly different version of the `docker network` command.
|
||||
|
||||
```shell
|
||||
dokku network:info test-network
|
||||
dokku network:info bridge
|
||||
```
|
||||
|
||||
```
|
||||
// TODO
|
||||
=====> bridge network information
|
||||
ID: d18df2d21433
|
||||
Name: bridge
|
||||
Driver: bridge
|
||||
Scope: local
|
||||
```
|
||||
|
||||
The `network:info` command also takes a `--format` flag, with the valid options including `text` (default) and `json`. The `json` output format can be used for automation purposes:
|
||||
|
||||
```shell
|
||||
dokku network:info bridge --format json
|
||||
```
|
||||
|
||||
```
|
||||
{"CreatedAt":"2024-02-25T01:55:24.275184461Z","Driver":"bridge","ID":"d18df2d21433","Internal":false,"IPv6":false,"Labels":{},"Name":"bridge","Scope":"local"}
|
||||
```
|
||||
|
||||
### Routing an app to a known ip:port combination
|
||||
@@ -255,7 +284,7 @@ The default value may be set by passing an empty value for the option:
|
||||
dokku network:set node-js-app tld
|
||||
```
|
||||
|
||||
The `tld` property can also be set globally. The global default is emty string, and the global value is used when no app-specific value is set.
|
||||
The `tld` property can also be set globally. The global default is empty string, and the global value is used when no app-specific value is set.
|
||||
|
||||
```shell
|
||||
dokku network:set --global tld svc.cluster.local
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user