Compare commits
682 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b1bba683f | ||
|
|
24a37b08df | ||
|
|
7c48f0e339 | ||
|
|
98ccb9cb65 | ||
|
|
22c919d4e3 | ||
|
|
cd9274a601 | ||
|
|
e961cf1c0f | ||
|
|
7061fbbc60 | ||
|
|
f0ff6d9a49 | ||
|
|
53c23b32cb | ||
|
|
4b1c9d53f5 | ||
|
|
dce59e2e41 | ||
|
|
b2e27e24d4 | ||
|
|
441436df66 | ||
|
|
d810b88648 | ||
|
|
0950d5bb67 | ||
|
|
bea3ad5d72 | ||
|
|
c86d6cb326 | ||
|
|
adfbb5012c | ||
|
|
9c426d8f68 | ||
|
|
388fb9a3ae | ||
|
|
d290f819a1 | ||
|
|
faed5e359d | ||
|
|
d880454ffa | ||
|
|
d82c57e003 | ||
|
|
77ea355bca | ||
|
|
5d9e70d155 | ||
|
|
89fcbe42d9 | ||
|
|
de1f03c72b | ||
|
|
e1c74fe305 | ||
|
|
ffd4c3470e | ||
|
|
6cda8189f2 | ||
|
|
e63dbcd132 | ||
|
|
716326573c | ||
|
|
99e2e0ea68 | ||
|
|
674cb2b6eb | ||
|
|
d9e584f5a1 | ||
|
|
a39a47b3ae | ||
|
|
dfcce1c6a6 | ||
|
|
8cb708b8f7 | ||
|
|
f8489efe17 | ||
|
|
7843738a2f | ||
|
|
300aacfa5b | ||
|
|
b72a2544ab | ||
|
|
1474297397 | ||
|
|
02c304fada | ||
|
|
64706f021c | ||
|
|
10c222839d | ||
|
|
a3ca2a56b8 | ||
|
|
bdf12179fa | ||
|
|
674de032f8 | ||
|
|
807ae5e651 | ||
|
|
bf26d32495 | ||
|
|
b23eb8f330 | ||
|
|
c715857ac7 | ||
|
|
a74ab40494 | ||
|
|
7316b6322c | ||
|
|
14752ac407 | ||
|
|
3aab81aa7c | ||
|
|
bed0e0ce71 | ||
|
|
46b9df3872 | ||
|
|
a2c8c77dad | ||
|
|
224dc15f09 | ||
|
|
68752c9318 | ||
|
|
0abbe320f3 | ||
|
|
59c7144255 | ||
|
|
c5d282dcd1 | ||
|
|
87c11ca077 | ||
|
|
bf13a6fd97 | ||
|
|
75beecf65b | ||
|
|
8845715959 | ||
|
|
c2a170b6ec | ||
|
|
4ed1bcb3f4 | ||
|
|
dd26a82646 | ||
|
|
9ab58d6f33 | ||
|
|
9cb54fc742 | ||
|
|
80924a0c31 | ||
|
|
4b086ff8a4 | ||
|
|
b53a8526cd | ||
|
|
401183fdd8 | ||
|
|
a862bdaf88 | ||
|
|
e77e8d71bd | ||
|
|
344d2e83ad | ||
|
|
4c9deedba9 | ||
|
|
460edc8b3e | ||
|
|
98117db6a5 | ||
|
|
cf92615936 | ||
|
|
11b640c0b8 | ||
|
|
48ddbb4279 | ||
|
|
3240491113 | ||
|
|
1d232aae89 | ||
|
|
d3890fee9f | ||
|
|
8fe33a0e41 | ||
|
|
d560ee13e0 | ||
|
|
1d5c9edbd2 | ||
|
|
4b0a40a20c | ||
|
|
47c1bfe26d | ||
|
|
01531c3986 | ||
|
|
d3a5289156 | ||
|
|
fa7de79faf | ||
|
|
db11f1f15f | ||
|
|
0d6263c9b5 | ||
|
|
ab0b127778 | ||
|
|
062aa7aa43 | ||
|
|
f7905b4943 | ||
|
|
08b77b62d4 | ||
|
|
b8907d1f8e | ||
|
|
9b05b9c2f4 | ||
|
|
0b097b9b87 | ||
|
|
ece77aa8c4 | ||
|
|
0b5743a74c | ||
|
|
66d2694751 | ||
|
|
46ee448489 | ||
|
|
953a2636a4 | ||
|
|
1d1daafc07 | ||
|
|
19ed0b00ea | ||
|
|
18e787d65f | ||
|
|
548013e46f | ||
|
|
6348126f0c | ||
|
|
0fd909b277 | ||
|
|
563293d1ff | ||
|
|
9d87bdf93b | ||
|
|
702fb6c330 | ||
|
|
16dd0adb35 | ||
|
|
c9caa0880f | ||
|
|
801fc5d78c | ||
|
|
741ffc635c | ||
|
|
591fe8642d | ||
|
|
3a44c414d1 | ||
|
|
5276543ee5 | ||
|
|
4ce71cb6db | ||
|
|
f09b960997 | ||
|
|
e15f411939 | ||
|
|
58af38a9ab | ||
|
|
bc4eaa002f | ||
|
|
78ad3f59b1 | ||
|
|
045825857a | ||
|
|
293ead4f35 | ||
|
|
c4c6ac5617 | ||
|
|
414c891c6c | ||
|
|
deeb18b56c | ||
|
|
f60e0d7c8a | ||
|
|
6a3933213c | ||
|
|
8b2afbadc2 | ||
|
|
403da909cb | ||
|
|
d749a400a2 | ||
|
|
a7d5fb69e2 | ||
|
|
e66671f3c5 | ||
|
|
583cbc7326 | ||
|
|
d32f0fe2b5 | ||
|
|
9c6380f07d | ||
|
|
ea7299eef7 | ||
|
|
d5085d3156 | ||
|
|
8ab44f1ab0 | ||
|
|
12d5bc4649 | ||
|
|
bebb05268c | ||
|
|
aeaf8e78f1 | ||
|
|
b66a8e6181 | ||
|
|
8fe122ffbd | ||
|
|
45e250443c | ||
|
|
f4c886e10f | ||
|
|
40c5cd089a | ||
|
|
823928a44c | ||
|
|
98feb988fa | ||
|
|
b605de522c | ||
|
|
707cafd26d | ||
|
|
f2c7392276 | ||
|
|
f094ea1f72 | ||
|
|
ebed512dbc | ||
|
|
8cef4a4f5d | ||
|
|
36e93cab03 | ||
|
|
c4de27a4a6 | ||
|
|
6caf4e6039 | ||
|
|
7cc84dcdbe | ||
|
|
65b9c6aa3e | ||
|
|
2959fdd154 | ||
|
|
a71e4219be | ||
|
|
30e279b6b9 | ||
|
|
216647890e | ||
|
|
9c3876045a | ||
|
|
86d7b6b649 | ||
|
|
d91957b969 | ||
|
|
5ee0619888 | ||
|
|
fbd77ee5e8 | ||
|
|
35c248fb5c | ||
|
|
7eecbefdd0 | ||
|
|
2715d2a485 | ||
|
|
951dd98f17 | ||
|
|
8ca71d9ff5 | ||
|
|
f2e791f48f | ||
|
|
f549934740 | ||
|
|
3a09d2217f | ||
|
|
92790b70e8 | ||
|
|
02d6813209 | ||
|
|
96ef82cbc9 | ||
|
|
f9c2251711 | ||
|
|
fb73c9e1d9 | ||
|
|
15695eded2 | ||
|
|
70fc35c317 | ||
|
|
0835e7706f | ||
|
|
c4d1196975 | ||
|
|
4ce2d63a0e | ||
|
|
e4db82aebf | ||
|
|
3f05666d59 | ||
|
|
35e1ac9825 | ||
|
|
4a81bce0e7 | ||
|
|
1d9b8fdda8 | ||
|
|
571a96fc77 | ||
|
|
63f7f39048 | ||
|
|
ef5a2a9f5b | ||
|
|
51547b7688 | ||
|
|
6fe2559c01 | ||
|
|
af069041c5 | ||
|
|
9192198096 | ||
|
|
d68fbd5e09 | ||
|
|
39561bde4a | ||
|
|
16090e58c7 | ||
|
|
d8e9511769 | ||
|
|
652a9ec26c | ||
|
|
d243433625 | ||
|
|
40143622ad | ||
|
|
bfe679fb50 | ||
|
|
e7a8793414 | ||
|
|
a9f3ed206b | ||
|
|
2f58ab0637 | ||
|
|
abaf6db3e3 | ||
|
|
235dfd2257 | ||
|
|
a09262b35e | ||
|
|
2daf25186f | ||
|
|
2648e90f29 | ||
|
|
fa9595ea35 | ||
|
|
480ee7b9af | ||
|
|
9d332e9b2d | ||
|
|
e6b9851b52 | ||
|
|
71210df5ec | ||
|
|
99b25d3e91 | ||
|
|
a8a9bc93ab | ||
|
|
d5590b61af | ||
|
|
84aee0909d | ||
|
|
cfc1cfb305 | ||
|
|
4d8e8148d5 | ||
|
|
beec7f8468 | ||
|
|
5b35bab62c | ||
|
|
ebed25693a | ||
|
|
6ae507a0b2 | ||
|
|
5182638599 | ||
|
|
23341bd0c5 | ||
|
|
8a2f7401a3 | ||
|
|
6c3de8c628 | ||
|
|
99dd31ceeb | ||
|
|
b983afe9fa | ||
|
|
ef64210821 | ||
|
|
dcb880b0f2 | ||
|
|
b26aec249c | ||
|
|
3903b8a331 | ||
|
|
5f192ec3a1 | ||
|
|
f42972fc3c | ||
|
|
f4f3d4adc6 | ||
|
|
7e0a8dca94 | ||
|
|
ab45435473 | ||
|
|
23322b6dde | ||
|
|
fbf136bbe3 | ||
|
|
952e7c6fda | ||
|
|
ae10527b8a | ||
|
|
b4d0456f5f | ||
|
|
3f28c24b57 | ||
|
|
9da3b4e155 | ||
|
|
dded26625b | ||
|
|
dac21b7280 | ||
|
|
515eb372a4 | ||
|
|
abe06b3d84 | ||
|
|
229d97e502 | ||
|
|
51cd7fd85e | ||
|
|
9a52cbdd27 | ||
|
|
7d5c242fa9 | ||
|
|
e665243ae1 | ||
|
|
6f79fb2e87 | ||
|
|
211f0ef049 | ||
|
|
07aa343140 | ||
|
|
ab658ec274 | ||
|
|
a2eab242b6 | ||
|
|
321b94db19 | ||
|
|
e17f87d62d | ||
|
|
4fc23a8ffb | ||
|
|
044027e31b | ||
|
|
e4be7e38ad | ||
|
|
5a93e875a3 | ||
|
|
ddfbdbe6d3 | ||
|
|
24fdc0a778 | ||
|
|
3db3bfb150 | ||
|
|
37036ec2fa | ||
|
|
4b94a37f72 | ||
|
|
863eead7fd | ||
|
|
db4d8dba88 | ||
|
|
cc9d76aa11 | ||
|
|
97bbded5bb | ||
|
|
a95e5d210d | ||
|
|
0f7b24fcc7 | ||
|
|
3a2e9973b6 | ||
|
|
5b5f6031b2 | ||
|
|
96a2ec01f5 | ||
|
|
9473ac5f38 | ||
|
|
d803dbb84a | ||
|
|
5981ff8e9b | ||
|
|
b3d7174a7a | ||
|
|
9ea888f62e | ||
|
|
2ba5c9df50 | ||
|
|
d30fb7b85c | ||
|
|
0a895b2d11 | ||
|
|
20ed65efdd | ||
|
|
27769f54b0 | ||
|
|
0748b3eec8 | ||
|
|
469156ac98 | ||
|
|
6f5f3fa908 | ||
|
|
fe84ec08a8 | ||
|
|
f6cd3f5c89 | ||
|
|
88c1abc608 | ||
|
|
a937e6de50 | ||
|
|
5d36264dd2 | ||
|
|
2d5799625c | ||
|
|
156da6c30a | ||
|
|
22fd5ea0f0 | ||
|
|
0fca7f5256 | ||
|
|
aeae7cea53 | ||
|
|
cbe8376bdb | ||
|
|
8cbe7e66a3 | ||
|
|
2994e724c2 | ||
|
|
9b76012f1c | ||
|
|
21ad711055 | ||
|
|
70217bcc13 | ||
|
|
53d1a21638 | ||
|
|
f26ca309e3 | ||
|
|
af88aabfb6 | ||
|
|
4491142a7b | ||
|
|
5df4bd710a | ||
|
|
a41cb46b77 | ||
|
|
7477f6438a | ||
|
|
ed2c4493a4 | ||
|
|
2ed14fc81c | ||
|
|
978e2fd702 | ||
|
|
712954560a | ||
|
|
5e648c29ed | ||
|
|
ea84e4d5e4 | ||
|
|
f2a32ae0f6 | ||
|
|
358b02ac39 | ||
|
|
268c318bc5 | ||
|
|
f87cd22340 | ||
|
|
b1223cd6cc | ||
|
|
9fb4ce6cb4 | ||
|
|
d73eee201d | ||
|
|
dd900a3975 | ||
|
|
9452699aaf | ||
|
|
f2081505eb | ||
|
|
857724984e | ||
|
|
4e36ab9361 | ||
|
|
b3ac4f36f7 | ||
|
|
d4246fc8be | ||
|
|
efaf717443 | ||
|
|
0adeca1c51 | ||
|
|
dfa5b21d71 | ||
|
|
5106952799 | ||
|
|
a65412a019 | ||
|
|
0956b777cb | ||
|
|
4edfb11150 | ||
|
|
c68ae008cc | ||
|
|
46d733ffe9 | ||
|
|
876e7cf6f7 | ||
|
|
c589206b64 | ||
|
|
ae8c093bc8 | ||
|
|
5d5996cfd7 | ||
|
|
228c8a3540 | ||
|
|
e2a49311d2 | ||
|
|
b67c8b7737 | ||
|
|
04dd10abe4 | ||
|
|
e427cccf9e | ||
|
|
6adfaa973a | ||
|
|
34e5b2e059 | ||
|
|
8cf7d80414 | ||
|
|
bb6f7f7402 | ||
|
|
4c84674872 | ||
|
|
e24ecd711f | ||
|
|
caa26a3519 | ||
|
|
77793d8464 | ||
|
|
6135c5be4c | ||
|
|
d6966f8670 | ||
|
|
89d83fb026 | ||
|
|
e64749858e | ||
|
|
2d75c8bcd9 | ||
|
|
8ed81e70d5 | ||
|
|
9fd8c2f267 | ||
|
|
83b8321525 | ||
|
|
6d77bbdd20 | ||
|
|
bb3477169e | ||
|
|
ecdb701685 | ||
|
|
4dc49f9154 | ||
|
|
0c7d15371f | ||
|
|
380ee349e8 | ||
|
|
1c0a306a9b | ||
|
|
f8eda4421f | ||
|
|
e7b7a029ad | ||
|
|
df580ac151 | ||
|
|
5c2e953283 | ||
|
|
dc869603bf | ||
|
|
ea1046b96d | ||
|
|
d16870ee21 | ||
|
|
8d640ac958 | ||
|
|
12656a111a | ||
|
|
74e0583be2 | ||
|
|
8540006372 | ||
|
|
d0d56f9472 | ||
|
|
05c4ac6460 | ||
|
|
92d5bd8584 | ||
|
|
d38a873423 | ||
|
|
73b75970df | ||
|
|
86985ad2c9 | ||
|
|
3daf33d5c2 | ||
|
|
880dae3f21 | ||
|
|
334e15fbb5 | ||
|
|
8b6e88000a | ||
|
|
157297ab87 | ||
|
|
92ecc76000 | ||
|
|
d9659b8cf2 | ||
|
|
01b9f6f730 | ||
|
|
53f7c89e46 | ||
|
|
63d7d28036 | ||
|
|
d3eb1f24cf | ||
|
|
72c18da687 | ||
|
|
64e5cfd43c | ||
|
|
229dfc8906 | ||
|
|
c0ab69c209 | ||
|
|
83dc326318 | ||
|
|
d64a4ed339 | ||
|
|
83bf2faf06 | ||
|
|
49d08a8fb6 | ||
|
|
ba7c685e11 | ||
|
|
eec49878a5 | ||
|
|
1b6861cdbb | ||
|
|
68c0d7e964 | ||
|
|
5fc738f001 | ||
|
|
4f08a62411 | ||
|
|
5ba4c71ac2 | ||
|
|
776cdcbbe1 | ||
|
|
2eb94c6522 | ||
|
|
b4e9c0d004 | ||
|
|
f348df87a5 | ||
|
|
b5782def2f | ||
|
|
d6287755de | ||
|
|
01e16e1265 | ||
|
|
d927b3ac18 | ||
|
|
b277bec988 | ||
|
|
5df570daa0 | ||
|
|
0078cc0ea9 | ||
|
|
a0199e9a44 | ||
|
|
11317c1197 | ||
|
|
1c3c317e1f | ||
|
|
66e7a84b8a | ||
|
|
1c79b60952 | ||
|
|
29bf40fa60 | ||
|
|
548bb6eae2 | ||
|
|
98e38bd70d | ||
|
|
e197aa62d1 | ||
|
|
68aa14292e | ||
|
|
9b118cdfe3 | ||
|
|
045dfb45d1 | ||
|
|
7a72afe880 | ||
|
|
5c3921e457 | ||
|
|
a2fc3443d2 | ||
|
|
a6eb7bbdfe | ||
|
|
456e70c1e2 | ||
|
|
3bbb5bf160 | ||
|
|
d5cfa529c5 | ||
|
|
155ffc3cc9 | ||
|
|
699e6f3be6 | ||
|
|
2b4c3d4df1 | ||
|
|
a6cc44d507 | ||
|
|
8539edfdeb | ||
|
|
9bc424f858 | ||
|
|
053959b0dc | ||
|
|
ba4aa5f4d6 | ||
|
|
51bd36c1a1 | ||
|
|
2d002c53a8 | ||
|
|
da787b1cfa | ||
|
|
59439c3907 | ||
|
|
35ebc8060b | ||
|
|
02427a66dc | ||
|
|
6d437f7d3e | ||
|
|
19768460b0 | ||
|
|
6af03ee5c7 | ||
|
|
bff9ee8729 | ||
|
|
ae0374fc01 | ||
|
|
aa2f66f74d | ||
|
|
4031b35af6 | ||
|
|
9daaf13a4d | ||
|
|
8b938f0094 | ||
|
|
b3d3b0be98 | ||
|
|
ab13477865 | ||
|
|
f35a430c8c | ||
|
|
a7e03fae5d | ||
|
|
c134912d6a | ||
|
|
198664ac58 | ||
|
|
334e85273e | ||
|
|
19cdc00345 | ||
|
|
d4eaa1dc15 | ||
|
|
9e10fbf808 | ||
|
|
e0090d9bf6 | ||
|
|
af8327e76b | ||
|
|
669c232562 | ||
|
|
c3ee7ce886 | ||
|
|
7c9bb238b9 | ||
|
|
bc9e1bfe6c | ||
|
|
dd8e76890c | ||
|
|
01bb930e97 | ||
|
|
48adda4f53 | ||
|
|
add08321aa | ||
|
|
30ab9ebb58 | ||
|
|
ee89c743bf | ||
|
|
c665525e1b | ||
|
|
3f6ccc34a0 | ||
|
|
f0095fec2f | ||
|
|
d7baf8e014 | ||
|
|
6b377fd80f | ||
|
|
8f32e1b1a2 | ||
|
|
9eca7457ff | ||
|
|
5ba274b605 | ||
|
|
0856b8d4af | ||
|
|
9e8bfa03d0 | ||
|
|
116add09ba | ||
|
|
39aa42440b | ||
|
|
257baa1d46 | ||
|
|
2e1df2578c | ||
|
|
2a02aa0b9b | ||
|
|
860f4f458c | ||
|
|
ea5431b088 | ||
|
|
d5a3527059 | ||
|
|
ac58b502c5 | ||
|
|
90eb5462f7 | ||
|
|
5eced46f22 | ||
|
|
1a052969dc | ||
|
|
62a3eff5bb | ||
|
|
9d8de8a9db | ||
|
|
df811d7c02 | ||
|
|
16ff0328cd | ||
|
|
068b3c9adb | ||
|
|
2a11723496 | ||
|
|
4a54d4097a | ||
|
|
b975beb3b9 | ||
|
|
e1c5f3e545 | ||
|
|
335fe0dcfd | ||
|
|
f72e05ff09 | ||
|
|
572d67d5e9 | ||
|
|
0baf7da87b | ||
|
|
2d65e5fe1b | ||
|
|
eb032c6c81 | ||
|
|
b484abdb2f | ||
|
|
bc6130af4d | ||
|
|
2de86e7013 | ||
|
|
c34f2a6f9c | ||
|
|
6285f576a4 | ||
|
|
92718565be | ||
|
|
6711dda41a | ||
|
|
8da1632fcb | ||
|
|
2db9a53288 | ||
|
|
d65713a8cb | ||
|
|
9d3f4ff508 | ||
|
|
7e45cbccc7 | ||
|
|
21ecf4b299 | ||
|
|
26e7a16fd7 | ||
|
|
00d11b8440 | ||
|
|
4e5ae25d5f | ||
|
|
ecea1488e1 | ||
|
|
7136da1aa5 | ||
|
|
3b0bf4d8f2 | ||
|
|
c75149fb9f | ||
|
|
9bde10cdef | ||
|
|
1c681d23eb | ||
|
|
647c4578e2 | ||
|
|
110aa1f4d9 | ||
|
|
7a7f44614d | ||
|
|
4fede344fc | ||
|
|
705fb16d70 | ||
|
|
2d8c3cd247 | ||
|
|
c42916c027 | ||
|
|
02927b3866 | ||
|
|
b0faf2e1f2 | ||
|
|
faf204c03a | ||
|
|
b706b6f579 | ||
|
|
51fe0836dc | ||
|
|
8cbec57bf5 | ||
|
|
c034f509e7 | ||
|
|
4f4cb88a81 | ||
|
|
30cd670a16 | ||
|
|
0a2ea6786d | ||
|
|
2bd5794ab9 | ||
|
|
d3b01ffb2f | ||
|
|
3bb8812e33 | ||
|
|
230a1dbcc4 | ||
|
|
07f2ef1411 | ||
|
|
3c68114ad3 | ||
|
|
4f870512f4 | ||
|
|
5b7464f525 | ||
|
|
64d6c28e30 | ||
|
|
6f55b89149 | ||
|
|
7f213beefa | ||
|
|
bc1aba6c7a | ||
|
|
861dc9fe95 | ||
|
|
0a7994b67f | ||
|
|
a5441ff03e | ||
|
|
dd7ae8c617 | ||
|
|
cf4eed2de0 | ||
|
|
d7dfc5d30b | ||
|
|
27cda5dd31 | ||
|
|
cbacdb7e2c | ||
|
|
0fbb92f3ad | ||
|
|
7e857b3846 | ||
|
|
c75fe998e2 | ||
|
|
55d8e2db81 | ||
|
|
c209787de8 | ||
|
|
c4ce25415b | ||
|
|
423493ac8d | ||
|
|
7818c82075 | ||
|
|
84b9988330 | ||
|
|
ddf6755d0c | ||
|
|
850a7d55d9 | ||
|
|
e2403c8d94 | ||
|
|
46c9d0e33f | ||
|
|
a89cc87a43 | ||
|
|
4a86650a49 | ||
|
|
9f981328d2 | ||
|
|
848f60eae1 | ||
|
|
f6a819351f | ||
|
|
c6f4e4bc14 | ||
|
|
e24a3603ac | ||
|
|
1186f3fccf | ||
|
|
e0c2e7846a | ||
|
|
416b25d6ae | ||
|
|
9075b7b175 | ||
|
|
780cb5a2e7 | ||
|
|
27521bf5d6 | ||
|
|
5d255301b4 | ||
|
|
2d2d4247a1 | ||
|
|
496488cb3e | ||
|
|
dacbb0f2dc | ||
|
|
36c0f7c160 | ||
|
|
78a984b52f | ||
|
|
bc7a3de68d | ||
|
|
53f963f028 | ||
|
|
02b3b8e7e6 | ||
|
|
c45b61d402 | ||
|
|
f1b0be30e0 | ||
|
|
1222b9fdb4 | ||
|
|
bb54231233 | ||
|
|
4306178966 | ||
|
|
dde29c5d77 | ||
|
|
4cd9feae7b | ||
|
|
9a403aa1ce | ||
|
|
daf574188a | ||
|
|
5cf3dfa451 | ||
|
|
c607af658e | ||
|
|
58f96a6068 | ||
|
|
1a1673095e | ||
|
|
509cd3e95f | ||
|
|
0347748c50 | ||
|
|
6fab646a61 | ||
|
|
5a9405a315 | ||
|
|
24c7adb346 | ||
|
|
bad9649200 | ||
|
|
12e5cbb297 | ||
|
|
5d54866e52 | ||
|
|
f39d8d93ab | ||
|
|
f8b1b02df5 | ||
|
|
74ba52b883 | ||
|
|
5d4a65a3cb | ||
|
|
a5c4543282 | ||
|
|
0b34544125 | ||
|
|
cd33ec2f02 | ||
|
|
57fc5ec333 | ||
|
|
a756786f93 | ||
|
|
daddabc7b1 | ||
|
|
6014b7208f | ||
|
|
527b076732 | ||
|
|
de67bd19b2 | ||
|
|
6c709f2386 |
@@ -7,6 +7,13 @@ RUN apt-get install --no-install-recommends -y build-essential file nano && \
|
|||||||
apt-get autoremove --yes && \
|
apt-get autoremove --yes && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
ARG TARGETARCH
|
||||||
|
RUN wget https://dl.google.com/go/go1.17.9.linux-${TARGETARCH}.tar.gz && \
|
||||||
|
tar -xvf go1.17.9.linux-${TARGETARCH}.tar.gz && \
|
||||||
|
mv go /usr/local
|
||||||
|
|
||||||
|
RUN GOROOT=/usr/local/go /usr/local/go/bin/go install golang.org/x/tools/gopls@latest 2>&1
|
||||||
|
|
||||||
ADD https://raw.githubusercontent.com/dokku/dokku/master/tests/dhparam.pem /mnt/dokku/etc/nginx/dhparam.pem
|
ADD https://raw.githubusercontent.com/dokku/dokku/master/tests/dhparam.pem /mnt/dokku/etc/nginx/dhparam.pem
|
||||||
|
|
||||||
COPY .devcontainer/bin/ /usr/local/bin/
|
COPY .devcontainer/bin/ /usr/local/bin/
|
||||||
@@ -15,5 +22,6 @@ RUN make ci-dependencies
|
|||||||
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
ENV DOKKU_HOSTNAME=dokku.me
|
ENV DOKKU_HOSTNAME=dokku.me GOROOT=/usr/local/go PATH=/usr/local/go/bin:/root/go/bin:$PATH PLUGIN_MAKE_TARGET=build
|
||||||
|
|
||||||
LABEL org.label-schema.schema-version=1.0 org.label-schema.vendor=dokku com.dokku.devcontainer=true
|
LABEL org.label-schema.schema-version=1.0 org.label-schema.vendor=dokku com.dokku.devcontainer=true
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
main() {
|
main() {
|
||||||
declare PLUGIN_NAME="$1"
|
declare PLUGIN_NAME="$1"
|
||||||
|
|
||||||
make go-build-plugin copyplugin PLUGIN_NAME=$PLUGIN_NAME
|
make go-build-plugin copyplugin PLUGIN_NAME=$PLUGIN_NAME PLUGIN_MAKE_TARGET=build
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
@@ -7,12 +7,19 @@
|
|||||||
"DOKKU_HOST_ROOT": "${localWorkspaceFolder}/tmp/data/home/dokku",
|
"DOKKU_HOST_ROOT": "${localWorkspaceFolder}/tmp/data/home/dokku",
|
||||||
"GO_ROOT_MOUNT": "${localWorkspaceFolder}:/go/src/github.com/dokku/dokku"
|
"GO_ROOT_MOUNT": "${localWorkspaceFolder}:/go/src/github.com/dokku/dokku"
|
||||||
},
|
},
|
||||||
|
"extensions": [
|
||||||
|
"golang.go",
|
||||||
|
"mads-hartmann.bash-ide-vscode",
|
||||||
|
"ms-vscode.makefile-tools"
|
||||||
|
],
|
||||||
"initializeCommand": ["mkdir", "-p", "tmp/data"],
|
"initializeCommand": ["mkdir", "-p", "tmp/data"],
|
||||||
"mounts": [
|
"mounts": [
|
||||||
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind",
|
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind",
|
||||||
"source=${localWorkspaceFolder}/tmp/data/,target=/mnt/dokku/,type=bind"
|
"source=${localWorkspaceFolder}/tmp/data/,target=/mnt/dokku/,type=bind"
|
||||||
],
|
],
|
||||||
"overrideCommand": false,
|
"overrideCommand": false,
|
||||||
"postCreateCommand": ["make", "setup-deploy-tests"],
|
"postCreateCommand": "make setup-deploy-tests",
|
||||||
"runArgs": ["--init"]
|
"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"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ contrib
|
|||||||
build
|
build
|
||||||
docs
|
docs
|
||||||
tests
|
tests
|
||||||
!build/dokku.deb
|
!build/package/*
|
||||||
|
!docs/_build/entrypoint
|
||||||
|
!docs/_build/requirements.txt
|
||||||
!tests/dhparam.pem
|
!tests/dhparam.pem
|
||||||
!contrib/bash-completion
|
!contrib/bash-completion
|
||||||
!contrib/docker
|
!contrib/docker
|
||||||
|
|||||||
66
.github/ISSUE_TEMPLATE/bug_report.yaml
vendored
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
---
|
||||||
|
name: Bug Report
|
||||||
|
description: File a bug report
|
||||||
|
labels: ["needs: investigation", "type: bug"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Consider [sponsoring Dokku](https://github.com/sponsors/dokku). Sponsorship goes directly to supporting activities such as fixing bugs and general maintenance.
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description of problem
|
||||||
|
description: What happened? What did you expect to happen?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: steps
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: What are the steps that we need to follow to reproduce this issue?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: report-output
|
||||||
|
attributes:
|
||||||
|
label: dokku report $APP_NAME
|
||||||
|
description: Please paste the output of the command `dokku report $APP_NAME`, where `$APP_NAME` is the name of your app
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: additional-output
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: |
|
||||||
|
This information is useful for debugging app issues:
|
||||||
|
|
||||||
|
- Container Inspect Output (if applicable) via `dokku ps:inspect APP_NAME`
|
||||||
|
- The nginx configuration (if applicable) via `dokku nginx:show-config APP_NAME`
|
||||||
|
- Link to the exact repository being deployed (if possible/applicable)
|
||||||
|
|
||||||
|
If a deploy is failing or behaving unexpectedly:
|
||||||
|
|
||||||
|
- Application name
|
||||||
|
- The type of application being deployed (node, php, python, ruby, etc.)
|
||||||
|
- If using buildpacks, which custom buildpacks are in use
|
||||||
|
- If using a Dockerfile, the contents of that file
|
||||||
|
- If it exists, the contents of your Procfile.
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: "Output of failing commands after running: dokku trace:off"
|
||||||
|
render: shell
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: textarea
|
||||||
|
id: trace-logs
|
||||||
|
attributes:
|
||||||
|
label: "Output of failing commands after running: dokku trace:on"
|
||||||
|
description: |
|
||||||
|
**BEWARE**: `dokku trace:on` will cause some commands to print environment variables, be sure you're not exposing any sensitive information when posting issues. You may replace these values with XXXXXX
|
||||||
|
render: shell
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
71
.github/ISSUE_TEMPLATE/buildpack_issue.yaml
vendored
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
---
|
||||||
|
name: Buildpack Issue
|
||||||
|
description: Is your deploy failing while building your application using buildpacks? Check this out.
|
||||||
|
labels: ["upstream: buildpacks"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
If your build is stuck downloading something, compiling a file, or seems to always fail around the same area, Github Issues is not a great place to debug. This is because these sorts of issues tend to take a lot of back and forth to figure out, and the code for buildpacks is not generally maintained by the Dokku project.
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Debugging tips:</summary>
|
||||||
|
|
||||||
|
- If you see text that says `Killed` in your output, attempt to increase free memory by using a larger server or [add swap memory](https://dokku.com/docs/getting-started/troubleshooting/#build-fails-with-killed-message).
|
||||||
|
- Turn on buildpack trace mode via `dokku config:set $APP_NAME BUILDPACK_XTRACE=1` and retry your deploy. Not all buildpacks support this, but many will output extra debugging information.
|
||||||
|
- Your hosting provider may have issues accessing AWS S3. Verify a slow/stalled download works by directly curling the file from your host.
|
||||||
|
- Many buildpacks allow downloading a file from an alternative location specified via environment variable.
|
||||||
|
- [Increase curl timeouts](https://dokku.com/docs/getting-started/troubleshooting/#deployment-fails-because-of-slow-internet-connection-messages-s) if you see gzip download issues.
|
||||||
|
- If using multi-buildpack support but a buildpack is failing to apply, ensure you have any files necessary for the `bin/detect` script of the buildpack to `exit 0`. Selected buildpacks must still pass the detection phase in order to be used.
|
||||||
|
</details>
|
||||||
|
|
||||||
|
If you are still having issues, file a ticket here and then further discussing the ticket in one of our [Monitored Support Channels](https://dokku.com/docs/getting-started/where-to-get-help/#monitored-locations) (Discord, Github Discussions, Slack). Your filed ticket may be closed or locked, but any subsequent discovery will be posted to the ticket for posterity.
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description of problem
|
||||||
|
description: What happened? What did you expect to happen?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: report-output
|
||||||
|
attributes:
|
||||||
|
label: dokku report $APP_NAME
|
||||||
|
description: Please paste the output of the command `dokku report $APP_NAME`, where `$APP_NAME` is the name of your app.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: additional-output
|
||||||
|
attributes:
|
||||||
|
label: Additional information
|
||||||
|
description: |
|
||||||
|
This information is useful for debugging app issues:
|
||||||
|
|
||||||
|
- Container Inspect Output (if applicable) via `dokku ps:inspect APP_NAME`
|
||||||
|
- The nginx configuration (if applicable) via `dokku nginx:show-config APP_NAME`
|
||||||
|
- Link to the exact repository being deployed (if possible/applicable)
|
||||||
|
|
||||||
|
If a deploy is failing or behaving unexpectedly:
|
||||||
|
|
||||||
|
- Application name
|
||||||
|
- The type of application being deployed (node, php, python, ruby, etc.)
|
||||||
|
- If using buildpacks, which custom buildpacks are in use
|
||||||
|
- If it exists, the contents of your Procfile.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: logs
|
||||||
|
attributes:
|
||||||
|
label: "Output of failing deploy after running: dokku trace:off"
|
||||||
|
render: shell
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: trace-logs
|
||||||
|
attributes:
|
||||||
|
label: "Output of failing deploy after running: dokku trace:on"
|
||||||
|
description: |
|
||||||
|
**BEWARE**: `dokku trace:on` will cause some commands to print environment variables, be sure you're not exposing any sensitive information when posting issues. You may replace these values with XXXXXX
|
||||||
|
render: shell
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
18
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name: Feature Request
|
||||||
|
description: Have an idea for a new feature? Ask away!
|
||||||
|
labels: ["needs: plan", "type: enhancement"]
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
While pull requests are always welcome, feel free to fill this out with an idea of what you would like to happen and we can discuss if and how it should be implemented in Dokku.
|
||||||
|
|
||||||
|
Consider [sponsoring Dokku](https://github.com/sponsors/dokku). Sponsorship goes directly to supporting activities such as implementing new features and upgrading existing functionality.
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description of feature
|
||||||
|
description: When you perform what command or action, what do you think should happen?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
80
.github/dependabot.yml
vendored
@@ -105,3 +105,83 @@ updates:
|
|||||||
schedule:
|
schedule:
|
||||||
interval: daily
|
interval: daily
|
||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: github-actions
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: /""
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/dockerfile-noexpose"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/dockerfile"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/dockerfile-procfile"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/dockerfile-entrypoint"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/dockerfile-procfile-bad"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/go-fail-predeploy"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/zombies-dockerfile-no-tini"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/dockerfile-release"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/dockerfile-dokku-scale"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/gogrpc"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/zombies-dockerfile-tini"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/tests/apps/go-fail-postdeploy"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/docs/_build"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
- package-ecosystem: "docker"
|
||||||
|
directory: "/.devcontainer"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 10
|
||||||
|
|||||||
23
.github/workflows/ci.yml
vendored
@@ -20,7 +20,14 @@ jobs:
|
|||||||
fail-fast: true
|
fail-fast: true
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: set up qemu
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
|
||||||
|
- name: set up docker buildx
|
||||||
|
id: buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
- name: build package
|
- name: build package
|
||||||
run: ./tests/ci/setup.sh build
|
run: ./tests/ci/setup.sh build
|
||||||
@@ -33,7 +40,7 @@ jobs:
|
|||||||
echo "::set-output name=matrix::$(echo "$json")"
|
echo "::set-output name=matrix::$(echo "$json")"
|
||||||
|
|
||||||
- name: upload packages
|
- name: upload packages
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: build
|
name: build
|
||||||
path: build
|
path: build
|
||||||
@@ -47,7 +54,7 @@ jobs:
|
|||||||
matrix: ${{fromJson(needs.build.outputs.matrix)}}
|
matrix: ${{fromJson(needs.build.outputs.matrix)}}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: download packages
|
- name: download packages
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v1
|
||||||
@@ -72,7 +79,7 @@ jobs:
|
|||||||
SYNC_GITHUB_PASSWORD: ${{ secrets.SYNC_GITHUB_PASSWORD }}
|
SYNC_GITHUB_PASSWORD: ${{ secrets.SYNC_GITHUB_PASSWORD }}
|
||||||
SYNC_GITHUB_USERNAME: ${{ secrets.SYNC_GITHUB_USERNAME }}
|
SYNC_GITHUB_USERNAME: ${{ secrets.SYNC_GITHUB_USERNAME }}
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: test-results-${{ matrix.index }}
|
name: test-results-${{ matrix.index }}
|
||||||
path: test-results
|
path: test-results
|
||||||
@@ -85,7 +92,7 @@ jobs:
|
|||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: download packages
|
- name: download packages
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v1
|
||||||
@@ -114,7 +121,7 @@ jobs:
|
|||||||
GITHUB_NODE_INDEX: ${{ matrix.index }}
|
GITHUB_NODE_INDEX: ${{ matrix.index }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: download packages
|
- name: download packages
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v1
|
||||||
@@ -137,7 +144,7 @@ jobs:
|
|||||||
2) sudo -E make -e deploy-test-multi ;;
|
2) sudo -E make -e deploy-test-multi ;;
|
||||||
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;;
|
3) sudo -E make -e deploy-test-go-fail-predeploy deploy-test-go-fail-postdeploy ;;
|
||||||
esac
|
esac
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: coverage.${{ matrix.index }}
|
name: coverage.${{ matrix.index }}
|
||||||
path: test-results/coverage
|
path: test-results/coverage
|
||||||
@@ -159,6 +166,6 @@ jobs:
|
|||||||
uses: docker://ghcr.io/enricomi/publish-unit-test-result-action:v1
|
uses: docker://ghcr.io/enricomi/publish-unit-test-result-action:v1
|
||||||
with:
|
with:
|
||||||
check_name: Unit Test Results
|
check_name: Unit Test Results
|
||||||
github_token: ${{ secrets.GH_ACCESS_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
files: test-results/**/*.xml
|
files: test-results/**/*.xml
|
||||||
comment_on_pr: false
|
comment_on_pr: false
|
||||||
|
|||||||
8
.github/workflows/codeql-analysis.yml
vendored
@@ -38,11 +38,11 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v1
|
uses: github/codeql-action/init@v2
|
||||||
with:
|
with:
|
||||||
languages: ${{ matrix.language }}
|
languages: ${{ matrix.language }}
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||||
@@ -53,7 +53,7 @@ jobs:
|
|||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
# 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)
|
# If this step fails, then you should remove it and run the build manually (see below)
|
||||||
- name: Autobuild
|
- name: Autobuild
|
||||||
uses: github/codeql-action/autobuild@v1
|
uses: github/codeql-action/autobuild@v2
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
# ℹ️ Command-line programs to run using the OS shell.
|
||||||
# 📚 https://git.io/JvXDl
|
# 📚 https://git.io/JvXDl
|
||||||
@@ -67,4 +67,4 @@ jobs:
|
|||||||
# make release
|
# make release
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v1
|
uses: github/codeql-action/analyze@v2
|
||||||
|
|||||||
39
.github/workflows/docs.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
name: 'docs'
|
||||||
|
|
||||||
|
# yamllint disable-line rule:truthy
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Cloning repo
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: "Setup python 3.10"
|
||||||
|
uses: actions/setup-python@v4
|
||||||
|
with:
|
||||||
|
python-version: '3.10'
|
||||||
|
|
||||||
|
- name: Generate documentation
|
||||||
|
env:
|
||||||
|
BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
||||||
|
BOT_GITHUB_API_TOKEN: ${{ secrets.HOMEBREW_GITHUB_API_TOKEN }}
|
||||||
|
run: |
|
||||||
|
git config --global user.name 'Dokku Bot'
|
||||||
|
git config --global user.email no-reply@dokku.com
|
||||||
|
|
||||||
|
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
|
||||||
|
sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg
|
||||||
|
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
|
||||||
|
sudo apt update
|
||||||
|
sudo apt install gh -y
|
||||||
|
|
||||||
|
gh auth login --with-token <<<"$BOT_GITHUB_API_TOKEN"
|
||||||
|
contrib/build-docs
|
||||||
28
.github/workflows/lint.yml
vendored
@@ -16,17 +16,17 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
- name: Run hadolint
|
- name: Run hadolint
|
||||||
uses: brpaz/hadolint-action@1623ba61710b974b55ba455930e6f2c8ef919778
|
uses: hadolint/hadolint-action@f988afea3da57ee48710a9795b6bb677cc901183
|
||||||
# v1.3.1 => 1623ba61710b974b55ba455930e6f2c8ef919778
|
# v1.6.0 => d7b38582334d9ac11c12021c16f21d63015fa250
|
||||||
|
|
||||||
markdown-lint:
|
markdown-lint:
|
||||||
name: markdown-lint
|
name: markdown-lint
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
- name: Run markdown-lint
|
- name: Run markdown-lint
|
||||||
uses: avto-dev/markdown-lint@04d43ee9191307b50935a753da3b775ab695eceb
|
uses: avto-dev/markdown-lint@04d43ee9191307b50935a753da3b775ab695eceb
|
||||||
# v1.5.0 => 04d43ee9191307b50935a753da3b775ab695eceb
|
# v1.5.0 => 04d43ee9191307b50935a753da3b775ab695eceb
|
||||||
@@ -39,23 +39,23 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
- name: Run shellcheck
|
- name: Run shellcheck
|
||||||
uses: ludeeus/action-shellcheck@d586102c117f97e63d7e3b56629d269efc9a7c60
|
uses: ludeeus/action-shellcheck@94e0aab03ca135d11a35e5bfc14e6746dc56e7e9
|
||||||
# 1.0.0 => d586102c117f97e63d7e3b56629d269efc9a7c60
|
# 1.1.0 => 94e0aab03ca135d11a35e5bfc14e6746dc56e7e9
|
||||||
env:
|
env:
|
||||||
# keep in sync with tests/shellcheck-exclude
|
# keep in sync with tests/shellcheck-exclude
|
||||||
SHELLCHECK_OPTS: -e SC1001 -e SC1003 -e SC1090 -e SC1091 -e SC1117 -e SC2029 -e SC2030 -e SC2031 -e SC2034 -e SC2046 -e SC2064 -e SC2068 -e SC2086 -e SC2119 -e SC2120 -e SC2128 -e SC2148 -e SC2153 -e SC2154 -e SC2155 -e SC2162 -e SC2174 -e SC2179 -e SC2191 -e SC2199 -e SC2207 -e SC2219 -e SC2220 -e SC2230 -e SC2231 -e SC2235 -e SC2267
|
SHELLCHECK_OPTS: -e SC1001 -e SC1003 -e SC1090 -e SC1091 -e SC1117 -e SC2029 -e SC2030 -e SC2031 -e SC2034 -e SC2046 -e SC2064 -e SC2068 -e SC2086 -e SC2119 -e SC2120 -e SC2128 -e SC2148 -e SC2153 -e SC2154 -e SC2155 -e SC2162 -e SC2174 -e SC2179 -e SC2191 -e SC2199 -e SC2207 -e SC2219 -e SC2220 -e SC2230 -e SC2231 -e SC2235 -e SC2267 -e SC2295
|
||||||
|
|
||||||
shfmt:
|
shfmt:
|
||||||
name: shfmt
|
name: shfmt
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
- name: Run shfmt
|
- name: Run shfmt
|
||||||
uses: luizm/action-sh-checker@442951059cb22d260c6e69309ae59cb7bb2334b8
|
uses: luizm/action-sh-checker@edd0e45ecff35b05f162052b50df50976c1b74fc
|
||||||
# v0.1.12 => 442951059cb22d260c6e69309ae59cb7bb2334b8
|
# v0.3.0 => 7f44869033b40ee4ffe7dc76c87a1bc66e3d025a
|
||||||
env:
|
env:
|
||||||
SHFMT_OPTS: -l -bn -ci -i 2 -d
|
SHFMT_OPTS: -l -bn -ci -i 2 -d
|
||||||
with:
|
with:
|
||||||
@@ -66,9 +66,9 @@ jobs:
|
|||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
- name: Run yamllint
|
- name: Run yamllint
|
||||||
uses: ibiqlik/action-yamllint@b2aeacc1b7eeb8c23e84bba320d04fb5d6a323ee
|
uses: ibiqlik/action-yamllint@81e214fd484713882ce4237cb7cd264d550856cf
|
||||||
# v3.0.0 => b2aeacc1b7eeb8c23e84bba320d04fb5d6a323ee
|
# v3.0.4 => ed2b6e911569708ed121c14b87d513860a7e36a7
|
||||||
with:
|
with:
|
||||||
config_file: '.github/linters/.yamllint.yml'
|
config_file: '.github/linters/.yamllint.yml'
|
||||||
|
|||||||
29
.github/workflows/release.yml
vendored
@@ -19,7 +19,7 @@ jobs:
|
|||||||
outputs:
|
outputs:
|
||||||
version: ${{ steps.version.outputs.version }}
|
version: ${{ steps.version.outputs.version }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -27,12 +27,27 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
ruby-version: 2.6
|
ruby-version: 2.6
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: login to docker hub
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: set up qemu
|
||||||
|
uses: docker/setup-qemu-action@v2
|
||||||
|
|
||||||
|
- name: set up docker buildx
|
||||||
|
id: buildx
|
||||||
|
uses: docker/setup-buildx-action@v2
|
||||||
|
|
||||||
|
- name: inspect builder
|
||||||
|
run: |
|
||||||
|
echo "Name: ${{ steps.buildx.outputs.name }}"
|
||||||
|
echo "Endpoint: ${{ steps.buildx.outputs.endpoint }}"
|
||||||
|
echo "Status: ${{ steps.buildx.outputs.status }}"
|
||||||
|
echo "Flags: ${{ steps.buildx.outputs.flags }}"
|
||||||
|
echo "Platforms: ${{ steps.buildx.outputs.platforms }}"
|
||||||
|
|
||||||
- name: install package_cloud
|
- name: install package_cloud
|
||||||
run: gem install package_cloud
|
run: gem install package_cloud
|
||||||
|
|
||||||
@@ -49,7 +64,7 @@ jobs:
|
|||||||
run: echo "::set-output name=version::$(cat build/next-version)"
|
run: echo "::set-output name=version::$(cat build/next-version)"
|
||||||
|
|
||||||
- name: upload packages
|
- name: upload packages
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: build
|
name: build
|
||||||
path: build
|
path: build
|
||||||
@@ -60,7 +75,7 @@ jobs:
|
|||||||
needs: release
|
needs: release
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
- name: Bump Azure Template
|
- name: Bump Azure Template
|
||||||
env:
|
env:
|
||||||
BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
||||||
@@ -83,6 +98,8 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
git config --global user.name 'Dokku Bot'
|
git config --global user.name 'Dokku Bot'
|
||||||
git config --global user.email no-reply@dokku.com
|
git config --global user.email no-reply@dokku.com
|
||||||
# brew tap dokku/repo "https://$HOMEBREW_GITHUB_USERNAME:$HOMEBREW_GITHUB_API_TOKEN@github.com/dokku/homebrew-repo.git"
|
curl -sSL https://github.com/dokku/netrc/releases/download/v0.4.1/netrc_0.4.1_darwin_x86_64.tgz | tar xvf -
|
||||||
|
mv netrc /usr/local/bin/netrc
|
||||||
|
netrc set github.com "$HOMEBREW_GITHUB_USERNAME" "$HOMEBREW_GITHUB_API_TOKEN"
|
||||||
brew tap dokku/repo
|
brew tap dokku/repo
|
||||||
brew bump-formula-pr -f --no-browse --no-audit --no-fork --debug --verbose --url "https://github.com/dokku/dokku/archive/${{ needs.release.outputs.version }}.tar.gz" dokku/repo/dokku
|
brew bump-formula-pr -f --no-browse --no-audit --no-fork --debug --verbose --url "https://github.com/dokku/dokku/archive/${{ needs.release.outputs.version }}.tar.gz" dokku/repo/dokku
|
||||||
|
|||||||
1
.gitignore
vendored
@@ -3,6 +3,7 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
.ruby-version
|
.ruby-version
|
||||||
.idea/
|
.idea/
|
||||||
|
.vscode/
|
||||||
.vagrant
|
.vagrant
|
||||||
build/
|
build/
|
||||||
data/
|
data/
|
||||||
|
|||||||
9
.shellcheckrc
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# SC1091 - Not following: FILE: does not exist (No such file or directory) - https://github.com/koalaman/shellcheck/wiki/SC1091
|
||||||
|
# - used for sourcing function files throughout the codebase
|
||||||
|
# SC2034 - VAR appears unused - https://github.com/koalaman/shellcheck/wiki/SC2034
|
||||||
|
# - used for declaring desc and deprecated function variables
|
||||||
|
# SC2064 - Use single quotes, otherwise this expands now rather than when signalled. - https://github.com/koalaman/shellcheck/wiki/SC2064
|
||||||
|
# - used for traps
|
||||||
|
# SC2155 - Declare and assign separately to avoid masking return values - https://github.com/koalaman/shellcheck/wiki/SC2155
|
||||||
|
# - used throughout the codebase
|
||||||
|
disable=SC1091,SC2034,SC2064,SC2155
|
||||||
@@ -135,4 +135,4 @@ which contains test setup information as well as tips for running tests.
|
|||||||
- [Existing issues](https://github.com/dokku/dokku/issues)
|
- [Existing issues](https://github.com/dokku/dokku/issues)
|
||||||
- [General GitHub documentation](https://help.github.com/)
|
- [General GitHub documentation](https://help.github.com/)
|
||||||
- [GitHub pull request documentation](https://help.github.com/send-pull-requests/)
|
- [GitHub pull request documentation](https://help.github.com/send-pull-requests/)
|
||||||
- [Gliderlabs Slack in the #dokku channel](https://glider-slackin.herokuapp.com/)
|
- [Gliderlabs Slack in the #dokku channel](https://slack.dokku.com/)
|
||||||
|
|||||||
18
Dockerfile
@@ -1,4 +1,4 @@
|
|||||||
FROM phusion/baseimage:bionic-1.0.0
|
FROM phusion/baseimage:focal-1.2.0
|
||||||
|
|
||||||
CMD ["/sbin/my_init"]
|
CMD ["/sbin/my_init"]
|
||||||
|
|
||||||
@@ -14,7 +14,7 @@ RUN addgroup --gid $DOKKU_GID dokku \
|
|||||||
&& adduser --uid $DOKKU_UID --gid $DOKKU_GID --disabled-password --gecos "" "dokku"
|
&& adduser --uid $DOKKU_UID --gid $DOKKU_GID --disabled-password --gecos "" "dokku"
|
||||||
|
|
||||||
COPY ./tests/dhparam.pem /tmp/dhparam.pem
|
COPY ./tests/dhparam.pem /tmp/dhparam.pem
|
||||||
COPY ./build/dokku.deb /tmp/dokku.deb
|
COPY ./build/package/ /tmp
|
||||||
|
|
||||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||||
# hadolint ignore=DL3005,DL3008
|
# hadolint ignore=DL3005,DL3008
|
||||||
@@ -22,15 +22,15 @@ RUN 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/skip_key_file boolean $DOKKU_SKIP_KEY_FILE" | debconf-set-selections \
|
||||||
&& echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | 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 - \
|
&& curl -sSL https://packagecloud.io/dokku/dokku/gpgkey | apt-key add - \
|
||||||
&& echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ bionic main" | tee /etc/apt/sources.list.d/dokku.list \
|
&& echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ focal main" | tee /etc/apt/sources.list.d/dokku.list \
|
||||||
&& mkdir -p /etc/nginx/ \
|
&& mkdir -p /etc/nginx/ \
|
||||||
&& cp /tmp/dhparam.pem /etc/nginx/dhparam.pem \
|
&& cp /tmp/dhparam.pem /etc/nginx/dhparam.pem \
|
||||||
&& apt-get update -qq \
|
&& apt-get update \
|
||||||
&& apt-get upgrade -qq -y \
|
&& apt-get upgrade -y \
|
||||||
&& apt-get -qq -y --no-install-recommends --only-upgrade install openssl openssh-server \
|
&& apt-get -y --no-install-recommends --only-upgrade install openssl openssh-server \
|
||||||
&& apt-get -qq -y --no-install-recommends install rsync /tmp/dokku.deb \
|
&& apt-get -y --no-install-recommends install rsync "/tmp/dokku-$(dpkg --print-architecture).deb" \
|
||||||
&& apt-get purge -qq -y syslog-ng-core \
|
&& apt-get purge -y syslog-ng-core \
|
||||||
&& apt-get autoremove -qq -y \
|
&& apt-get autoremove -y \
|
||||||
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
&& apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||||
|
|
||||||
WORKDIR /tmp
|
WORKDIR /tmp
|
||||||
|
|||||||
591
HISTORY.md
@@ -1,5 +1,596 @@
|
|||||||
# History
|
# History
|
||||||
|
|
||||||
|
## 0.28.3
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.28.3/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.28.3 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5394: @josegonzalez Add support for automatically updating Dockerfile FROM statements via dependabot
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5411: @dependabot[bot] chore(deps): bump python from 3.8-buster to 3.10.0-buster in /tests/apps/dockerfile-release
|
||||||
|
- #5400: @dependabot[bot] chore(deps): bump node from 4-alpine to 18-alpine in /tests/apps/dockerfile-procfile
|
||||||
|
- #5405: @dependabot[bot] chore(deps): bump node from 4-alpine to 18-alpine in /tests/apps/dockerfile
|
||||||
|
- #5397: @dependabot[bot] chore(deps): bump ruby from 2.5.1 to 3.1.2 in /tests/apps/dockerfile-entrypoint
|
||||||
|
- #5401: @dependabot[bot] chore(deps): bump golang from 1.17.1 to 1.19.2 in /tests/apps/go-fail-postdeploy
|
||||||
|
- #5403: @dependabot[bot] chore(deps): bump golang from 1.17.1 to 1.19.2 in /tests/apps/zombies-dockerfile-tini
|
||||||
|
- #5407: @dependabot[bot] chore(deps): bump python from 3.10-alpine to 3.10.8-alpine in /docs/_build
|
||||||
|
- #5404: @dependabot[bot] chore(deps): bump node from 4-alpine to 18-alpine in /tests/apps/dockerfile-dokku-scale
|
||||||
|
- #5402: @dependabot[bot] chore(deps): bump node from 4-alpine to 18-alpine in /tests/apps/dockerfile-procfile-bad
|
||||||
|
- #5398: @dependabot[bot] chore(deps): bump golang from 1.17.1 to 1.19.2 in /tests/apps/go-fail-predeploy
|
||||||
|
- #5396: @dependabot[bot] chore(deps): bump golang from 1.17.1 to 1.19.2 in /tests/apps/gogrpc
|
||||||
|
- #5399: @dependabot[bot] chore(deps): bump golang from 1.17.1 to 1.19.2 in /tests/apps/zombies-dockerfile-no-tini
|
||||||
|
- #5395: @dependabot[bot] chore(deps): bump node from 4-alpine to 18-alpine in /tests/apps/dockerfile-noexpose
|
||||||
|
|
||||||
|
## 0.28.2
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.28.2/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.28.2 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5393: @josegonzalez Correct issue with replacing the version in the installation guide
|
||||||
|
- #5354: @josegonzalez Report the correct value for the letsencrypt server
|
||||||
|
- #5347: @josegonzalez Set correct version on builder-lambda plugin
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5392: @josegonzalez Add support for devcontainers on ARM64 instances
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5365: @josegonzalez Use correct indentation for embedded list in remote commands documentation
|
||||||
|
- #5357: @josegonzalez Reference blog on main domain
|
||||||
|
- #5355: @josegonzalez Autogenerate documentation in CI
|
||||||
|
- #5351: @josegonzalez Fix formatting on list in deployment tasks
|
||||||
|
- #5328: @holtergram Call out git remote change when renaming an app
|
||||||
|
- #5344: @josegonzalez Generate docs via mkdocs
|
||||||
|
- #5342: @josegonzalez Ensure doc links work on github as well as on docs site
|
||||||
|
- #5336: @josegonzalez Add note about docker-compose requirement for using the caddy plugin
|
||||||
|
- #5337: @josegonzalez Add note about docker-compose requirement for using the traefik…
|
||||||
|
- #5332: @cdubz Remove errant semicolon from wget command
|
||||||
|
- #5329: @josegonzalez Use updated url for gliderlabs slack invite app
|
||||||
|
- #5315: @alexislefebvre Fix doc link for systems with less than 1GB memory
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5382: @dependabot[bot] chore(deps): bump sinatra from 2.2.2 to 3.0.2 in /tests/apps/ruby
|
||||||
|
- #5386: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 224 to 225 in /tests/apps/php
|
||||||
|
- #5361: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.11 to 11.0.12 in /tests/apps/java
|
||||||
|
- #5346: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 223 to 224 in /tests/apps/php
|
||||||
|
|
||||||
|
## 0.28.1
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.28.1/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.28.1 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5313: @josegonzalez Fix issues with multiple domains in new proxy plugins
|
||||||
|
|
||||||
|
## 0.28.0
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.28.0/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.28.0 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [0.28.0 migration guide](/docs/appendices/0.28.0-migration-guide.md) for more information on migrating to 0.28.0.
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5299: @josegonzalez Do not trigger restarts when mutating config globally
|
||||||
|
- #5298: @josegonzalez Set core.bare=true on correct repository path
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5300: @josegonzalez Add the ability to disable the init process
|
||||||
|
- #5295: @josegonzalez Add an official caddy proxy implementation
|
||||||
|
- #5293: @josegonzalez Add an official traefik proxy implementation
|
||||||
|
- #5202: @josegonzalez Add builder-lambda plugin
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5296: @janlavicka Fix typo in kubernetes docs
|
||||||
|
- #5288: @josegonzalez Do not have bottom border float on page
|
||||||
|
- #5283: @alexgleason Homepage: fix link in quick install guide
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5297: @josegonzalez Update vector image
|
||||||
|
- #5294: @josegonzalez Document and enable alternative proxy implementations
|
||||||
|
- #5291: @dependabot[bot] chore(deps): bump werkzeug from 2.2.1 to 2.2.2 in /tests/apps/python-flask
|
||||||
|
- #5292: @dependabot[bot] chore(deps): bump flask from 2.2.1 to 2.2.2 in /tests/apps/multi
|
||||||
|
- #5290: @dependabot[bot] chore(deps): bump flask from 2.2.1 to 2.2.2 in /tests/apps/python-flask
|
||||||
|
- #5227: @josegonzalez Drop forwarded port from vagrant setup
|
||||||
|
- #5285: @josegonzalez Update all development dependencies
|
||||||
|
- #5240: @josegonzalez Drop support for CentOS, Fedora, OpenSuse, as well as Debian 9
|
||||||
|
- #5281: @dependabot[bot] chore(deps): bump flask from 2.1.3 to 2.2.1 in /tests/apps/multi
|
||||||
|
- #5280: @dependabot[bot] chore(deps): bump flask from 2.1.3 to 2.2.1 in /tests/apps/python-flask
|
||||||
|
- #5284: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 222 to 223 in /tests/apps/php
|
||||||
|
|
||||||
|
## 0.27.10
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.10/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.10 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5276: @d6rkaiz Remove duplicate syntax for nginx.conf
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5274: @kennell readme: mention Ubuntu 22.04 compability
|
||||||
|
|
||||||
|
## 0.27.9
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.9/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.9 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5273: @josegonzalez Correct issue where more complex docker args were not properly parsed when scheduling containers
|
||||||
|
- #5272: @josegonzalez Add support for --global as app name when calling config-get trigger
|
||||||
|
- #5263: @alexgleason Update deprecated apt-key command
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5262: @josegonzalez Run shfmt against all test files
|
||||||
|
- #5257: @chrisjdixon Move nginx.conf.d includes after all other hard-coded config to allow for overrides
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5184: @yasoob New website. Closes #5175
|
||||||
|
- #5270: @dependabot[bot] chore(deps): bump werkzeug from 2.2.0 to 2.2.1 in /tests/apps/python-flask
|
||||||
|
- #5265: @dependabot[bot] chore(deps): bump werkzeug from 2.1.2 to 2.2.0 in /tests/apps/python-flask
|
||||||
|
- #5264: @dependabot[bot] chore(deps): bump sinatra from 2.2.1 to 2.2.2 in /tests/apps/ruby
|
||||||
|
- #5261: @dependabot[bot] chore(deps): bump luizm/action-sh-checker from 0.4.0 to 0.5.0
|
||||||
|
- #5258: @dependabot[bot] chore(deps): bump sinatra from 2.2.0 to 2.2.1 in /tests/apps/ruby
|
||||||
|
|
||||||
|
## 0.27.8
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.8/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.8 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5232: @YuukiHogo builder-build fix for DOKKU_DOCKERFILE_CACHE_BUILD and DOKKU_DOCKER_BUILD_OPTS variables
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5255: @josegonzalez export DOKKU_COMMAND for use in authentication systems
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5250: @dependabot[bot] chore(deps): bump flask from 2.1.2 to 2.1.3 in /tests/apps/multi
|
||||||
|
- #5251: @dependabot[bot] chore(deps): bump flask from 2.1.2 to 2.1.3 in /tests/apps/python-flask
|
||||||
|
- #5245: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 221 to 222 in /tests/apps/php
|
||||||
|
|
||||||
|
## 0.27.7
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.7/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.7 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5238: @josegonzalez Respect dokku system user/group when setting storage permissions on installation
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5239: @josegonzalez Add builder-type and image-stage labels to all images
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5241: @josegonzalez Clarify where logs are pulled from and general log shipping stance
|
||||||
|
- #5237: @josegonzalez Fix builder-pack:set command example
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5235: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 220 to 221 in /tests/apps/php
|
||||||
|
|
||||||
|
## 0.27.6
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.6/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.6 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5225: @josegonzalez Use original app name when setting include_labels for vector source
|
||||||
|
- #5228: @josegonzalez Always respect app.json formations in scale settings
|
||||||
|
- #5201: @josegonzalez Use pack as default builder for arm64 servers
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5230: @josegonzalez Clarify usage of build args to set environment variables for Dockerfile deploys
|
||||||
|
- #5208: @asokoloski-m Fix typo in dockerfile builder docs
|
||||||
|
- #5206: @AxelTheGerman Added dokku-litestream to list of community plugins
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5218: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 219 to 220 in /tests/apps/php
|
||||||
|
- #5222: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.10 to 11.0.11 in /tests/apps/java
|
||||||
|
- #5224: @josegonzalez Document that the community registry plugin should be uninstalled before upgrading past 0.24.x
|
||||||
|
- #5220: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.9 to 11.0.10 in /tests/apps/java
|
||||||
|
- #5212: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 218 to 219 in /tests/apps/php
|
||||||
|
- #5210: @dependabot[bot] chore(deps): bump monolog/monolog from 1.27.0 to 1.27.1 in /tests/apps/php
|
||||||
|
- #5204: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 217 to 218 in /tests/apps/php
|
||||||
|
|
||||||
|
## 0.27.5
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.5/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.5 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5183: @josegonzalez Filter apps when verifying app names
|
||||||
|
- #5199: @josegonzalez Revert "fix: Vector fails to start container due to --watch-config flag"
|
||||||
|
- #5197: @holamendi fix: Vector fails to start container due to --watch-config flag
|
||||||
|
- #5192: @josegonzalez Confirm installation of universe packages when installing on ubuntu
|
||||||
|
- #5193: @josegonzalez Force-set correct permissions on env files
|
||||||
|
- #5181: @josegonzalez Ensure we default SSH_NAME to NAME when filtering apps
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5196: @josegonzalez Disable herokuish usage on both armhf and arm64 platforms
|
||||||
|
- #5194: @josegonzalez Upgrade base Dockerfile image to phusion/baseimage:focal-1.2.0
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5200: @dependabot[bot] chore(deps): bump rack from 2.2.3 to 2.2.3.1 in /tests/apps/ruby
|
||||||
|
- #5198: @dependabot[bot] chore(deps): bump grunt from 1.5.2 to 1.5.3 in /tests/apps/multi
|
||||||
|
- #5187: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 216 to 217 in /tests/apps/php
|
||||||
|
|
||||||
|
## 0.27.4
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.4/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.4 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5180: @Bilal-io fixes rst-versions height
|
||||||
|
|
||||||
|
## 0.27.3
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.3/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.3 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5178: @josegonzalez Fix app filtering for authenticated usage
|
||||||
|
- #5173: @bitjockey42 Add 22.04 to supported distro versions
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5179: @Bilal-io Fixes to the Docs version switcher
|
||||||
|
- #5177: @josegonzalez docs: cleanup experimental warning in scheduler docs
|
||||||
|
- #5176: @josegonzalez Update installation requirements to mention arm64 and ubuntu 22.04
|
||||||
|
- #5174: @vladdoster Fix typos and phrasing in remote commands documentation
|
||||||
|
|
||||||
|
## 0.27.2
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.2/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.2 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5166: @josegonzalez Ensure permissions for global VHOST file are set to the dokku user on install
|
||||||
|
- #5141: @josegonzalez fix: set correct version on scheduler plugin
|
||||||
|
- #5069: @josegonzalez Do not start intermediate container when calling dokku run after a failed build
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5168: @josegonzalez Add support for Ubuntu 22.04
|
||||||
|
- #5125: @abulava Start the vector logging container after Docker daemon restarts
|
||||||
|
- #5117: @josegonzalez Upgrade to golang 1.17.9
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5167: @scottpashley Update client documentation to remove reference to unmaintained python client
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5120: @dependabot[bot] chore(deps): bump github/codeql-action from 1 to 2
|
||||||
|
- #5145: @dependabot[bot] chore(deps): bump jinja2 from 3.1.1 to 3.1.2 in /tests/apps/python-flask
|
||||||
|
- #5157: @dependabot[bot] chore(deps): bump luizm/action-sh-checker from 0.3.0 to 0.4.0
|
||||||
|
- #5160: @dependabot[bot] chore(deps): bump docker/setup-buildx-action from 1 to 2
|
||||||
|
- #5161: @dependabot[bot] chore(deps): bump docker/login-action from 1 to 2
|
||||||
|
- #5162: @dependabot[bot] chore(deps): bump docker/setup-qemu-action from 1 to 2
|
||||||
|
- #5153: @dependabot[bot] chore(deps): bump express from 4.17.3 to 4.18.1 in /tests/apps/config
|
||||||
|
- #5152: @dependabot[bot] chore(deps): bump express from 4.17.3 to 4.18.1 in /tests/apps/nodejs-express-noappjson
|
||||||
|
- #5151: @dependabot[bot] chore(deps): bump express from 4.17.3 to 4.18.1 in /tests/apps/nodejs-express-noprocfile
|
||||||
|
- #5150: @dependabot[bot] chore(deps): bump express from 4.17.3 to 4.18.1 in /tests/apps/nodejs-express
|
||||||
|
- #5154: @dependabot[bot] chore(deps): bump express from 4.17.3 to 4.18.1 in /tests/apps/gitsubmodules
|
||||||
|
- #5155: @dependabot[bot] chore(deps): bump express from 4.17.3 to 4.18.1 in /tests/apps/.websocket.disabled
|
||||||
|
- #5163: @dependabot[bot] chore(deps): bump minimist from 1.2.5 to 1.2.6 in /tests/apps/multi
|
||||||
|
- #5149: @dependabot[bot] chore(deps): bump express from 4.17.3 to 4.18.1 in /tests/apps/dockerfile-dokku-scale
|
||||||
|
- #5148: @dependabot[bot] chore(deps): bump express from 4.17.3 to 4.18.1 in /tests/apps/dockerfile-procfile-bad
|
||||||
|
- #5147: @dependabot[bot] chore(deps): bump express from 4.17.3 to 4.18.1 in /tests/apps/dockerfile-procfile
|
||||||
|
- #5144: @dependabot[bot] chore(deps): bump flask from 2.1.1 to 2.1.2 in /tests/apps/python-flask
|
||||||
|
- #5143: @dependabot[bot] chore(deps): bump werkzeug from 2.1.1 to 2.1.2 in /tests/apps/python-flask
|
||||||
|
- #5142: @dependabot[bot] chore(deps): bump flask from 2.1.1 to 2.1.2 in /tests/apps/multi
|
||||||
|
- #5137: @dependabot[bot] chore(deps): bump grunt from 1.4.1 to 1.5.2 in /tests/apps/multi
|
||||||
|
- #5119: @dependabot[bot] chore(deps): bump socket.io from 4.4.1 to 4.5.0 in /tests/apps/.websocket.disabled
|
||||||
|
|
||||||
|
## 0.27.1
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.1/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.1 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5095: @josegonzalez Ensure we properly clone and rename common properties
|
||||||
|
- #5094: @josegonzalez Handle case when apps:clone is run in a directory the dokku user does not have access to
|
||||||
|
- #5093: @josegonzalez Fix deploy branch setting
|
||||||
|
- #5068: @josegonzalez Properly set cron-id from flag
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5092: @josegonzalez Warn and exit non-zero when attempting to rebuild from a non-existent branch
|
||||||
|
- #5103: @naveensrinivasan Included githubactions in the dependabot config
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5090: @josegonzalez Clarify the exact command that is run once a day by cron tasks
|
||||||
|
- #5085: @josegonzalez Use issue template form functionality on github
|
||||||
|
- #5076: @stamp-cmd Lint Markdown, Remove unused links
|
||||||
|
- #5070: @josegonzalez Add discord as support channel
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5107: @dependabot[bot] chore(deps): bump actions/checkout from 2 to 3
|
||||||
|
- #5105: @dependabot[bot] chore(deps): bump ibiqlik/action-yamllint from 3.0.4 to 3.1
|
||||||
|
- #5109: @dependabot[bot] chore(deps): bump actions/upload-artifact from 2 to 3
|
||||||
|
- #5108: @dependabot[bot] chore(deps): bump hadolint/hadolint-action from 1.6.0 to 2.1.0
|
||||||
|
- #5110: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 215 to 216 in /tests/apps/php
|
||||||
|
- #5104: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 214 to 215 in /tests/apps/php
|
||||||
|
- #5097: @dependabot[bot] chore(deps): bump werkzeug from 2.1.0 to 2.1.1 in /tests/apps/python-flask
|
||||||
|
- #5098: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 213 to 214 in /tests/apps/php
|
||||||
|
- #5096: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.8 to 11.0.9 in /tests/apps/java
|
||||||
|
- #5091: @josegonzalez Update all dependencies for multi test app
|
||||||
|
- #5089: @dependabot[bot] chore(deps): bump minimist from 1.2.5 to 1.2.6 in /tests/apps/multi
|
||||||
|
- #5081: @dependabot[bot] chore(deps): bump jinja2 from 3.0.3 to 3.1.1 in /tests/apps/python-flask
|
||||||
|
- #5071: @dependabot[bot] chore(deps): bump monolog/monolog from 1.26.1 to 1.27.0 in /tests/apps/php
|
||||||
|
- #5075: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 212 to 213 in /tests/apps/php
|
||||||
|
- #5082: @dependabot[bot] chore(deps): bump werkzeug from 2.0.3 to 2.1.0 in /tests/apps/python-flask
|
||||||
|
- #5086: @dependabot[bot] chore(deps): bump flask from 2.0.3 to 2.1.1 in /tests/apps/multi
|
||||||
|
- #5087: @dependabot[bot] chore(deps): bump flask from 2.0.3 to 2.1.1 in /tests/apps/python-flask
|
||||||
|
- #5067: @dependabot[bot] chore(deps): bump maven-dependency-plugin from 3.2.0 to 3.3.0 in /tests/apps/java
|
||||||
|
|
||||||
|
## 0.27.0
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.27.0/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.27.0 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [0.27.0 migration guide](/docs/appendices/0.27.0-migration-guide.md) for more information on migrating to 0.27.0.
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5063: @josegonzalez Fix buildx support for releases
|
||||||
|
- #5061: @josegonzalez Use correct token when publish unit test results
|
||||||
|
- #5057: @josegonzalez Ensure we use the correct variable for WAIT
|
||||||
|
- #5052: @josegonzalez Run crontab under sudo to support rhel systems
|
||||||
|
- #5051: @josegonzalez Ensure vector component sources have valid names
|
||||||
|
- #5035: @nerg4l Fix help flag for logs command
|
||||||
|
- #5019: @josegonzalez Only rename app domains associated with a global domain
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5064: @josegonzalez Upgrade docker image to ubuntu focal
|
||||||
|
- #5058: @josegonzalez Add .shellcheckrc
|
||||||
|
- #5055: @josegonzalez Release dokku for 32-bit Raspbian Bullseye
|
||||||
|
- #5050: @josegonzalez Set the default memory unit type to megabytes
|
||||||
|
- #5017: @josegonzalez Add command to clear all proxy configs
|
||||||
|
|
||||||
|
### Refactors
|
||||||
|
|
||||||
|
- #4921: @josegonzalez Add ability to filter returnable apps
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5056: @miku86 Fix typo in port management docs
|
||||||
|
- #5018: @josegonzalez Add warning for setting PORT environment variable
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #5062: @dependabot[bot] chore(deps): bump django from 3.1.13 to 3.1.14 in /tests/apps/dockerfile-release
|
||||||
|
- #5053: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 211 to 212 in /tests/apps/php
|
||||||
|
- #5038: @dependabot[bot] chore(deps): bump flask from 2.0.2 to 2.0.3 in /tests/apps/multi
|
||||||
|
- #5048: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 210 to 211 in /tests/apps/php
|
||||||
|
- #5039: @dependabot[bot] chore(deps): bump sinatra from 2.1.0 to 2.2.0 in /tests/apps/ruby
|
||||||
|
- #5037: @dependabot[bot] chore(deps): bump flask from 2.0.2 to 2.0.3 in /tests/apps/python-flask
|
||||||
|
- #5036: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 207 to 210 in /tests/apps/php
|
||||||
|
- #5025: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.7 to 11.0.8 in /tests/apps/java
|
||||||
|
- #5026: @dependabot[bot] chore(deps): bump werkzeug from 2.0.2 to 2.0.3 in /tests/apps/python-flask
|
||||||
|
- #5027: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 206 to 207 in /tests/apps/php
|
||||||
|
- #5021: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 205 to 206 in /tests/apps/php
|
||||||
|
- #4975: @tcurdt add arm64 to the build
|
||||||
|
|
||||||
|
## 0.26.8
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.8/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.26.8 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5016: @josegonzalez Properly support the --global flag when detecting the scheduler
|
||||||
|
- #5015: @josegonzalez Avoid popd errors when dokku is run as root
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #5006: @josegonzalez Better go mod support in VSCode Dev Containers
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5014: @josegonzalez Clarify that all run containers are removed at the end of process execution
|
||||||
|
- #5010: @josegonzalez Add documentation for ps:restore
|
||||||
|
- #5009: @josegonzalez Clarify installation documentation
|
||||||
|
|
||||||
|
## 0.26.7
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.7/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.26.7 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #5003: @josegonzalez Respect pre-existing .env files when preparing the herokuish buildenv
|
||||||
|
- #4950: @emdienn Use exported environment vars during pack build
|
||||||
|
- #4999: @elhu Purge cache for all apps when calling buildpacks:set-property with --global flag
|
||||||
|
- #4988: @fomojola Conditionally restart NGINX
|
||||||
|
- #4922: @josegonzalez Gitignore more built plugin triggers in apps plugin
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4964: @josegonzalez Add log message when running state is false
|
||||||
|
- #4970: @josegonzalez Log the string error and not bytes when there is an issue updating the cron schedule
|
||||||
|
- #4924: @josegonzalez Update devcontainer to include aliased go packages
|
||||||
|
- #4920: @josegonzalez Ensure related go source and vscode plugins are installed in devcontainer
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4949: @IlyaSemenov docs: update herokuish upgrade instructions
|
||||||
|
- #4992: @anthonyshew Typo for deploying using image SHA
|
||||||
|
- #4976: @josegonzalez Update link in header to dokku pro
|
||||||
|
- #4972: @Dam-Buty Clarify cron:report command
|
||||||
|
- #4943: @Stormheg Fix typo in registry management documentation
|
||||||
|
- #4935: @josegonzalez Reword note about env vars in nginx config templates
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4995: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 203 to 205 in /tests/apps/php
|
||||||
|
- #4978: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 201 to 203 in /tests/apps/php
|
||||||
|
- #4936: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 200 to 201 in /tests/apps/php
|
||||||
|
- #4937: @dependabot[bot] chore(deps): bump socket.io from 4.3.2 to 4.4.0 in /tests/apps/.websocket.disabled
|
||||||
|
|
||||||
|
## 0.26.6
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.6/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.26.6 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4919: @nerg4l fix: do not validate global flag as an app name
|
||||||
|
- #4918: @josegonzalez Use netrc binary to properly release dokku client homebrew formula
|
||||||
|
|
||||||
|
## 0.26.5
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.5/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.26.5 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4917: @josegonzalez Update golang to fix golang tests
|
||||||
|
- #4915: @josegonzalez Add support for --global flag to network:set command
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4911: @josegonzalez Add initial dokku-pro documentation
|
||||||
|
- #4910: @josegonzalez Fix typo on persistent storage docs
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #4916: @josegonzalez Ignore new SC2295 shellcheck warning
|
||||||
|
- #4906: @josegonzalez Upgrade ci linters
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4914: @dependabot[bot] chore(deps): bump jinja2 from 3.0.2 to 3.0.3 in /tests/apps/python-flask
|
||||||
|
|
||||||
|
## 0.26.4
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.4/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.26.4 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4899: @josegonzalez Ensure we respect quotes and dollar signs in config vars
|
||||||
|
- #4890: @josegonzalez Drop which in favor of command -v
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4897: @josegonzalez Silence errors when verifying the ssl certificate
|
||||||
|
- #4891: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 199 to 200 in /tests/apps/php
|
||||||
|
|
||||||
## 0.26.3
|
## 0.26.3
|
||||||
|
|
||||||
Install/update via the bootstrap script:
|
Install/update via the bootstrap script:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
>
|
>
|
||||||
> If you'd like to sponsor specific functionality, see the project's [Sponsoring](https://github.com/dokku/.github/blob/master/SPONSORING.md) document.
|
> If you'd like to sponsor specific functionality, see the project's [Sponsoring](https://github.com/dokku/.github/blob/master/SPONSORING.md) document.
|
||||||
>
|
>
|
||||||
> If you need help figuring out how to use a specific buildpack, are seeing an issue in during the buildpack process, or are having issues using multiple buildpacks, please see our [slack channels or github discussion board](https://dokku.com/docs/getting-started/where-to-get-help/#monitored-locations). Issues pertaining to buildpacks may be closed and locked.
|
> If you need help figuring out how to use a specific buildpack, are seeing an issue in during the buildpack process, or are having issues using multiple buildpacks, please see our [chat channels or github discussion board](https://dokku.com/docs/getting-started/where-to-get-help/#monitored-locations). Issues pertaining to buildpacks may be closed and locked.
|
||||||
>
|
>
|
||||||
> If you need support for a version of Dokku that is more than a year old, your issue may be closed without an answer. Please upgrade to a recent version.
|
> If you need support for a version of Dokku that is more than a year old, your issue may be closed without an answer. Please upgrade to a recent version.
|
||||||
|
|
||||||
@@ -31,7 +31,7 @@
|
|||||||
> For problems affecting all applications, the report output for a broken application is useful for our debugging.
|
> For problems affecting all applications, the report output for a broken application is useful for our debugging.
|
||||||
> In these cases, you may run `dokku report` without any arguments to display the top-level reporting information.
|
> In these cases, you may run `dokku report` without any arguments to display the top-level reporting information.
|
||||||
|
|
||||||
### How (deb/make/rpm) and where (AWS, VirtualBox, physical, etc.) was Dokku installed?
|
### How (deb/make) and where (AWS, VirtualBox, physical, etc.) was Dokku installed?
|
||||||
|
|
||||||
### Additional information
|
### Additional information
|
||||||
|
|
||||||
|
|||||||
44
Makefile
@@ -1,17 +1,21 @@
|
|||||||
DOKKU_VERSION ?= master
|
DOKKU_VERSION ?= master
|
||||||
|
|
||||||
DOCKER_IMAGE_LABELER_VERSION ?= 0.2.2
|
TARGETARCH ?= amd64
|
||||||
HEROKUISH_VERSION ?= 0.5.25
|
|
||||||
NETRC_VERSION ?= 0.3.0
|
DOCKER_IMAGE_LABELER_VERSION ?= 0.5.0
|
||||||
PLUGN_VERSION ?= 0.6.1
|
HEROKUISH_VERSION ?= 0.5.37
|
||||||
PROCFILE_VERSION ?= 0.11.0
|
LAMBDA_BUILDER_VERSION ?= 0.4.0
|
||||||
SIGIL_VERSION ?= 0.6.0
|
NETRC_VERSION ?= 0.6.0
|
||||||
SSHCOMMAND_VERSION ?= 0.12.0
|
PLUGN_VERSION ?= 0.12.0
|
||||||
DOCKER_IMAGE_LABELER_URL ?= https://github.com/dokku/docker-image-labeler/releases/download/v${DOCKER_IMAGE_LABELER_VERSION}/docker-image-labeler_${DOCKER_IMAGE_LABELER_VERSION}_linux_x86_64.tgz
|
PROCFILE_VERSION ?= 0.15.0
|
||||||
NETRC_URL ?= https://github.com/dokku/netrc/releases/download/v${NETRC_VERSION}/netrc_${NETRC_VERSION}_linux_x86_64.tgz
|
SIGIL_VERSION ?= 0.9.0
|
||||||
PLUGN_URL ?= https://github.com/dokku/plugn/releases/download/v${PLUGN_VERSION}/plugn_${PLUGN_VERSION}_linux_x86_64.tgz
|
SSHCOMMAND_VERSION ?= 0.16.0
|
||||||
PROCFILE_UTIL_URL ?= https://github.com/josegonzalez/go-procfile-util/releases/download/v${PROCFILE_VERSION}/procfile-util_${PROCFILE_VERSION}_linux_x86_64.tgz
|
DOCKER_IMAGE_LABELER_URL ?= https://github.com/dokku/docker-image-labeler/releases/download/v${DOCKER_IMAGE_LABELER_VERSION}/docker-image-labeler_${DOCKER_IMAGE_LABELER_VERSION}_linux_${TARGETARCH}.tgz
|
||||||
SIGIL_URL ?= https://github.com/gliderlabs/sigil/releases/download/v${SIGIL_VERSION}/sigil_${SIGIL_VERSION}_Linux_x86_64.tgz
|
LAMBDA_BUILDER_URL ?= https://github.com/dokku/lambda-builder/releases/download/v${LAMBDA_BUILDER_VERSION}/lambda-builder_${LAMBDA_BUILDER_VERSION}_linux_${TARGETARCH}.tgz
|
||||||
|
NETRC_URL ?= https://github.com/dokku/netrc/releases/download/v${NETRC_VERSION}/netrc_${NETRC_VERSION}_linux_${TARGETARCH}.tgz
|
||||||
|
PLUGN_URL ?= https://github.com/dokku/plugn/releases/download/v${PLUGN_VERSION}/plugn_${PLUGN_VERSION}_linux_${TARGETARCH}.tgz
|
||||||
|
PROCFILE_UTIL_URL ?= https://github.com/josegonzalez/go-procfile-util/releases/download/v${PROCFILE_VERSION}/procfile-util_${PROCFILE_VERSION}_linux_${TARGETARCH}.tgz
|
||||||
|
SIGIL_URL ?= https://github.com/gliderlabs/sigil/releases/download/v${SIGIL_VERSION}/gliderlabs-sigil_${SIGIL_VERSION}_linux_${TARGETARCH}.tgz
|
||||||
SSHCOMMAND_URL ?= https://github.com/dokku/sshcommand/releases/download/v${SSHCOMMAND_VERSION}/sshcommand_${SSHCOMMAND_VERSION}_linux_x86_64.tgz
|
SSHCOMMAND_URL ?= https://github.com/dokku/sshcommand/releases/download/v${SSHCOMMAND_VERSION}/sshcommand_${SSHCOMMAND_VERSION}_linux_x86_64.tgz
|
||||||
STACK_URL ?= https://github.com/gliderlabs/herokuish.git
|
STACK_URL ?= https://github.com/gliderlabs/herokuish.git
|
||||||
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-20
|
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-20
|
||||||
@@ -36,12 +40,12 @@ endif
|
|||||||
|
|
||||||
include common.mk
|
include common.mk
|
||||||
|
|
||||||
.PHONY: all apt-update install version copyfiles copyplugin man-db plugins dependencies docker-image-labeler netrc sshcommand procfile-util plugn docker aufs stack count vagrant-acl-add vagrant-dokku go-build
|
.PHONY: all apt-update install version copyfiles copyplugin man-db plugins dependencies docker-image-labeler lambda-builder netrc sshcommand procfile-util plugn docker aufs stack count vagrant-acl-add vagrant-dokku go-build
|
||||||
|
|
||||||
|
include docs.mk
|
||||||
include tests.mk
|
include tests.mk
|
||||||
include package.mk
|
include package.mk
|
||||||
include deb.mk
|
include deb.mk
|
||||||
include rpm.mk
|
|
||||||
include arch.mk
|
include arch.mk
|
||||||
|
|
||||||
all:
|
all:
|
||||||
@@ -131,7 +135,7 @@ plugin-dependencies: plugn procfile-util
|
|||||||
plugins: plugn procfile-util docker
|
plugins: plugn procfile-util docker
|
||||||
sudo -E dokku plugin:install --core
|
sudo -E dokku plugin:install --core
|
||||||
|
|
||||||
dependencies: apt-update docker-image-labeler netrc sshcommand plugn procfile-util docker help2man man-db sigil dos2unix jq parallel
|
dependencies: apt-update docker-image-labeler lambda-builder netrc sshcommand plugn procfile-util docker help2man man-db sigil dos2unix jq parallel
|
||||||
$(MAKE) -e stack
|
$(MAKE) -e stack
|
||||||
|
|
||||||
apt-update:
|
apt-update:
|
||||||
@@ -155,22 +159,32 @@ man-db:
|
|||||||
docker-image-labeler:
|
docker-image-labeler:
|
||||||
wget -qO /tmp/docker-image-labeler_latest.tgz ${DOCKER_IMAGE_LABELER_URL}
|
wget -qO /tmp/docker-image-labeler_latest.tgz ${DOCKER_IMAGE_LABELER_URL}
|
||||||
tar xzf /tmp/docker-image-labeler_latest.tgz -C /usr/local/bin
|
tar xzf /tmp/docker-image-labeler_latest.tgz -C /usr/local/bin
|
||||||
|
mv /usr/local/bin/docker-image-labeler-${TARGETARCH} /usr/local/bin/docker-image-labeler
|
||||||
|
|
||||||
|
lambda-builder:
|
||||||
|
wget -qO /tmp/lambda-builder_latest.tgz ${LAMBDA_BUILDER_URL}
|
||||||
|
tar xzf /tmp/lambda-builder_latest.tgz -C /usr/local/bin
|
||||||
|
mv /usr/local/bin/lambda-builder-${TARGETARCH} /usr/local/bin/lambda-builder
|
||||||
|
|
||||||
netrc:
|
netrc:
|
||||||
wget -qO /tmp/netrc_latest.tgz ${NETRC_URL}
|
wget -qO /tmp/netrc_latest.tgz ${NETRC_URL}
|
||||||
tar xzf /tmp/netrc_latest.tgz -C /usr/local/bin
|
tar xzf /tmp/netrc_latest.tgz -C /usr/local/bin
|
||||||
|
mv /usr/local/bin/netrc-${TARGETARCH} /usr/local/bin/netrc
|
||||||
|
|
||||||
procfile-util:
|
procfile-util:
|
||||||
wget -qO /tmp/procfile-util_latest.tgz ${PROCFILE_UTIL_URL}
|
wget -qO /tmp/procfile-util_latest.tgz ${PROCFILE_UTIL_URL}
|
||||||
tar xzf /tmp/procfile-util_latest.tgz -C /usr/local/bin
|
tar xzf /tmp/procfile-util_latest.tgz -C /usr/local/bin
|
||||||
|
mv /usr/local/bin/procfile-util-${TARGETARCH} /usr/local/bin/procfile-util
|
||||||
|
|
||||||
plugn:
|
plugn:
|
||||||
wget -qO /tmp/plugn_latest.tgz ${PLUGN_URL}
|
wget -qO /tmp/plugn_latest.tgz ${PLUGN_URL}
|
||||||
tar xzf /tmp/plugn_latest.tgz -C /usr/local/bin
|
tar xzf /tmp/plugn_latest.tgz -C /usr/local/bin
|
||||||
|
mv /usr/local/bin/plugn-${TARGETARCH} /usr/local/bin/plugn
|
||||||
|
|
||||||
sigil:
|
sigil:
|
||||||
wget -qO /tmp/sigil_latest.tgz ${SIGIL_URL}
|
wget -qO /tmp/sigil_latest.tgz ${SIGIL_URL}
|
||||||
tar xzf /tmp/sigil_latest.tgz -C /usr/local/bin
|
tar xzf /tmp/sigil_latest.tgz -C /usr/local/bin
|
||||||
|
mv /usr/local/bin/gliderlabs-sigil-${TARGETARCH} /usr/local/bin/sigil
|
||||||
|
|
||||||
sshcommand:
|
sshcommand:
|
||||||
wget -qO /tmp/sshcommand_latest.tgz ${SSHCOMMAND_URL}
|
wget -qO /tmp/sshcommand_latest.tgz ${SSHCOMMAND_URL}
|
||||||
|
|||||||
126
README.md
@@ -3,7 +3,7 @@
|
|||||||
[](https://github.com/dokku/dokku/actions?query=workflow%3ACI)
|
[](https://github.com/dokku/dokku/actions?query=workflow%3ACI)
|
||||||
[](https://packagecloud.io/dokku/dokku)
|
[](https://packagecloud.io/dokku/dokku)
|
||||||
[](https://aur.archlinux.org/packages/dokku/)
|
[](https://aur.archlinux.org/packages/dokku/)
|
||||||
[](https://glider-slackin.herokuapp.com/)
|
[](https://slack.dokku.com/)
|
||||||
[](https://dokku.com/docs/getting-started/installation/)
|
[](https://dokku.com/docs/getting-started/installation/)
|
||||||
[](#sponsors)
|
[](#sponsors)
|
||||||
[](#backers)
|
[](#backers)
|
||||||
@@ -15,79 +15,67 @@ Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen.
|
|||||||
|
|
||||||
Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/dokku#sponsor)]
|
Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/dokku#sponsor)]
|
||||||
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/0/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/0/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/0/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/1/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/1/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/1/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/2/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/2/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/2/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/3/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/3/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/3/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/4/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/4/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/4/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/5/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/5/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/5/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/6/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/6/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/6/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/7/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/7/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/7/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/8/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/8/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/8/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/9/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/9/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/9/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/10/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/10/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/10/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/11/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/11/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/11/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/12/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/12/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/12/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/13/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/13/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/13/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/14/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/14/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/14/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/15/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/15/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/5/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/16/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/16/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/16/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/17/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/17/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/17/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/18/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/18/avatar.svg"></a>
|
[](https://opencollective.com/dokku/sponsor/18/website)
|
||||||
<a href="https://opencollective.com/dokku/sponsor/19/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/19/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/20/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/20/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/21/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/21/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/22/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/22/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/23/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/23/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/24/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/24/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/25/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/25/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/26/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/26/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/27/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/27/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/28/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/28/avatar.svg"></a>
|
|
||||||
<a href="https://opencollective.com/dokku/sponsor/29/website" target="_blank"><img src="https://opencollective.com/dokku/sponsor/29/avatar.svg"></a>
|
|
||||||
|
|
||||||
## Backers
|
## Backers
|
||||||
|
|
||||||
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/dokku#backer)]
|
Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/dokku#backer)]
|
||||||
|
|
||||||
<a href="https://opencollective.com/dokku/backer/0/website" target="_blank"><img src="https://opencollective.com/dokku/backer/0/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/0/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/1/website" target="_blank"><img src="https://opencollective.com/dokku/backer/1/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/1/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/2/website" target="_blank"><img src="https://opencollective.com/dokku/backer/2/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/2/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/3/website" target="_blank"><img src="https://opencollective.com/dokku/backer/3/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/3/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/4/website" target="_blank"><img src="https://opencollective.com/dokku/backer/4/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/4/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/5/website" target="_blank"><img src="https://opencollective.com/dokku/backer/5/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/5/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/6/website" target="_blank"><img src="https://opencollective.com/dokku/backer/6/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/6/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/7/website" target="_blank"><img src="https://opencollective.com/dokku/backer/7/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/7/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/8/website" target="_blank"><img src="https://opencollective.com/dokku/backer/8/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/8/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/9/website" target="_blank"><img src="https://opencollective.com/dokku/backer/9/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/9/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/10/website" target="_blank"><img src="https://opencollective.com/dokku/backer/10/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/10/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/11/website" target="_blank"><img src="https://opencollective.com/dokku/backer/11/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/11/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/12/website" target="_blank"><img src="https://opencollective.com/dokku/backer/12/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/12/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/13/website" target="_blank"><img src="https://opencollective.com/dokku/backer/13/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/13/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/14/website" target="_blank"><img src="https://opencollective.com/dokku/backer/14/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/14/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/15/website" target="_blank"><img src="https://opencollective.com/dokku/backer/15/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/15/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/16/website" target="_blank"><img src="https://opencollective.com/dokku/backer/16/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/16/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/17/website" target="_blank"><img src="https://opencollective.com/dokku/backer/17/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/17/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/18/website" target="_blank"><img src="https://opencollective.com/dokku/backer/18/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/18/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/19/website" target="_blank"><img src="https://opencollective.com/dokku/backer/19/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/19/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/20/website" target="_blank"><img src="https://opencollective.com/dokku/backer/20/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/20/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/21/website" target="_blank"><img src="https://opencollective.com/dokku/backer/21/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/21/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/22/website" target="_blank"><img src="https://opencollective.com/dokku/backer/22/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/22/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/23/website" target="_blank"><img src="https://opencollective.com/dokku/backer/23/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/23/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/24/website" target="_blank"><img src="https://opencollective.com/dokku/backer/24/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/24/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/25/website" target="_blank"><img src="https://opencollective.com/dokku/backer/25/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/25/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/26/website" target="_blank"><img src="https://opencollective.com/dokku/backer/26/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/26/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/27/website" target="_blank"><img src="https://opencollective.com/dokku/backer/27/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/27/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/28/website" target="_blank"><img src="https://opencollective.com/dokku/backer/28/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/28/website)
|
||||||
<a href="https://opencollective.com/dokku/backer/29/website" target="_blank"><img src="https://opencollective.com/dokku/backer/29/avatar.svg"></a>
|
[](https://opencollective.com/dokku/backer/29/website)
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
A fresh VM running any of the following operating systems:
|
A fresh VM running any of the following operating systems:
|
||||||
|
|
||||||
- Ubuntu 18.04/20.04 x64 - Any currently supported release
|
- Ubuntu 18.04 / 20.04 / 22.04 x64 - Any currently supported release
|
||||||
- Debian 9+ x64
|
- Debian 10+ x64
|
||||||
- CentOS 7 x64 *(experimental)*
|
|
||||||
- Arch Linux x64 *(experimental)*
|
- Arch Linux x64 *(experimental)*
|
||||||
|
|
||||||
An SSH keypair that can be used for application deployment. If this exists before installation, it will be automatically imported into dokku.
|
An SSH keypair that can be used for application deployment. If this exists before installation, it will be automatically imported into dokku.
|
||||||
@@ -98,8 +86,8 @@ Otherwise, you will need to import the keypair manually after installation using
|
|||||||
To install the latest stable release, run the following commands as a user who has access to `sudo`:
|
To install the latest stable release, run the following commands as a user who has access to `sudo`:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.3/bootstrap.sh
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.28.3/bootstrap.sh
|
||||||
sudo DOKKU_TAG=v0.26.3 bash bootstrap.sh
|
sudo DOKKU_TAG=v0.28.3 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.
|
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.
|
||||||
@@ -112,15 +100,15 @@ If you wish for a more unattended installation method, see [these](https://dokku
|
|||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
Full documentation - including advanced installation docs - are available online at [https://dokku.com/docs/getting-started/installation/](https://dokku.com/docs/getting-started/installation/).
|
Full documentation - including advanced installation docs - are available online at <https://dokku.com/docs/getting-started/installation/>.
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
|
|
||||||
You can use [GitHub Issues](https://github.com/dokku/dokku/issues), check [Troubleshooting](https://dokku.com/docs/getting-started/troubleshooting/) in the documentation, or join us on [Gliderlabs Slack in the #dokku channel](https://glider-slackin.herokuapp.com/).
|
You can use [GitHub Issues](https://github.com/dokku/dokku/issues), check [Troubleshooting](https://dokku.com/docs/getting-started/troubleshooting/) in the documentation, or join us on [Gliderlabs Slack in the #dokku channel](https://slack.dokku.com/).
|
||||||
|
|
||||||
## Contribution
|
## Contribution
|
||||||
|
|
||||||
After checking [GitHub Issues](https://github.com/dokku/dokku/issues), the [Troubleshooting Guide](https://dokku.com/docs/getting-started/troubleshooting/) or having a chat with us on [Gliderlabs Slack in the #dokku channel](https://glider-slackin.herokuapp.com/), feel free to fork and create a Pull Request.
|
After checking [GitHub Issues](https://github.com/dokku/dokku/issues), the [Troubleshooting Guide](https://dokku.com/docs/getting-started/troubleshooting/) or having a chat with us on [Gliderlabs Slack in the #dokku channel](https://slack.dokku.com/), feel free to fork and create a Pull Request.
|
||||||
|
|
||||||
While we may not merge your PR as is, they serve to start conversations and improve the general Dokku experience for all users.
|
While we may not merge your PR as is, they serve to start conversations and improve the general Dokku experience for all users.
|
||||||
|
|
||||||
|
|||||||
17
Vagrantfile
vendored
@@ -6,7 +6,6 @@ BOX_CPUS = ENV["BOX_CPUS"] || "1"
|
|||||||
BOX_MEMORY = ENV["BOX_MEMORY"] || "1024"
|
BOX_MEMORY = ENV["BOX_MEMORY"] || "1024"
|
||||||
DOKKU_DOMAIN = ENV["DOKKU_DOMAIN"] || "dokku.me"
|
DOKKU_DOMAIN = ENV["DOKKU_DOMAIN"] || "dokku.me"
|
||||||
DOKKU_IP = ENV["DOKKU_IP"] || "10.0.0.2"
|
DOKKU_IP = ENV["DOKKU_IP"] || "10.0.0.2"
|
||||||
FORWARDED_PORT = (ENV["FORWARDED_PORT"] || '8080').to_i
|
|
||||||
PREBUILT_STACK_URL = File.exist?("#{File.dirname(__FILE__)}/stack.tgz") ? 'file:///root/dokku/stack.tgz' : nil
|
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"
|
PUBLIC_KEY_PATH = "#{Dir.home}/.ssh/id_rsa.pub"
|
||||||
|
|
||||||
@@ -43,7 +42,6 @@ Vagrant::configure("2") do |config|
|
|||||||
|
|
||||||
config.vm.define "dokku", primary: true do |vm|
|
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"
|
||||||
vm.vm.network :forwarded_port, guest: 80, host: FORWARDED_PORT
|
|
||||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||||
vm.vm.network :private_network, ip: DOKKU_IP
|
vm.vm.network :private_network, ip: DOKKU_IP
|
||||||
|
|
||||||
@@ -72,7 +70,6 @@ Vagrant::configure("2") do |config|
|
|||||||
|
|
||||||
# For windows users. Sharing folder from windows creates problem with sym links and so, sync the repo instead from GOS.
|
# For windows users. Sharing folder from windows creates problem with sym links and so, sync the repo instead from GOS.
|
||||||
config.vm.define "dokku-windows", autostart: false do |vm|
|
config.vm.define "dokku-windows", autostart: false do |vm|
|
||||||
vm.vm.network :forwarded_port, guest: 80, host: FORWARDED_PORT
|
|
||||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||||
vm.vm.network :private_network, ip: DOKKU_IP
|
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 >/dev/null"
|
||||||
@@ -81,28 +78,17 @@ Vagrant::configure("2") do |config|
|
|||||||
|
|
||||||
config.vm.define "dokku-deb", autostart: false do |vm|
|
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"
|
||||||
vm.vm.network :forwarded_port, guest: 80, host: FORWARDED_PORT
|
|
||||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||||
vm.vm.network :private_network, ip: DOKKU_IP
|
vm.vm.network :private_network, ip: DOKKU_IP
|
||||||
vm.vm.provision :shell, :inline => "cd /root/dokku && make install-from-deb"
|
vm.vm.provision :shell, :inline => "cd /root/dokku && make install-from-deb"
|
||||||
end
|
end
|
||||||
|
|
||||||
config.vm.define "dokku-rpm", autostart: false do |vm|
|
|
||||||
vm.vm.box = "centos/7"
|
|
||||||
vm.vm.synced_folder File.dirname(__FILE__), "/root/dokku"
|
|
||||||
vm.vm.network :forwarded_port, guest: 80, host: FORWARDED_PORT
|
|
||||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
|
||||||
vm.vm.network :private_network, ip: DOKKU_IP
|
|
||||||
vm.vm.provision :shell, :inline => "cd /root/dokku && bash bootstrap.sh"
|
|
||||||
end
|
|
||||||
|
|
||||||
config.vm.define "build", autostart: false do |vm|
|
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"
|
||||||
vm.vm.network :forwarded_port, guest: 80, host: FORWARDED_PORT
|
|
||||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||||
vm.vm.network :private_network, ip: DOKKU_IP
|
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}"
|
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}"
|
||||||
vm.vm.provision :shell, :inline => "export IS_RELEASE=true && cd /root/dokku && make deb-all rpm-all"
|
vm.vm.provision :shell, :inline => "export IS_RELEASE=true && cd /root/dokku && make deb-all"
|
||||||
end
|
end
|
||||||
|
|
||||||
config.vm.define "build-arch", autostart: false do |vm|
|
config.vm.define "build-arch", autostart: false do |vm|
|
||||||
@@ -111,7 +97,6 @@ Vagrant::configure("2") do |config|
|
|||||||
if Pathname.new("#{File.dirname(__FILE__)}/../dokku-arch").exist?
|
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"
|
||||||
end
|
end
|
||||||
vm.vm.network :forwarded_port, guest: 80, host: FORWARDED_PORT
|
|
||||||
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
vm.vm.hostname = "#{DOKKU_DOMAIN}"
|
||||||
vm.vm.network :private_network, ip: DOKKU_IP
|
vm.vm.network :private_network, ip: DOKKU_IP
|
||||||
vm.vm.provision :shell, :inline => "cd /dokku && make arch-all", privileged: false
|
vm.vm.provision :shell, :inline => "cd /dokku && make arch-all", privileged: false
|
||||||
|
|||||||
48
bootstrap.sh
@@ -3,7 +3,7 @@ set -eo pipefail
|
|||||||
[[ $TRACE ]] && set -x
|
[[ $TRACE ]] && set -x
|
||||||
|
|
||||||
# A script to bootstrap dokku.
|
# A script to bootstrap dokku.
|
||||||
# It expects to be run on Ubuntu 18.04/20.04, or CentOS 7 via 'sudo'
|
# It expects to be run on Ubuntu 18.04/20.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)
|
# 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.
|
# 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.
|
# That's good because it prevents our output overlapping with wget's.
|
||||||
# It also means that we can't run a partially downloaded script.
|
# It also means that we can't run a partially downloaded script.
|
||||||
|
|
||||||
SUPPORTED_VERSIONS="Debian [9, 10, 11], CentOS [7], Fedora (partial) [33, 34], Ubuntu [18.04, 20.04]"
|
SUPPORTED_VERSIONS="Debian [10, 11], Ubuntu [18.04, 20.04, 22.04]"
|
||||||
|
|
||||||
log-fail() {
|
log-fail() {
|
||||||
declare desc="log fail formatter"
|
declare desc="log fail formatter"
|
||||||
@@ -63,7 +63,7 @@ install-requirements() {
|
|||||||
apt-get -qq -y --no-install-recommends install software-properties-common
|
apt-get -qq -y --no-install-recommends install software-properties-common
|
||||||
fi
|
fi
|
||||||
|
|
||||||
add-apt-repository universe >/dev/null
|
add-apt-repository -y universe >/dev/null
|
||||||
apt-get update -qq >/dev/null
|
apt-get update -qq >/dev/null
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -139,9 +139,6 @@ install-dokku-from-package() {
|
|||||||
debian | ubuntu)
|
debian | ubuntu)
|
||||||
install-dokku-from-deb-package "$@"
|
install-dokku-from-deb-package "$@"
|
||||||
;;
|
;;
|
||||||
centos | fedora | rhel)
|
|
||||||
install-dokku-from-rpm-package "$@"
|
|
||||||
;;
|
|
||||||
*)
|
*)
|
||||||
log-fail "Unsupported Linux distribution. For manual installation instructions, consult https://dokku.com/docs/getting-started/advanced-installation/"
|
log-fail "Unsupported Linux distribution. For manual installation instructions, consult https://dokku.com/docs/getting-started/advanced-installation/"
|
||||||
;;
|
;;
|
||||||
@@ -163,7 +160,7 @@ install-dokku-from-deb-package() {
|
|||||||
local NO_INSTALL_RECOMMENDS=${DOKKU_NO_INSTALL_RECOMMENDS:=""}
|
local NO_INSTALL_RECOMMENDS=${DOKKU_NO_INSTALL_RECOMMENDS:=""}
|
||||||
local OS_ID
|
local OS_ID
|
||||||
|
|
||||||
if ! in-array "$DOKKU_DISTRO_VERSION" "18.04" "20.04" "9" "10" "11"; then
|
if ! in-array "$DOKKU_DISTRO_VERSION" "18.04" "20.04" "22.04" "10" "11"; then
|
||||||
log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
|
log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -195,7 +192,7 @@ install-dokku-from-deb-package() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
|
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
|
||||||
OS_IDS=("bionic" "focal")
|
OS_IDS=("bionic" "focal" "jammy")
|
||||||
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||||
OS_ID="bionic"
|
OS_ID="bionic"
|
||||||
fi
|
fi
|
||||||
@@ -205,14 +202,14 @@ install-dokku-from-deb-package() {
|
|||||||
OS_ID="bullseye"
|
OS_ID="bullseye"
|
||||||
fi
|
fi
|
||||||
elif [[ "$DOKKU_DISTRO" == "raspbian" ]]; then
|
elif [[ "$DOKKU_DISTRO" == "raspbian" ]]; then
|
||||||
OS_IDS=("buster")
|
OS_IDS=("buster" "bullseye")
|
||||||
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||||
OS_ID="buster"
|
OS_ID="bullseye"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "--> Installing dokku"
|
echo "--> Installing dokku"
|
||||||
wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -
|
wget -qO- https://packagecloud.io/dokku/dokku/gpgkey | sudo tee /etc/apt/trusted.gpg.d/dokku.asc
|
||||||
echo "deb https://packagecloud.io/dokku/dokku/$DOKKU_DISTRO/ $OS_ID main" | tee /etc/apt/sources.list.d/dokku.list
|
echo "deb https://packagecloud.io/dokku/dokku/$DOKKU_DISTRO/ $OS_ID main" | tee /etc/apt/sources.list.d/dokku.list
|
||||||
apt-get update -qq >/dev/null
|
apt-get update -qq >/dev/null
|
||||||
|
|
||||||
@@ -231,35 +228,6 @@ install-dokku-from-deb-package() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
install-dokku-from-rpm-package() {
|
|
||||||
local DOKKU_CHECKOUT="$1"
|
|
||||||
|
|
||||||
if ! in-array "$DOKKU_DISTRO_VERSION" "7"; then
|
|
||||||
log-fail "Unsupported Linux distribution. Only the following versions are supported: $SUPPORTED_VERSIONS"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "--> Installing docker"
|
|
||||||
curl -fsSL https://get.docker.com/ | sh
|
|
||||||
|
|
||||||
echo "--> Installing epel for nginx packages to be available"
|
|
||||||
yum install -y epel-release
|
|
||||||
|
|
||||||
echo "--> Installing herokuish and dokku"
|
|
||||||
curl -s https://packagecloud.io/install/repositories/dokku/dokku/script.rpm.sh | bash
|
|
||||||
if [[ -n $DOKKU_CHECKOUT ]]; then
|
|
||||||
yum -y install herokuish "dokku-$DOKKU_CHECKOUT"
|
|
||||||
else
|
|
||||||
yum -y install herokuish dokku
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "--> Enabling docker and nginx on system startup"
|
|
||||||
systemctl enable docker
|
|
||||||
systemctl enable nginx
|
|
||||||
|
|
||||||
echo "--> Starting nginx"
|
|
||||||
systemctl start nginx
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
export DOKKU_DISTRO DOKKU_DISTRO_VERSION
|
export DOKKU_DISTRO DOKKU_DISTRO_VERSION
|
||||||
# shellcheck disable=SC1091
|
# shellcheck disable=SC1091
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
GO_ARGS ?=
|
GO_ARGS ?=
|
||||||
GO_PLUGIN_MAKE_TARGET ?= build
|
GO_PLUGIN_MAKE_TARGET ?= build
|
||||||
GO_REPO_ROOT := /go/src/github.com/dokku/dokku
|
GO_REPO_ROOT := /go/src/github.com/dokku/dokku
|
||||||
BUILD_IMAGE := golang:1.15.6
|
BUILD_IMAGE := golang:1.17.9
|
||||||
GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache
|
GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache
|
||||||
GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod
|
GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod
|
||||||
GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT)
|
GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT)
|
||||||
|
|||||||
154
contrib/build-docs
Executable file
@@ -0,0 +1,154 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
readonly ROOT_DIR="$(cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")" && pwd)"
|
||||||
|
|
||||||
|
main() {
|
||||||
|
pushd "$ROOT_DIR" >/dev/null || return 1
|
||||||
|
rm -rf docs-main tmp/docs-source tmp/docs-build # tmp/docs-build
|
||||||
|
cp -r docs docs-main
|
||||||
|
|
||||||
|
echo "====> Generating docs image"
|
||||||
|
make docs-build-image
|
||||||
|
|
||||||
|
echo "====> Fetching latest docs"
|
||||||
|
git clone -q https://github.com/dokku/docs.git tmp/docs-build
|
||||||
|
|
||||||
|
echo "====> Processing version: latest"
|
||||||
|
rm -rf tmp/docs-build/docs
|
||||||
|
git clone -q https://github.com/dokku/dokku.git tmp/docs-source
|
||||||
|
|
||||||
|
rm -rf docs/assets
|
||||||
|
mkdir -p docs/assets
|
||||||
|
cp -r docs-main/assets/extra.css docs/assets/extra.css
|
||||||
|
cp -r docs-main/assets/favicons docs/assets/favicons
|
||||||
|
cp -r docs-main/assets/dokku-logo.svg docs/assets/dokku-logo.svg
|
||||||
|
|
||||||
|
rm -rf tmp/docs-build/assets
|
||||||
|
cp -r docs-main/assets tmp/docs-build/assets
|
||||||
|
cp docs-main/_build/app-nginx.conf.sigil tmp/docs-build/app-nginx.conf.sigil
|
||||||
|
mkdir -p tmp/docs-build/nginx.conf.d
|
||||||
|
touch tmp/docs-build/.static
|
||||||
|
echo "[]" >tmp/docs-build/versions.json
|
||||||
|
|
||||||
|
sed -i.bak "s/outdated/outdated_hidden/g" docs/_overrides/main.html && rm docs/_overrides/main.html.bak
|
||||||
|
echo "----> Generating docs"
|
||||||
|
make docs-build
|
||||||
|
if [[ -n "$GITHUB_ACTION" ]]; then
|
||||||
|
sudo chown -R "$(whoami)" site
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf site/_build
|
||||||
|
mv site tmp/docs-build/docs
|
||||||
|
mv docs/home.html tmp/docs-build/index.html
|
||||||
|
sed -i.bak "s/{{NAME}}~{{REF}}/docs/g" tmp/docs-build/index.html && rm tmp/docs-build/index.html.bak
|
||||||
|
sed -i.bak "s/{{NAME}}/docs/g" tmp/docs-build/index.html && rm tmp/docs-build/index.html.bak
|
||||||
|
sed -i.bak 's/="\/docs\/"/="\/"/g' tmp/docs-build/index.html && rm tmp/docs-build/index.html.bak
|
||||||
|
|
||||||
|
jq -C -r '.["max-versions"][]' docs-main/assets/versions.json | while read -r current_version; do
|
||||||
|
major="$(echo "$current_version" | cut -d'.' -f1)"
|
||||||
|
minor="$(echo "$current_version" | cut -d'.' -f2)"
|
||||||
|
patch="$(echo "$current_version" | cut -d'.' -f3)"
|
||||||
|
while true; do
|
||||||
|
if [[ "$patch" -lt 0 ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
version="${major}.${minor}.${patch}"
|
||||||
|
echo "====> Processing version: ${major}.${minor}.${patch}"
|
||||||
|
|
||||||
|
if [[ "$major" -lt 1 ]]; then
|
||||||
|
if [[ "$current_version" != "$version" ]]; then
|
||||||
|
echo " Writing rewrite rule"
|
||||||
|
echo "rewrite ^/docs~v$version/(.*)$ /docs~v$current_version/\$1 redirect;" >"tmp/docs-build/nginx.conf.d/$version.conf"
|
||||||
|
echo " Removing old docs"
|
||||||
|
rm -rf "tmp/docs-build/docs~v${version}"
|
||||||
|
patch=$((patch - 1))
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
jq --arg title "v$version" --arg version "docs~v$version" '. += [{"title": $title, "version": $version, "aliases": []}]' tmp/docs-build/versions.json >tmp/docs-build/versions.json.bak
|
||||||
|
mv tmp/docs-build/versions.json.bak tmp/docs-build/versions.json
|
||||||
|
if [[ -d "tmp/docs-build/docs~v${version}" ]]; then
|
||||||
|
echo " ! Docs exist, skipping regeneration"
|
||||||
|
rm -rf "tmp/docs-build/docs~v${version}/assets/favicons"
|
||||||
|
cp -r docs-main/assets/favicons "tmp/docs-build/docs~v${version}/assets/favicons"
|
||||||
|
cp -r docs-main/assets/dokku-logo.svg "tmp/docs-build/docs~v${version}/assets/dokku-logo.svg"
|
||||||
|
cp -r docs-main/assets/extra.css "tmp/docs-build/docs~v${version}/assets/extra.css"
|
||||||
|
patch=$((patch - 1))
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
git -C tmp/docs-source checkout -q -- .
|
||||||
|
git -C tmp/docs-source checkout -q "tags/v${version}" -b "v${version}-branch"
|
||||||
|
rm -rf docs
|
||||||
|
mv tmp/docs-source/docs docs
|
||||||
|
|
||||||
|
rm -rf docs/assets
|
||||||
|
mkdir -p docs/assets
|
||||||
|
cp -r docs-main/assets/favicons docs/assets/favicons
|
||||||
|
cp -r docs-main/assets/dokku-logo.svg docs/assets/dokku-logo.svg
|
||||||
|
cp -r docs-main/assets/extra.css docs/assets/extra.css
|
||||||
|
|
||||||
|
cp -r docs-main/_build docs/_build
|
||||||
|
cp -r docs-main/_overrides docs/_overrides
|
||||||
|
git checkout -q -- mkdocs.yml
|
||||||
|
sed -i.bak "s/site_dir: site/site_dir: docs~v$version/g" mkdocs.yml && rm mkdocs.yml.bak
|
||||||
|
if [[ ! -f docs/template.html ]]; then
|
||||||
|
if [[ "$patch" -eq 0 ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "----> Generating docs"
|
||||||
|
if ! make docs-build; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -d "docs~v${version}" ]]; then
|
||||||
|
if [[ -n "$GITHUB_ACTION" ]]; then
|
||||||
|
sudo chown -R "$(whoami)" "docs~v${version}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf "docs~v${version}/_build"
|
||||||
|
mv "docs~v${version}" "tmp/docs-build/docs~v${version}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$patch" -eq 0 ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
patch=$((patch - 1))
|
||||||
|
done
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "====> Rebuild versions"
|
||||||
|
if [[ -f "tmp/docs-build/versions.json" ]]; then
|
||||||
|
python contrib/sort-mkdocs-versions
|
||||||
|
else
|
||||||
|
echo " No version file exists"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "====> Cleanup main repo"
|
||||||
|
rm -rf docs
|
||||||
|
mv docs-main docs
|
||||||
|
git checkout -- mkdocs.yml docs
|
||||||
|
|
||||||
|
if [[ "$(git -C tmp/docs-build ls-files -dmo)" == "docs/sitemap.xml.gz" ]]; then
|
||||||
|
echo " ! No doc changes found"
|
||||||
|
git -C tmp/docs-build checkout -- docs/sitemap.xml.gz
|
||||||
|
else
|
||||||
|
echo "====> Pushing docs"
|
||||||
|
git -C tmp/docs-build add .
|
||||||
|
git -C tmp/docs-build commit -m "chore: regenerate docs"
|
||||||
|
|
||||||
|
if [[ -n "$BOT_GITHUB_USERNAME" ]] && [[ -n "$BOT_GITHUB_API_TOKEN" ]]; then
|
||||||
|
git -C tmp/docs-build remote set-url origin "https://$BOT_GITHUB_USERNAME:$BOT_GITHUB_API_TOKEN@github.com/dokku/docs.git"
|
||||||
|
fi
|
||||||
|
|
||||||
|
git -C tmp/docs-build push origin master
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
@@ -18,7 +18,7 @@ WORKDIR ${WORKDIR}
|
|||||||
COPY Makefile ${WORKDIR}/
|
COPY Makefile ${WORKDIR}/
|
||||||
COPY *.mk ${WORKDIR}/
|
COPY *.mk ${WORKDIR}/
|
||||||
|
|
||||||
RUN make deb-setup rpm-setup sshcommand plugn
|
RUN make deb-setup sshcommand plugn
|
||||||
|
|
||||||
COPY . ${WORKDIR}
|
COPY . ${WORKDIR}
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
|
|||||||
IS_RELEASE=${IS_RELEASE} \
|
IS_RELEASE=${IS_RELEASE} \
|
||||||
SKIP_GO_CLEAN=true \
|
SKIP_GO_CLEAN=true \
|
||||||
make version copyfiles \
|
make version copyfiles \
|
||||||
&& make deb-dokku rpm-dokku
|
&& make deb-dokku
|
||||||
|
|
||||||
FROM builder as armhf
|
FROM builder as armhf
|
||||||
|
|
||||||
@@ -59,4 +59,24 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
|
|||||||
GOARCH=arm make version copyfiles \
|
GOARCH=arm make version copyfiles \
|
||||||
&& DOKKU_ARCHITECTURE=armhf GOARCH=arm make deb-dokku
|
&& DOKKU_ARCHITECTURE=armhf GOARCH=arm make deb-dokku
|
||||||
|
|
||||||
|
FROM builder as arm64
|
||||||
|
|
||||||
|
COPY --from=armhf /tmp /tmp
|
||||||
|
COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated
|
||||||
|
|
||||||
|
RUN rm -rf /tmp/build-dokku
|
||||||
|
|
||||||
|
ARG PLUGIN_MAKE_TARGET
|
||||||
|
ARG DOKKU_VERSION=master
|
||||||
|
ARG DOKKU_GIT_REV
|
||||||
|
ARG IS_RELEASE=false
|
||||||
|
|
||||||
|
RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
|
||||||
|
DOKKU_VERSION=${DOKKU_VERSION} \
|
||||||
|
DOKKU_GIT_REV=${DOKKU_GIT_REV} \
|
||||||
|
IS_RELEASE=${IS_RELEASE} \
|
||||||
|
SKIP_GO_CLEAN=true \
|
||||||
|
GOARCH=arm64 make version copyfiles \
|
||||||
|
&& DOKKU_ARCHITECTURE=arm64 GOARCH=arm64 make deb-dokku
|
||||||
|
|
||||||
RUN ls -lha /tmp/
|
RUN ls -lha /tmp/
|
||||||
|
|||||||
@@ -5,19 +5,17 @@ import shutil
|
|||||||
import subprocess
|
import subprocess
|
||||||
from requests.auth import HTTPBasicAuth
|
from requests.auth import HTTPBasicAuth
|
||||||
|
|
||||||
PACKAGECLOUD_TOKEN = os.getenv('DOKKU_PACKAGECLOUD_TOKEN')
|
PACKAGECLOUD_TOKEN = os.getenv("DOKKU_PACKAGECLOUD_TOKEN")
|
||||||
|
|
||||||
|
|
||||||
def download_file(filename, url):
|
def download_file(filename, url):
|
||||||
r = requests.get(url, stream=True)
|
r = requests.get(url, stream=True)
|
||||||
with open(filename, 'wb') as f:
|
with open(filename, "wb") as f:
|
||||||
shutil.copyfileobj(r.raw, f)
|
shutil.copyfileobj(r.raw, f)
|
||||||
|
|
||||||
|
|
||||||
def upload_file(filename):
|
def upload_file(filename):
|
||||||
versions = [
|
versions = ["jammy"]
|
||||||
"focal"
|
|
||||||
]
|
|
||||||
cmd_template = "package_cloud push dokku/dokku/ubuntu/{0} {1}"
|
cmd_template = "package_cloud push dokku/dokku/ubuntu/{0} {1}"
|
||||||
for version in versions:
|
for version in versions:
|
||||||
cmd = cmd_template.format(version, filename)
|
cmd = cmd_template.format(version, filename)
|
||||||
@@ -25,21 +23,22 @@ def upload_file(filename):
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
auth = HTTPBasicAuth(PACKAGECLOUD_TOKEN, '')
|
auth = HTTPBasicAuth(PACKAGECLOUD_TOKEN, "")
|
||||||
base = requests.get('https://packagecloud.io/api/v1/repos/dokku/dokku/packages/deb/ubuntu/bionic.json',
|
base = requests.get(
|
||||||
auth=auth)
|
"https://packagecloud.io/api/v1/repos/dokku/dokku/packages/deb/ubuntu/focal.json",
|
||||||
|
auth=auth,
|
||||||
|
)
|
||||||
data = base.json()
|
data = base.json()
|
||||||
urls = []
|
urls = []
|
||||||
for package in data:
|
for package in data:
|
||||||
urls.append(package['versions_url'])
|
urls.append(package["versions_url"])
|
||||||
|
|
||||||
download_urls = {}
|
download_urls = {}
|
||||||
for url in urls:
|
for url in urls:
|
||||||
base = requests.get('https://packagecloud.io{0}'.format(url),
|
base = requests.get("https://packagecloud.io{0}".format(url), auth=auth)
|
||||||
auth=auth)
|
|
||||||
data = base.json()
|
data = base.json()
|
||||||
for version in data:
|
for version in data:
|
||||||
download_urls['downloads/' + version['filename']] = version['download_url']
|
download_urls["downloads/" + version["filename"]] = version["download_url"]
|
||||||
|
|
||||||
for filename, download_url in download_urls.items():
|
for filename, download_url in download_urls.items():
|
||||||
print("downloading {0}".format(filename))
|
print("downloading {0}".format(filename))
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ main() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if [[ "$0" == "dokku" ]] || [[ "$0" == *dokku_client.sh ]] || [[ "$0" == $(which dokku) ]]; then
|
if [[ "$0" == "dokku" ]] || [[ "$0" == *dokku_client.sh ]] || [[ "$0" == $(command -v dokku) ]]; then
|
||||||
main "$@"
|
main "$@"
|
||||||
exit $?
|
exit $?
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -134,11 +134,10 @@ fn-publish-package() {
|
|||||||
local OS_ID ex
|
local OS_ID ex
|
||||||
|
|
||||||
[[ "$IS_RELEASE" == "true" ]] && REPOSITORY=dokku/dokku
|
[[ "$IS_RELEASE" == "true" ]] && REPOSITORY=dokku/dokku
|
||||||
[[ "$RELEASE_TYPE" == "rpm" ]] && DIST=el/7
|
|
||||||
[[ "$RELEASE_TYPE" == "raspbian" ]] && DIST=raspbian
|
[[ "$RELEASE_TYPE" == "raspbian" ]] && DIST=raspbian
|
||||||
|
|
||||||
if [[ "$RELEASE_TYPE" == "raspbian" ]]; then
|
if [[ "$RELEASE_TYPE" == "raspbian" ]]; then
|
||||||
OS_IDS=("buster")
|
OS_IDS=("buster" "bullseye")
|
||||||
for OS_ID in "${OS_IDS[@]}"; do
|
for OS_ID in "${OS_IDS[@]}"; do
|
||||||
log-info "(release-dokku) pushing deb to packagecloud.com/${REPOSITORY}/${DIST}"
|
log-info "(release-dokku) pushing deb to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||||
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||||
@@ -148,7 +147,7 @@ fn-publish-package() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
elif [[ "$DIST" == "ubuntu" ]]; then
|
elif [[ "$DIST" == "ubuntu" ]]; then
|
||||||
OS_IDS=("bionic" "focal")
|
OS_IDS=("bionic" "focal" "jammy")
|
||||||
for OS_ID in "${OS_IDS[@]}"; do
|
for OS_ID in "${OS_IDS[@]}"; do
|
||||||
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
|
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||||
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||||
@@ -159,7 +158,7 @@ fn-publish-package() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
DIST=debian
|
DIST=debian
|
||||||
OS_IDS=("stretch" "buster" "bullseye")
|
OS_IDS=("buster" "bullseye")
|
||||||
for OS_ID in "${OS_IDS[@]}"; do
|
for OS_ID in "${OS_IDS[@]}"; do
|
||||||
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
|
log-info "(release-dokku) pushing ${RELEASE_TYPE} to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||||
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||||
@@ -224,7 +223,7 @@ fn-repo-update() {
|
|||||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/assets/style.css
|
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/assets/style.css
|
||||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/development/release-process.md
|
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/install/docker.md
|
||||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/getting-started/installation.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 "$CURRENT_VERSION" "$NEXT_VERSION" docs/home.html
|
||||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/template.html
|
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/template.html
|
||||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" README.md
|
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" README.md
|
||||||
@@ -350,8 +349,22 @@ fn-require-bin() {
|
|||||||
|
|
||||||
fn-build-docker-image() {
|
fn-build-docker-image() {
|
||||||
declare desc="Builds the dokku docker image and tags it with the given version"
|
declare desc="Builds the dokku docker image and tags it with the given version"
|
||||||
declare VERSION="$1"
|
declare VERSION="$1" IS_RELEASE="$2"
|
||||||
docker build -t "dokku/dokku:$VERSION" .
|
|
||||||
|
if [[ "$IS_RELEASE" == "true" ]]; then
|
||||||
|
docker buildx build \
|
||||||
|
--platform linux/arm,linux/arm64,linux/amd64 \
|
||||||
|
--progress plain \
|
||||||
|
--push \
|
||||||
|
--tag "dokku/dokku:latest" \
|
||||||
|
--tag "dokku/dokku:$VERSION" .
|
||||||
|
else
|
||||||
|
docker buildx build \
|
||||||
|
--platform linux/arm,linux/arm64,linux/amd64 \
|
||||||
|
--progress plain \
|
||||||
|
--tag "dokku/dokku:latest" \
|
||||||
|
--tag "dokku/dokku:$(echo "$VERSION" | tr + -)" .
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
@@ -392,31 +405,28 @@ main() {
|
|||||||
fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION"
|
fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION"
|
||||||
fn-build-dokku "$IS_RELEASE" "$NEXT_VERSION" || log-fail "Error building package"
|
fn-build-dokku "$IS_RELEASE" "$NEXT_VERSION" || log-fail "Error building package"
|
||||||
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error extracting deb package"
|
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error extracting deb package"
|
||||||
|
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error extracting deb package"
|
||||||
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package"
|
fn-extract-package "$IS_RELEASE" "dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error extracting deb package"
|
||||||
fn-extract-package "$IS_RELEASE" "dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error extracting rpm package"
|
mkdir -p build/package
|
||||||
cp -f "build/dokku_${NEXT_VERSION}_amd64.deb" build/dokku.deb
|
cp -f "build/dokku_${NEXT_VERSION}_amd64.deb" build/package/dokku-amd64.deb
|
||||||
|
cp -f "build/dokku_${NEXT_VERSION}_arm64.deb" build/package/dokku-arm64.deb
|
||||||
|
cp -f "build/dokku_${NEXT_VERSION}_armhf.deb" build/package/dokku-armhf.deb
|
||||||
|
|
||||||
if [[ "$RELEASE" != "build" ]]; then
|
if [[ "$RELEASE" != "build" ]]; then
|
||||||
fn-publish-package "$IS_RELEASE" "raspbian" "build/dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error publishing deb package"
|
fn-publish-package "$IS_RELEASE" "raspbian" "build/dokku_${NEXT_VERSION}_armhf.deb" || log-fail "Error publishing deb package"
|
||||||
|
fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_arm64.deb" || log-fail "Error publishing deb package"
|
||||||
fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error publishing deb package"
|
fn-publish-package "$IS_RELEASE" "deb" "build/dokku_${NEXT_VERSION}_amd64.deb" || log-fail "Error publishing deb package"
|
||||||
fn-publish-package "$IS_RELEASE" "rpm" "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" || log-fail "Error publishing rpm package"
|
fn-build-docker-image "$NEXT_VERSION" "$IS_RELEASE" || log-fail "Error building docker image"
|
||||||
fn-build-docker-image "$NEXT_VERSION" || log-fail "Error building docker image"
|
|
||||||
|
|
||||||
if [[ "$IS_RELEASE" == "true" ]]; then
|
|
||||||
docker tag "dokku/dokku:$NEXT_VERSION" "dokku/dokku:latest"
|
|
||||||
docker push "dokku/dokku:$NEXT_VERSION"
|
|
||||||
docker push "dokku/dokku:latest"
|
|
||||||
fi
|
|
||||||
fn-repo-push-tags "$IS_RELEASE"
|
fn-repo-push-tags "$IS_RELEASE"
|
||||||
|
else
|
||||||
|
fn-build-docker-image "$NEXT_VERSION" "$IS_RELEASE" || log-fail "Error building docker image"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$IS_RELEASE" != "true" ]]; then
|
if [[ "$IS_RELEASE" != "true" ]]; then
|
||||||
git reset -q HEAD plugins/*/plugin.toml
|
git reset -q HEAD plugins/*/plugin.toml
|
||||||
git checkout -- plugins/*/plugin.toml
|
git checkout -- plugins/*/plugin.toml
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "build/dokku_${NEXT_VERSION}_amd64.deb" >build/deb-filename
|
|
||||||
echo "build/dokku-${NEXT_VERSION}-1.x86_64.rpm" >build/rpm-filename
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
38
contrib/sort-mkdocs-versions
Normal file
@@ -0,0 +1,38 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
version_file = "tmp/docs-build/versions.json"
|
||||||
|
data = []
|
||||||
|
with open(version_file) as f:
|
||||||
|
data = json.load(f)
|
||||||
|
|
||||||
|
versions = []
|
||||||
|
for info in data:
|
||||||
|
if info["title"] == "latest":
|
||||||
|
continue
|
||||||
|
versions.append(info["title"].removeprefix("v"))
|
||||||
|
|
||||||
|
versions.sort(key=lambda x: list(map(int, x.split('.'))), reverse=True)
|
||||||
|
data = [
|
||||||
|
{
|
||||||
|
"aliases": ["latest"],
|
||||||
|
"title": "latest",
|
||||||
|
"version": "docs",
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
for version in versions:
|
||||||
|
data.append({
|
||||||
|
"aliases": [],
|
||||||
|
"title": f"v{version}",
|
||||||
|
"version": f"docs~v{version}",
|
||||||
|
})
|
||||||
|
|
||||||
|
with open(version_file, "w") as f:
|
||||||
|
json.dump(data, f, indent=4)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
344
contrib/write-mkdocs
Normal file
@@ -0,0 +1,344 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
from bs4 import BeautifulSoup
|
||||||
|
import os
|
||||||
|
import pathlib
|
||||||
|
import shutil
|
||||||
|
import sys
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
|
def get_nav_from_selector(soup, selector, docs_dir):
|
||||||
|
navigation = []
|
||||||
|
header_name = ""
|
||||||
|
for anchor in soup.select(selector):
|
||||||
|
classes = anchor.get("class", [])
|
||||||
|
if classes is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
if "disabled" in classes:
|
||||||
|
header_name = anchor.text
|
||||||
|
navigation.append({header_name: []})
|
||||||
|
|
||||||
|
href = anchor.get("href", "")
|
||||||
|
if href is None:
|
||||||
|
continue
|
||||||
|
|
||||||
|
href = str(href)
|
||||||
|
if href == "#":
|
||||||
|
continue
|
||||||
|
|
||||||
|
url = href.replace("{{NAME}}", "")
|
||||||
|
filename = url.replace("http://progrium.viewdocs.io/dokku/", "")
|
||||||
|
filename = filename.replace("http://dokku.viewdocs.io/dokku/", "")
|
||||||
|
filename = filename.strip("/") + ".md"
|
||||||
|
filename = filename.removeprefix("dokku/")
|
||||||
|
|
||||||
|
ignore_errors_for = [
|
||||||
|
"getting-started/installation.md",
|
||||||
|
"getting-started/upgrading.md",
|
||||||
|
]
|
||||||
|
if not os.path.exists(docs_dir + "/" + filename):
|
||||||
|
if filename not in ignore_errors_for:
|
||||||
|
print("error fetching markdown file:", filename)
|
||||||
|
continue
|
||||||
|
|
||||||
|
for nav in navigation:
|
||||||
|
if header_name in nav:
|
||||||
|
if filename == "getting-started/installation.md":
|
||||||
|
child_dir = "getting-started/install/"
|
||||||
|
children = os.listdir(docs_dir + "/" + child_dir)
|
||||||
|
children = [child_dir + c for c in children]
|
||||||
|
children.sort()
|
||||||
|
children.insert(
|
||||||
|
0, "getting-started/advanced-installation.md")
|
||||||
|
if os.path.exists(docs_dir + "/" + filename):
|
||||||
|
children.insert(0, filename)
|
||||||
|
else:
|
||||||
|
children.insert(
|
||||||
|
0, "getting-started/installation/index.md")
|
||||||
|
nav[header_name].append({
|
||||||
|
"Getting Started with Dokku": children,
|
||||||
|
})
|
||||||
|
continue
|
||||||
|
elif filename == "getting-started/upgrading.md":
|
||||||
|
child_dir = "appendices/"
|
||||||
|
children = os.listdir(docs_dir + "/" + child_dir)
|
||||||
|
|
||||||
|
children.sort(key=lambda x: list(
|
||||||
|
map(int, x.split("-")[0].split('.'))),
|
||||||
|
reverse=True)
|
||||||
|
children = [child_dir + c for c in children]
|
||||||
|
if os.path.exists(docs_dir + "/" + filename):
|
||||||
|
children.insert(0, filename)
|
||||||
|
else:
|
||||||
|
children.insert(
|
||||||
|
0, "getting-started/upgrading/index.md")
|
||||||
|
nav[header_name].append({
|
||||||
|
"Upgrading": children,
|
||||||
|
})
|
||||||
|
continue
|
||||||
|
else:
|
||||||
|
nav[header_name].append(filename)
|
||||||
|
return navigation
|
||||||
|
|
||||||
|
|
||||||
|
def generate_nav(src, dest):
|
||||||
|
navigation = []
|
||||||
|
repo_dir = pathlib.Path(__file__).parent.parent.resolve()
|
||||||
|
docs_dir = str(repo_dir) + "/docs"
|
||||||
|
with open(docs_dir + "/template.html") as response:
|
||||||
|
soup = BeautifulSoup(response, "html.parser")
|
||||||
|
selectors = [
|
||||||
|
".container .row .list-group a",
|
||||||
|
".container-fluid .row .list-group a",
|
||||||
|
]
|
||||||
|
for selector in selectors:
|
||||||
|
navigation = get_nav_from_selector(soup, selector, docs_dir)
|
||||||
|
if len(navigation) > 0:
|
||||||
|
break
|
||||||
|
|
||||||
|
if len(navigation) == 0:
|
||||||
|
print("No navigation found")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
with open(src) as f:
|
||||||
|
data = yaml.unsafe_load(f)
|
||||||
|
data["nav"] = [
|
||||||
|
{"Docs": navigation},
|
||||||
|
{"Pro": "https://pro.dokku.com/docs/getting-started/"},
|
||||||
|
{"Blog": "https://dokku.com/blog/"},
|
||||||
|
{"Purchase Dokku Pro": "https://dokku.dpdcart.com/cart/add?product_id=217344&method_id=236878"},
|
||||||
|
]
|
||||||
|
|
||||||
|
with open(dest, mode="wt", encoding="utf-8") as f:
|
||||||
|
yaml.dump(data, f)
|
||||||
|
|
||||||
|
|
||||||
|
def modify_content_noop(lines, _):
|
||||||
|
modified = False
|
||||||
|
updated_lines = []
|
||||||
|
for line in lines:
|
||||||
|
updated_lines.append(line)
|
||||||
|
return updated_lines, modified
|
||||||
|
|
||||||
|
|
||||||
|
def modify_content_links(lines, filename):
|
||||||
|
filename = filename.replace("/usr/src/source/docs/", "")
|
||||||
|
parts = filename.split("/")
|
||||||
|
parts.pop()
|
||||||
|
replacement = "](" + '/'.join([".." for _ in parts]) + "/"
|
||||||
|
modified = False
|
||||||
|
updated_lines = []
|
||||||
|
for line in lines:
|
||||||
|
if "](/docs/" in line:
|
||||||
|
line = line.replace("](/docs/", replacement)
|
||||||
|
modified = True
|
||||||
|
|
||||||
|
updated_lines.append(line)
|
||||||
|
return updated_lines, modified
|
||||||
|
|
||||||
|
|
||||||
|
def modify_content_stripspace(lines, _):
|
||||||
|
modified = False
|
||||||
|
updated_lines = []
|
||||||
|
for line in lines:
|
||||||
|
line = line.rstrip()
|
||||||
|
updated_lines.append(line)
|
||||||
|
return updated_lines, modified
|
||||||
|
|
||||||
|
|
||||||
|
def modify_content_inject_newlines(lines, _):
|
||||||
|
modified = False
|
||||||
|
updated_lines = []
|
||||||
|
for line in lines:
|
||||||
|
updated_lines.append(line.rstrip() + "\n")
|
||||||
|
return updated_lines, modified
|
||||||
|
|
||||||
|
|
||||||
|
def is_info(line):
|
||||||
|
return line.startswith("> ")
|
||||||
|
|
||||||
|
|
||||||
|
def is_new(line):
|
||||||
|
return line.startswith("> ") and "new as of" in line.lower()
|
||||||
|
|
||||||
|
|
||||||
|
def is_note(line):
|
||||||
|
return line.startswith("> Note:")
|
||||||
|
|
||||||
|
|
||||||
|
def is_warning(line):
|
||||||
|
return line.startswith("> Warning:")
|
||||||
|
|
||||||
|
|
||||||
|
def modify_content_admonition(lines, _):
|
||||||
|
modified = False
|
||||||
|
updated_lines = []
|
||||||
|
admonition_lines = []
|
||||||
|
is_admonition = False
|
||||||
|
for line in lines:
|
||||||
|
if is_info(line) or is_new(line) or is_note(line) or is_warning(line):
|
||||||
|
if is_new(line):
|
||||||
|
line = line.replace("> ", "!!! tip \"New\"\n\n ")
|
||||||
|
line = line.replace("New as of", "Introduced in")
|
||||||
|
line = line.replace("new as of", "introduced in")
|
||||||
|
if is_note(line):
|
||||||
|
line = line.replace(
|
||||||
|
"> Note: ", "!!! note \"Note\"\n\n ")
|
||||||
|
elif is_warning(line):
|
||||||
|
line = line.replace(
|
||||||
|
"> Warning: ", "!!! warning \"Warning\"\n\n ")
|
||||||
|
elif is_info(line):
|
||||||
|
if not is_admonition:
|
||||||
|
line = line.replace("> ", "!!! info \"Info\"\n\n ")
|
||||||
|
elif line in [">", "> "]:
|
||||||
|
line = ""
|
||||||
|
else:
|
||||||
|
line = " " + line.removeprefix("> ")
|
||||||
|
|
||||||
|
is_admonition = True
|
||||||
|
admonition_lines.append(line)
|
||||||
|
elif is_admonition and line in [">", "> "]:
|
||||||
|
line = ""
|
||||||
|
admonition_lines.append(line)
|
||||||
|
elif is_admonition and line.startswith("> "):
|
||||||
|
line = " " + line.removeprefix("> ")
|
||||||
|
admonition_lines.append(line)
|
||||||
|
elif line == "":
|
||||||
|
is_admonition = False
|
||||||
|
if len(admonition_lines) > 0:
|
||||||
|
updated_lines.extend(admonition_lines)
|
||||||
|
admonition_lines = []
|
||||||
|
updated_lines.append("")
|
||||||
|
else:
|
||||||
|
updated_lines.append(line)
|
||||||
|
return updated_lines, modified
|
||||||
|
|
||||||
|
|
||||||
|
def is_shell_codeblock_start(line):
|
||||||
|
return line == "```shell"
|
||||||
|
|
||||||
|
|
||||||
|
def modify_content_terminal_example(lines, _):
|
||||||
|
modified = False
|
||||||
|
updated_lines = []
|
||||||
|
command_block = []
|
||||||
|
example_block = []
|
||||||
|
in_command_block = False
|
||||||
|
in_example_block = False
|
||||||
|
previous_block = ""
|
||||||
|
next_line_must_be = None
|
||||||
|
for line in lines:
|
||||||
|
if is_shell_codeblock_start(line):
|
||||||
|
command_block.append(line)
|
||||||
|
modified = True
|
||||||
|
in_command_block = True
|
||||||
|
continue
|
||||||
|
elif in_command_block:
|
||||||
|
command_block.append(line)
|
||||||
|
if line == "```":
|
||||||
|
in_command_block = False
|
||||||
|
previous_block = "command_block"
|
||||||
|
next_line_must_be = ""
|
||||||
|
continue
|
||||||
|
elif line == "```":
|
||||||
|
if previous_block == "":
|
||||||
|
updated_lines.append(line)
|
||||||
|
continue
|
||||||
|
elif previous_block == "command_block":
|
||||||
|
example_block.append(line)
|
||||||
|
|
||||||
|
if in_example_block:
|
||||||
|
previous_block = ""
|
||||||
|
in_example_block = False
|
||||||
|
updated_lines.append("=== \"Shell\"")
|
||||||
|
updated_lines.append("")
|
||||||
|
for command_line in command_block:
|
||||||
|
updated_lines.append(f" {command_line}")
|
||||||
|
command_block = []
|
||||||
|
|
||||||
|
updated_lines.append("")
|
||||||
|
updated_lines.append("=== \"Output\"")
|
||||||
|
updated_lines.append("")
|
||||||
|
for example_line in example_block:
|
||||||
|
updated_lines.append(f" {example_line}")
|
||||||
|
example_block = []
|
||||||
|
else:
|
||||||
|
in_example_block = True
|
||||||
|
continue
|
||||||
|
elif previous_block == "command_block":
|
||||||
|
if next_line_must_be is None:
|
||||||
|
if in_example_block:
|
||||||
|
example_block.append(line)
|
||||||
|
else:
|
||||||
|
updated_lines.extend(command_block)
|
||||||
|
updated_lines.append("")
|
||||||
|
updated_lines.append(line)
|
||||||
|
command_block = []
|
||||||
|
previous_block = ""
|
||||||
|
continue
|
||||||
|
elif next_line_must_be == "":
|
||||||
|
if line == "":
|
||||||
|
next_line_must_be = None
|
||||||
|
continue
|
||||||
|
|
||||||
|
updated_lines.append(line)
|
||||||
|
|
||||||
|
if len(command_block) > 0:
|
||||||
|
updated_lines.extend(command_block)
|
||||||
|
|
||||||
|
return updated_lines, modified
|
||||||
|
|
||||||
|
|
||||||
|
def update_markdown(src):
|
||||||
|
markdown_files = []
|
||||||
|
allowed_extensions = [".md"]
|
||||||
|
for subdir, _, files in os.walk(src):
|
||||||
|
for file in files:
|
||||||
|
ext = os.path.splitext(file)[-1].lower()
|
||||||
|
file_path = os.path.join(subdir, file)
|
||||||
|
if ext in allowed_extensions:
|
||||||
|
markdown_files.append(file_path)
|
||||||
|
|
||||||
|
modifiers = [
|
||||||
|
modify_content_noop,
|
||||||
|
modify_content_links,
|
||||||
|
modify_content_stripspace,
|
||||||
|
modify_content_admonition,
|
||||||
|
modify_content_terminal_example,
|
||||||
|
modify_content_inject_newlines,
|
||||||
|
]
|
||||||
|
|
||||||
|
for file in markdown_files:
|
||||||
|
modified = False
|
||||||
|
lines = []
|
||||||
|
with open(file, 'r') as f:
|
||||||
|
lines = f.readlines()
|
||||||
|
for modifier in modifiers:
|
||||||
|
lines, m = modifier(lines, file)
|
||||||
|
if m:
|
||||||
|
modified = True
|
||||||
|
|
||||||
|
if modified:
|
||||||
|
with open(file, 'w') as fp:
|
||||||
|
fp.writelines(lines)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
print("----> Copying mkdocs.yml")
|
||||||
|
print(" Generating navigation")
|
||||||
|
generate_nav("/usr/src/source/mkdocs.yml", "/usr/src/app/mkdocs.yml")
|
||||||
|
|
||||||
|
print("----> Copying docs folder")
|
||||||
|
update_markdown("/usr/src/source/docs",)
|
||||||
|
|
||||||
|
if os.path.exists("/usr/src/app/docs"):
|
||||||
|
print(" Removing old docs folder")
|
||||||
|
shutil.rmtree("/usr/src/app/docs")
|
||||||
|
|
||||||
|
print(" Performing copy")
|
||||||
|
shutil.copytree("/usr/src/source/docs", "/usr/src/app/docs")
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
4
deb.mk
@@ -19,7 +19,7 @@ install-from-deb:
|
|||||||
wget -nv -O - https://get.docker.com/ | sh
|
wget -nv -O - https://get.docker.com/ | sh
|
||||||
|
|
||||||
@echo "--> Installing dokku"
|
@echo "--> Installing dokku"
|
||||||
wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -
|
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 "bionic") 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 "bionic") main" | sudo tee /etc/apt/sources.list.d/dokku.list
|
||||||
sudo apt-get update -qq >/dev/null
|
sudo apt-get update -qq >/dev/null
|
||||||
sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install dokku
|
sudo DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true apt-get -qq -y --no-install-recommends install dokku
|
||||||
@@ -49,4 +49,4 @@ endif
|
|||||||
cp debian/lintian-overrides /tmp/build-dokku/usr/share/lintian/overrides/dokku
|
cp debian/lintian-overrides /tmp/build-dokku/usr/share/lintian/overrides/dokku
|
||||||
sed -i.bak "s/^Version: .*/Version: `cat /tmp/build-dokku/var/lib/dokku/STABLE_VERSION`/g" /tmp/build-dokku/DEBIAN/control && rm /tmp/build-dokku/DEBIAN/control.bak
|
sed -i.bak "s/^Version: .*/Version: `cat /tmp/build-dokku/var/lib/dokku/STABLE_VERSION`/g" /tmp/build-dokku/DEBIAN/control && rm /tmp/build-dokku/DEBIAN/control.bak
|
||||||
dpkg-deb --build /tmp/build-dokku "$(BUILD_DIRECTORY)/dokku_`cat /tmp/build-dokku/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb"
|
dpkg-deb --build /tmp/build-dokku "$(BUILD_DIRECTORY)/dokku_`cat /tmp/build-dokku/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb"
|
||||||
lintian "$(BUILD_DIRECTORY)/dokku_`cat /tmp/build-dokku/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb"
|
lintian "$(BUILD_DIRECTORY)/dokku_`cat /tmp/build-dokku/var/lib/dokku/VERSION`_$(DOKKU_ARCHITECTURE).deb" || true
|
||||||
|
|||||||
4
debian/control
vendored
@@ -1,9 +1,9 @@
|
|||||||
Package: dokku
|
Package: dokku
|
||||||
Version: 0.26.3
|
Version: 0.28.3
|
||||||
Section: web
|
Section: web
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Architecture: amd64
|
Architecture: amd64
|
||||||
Depends: locales, git, cpio, curl, man-db, netcat, sshcommand (>= 0.12.0), 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-image-labeler (>= 0.2.2), net-tools, netrc, software-properties-common, parallel, procfile-util (>= 0.11.0), python-software-properties | python3-software-properties, rsync, rsyslog, dos2unix, jq, unzip
|
Depends: apache2-utils, locales, git, cpio, curl, man-db, netcat, sshcommand (>= 0.12.0), 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-image-labeler (>= 0.2.2), lambda-builder, net-tools, netrc, software-properties-common, parallel, procfile-util (>= 0.11.0), python-software-properties | python3-software-properties, rsync, rsyslog, dos2unix, jq, unzip
|
||||||
Recommends: herokuish (>= 0.3.4), bash-completion, dokku-update, dokku-event-listener
|
Recommends: herokuish (>= 0.3.4), bash-completion, dokku-update, dokku-event-listener
|
||||||
Pre-Depends: gliderlabs-sigil, nginx (>= 1.8.0) | openresty, dnsutils, cgroupfs-mount | cgroup-lite, plugn (>= 0.3.0), sudo, python3, debconf
|
Pre-Depends: gliderlabs-sigil, nginx (>= 1.8.0) | openresty, dnsutils, cgroupfs-mount | cgroup-lite, plugn (>= 0.3.0), sudo, python3, debconf
|
||||||
Maintainer: Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>
|
Maintainer: Jose Diaz-Gonzalez <dokku@josediazgonzalez.com>
|
||||||
|
|||||||
1
debian/postinst
vendored
@@ -111,6 +111,7 @@ dpkg-handling() {
|
|||||||
db_get "dokku/hostname"
|
db_get "dokku/hostname"
|
||||||
echo "Setting VHOST contents to $RET"
|
echo "Setting VHOST contents to $RET"
|
||||||
echo "$RET" >"${DOKKU_ROOT}/VHOST"
|
echo "$RET" >"${DOKKU_ROOT}/VHOST"
|
||||||
|
chown dokku:dokku "${DOKKU_ROOT}/VHOST"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-image-labeler,/usr/bin/pack
|
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-image-labeler,/usr/bin/pack,/usr/bin/crontab
|
||||||
|
|||||||
19
docs.mk
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
.PHONY: docs-build-image
|
||||||
|
docs-build-image:
|
||||||
|
docker build -f docs/_build/Dockerfile --progress plain -t app/mkdocs .
|
||||||
|
|
||||||
|
.PHONY: docs-build
|
||||||
|
docs-build:
|
||||||
|
@docker run --rm -p 3487:3487 -v "$(PWD):/usr/src/source" --name docs-serve app/mkdocs build
|
||||||
|
|
||||||
|
.PHONY: docs-serve
|
||||||
|
docs-serve:
|
||||||
|
docker run --rm -p 3487:3487 -v "$(PWD):/usr/src/source" --name docs-serve app/mkdocs serve
|
||||||
|
|
||||||
|
.PHONY: docs-deps
|
||||||
|
docs-deps:
|
||||||
|
@docker run --rm -p 3487:3487 -v "$(PWD):/usr/src/app" app/mkdocs deps
|
||||||
|
|
||||||
|
.PHONY: docs-enter
|
||||||
|
docs-enter:
|
||||||
|
docker exec -it docs-serve bash
|
||||||
12
docs/_build/Dockerfile
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
FROM python:3.10.8-alpine
|
||||||
|
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
COPY docs/_build/requirements.txt .
|
||||||
|
|
||||||
|
RUN apk add --no-cache bash yaml && \
|
||||||
|
pip install --no-cache-dir -r requirements.txt
|
||||||
|
|
||||||
|
COPY docs/_build/entrypoint /bin/entrypoint
|
||||||
|
|
||||||
|
ENTRYPOINT [ "/bin/entrypoint" ]
|
||||||
30
docs/_build/app-nginx.conf.sigil
vendored
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
worker_processes 1;
|
||||||
|
error_log stderr;
|
||||||
|
pid nginx.pid;
|
||||||
|
daemon off;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 768;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
types_hash_max_size 2048;
|
||||||
|
include mime.types;
|
||||||
|
charset UTF-8;
|
||||||
|
server {
|
||||||
|
listen {{ $.PORT }};
|
||||||
|
server_name _;
|
||||||
|
root /app/www;
|
||||||
|
index index.html;
|
||||||
|
port_in_redirect off;
|
||||||
|
|
||||||
|
include /app/www/nginx.conf.d/*.conf;
|
||||||
|
location ^~ /nginx.conf.d/ {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ =404;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
39
docs/_build/entrypoint
vendored
Executable file
@@ -0,0 +1,39 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
write-mkdocs() {
|
||||||
|
if [[ -f /usr/src/source/contrib/write-mkdocs ]]; then
|
||||||
|
if ! python /usr/src/source/contrib/write-mkdocs; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
declare CMD="$1" ARGS=("${@:2}")
|
||||||
|
|
||||||
|
if [[ "$CMD" == "build" ]]; then
|
||||||
|
write-mkdocs
|
||||||
|
echo "----> Executing mkdocs build"
|
||||||
|
mkdocs build
|
||||||
|
site_dir="$(grep site_dir mkdocs.yml | awk '{print $2}')"
|
||||||
|
cp -r "/usr/src/app/${site_dir}" "/usr/src/source/${site_dir}"
|
||||||
|
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CMD" == "deps" ]]; then
|
||||||
|
pip freeze
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$CMD" == "serve" ]]; then
|
||||||
|
write-mkdocs
|
||||||
|
mkdocs serve -a 0.0.0.0:3487
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$CMD" "${ARGS[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
23
docs/_build/requirements.txt
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
beautifulsoup4==4.11.1
|
||||||
|
click==8.1.3
|
||||||
|
ghp-import==2.1.0
|
||||||
|
importlib-metadata==4.12.0
|
||||||
|
Jinja2==3.1.2
|
||||||
|
Markdown==3.3.7
|
||||||
|
MarkupSafe==2.1.1
|
||||||
|
mergedeep==1.3.4
|
||||||
|
mkdocs==1.3.1
|
||||||
|
mkdocs-exclude==1.0.2
|
||||||
|
mkdocs-material==8.4.2
|
||||||
|
mkdocs-material-extensions==1.0.3
|
||||||
|
packaging==21.3
|
||||||
|
Pygments==2.13.0
|
||||||
|
pymdown-extensions==9.5
|
||||||
|
pyparsing==3.0.9
|
||||||
|
python-dateutil==2.8.2
|
||||||
|
PyYAML==6.0
|
||||||
|
pyyaml_env_tag==0.1
|
||||||
|
six==1.16.0
|
||||||
|
soupsieve==2.3.2.post1
|
||||||
|
watchdog==2.1.9
|
||||||
|
zipp==3.8.1
|
||||||
56
docs/_overrides/main.html
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
<!--
|
||||||
|
Copyright (c) 2016-2022 Martin Donath <martin.donath@squidfunk.com>
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to
|
||||||
|
deal in the Software without restriction, including without limitation the
|
||||||
|
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
IN THE SOFTWARE.
|
||||||
|
-->
|
||||||
|
|
||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
<!-- Custom front matter -->
|
||||||
|
{% block extrahead %}
|
||||||
|
|
||||||
|
<!-- Extra style sheets (can't be set in mkdocs.yml due to content hash) -->
|
||||||
|
<link
|
||||||
|
rel="stylesheet"
|
||||||
|
href="{{ 'overrides/assets/stylesheets/main.css' | url }}"
|
||||||
|
/>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
<!-- Announcement bar -->
|
||||||
|
{% block announce %}
|
||||||
|
<a href="https://twitter.com/dokku">
|
||||||
|
For updates follow <strong>@dokku</strong> on
|
||||||
|
<span class="twemoji twitter">
|
||||||
|
{% include ".icons/fontawesome/brands/twitter.svg" %}
|
||||||
|
</span>
|
||||||
|
<strong>Twitter</strong>
|
||||||
|
</a>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
<!-- Theme-related JavaScript -->
|
||||||
|
{% block scripts %}
|
||||||
|
{{ super() }}
|
||||||
|
|
||||||
|
<!-- Extra JavaScript (can't be set in mkdocs.yml due to content hash) -->
|
||||||
|
<script src="{{ 'overrides/assets/javascripts/bundle.js' | url }}"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block outdated %}
|
||||||
|
You're not viewing the latest version.
|
||||||
|
<a href="{{ page.abs_url }}">
|
||||||
|
<strong>Click here to go to latest.</strong>
|
||||||
|
</a>
|
||||||
|
{% endblock %}
|
||||||
@@ -17,30 +17,30 @@ To support this, Dokku provides support for a special `release` command within y
|
|||||||
Each "phase" has different expectations and limitations:
|
Each "phase" has different expectations and limitations:
|
||||||
|
|
||||||
- `app.json`: `scripts.dokku.predeploy`
|
- `app.json`: `scripts.dokku.predeploy`
|
||||||
- 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.
|
- 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
|
- Are changes committed to the image at this phase: Yes
|
||||||
- Example use-cases
|
- Example use-cases
|
||||||
- Bundling assets in a slightly different way
|
- Bundling assets in a slightly different way
|
||||||
- Installing a custom package from source or copying a binary into place
|
- Installing a custom package from source or copying a binary into place
|
||||||
- `app.json`: `scripts.dokku.postdeploy`
|
- `app.json`: `scripts.dokku.postdeploy`
|
||||||
- When to use: This should be used in conjunction with external systems to signal the completion of your deploy.
|
- 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
|
- Are changes committed to the image at this phase: No
|
||||||
- Example use-cases
|
- Example use-cases
|
||||||
- Notifying slack that your app is deployed
|
- Notifying slack that your app is deployed
|
||||||
- Coordinating traffic routing with a central load balancer
|
- Coordinating traffic routing with a central load balancer
|
||||||
- `app.json`: `scripts.postdeploy`
|
- `app.json`: `scripts.postdeploy`
|
||||||
- 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.
|
- 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
|
- Are changes committed to the image at this phase: No
|
||||||
- Example use-cases
|
- Example use-cases
|
||||||
- Setting up OAuth clients and DNS
|
- Setting up OAuth clients and DNS
|
||||||
- Loading seed/test data into the app’s test database
|
- Loading seed/test data into the app’s test database
|
||||||
- `Procfile`: `release`
|
- `Procfile`: `release`
|
||||||
- When to use: This should be used in conjunction with external systems to signal the completion of your app image build.
|
- When to use: This should be used in conjunction with external systems to signal the completion of your app image build.
|
||||||
- Are changes committed to the image at this phase: No
|
- Are changes committed to the image at this phase: No
|
||||||
- Example use-cases
|
- Example use-cases
|
||||||
- Sending CSS, JS, and other assets from your app’s slug to a CDN or S3 bucket
|
- Sending CSS, JS, and other assets from your app’s slug to a CDN or S3 bucket
|
||||||
- Priming or invalidating cache stores
|
- Priming or invalidating cache stores
|
||||||
- Running database migrations
|
- Running database migrations
|
||||||
|
|
||||||
Additionally, if using a Dockerfile with an `ENTRYPOINT`, the deployment task is passed to that entrypoint as is. The exceptions are if the entrypoint is one of the following:
|
Additionally, if using a Dockerfile with an `ENTRYPOINT`, the deployment task is passed to that entrypoint as is. The exceptions are if the entrypoint is one of the following:
|
||||||
|
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ The storage plugin supports the following mount points:
|
|||||||
|
|
||||||
> New as of 0.25.5
|
> New as of 0.25.5
|
||||||
|
|
||||||
A storage directory can be created with the `storage:ensure-directory` command. This command will create a subdirectory in the recommended `/var/lib/doku/data/storage` path - created during Dokku installation - and prepare it for use with an app.
|
A storage directory can be created with the `storage:ensure-directory` command. This command will create a subdirectory in the recommended `/var/lib/dokku/data/storage` path - created during Dokku installation - and prepare it for use with an app.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku storage:ensure-directory lollipop
|
dokku storage:ensure-directory lollipop
|
||||||
@@ -175,4 +175,4 @@ By default, Dokku will execute your buildpack app processes as the `herokuishuse
|
|||||||
|
|
||||||
> NOTE: this user must exist in your herokuish image.
|
> NOTE: this user must exist in your herokuish image.
|
||||||
|
|
||||||
Additionally, the default `docker-local` scheduler that comes with Dokku will ensure your storage mounts are owned by either `herokuishuser` or the overridden value you have set in `DOKKU_APP_USER`. See the [docker-local scheduler documentation](/docs/advanced-usage/schedulers/docker-local.md#disabling-chown-of-persistent-storage) docs for more information.
|
Additionally, the default `docker-local` scheduler that comes with Dokku will ensure your storage mounts are owned by either `herokuishuser` or the overridden value you have set in `DOKKU_APP_USER`. See the [docker-local scheduler documentation](/docs/deployment/schedulers/docker-local.md#disabling-chown-of-persistent-storage) docs for more information.
|
||||||
|
|||||||
@@ -35,35 +35,35 @@ dokku plugin:list
|
|||||||
|
|
||||||
```
|
```
|
||||||
plugn: dev
|
plugn: dev
|
||||||
00_dokku-standard 0.26.3 enabled dokku core standard plugin
|
00_dokku-standard 0.28.3 enabled dokku core standard plugin
|
||||||
20_events 0.26.3 enabled dokku core events logging plugin
|
20_events 0.28.3 enabled dokku core events logging plugin
|
||||||
app-json 0.26.3 enabled dokku core app-json plugin
|
app-json 0.28.3 enabled dokku core app-json plugin
|
||||||
apps 0.26.3 enabled dokku core apps plugin
|
apps 0.28.3 enabled dokku core apps plugin
|
||||||
build-env 0.26.3 enabled dokku core build-env plugin
|
build-env 0.28.3 enabled dokku core build-env plugin
|
||||||
buildpacks 0.26.3 enabled dokku core buildpacks plugin
|
buildpacks 0.28.3 enabled dokku core buildpacks plugin
|
||||||
certs 0.26.3 enabled dokku core certificate management plugin
|
certs 0.28.3 enabled dokku core certificate management plugin
|
||||||
checks 0.26.3 enabled dokku core checks plugin
|
checks 0.28.3 enabled dokku core checks plugin
|
||||||
common 0.26.3 enabled dokku core common plugin
|
common 0.28.3 enabled dokku core common plugin
|
||||||
config 0.26.3 enabled dokku core config plugin
|
config 0.28.3 enabled dokku core config plugin
|
||||||
docker-options 0.26.3 enabled dokku core docker-options plugin
|
docker-options 0.28.3 enabled dokku core docker-options plugin
|
||||||
domains 0.26.3 enabled dokku core domains plugin
|
domains 0.28.3 enabled dokku core domains plugin
|
||||||
enter 0.26.3 enabled dokku core enter plugin
|
enter 0.28.3 enabled dokku core enter plugin
|
||||||
git 0.26.3 enabled dokku core git plugin
|
git 0.28.3 enabled dokku core git plugin
|
||||||
logs 0.26.3 enabled dokku core logs plugin
|
logs 0.28.3 enabled dokku core logs plugin
|
||||||
network 0.26.3 enabled dokku core network plugin
|
network 0.28.3 enabled dokku core network plugin
|
||||||
nginx-vhosts 0.26.3 enabled dokku core nginx-vhosts plugin
|
nginx-vhosts 0.28.3 enabled dokku core nginx-vhosts plugin
|
||||||
plugin 0.26.3 enabled dokku core plugin plugin
|
plugin 0.28.3 enabled dokku core plugin plugin
|
||||||
proxy 0.26.3 enabled dokku core proxy plugin
|
proxy 0.28.3 enabled dokku core proxy plugin
|
||||||
ps 0.26.3 enabled dokku core ps plugin
|
ps 0.28.3 enabled dokku core ps plugin
|
||||||
repo 0.26.3 enabled dokku core repo plugin
|
repo 0.28.3 enabled dokku core repo plugin
|
||||||
resource 0.26.3 enabled dokku core resource plugin
|
resource 0.28.3 enabled dokku core resource plugin
|
||||||
scheduler-docker-local 0.26.3 enabled dokku core scheduler-docker-local plugin
|
scheduler-docker-local 0.28.3 enabled dokku core scheduler-docker-local plugin
|
||||||
shell 0.26.3 enabled dokku core shell plugin
|
shell 0.28.3 enabled dokku core shell plugin
|
||||||
ssh-keys 0.26.3 enabled dokku core ssh-keys plugin
|
ssh-keys 0.28.3 enabled dokku core ssh-keys plugin
|
||||||
storage 0.26.3 enabled dokku core storage plugin
|
storage 0.28.3 enabled dokku core storage plugin
|
||||||
tags 0.26.3 enabled dokku core tags plugin
|
tags 0.28.3 enabled dokku core tags plugin
|
||||||
tar 0.26.3 enabled dokku core tar plugin
|
tar 0.28.3 enabled dokku core tar plugin
|
||||||
trace 0.26.3 enabled dokku core trace plugin
|
trace 0.28.3 enabled dokku core trace plugin
|
||||||
```
|
```
|
||||||
|
|
||||||
> Warning: All plugin commands other than `plugin:list` and `plugin:help` require sudo access and must be run directly from the Dokku server.
|
> Warning: All plugin commands other than `plugin:list` and `plugin:help` require sudo access and must be run directly from the Dokku server.
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ dokku registry:set node-js-app push-on-release
|
|||||||
|
|
||||||
### Pushing images on build
|
### Pushing images on build
|
||||||
|
|
||||||
To push the image on release, set the `push-on-release` property to `true` via the `registry:set` command. The default value for this property is `false`. Setting the property to `true` will result in the imag being tagged with an ID that is incremented with every release. This tag will be what is used for running app code.
|
To push the image on release, set the `push-on-release` property to `true` via the `registry:set` command. The default value for this property is `false`. Setting the property to `true` will result in the image being tagged with an ID that is incremented with every release. This tag will be what is used for running app code.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku registry:set node-js-app push-on-release true
|
dokku registry:set node-js-app push-on-release true
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ Valid resource options include:
|
|||||||
- `--network-egress`
|
- `--network-egress`
|
||||||
- `--nvidia-gpu`
|
- `--nvidia-gpu`
|
||||||
|
|
||||||
See the [Supported Resource Management Properties](/docs/advanced-usage/schedulers/docker-local.md#supported-resource-management-properties) section of the docker local scheduler documentation for more information on how each resource limit maps to Docker.
|
See the [Supported Resource Management Properties](/docs/deployment/schedulers/docker-local.md#supported-resource-management-properties) section of the docker local scheduler documentation for more information on how each resource limit maps to Docker.
|
||||||
|
|
||||||
Resource limits and reservations are applied only during the `run` and `deploy` phases of an application, and will not impact the `build` phase of an application.
|
Resource limits and reservations are applied only during the `run` and `deploy` phases of an application, and will not impact the `build` phase of an application.
|
||||||
|
|
||||||
|
|||||||
@@ -4,10 +4,10 @@
|
|||||||
|
|
||||||
By default, Dokku will ship a PCI Compliant nginx configuration. For developers whose users are on older browsers or mobile devices, you may need to ship a custom `nginx.conf.sigil` to enable ciphers for older browsers.
|
By default, Dokku will ship a PCI Compliant nginx configuration. For developers whose users are on older browsers or mobile devices, you may need to ship a custom `nginx.conf.sigil` to enable ciphers for older browsers.
|
||||||
|
|
||||||
See the [nginx customization](/docs/configuration/nginx/#customizing-the-nginx-configuration) docs for more details.
|
See the [nginx customization](/docs/networking/proxies/nginx/#customizing-the-nginx-configuration) docs for more details.
|
||||||
|
|
||||||
## Nginx Error Pages
|
## Nginx Error Pages
|
||||||
|
|
||||||
We now ship with nicer error pages by default. You are free to customize your Dokku installation via a custom `nginx.conf.sigil` to change what error pages are displayed in different circumstances.
|
We now ship with nicer error pages by default. You are free to customize your Dokku installation via a custom `nginx.conf.sigil` to change what error pages are displayed in different circumstances.
|
||||||
|
|
||||||
See the [nginx customization](/docs/configuration/nginx/#customizing-the-nginx-configuration) docs for more details.
|
See the [nginx customization](/docs/networking/proxies/nginx/#customizing-the-nginx-configuration) docs for more details.
|
||||||
|
|||||||
@@ -7,7 +7,9 @@ The [dokku-registry](https://github.com/dokku/dokku-registry) plugin is now buil
|
|||||||
- Builder plugins should call `post-release-builder` at the end of the build.
|
- Builder plugins should call `post-release-builder` at the end of the build.
|
||||||
- The `push` and `pull` command are not implemented. Users wishing to deploy a remote image should use `git:from-image`. Image pushing is not available at this time.
|
- The `push` and `pull` command are not implemented. Users wishing to deploy a remote image should use `git:from-image`. Image pushing is not available at this time.
|
||||||
- At this time, remote docker repositories are not automatically created for AWS, and users must create those repositories for their applications as necessary. This may be implemented in the future.
|
- At this time, remote docker repositories are not automatically created for AWS, and users must create those repositories for their applications as necessary. This may be implemented in the future.
|
||||||
- Docker images are only pushed when configured to do so. See the [registry management documentation](/docs/deployment/registry-management.md) for more details.
|
- Docker images are only pushed when configured to do so. See the [registry management documentation](/docs/advanced-usage/registry-management.md) for more details.
|
||||||
|
|
||||||
|
Before upgrading, uninstall the registry plugin via `dokku plugin:uninstall registry`. Not doing so will cause issues with Dokku.
|
||||||
|
|
||||||
## Other
|
## Other
|
||||||
|
|
||||||
|
|||||||
13
docs/appendices/0.27.0-migration-guide.md
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# 0.27.0 Migration Guide
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
|
||||||
|
- Renaming an application will now only rename domains that are associated with global domains. As an example:
|
||||||
|
```shell
|
||||||
|
dokku domains:set-global dokku.me
|
||||||
|
dokku apps:create node-js-app
|
||||||
|
dokku domains:set node-js-app node-js-app.dokku.me node-js-app.dokku.com
|
||||||
|
dokku apps:rename node-js-app other-name
|
||||||
|
dokku domains:report node-js-app --domains-app-vhosts
|
||||||
|
# output: other-name.dokku.me node-js-app.dokku.com
|
||||||
|
```
|
||||||
25
docs/appendices/0.28.0-migration-guide.md
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# 0.28.0 Migration Guide
|
||||||
|
|
||||||
|
## Removals
|
||||||
|
|
||||||
|
Support for the following operating systems has been removed:
|
||||||
|
|
||||||
|
- CentOS 7
|
||||||
|
- Debian 9 (Stretch)
|
||||||
|
- Fedora
|
||||||
|
- OpenSuse
|
||||||
|
|
||||||
|
Dokku will no longer provide packages for RPM based systems. Debian 9 users _may_ use new Debian packages, though support is not guaranteed.
|
||||||
|
|
||||||
|
All users are encouraged to install Dokku via the [Docker-based installation method](/docs/getting-started/install/docker.md), or switch to a supported operating system.
|
||||||
|
|
||||||
|
## Deprecations
|
||||||
|
|
||||||
|
Ubuntu 18.04 is now a deprecated installation target. The operating system will be considered EOL by Canonical in April 2023. Users are encouraged to upgrade to Ubuntu 22.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.
|
||||||
|
|
||||||
|
## Additions
|
||||||
|
|
||||||
|
New in 0.28.0 are the Caddy and Traefik plugins. As community plugins wrapping these proxies exist, users should:
|
||||||
|
|
||||||
|
- Recommended: Uninstall the community plugin in question and switch all config to the new plugins.
|
||||||
|
- Upgrade the community plugin to a version that does not use the `proxy:set` value of `caddy` or `traefik`.
|
||||||
@@ -5,11 +5,11 @@
|
|||||||
- The nginx-vhosts template language is now [sigil](https://github.com/gliderlabs/sigil)
|
- The nginx-vhosts template language is now [sigil](https://github.com/gliderlabs/sigil)
|
||||||
- No need to escape literal `$` characters (or other "bash-isms")
|
- No need to escape literal `$` characters (or other "bash-isms")
|
||||||
- Template variables are represented as {{ .VARIABLE_NAME }}
|
- Template variables are represented as {{ .VARIABLE_NAME }}
|
||||||
- A detailed list of template variables can be found [here](/docs/configuration/nginx.md#available-template-variables)
|
- A detailed list of template variables can be found [here](/docs/networking/proxies/nginx.md#available-template-variables)
|
||||||
- A custom nginx-vhosts template must be named `nginx.conf.sigil`
|
- A custom nginx-vhosts template must be named `nginx.conf.sigil`
|
||||||
- The default path for this custom template is the root of your repo (i.e. `/app` in the container or `WORKDIR` if defined in a dockerfile app)
|
- The default path for this custom template is the root of your repo (i.e. `/app` in the container or `WORKDIR` if defined in a dockerfile app)
|
||||||
- Dokku no longer looks for this file in `/home/dokku/node-js-app` on the Dokku server
|
- Dokku no longer looks for this file in `/home/dokku/node-js-app` on the Dokku server
|
||||||
- Check out an example template [here](/docs/configuration/nginx.md)
|
- Check out an example template [here](/docs/networking/proxies/nginx.md)
|
||||||
- Support for server-wide SSL certs have been dropped in favor of using the `certs` plugin
|
- Support for server-wide SSL certs have been dropped in favor of using the `certs` plugin
|
||||||
- `dokku certs:add node-js-app < certs.tar`
|
- `dokku certs:add node-js-app < certs.tar`
|
||||||
- All domains for an SSL-enabled app will be redirected to https by default
|
- All domains for an SSL-enabled app will be redirected to https by default
|
||||||
|
|||||||
31
docs/assets/dokku-logo.svg
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<svg width="89" height="62" viewBox="0 0 89 62" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M78.4046 17.1912C84.738 21.1608 86.2188 20.7419 87.6794 19.9955C88.5202 19.5664 88.8496 18.5392 88.4243 17.6985C86.4622 13.818 78.212 0.118992 59.5364 0.118992C43.8588 0.118992 34.4377 13.3435 31.5684 18.0766C31.0067 19.0027 31.4447 20.2158 32.4755 20.5543C34.1357 21.0995 35.9508 21.216 39.8333 18.8625C52.5306 11.8038 78.4046 17.1912 78.4046 17.1912Z" fill="#F15B55"/>
|
||||||
|
<mask id="mask0_55_415" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="31" y="0" width="58" height="21">
|
||||||
|
<path d="M78.4212 17.0723C84.7546 21.0418 86.2354 20.6229 87.696 19.8766C88.5368 19.4474 88.8662 18.4202 88.4409 17.5795C86.4788 13.699 78.2286 3.8147e-06 59.553 3.8147e-06C43.8754 3.8147e-06 34.4543 13.2245 31.585 17.9576C31.0233 18.8837 31.4613 20.0969 32.4921 20.4353C34.1523 20.9805 35.9674 21.097 39.8499 18.7436C52.5472 11.6848 78.4212 17.0723 78.4212 17.0723Z" fill="#F15B55"/>
|
||||||
|
</mask>
|
||||||
|
<g mask="url(#mask0_55_415)">
|
||||||
|
<path d="M43.7907 2.62413C49.4945 9.99967 33.5952 13.8544 45.8049 22.3539" stroke="#FF9580" stroke-width="1.5" stroke-miterlimit="10"/>
|
||||||
|
<path d="M56.7977 -1.62458C62.8837 6.0383 46.832 8.92189 53.8305 19.6981" stroke="#FF9580" stroke-width="1.5" stroke-miterlimit="10"/>
|
||||||
|
<path d="M72.3168 -0.867853C76.7291 7.02473 58.5477 8.73199 64.5571 18.3322" stroke="#FF9580" stroke-width="1.5" stroke-miterlimit="10"/>
|
||||||
|
<path d="M84.2603 7.02465C84.2603 15.1449 71.708 10.5128 72.3169 19.6982" stroke="#FF9580" stroke-width="1.5" stroke-miterlimit="10"/>
|
||||||
|
</g>
|
||||||
|
<g opacity="0.399994">
|
||||||
|
<g opacity="0.399994">
|
||||||
|
<path opacity="0.399994" d="M31.3365 18.747C31.2415 19.5146 31.6815 20.2937 32.4751 20.5544C34.1353 21.0993 35.9508 21.2158 39.8333 18.8623C52.5302 11.8039 78.4042 17.1914 78.4042 17.1914C84.7377 21.1606 86.2184 20.7416 87.6795 19.9957C88.3903 19.6328 88.7337 18.8419 88.5657 18.0976C78.1555 10.8635 54.5866 3.8145 31.3365 18.747Z" fill="black"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<path d="M67.274 14.8087H56.4204C44.6233 14.8087 38.4193 18.2775 33.8378 24.2005L29.4542 29.8671L27.7038 32.1805C26.3653 33.9491 24.2728 34.9885 22.0517 34.9885C18.6867 34.9885 15.8194 32.6685 15.0623 29.48C15.0512 29.433 15.0385 29.359 15.025 29.2679C14.9103 28.4884 15.5203 27.7899 16.3099 27.7899H18.4798C22.2049 27.7899 25.2246 24.7776 25.2246 21.0614V20.5325C25.2246 19.8467 24.667 19.2904 23.979 19.2904H17.6005C15.0492 19.2904 13.2669 20.6106 12.6674 22.0612C12.0676 20.6106 10.2853 19.2904 7.73397 19.2904H1.35542C0.667492 19.2904 0.109863 19.8467 0.109863 20.5325V21.0614C0.109863 24.7776 3.12951 27.7899 6.85471 27.7899H9.05492C9.75186 27.7899 10.3443 28.2988 10.4476 28.9867L10.6905 30.604C13.3361 48.2223 28.5057 61.2576 46.3638 61.2576H47.2697H59.4081C71.7445 61.2576 82.2727 52.3616 84.302 40.2227L85.8397 31.0254C87.259 22.5369 81.2902 14.8087 67.274 14.8087Z" fill="#07CBCF"/>
|
||||||
|
<path d="M81.4705 48.3116C79.3404 48.386 77.5986 49.0698 75.2239 51.4388C72.2001 54.4552 67.1794 57.8702 59.4197 57.8702H45.0417C39.2224 57.8702 35.1162 53.5434 35.1162 53.5434C35.1162 53.5434 31.7479 53.7154 24.4261 49.5603C12.4254 41.9906 11.9501 29.2979 11.7788 27.7043C11.6076 26.1106 10.7517 25.2568 9.04025 25.2568H6.70074C2.34293 25.2568 1.16088 23.1183 0.893741 19.3792C0.434853 19.5628 0.110352 20.0095 0.110352 20.5327V21.0612C0.110352 24.7773 3.13 27.7897 6.85479 27.7897H9.055C9.75235 27.7897 10.3448 28.2986 10.4481 28.9864L10.6906 30.6038C13.3362 48.2221 28.5062 61.2573 46.3643 61.2573H47.2698H59.4086C68.7888 61.2573 77.1226 56.113 81.4705 48.3116Z" fill="#05B7BF"/>
|
||||||
|
<path d="M15.0249 29.2677C14.9102 28.4883 15.5203 27.7898 16.3098 27.7898H18.4797C22.2049 27.7898 25.2246 24.7774 25.2246 21.0617V20.5328C25.2246 20.0092 24.8997 19.5624 24.4404 19.3793V19.3797C24.1728 23.1184 22.9908 25.2569 18.633 25.2569H16.8376C14.4411 25.2569 14.7549 27.9512 15.0249 29.2677Z" fill="#05B7BF"/>
|
||||||
|
<path d="M24.4257 49.5606C27.1262 52.1789 25.7188 53.2412 21.2307 53.2412H14.3327C13.2428 53.2412 12.697 54.5557 13.4677 55.3245L14.322 56.1767C16.9737 58.8224 20.5707 60.3085 24.3213 60.3085H24.9584C32.4133 60.3085 37.929 52.8239 37.929 52.8239L24.4257 49.5606Z" fill="#07CBCF"/>
|
||||||
|
<path d="M35.1162 53.544C32.9984 55.5574 29.4485 58.1536 25.2235 58.1536H24.6339C21.1631 58.1536 17.8345 56.7783 15.3807 54.33L14.59 53.5415C14.497 53.4488 14.4257 53.3474 14.3728 53.2411H14.3327C13.2428 53.2411 12.697 54.5556 13.4677 55.3244L14.322 56.1766C16.9741 58.8223 20.5711 60.3085 24.3213 60.3085H24.9584C29.8025 60.3085 33.8281 57.1482 36.0533 54.9349L36.3528 54.6312L35.1162 53.544Z" fill="#05B7BF"/>
|
||||||
|
<mask id="mask1_55_415" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="15" width="86" height="47">
|
||||||
|
<path d="M67.1641 15.1884H56.3106C44.5134 15.1884 38.3094 18.6572 33.7279 24.5802L29.3443 30.2468L27.594 32.5602C26.2554 34.3288 24.163 35.3682 21.9419 35.3682C18.5768 35.3682 15.7096 33.0482 14.9524 29.8597C14.9413 29.8127 14.9286 29.7387 14.9151 29.6476C14.8004 28.8681 15.4105 28.1696 16.2 28.1696H18.3699C22.0951 28.1696 25.1147 25.1573 25.1147 21.4411V20.9122C25.1147 20.2264 24.5571 19.6701 23.8692 19.6701H17.4906C14.9393 19.6701 13.157 20.9903 12.5576 22.4409C11.9577 20.9903 10.1755 19.6701 7.62411 19.6701H1.24555C0.557629 19.6701 0 20.2264 0 20.9122V21.4411C0 25.1573 3.01965 28.1696 6.74484 28.1696H8.94506C9.64199 28.1696 10.2344 28.6785 10.3377 29.3664L10.5807 30.9837C13.2262 48.602 28.3958 61.6373 46.2539 61.6373H47.1598H59.2983C71.6346 61.6373 82.1628 52.7413 84.1922 40.6024L85.7299 31.4051C87.1491 22.9166 81.1803 15.1884 67.1641 15.1884Z" fill="#07CBCF"/>
|
||||||
|
</mask>
|
||||||
|
<g mask="url(#mask1_55_415)">
|
||||||
|
<path d="M48.2573 43.0378C50.1929 48.5818 55.4426 52.9185 61.7015 52.9185C72.2568 52.9185 71.2993 45.7048 82.7326 45.7048H84.3526" stroke="#00576C" stroke-width="1.46" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||||
|
<path d="M50.1195 43.0151H46.9814" stroke="#00576C" stroke-width="1.46" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||||
|
<path d="M65.353 42.7305C65.353 41.096 64.0247 39.7709 62.3862 39.7709C60.7478 39.7709 59.4194 41.096 59.4194 42.7305" stroke="#00576C" stroke-width="1.46" stroke-miterlimit="10" stroke-linecap="round"/>
|
||||||
|
</g>
|
||||||
|
<path d="M77.4491 19.774C80.7847 21.9824 82.0434 23.4419 85.095 23.7701C82.9402 18.5919 77.0788 14.8087 67.2741 14.8087H56.4206C45.0819 14.8087 38.9111 18.0148 34.3804 23.5229C37.2443 23.5229 40.3812 21.1661 43.0628 19.698C46.182 17.9907 50.3669 16.3586 59.4197 16.3586C68.4725 16.3586 73.2651 17.004 77.4491 19.774Z" fill="#05B7BF"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 6.3 KiB |
5
docs/assets/extra.css
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
:root > * {
|
||||||
|
--md-primary-fg-color: #2A8FBD;
|
||||||
|
--md-primary-fg-color--light: #ECB7B7;
|
||||||
|
--md-primary-fg-color--dark: #90030C;
|
||||||
|
}
|
||||||
@@ -2,10 +2,10 @@
|
|||||||
<browserconfig>
|
<browserconfig>
|
||||||
<msapplication>
|
<msapplication>
|
||||||
<tile>
|
<tile>
|
||||||
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.26.3/docs/assets/favicons/mstile-70x70.png"/>
|
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.28.3/docs/assets/favicons/mstile-70x70.png"/>
|
||||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.26.3/docs/assets/favicons/mstile-150x150.png"/>
|
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.28.3/docs/assets/favicons/mstile-150x150.png"/>
|
||||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.26.3/docs/assets/favicons/mstile-310x310.png"/>
|
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.28.3/docs/assets/favicons/mstile-310x310.png"/>
|
||||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.26.3/docs/assets/favicons/mstile-310x150.png"/>
|
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.28.3/docs/assets/favicons/mstile-310x150.png"/>
|
||||||
<TileColor>#da532c</TileColor>
|
<TileColor>#da532c</TileColor>
|
||||||
</tile>
|
</tile>
|
||||||
</msapplication>
|
</msapplication>
|
||||||
|
|||||||
@@ -2,37 +2,37 @@
|
|||||||
"name": "Dokku",
|
"name": "Dokku",
|
||||||
"icons": [
|
"icons": [
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.26.3\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.3\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
||||||
"sizes": "36x36",
|
"sizes": "36x36",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "0.75"
|
"density": "0.75"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.26.3\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.3\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
||||||
"sizes": "48x48",
|
"sizes": "48x48",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "1.0"
|
"density": "1.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.26.3\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.3\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
||||||
"sizes": "72x72",
|
"sizes": "72x72",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "1.5"
|
"density": "1.5"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.26.3\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.3\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
||||||
"sizes": "96x96",
|
"sizes": "96x96",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "2.0"
|
"density": "2.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.26.3\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.3\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
||||||
"sizes": "144x144",
|
"sizes": "144x144",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "3.0"
|
"density": "3.0"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.26.3\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.3\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "4.0"
|
"density": "4.0"
|
||||||
|
|||||||
BIN
docs/assets/placeholder-avatar.jpg
Normal file
|
After Width: | Height: | Size: 44 KiB |
BIN
docs/assets/social/discord.png
Normal file
|
After Width: | Height: | Size: 825 B |
BIN
docs/assets/social/github.png
Normal file
|
After Width: | Height: | Size: 469 B |
BIN
docs/assets/social/irc.png
Normal file
|
After Width: | Height: | Size: 686 B |
BIN
docs/assets/social/slack.png
Normal file
|
After Width: | Height: | Size: 816 B |
BIN
docs/assets/universe/universe animation.keyshape
Normal file
303
docs/assets/universe/universe animation.svg
Normal file
|
After Width: | Height: | Size: 91 KiB |
@@ -23,6 +23,8 @@
|
|||||||
"0.23.9",
|
"0.23.9",
|
||||||
"0.24.10",
|
"0.24.10",
|
||||||
"0.25.7",
|
"0.25.7",
|
||||||
"0.26.3"
|
"0.26.8",
|
||||||
|
"0.27.10",
|
||||||
|
"0.28.3"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,16 +18,6 @@ npm install -g dokku-toolbelt
|
|||||||
|
|
||||||
See [documentation here](https://www.npmjs.com/package/dokku-toolbelt) for more information.
|
See [documentation here](https://www.npmjs.com/package/dokku-toolbelt) for more information.
|
||||||
|
|
||||||
## (python) dokku-client
|
|
||||||
|
|
||||||
dokku-client is an extensible python-based cli wrapper for remote Dokku hosts. You can install it via the following shell command (assuming you have python and pip installed):
|
|
||||||
|
|
||||||
```shell
|
|
||||||
pip install dokku-client
|
|
||||||
```
|
|
||||||
|
|
||||||
See [documentation here](https://github.com/adamcharnock/dokku-client) for more information.
|
|
||||||
|
|
||||||
## (ruby) Dokku CLI
|
## (ruby) Dokku CLI
|
||||||
|
|
||||||
Dokku CLI 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):
|
Dokku CLI 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):
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
| [Haproxy tcp load balancer](https://github.com/256dpi/dokku-haproxy) | [256dpi][] | 0.4.0+ |
|
| [Haproxy tcp load balancer](https://github.com/256dpi/dokku-haproxy) | [256dpi][] | 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+ |
|
| [HTTP Auth Secure Apps](https://github.com/matto1990/dokku-secure-apps) | [matto1990][] | 0.4.0+ |
|
||||||
|
| [Litestream](https://github.com/AxelTheGerman/dokku-litestream)<sup>2</sup> | [AxelTheGerman][] | 0.27.0+ |
|
||||||
| [Monit (Health Checks)](https://github.com/mbreit/dokku-monit) | [mbreit][] | 0.8.0+ |
|
| [Monit (Health Checks)](https://github.com/mbreit/dokku-monit) | [mbreit][] | 0.8.0+ |
|
||||||
| [Nuke Containers](https://github.com/josegonzalez/dokku-nuke) | [josegonzalez][] | 0.4.0+ |
|
| [Nuke Containers](https://github.com/josegonzalez/dokku-nuke) | [josegonzalez][] | 0.4.0+ |
|
||||||
| [Open App Ports](https://github.com/josegonzalez/dokku-ports) | [josegonzalez][] | 0.3.x |
|
| [Open App Ports](https://github.com/josegonzalez/dokku-ports) | [josegonzalez][] | 0.3.x |
|
||||||
@@ -116,13 +117,15 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
|
|
||||||
<sup>1</sup> Extends app.json support to include creating volumes and creating / linking databases on push
|
<sup>1</sup> Extends app.json support to include creating volumes and creating / linking databases on push
|
||||||
|
|
||||||
<sup>2</sup> Adds the possibility to add SSH deployment keys to receive private hosted packages
|
<sup>2</sup> Adds SQLite replication to external object storage via [Litestream](https://litestream.io)
|
||||||
|
|
||||||
<sup>3</sup> Adds the ability to add custom hosts to the containers known_hosts file to be able to ssh them easily (useful with deployment keys)
|
<sup>3</sup> Adds the possibility to add SSH deployment keys to receive private hosted packages
|
||||||
|
|
||||||
<sup>4</sup> Adds the ability to sync an application repo with a remote GitHub repo (useful for automated rebuilds without needing a git push from an external system
|
<sup>4</sup> Adds the ability to add custom hosts to the containers known_hosts file to be able to ssh them easily (useful with deployment keys)
|
||||||
|
|
||||||
<sup>5</sup> Adds the ability to invoke a post-deploy webhook with the IP, port and app name, all with a single config:set).
|
<sup>5</sup> Adds the ability to sync an application repo with a remote GitHub repo (useful for automated rebuilds without needing a git push from an external system
|
||||||
|
|
||||||
|
<sup>6</sup> Adds the ability to invoke a post-deploy webhook with the IP, port and app name, all with a single config:set).
|
||||||
|
|
||||||
### Other Plugins
|
### Other Plugins
|
||||||
|
|
||||||
@@ -238,6 +241,7 @@ The following plugins are no longer maintained by their developers.
|
|||||||
[aomitayo]: https://github.com/aomitayo
|
[aomitayo]: https://github.com/aomitayo
|
||||||
[apmorton]: https://github.com/apmorton
|
[apmorton]: https://github.com/apmorton
|
||||||
[artofrawr]: https://github.com/artofrawr
|
[artofrawr]: https://github.com/artofrawr
|
||||||
|
[AxelTheGerman]: https://github.com/AxelTheGerman
|
||||||
[badsyntax]: https://github.com/badsyntax
|
[badsyntax]: https://github.com/badsyntax
|
||||||
[basgys]: https://github.com/basgys
|
[basgys]: https://github.com/basgys
|
||||||
[benjamin-dobell]: https://github.com/benjamin-dobell
|
[benjamin-dobell]: https://github.com/benjamin-dobell
|
||||||
|
|||||||
@@ -113,4 +113,4 @@ dokku domains:report node-js-app --domains-app-enabled
|
|||||||
|
|
||||||
## Default site
|
## Default site
|
||||||
|
|
||||||
This is specific to your proxy plugin of choice. See the [nginx documentation](/docs/configuration/nginx.md#default-site) for more information on how to configure this for the default nginx proxy implementation.
|
This is specific to your proxy plugin of choice. See the [nginx documentation](/docs/networking/proxies/nginx.md#default-site) for more information on how to configure this for the default nginx proxy implementation.
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ config:keys (<app>|--global) [--merged]
|
|||||||
config:set [--encoded] [--no-restart] (<app>|--global) KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars
|
config:set [--encoded] [--no-restart] (<app>|--global) KEY1=VALUE1 [KEY2=VALUE2 ...] Set one or more config vars
|
||||||
config:unset [--no-restart] (<app>|--global) KEY1 [KEY2 ...] Unset one or more config vars
|
config:unset [--no-restart] (<app>|--global) KEY1 [KEY2 ...] Unset one or more config vars
|
||||||
```
|
```
|
||||||
> For security reasons - and as per [docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available _only_ during runtime, as noted in [this issue](https://github.com/dokku/dokku/issues/1860).
|
> For security reasons - and as per [docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available _only_ during runtime, as noted in [this issue](https://github.com/dokku/dokku/issues/1860). Consider using [build arguments](/docs/deployment/builders/dockerfiles.md#build-time-configuration-variables) to expose variables during build-time for Dockerfile apps.
|
||||||
|
|
||||||
Environment variables are available both at run time and during the application build/compilation step for buildpack-based deploys.
|
Environment variables are available both at run time and during the application build/compilation step for buildpack-based deploys.
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ cat yourdomain_com.crt yourdomain_com.ca-bundle > server.crt
|
|||||||
|
|
||||||
When an SSL certificate is associated to an application, the certificate will be associated with _all_ domains currently associated with said application. Your certificate _should_ be associated with all of those domains, otherwise accessing the application will result in SSL errors. If you wish to remove one of the domains from the application, refer to the [domain configuration documentation](/docs/configuration/domains.md).
|
When an SSL certificate is associated to an application, the certificate will be associated with _all_ domains currently associated with said application. Your certificate _should_ be associated with all of those domains, otherwise accessing the application will result in SSL errors. If you wish to remove one of the domains from the application, refer to the [domain configuration documentation](/docs/configuration/domains.md).
|
||||||
|
|
||||||
Note that with the default nginx template, requests will be redirected to the `https` version of the domain. If this is not the desired state of request resolution, you may customize the nginx template in use. For more details, see the [nginx documentation](/docs/configuration/nginx.md).
|
Note that with the default nginx template, requests will be redirected to the `https` version of the domain. If this is not the desired state of request resolution, you may customize the nginx template in use. For more details, see the [nginx documentation](/docs/networking/proxies/nginx.md).
|
||||||
|
|
||||||
### Certificate generation
|
### Certificate generation
|
||||||
|
|
||||||
@@ -126,7 +126,7 @@ dokku certs:report node-js-app --ssl-enabled
|
|||||||
|
|
||||||
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 does enables this header by default for HTTPS requests.
|
||||||
|
|
||||||
See the [NGINX HSTS documentation](/docs/configuration/nginx.md#hsts-header) for more information on how the HSTS configuration can be managed for your application.
|
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.
|
||||||
|
|
||||||
## HTTP/2 support
|
## HTTP/2 support
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Deploying to Dokku
|
# Deploying an Application
|
||||||
|
|
||||||
> Note: This walkthrough uses the hostname `dokku.me` in commands. When deploying to your own server, you should substitute the domain `dokku.me` for the domain name or IP address associated with your server. Users of the Vagrant VM included with Dokku can use `dokku.me` which points to the IP of the VM.
|
> Note: This walkthrough uses the hostname `dokku.me` in commands. When deploying to your own server, you should substitute the domain `dokku.me` for the domain name or IP address associated with your server. Users of the Vagrant VM included with Dokku can use `dokku.me` which points to the IP of the VM.
|
||||||
|
|
||||||
@@ -105,7 +105,7 @@ Dokku supports deploying applications in a few ways:
|
|||||||
- [Heroku buildpacks](https://devcenter.heroku.com/articles/buildpacks) via [Herokuish](https://github.com/gliderlabs/herokuish#buildpacks): See the [herokuish buildpacks documentation](/docs/deployment/builders/herokuish-buildpacks.md) to learn about the different ways to specify a buildpack.
|
- [Heroku buildpacks](https://devcenter.heroku.com/articles/buildpacks) via [Herokuish](https://github.com/gliderlabs/herokuish#buildpacks): See the [herokuish buildpacks documentation](/docs/deployment/builders/herokuish-buildpacks.md) to learn about the different ways to specify a buildpack.
|
||||||
- This is the default method used by Dokku.
|
- This is the default method used by Dokku.
|
||||||
- [Dockerfile](https://docs.docker.com/reference/builder/): See the [dockerfile documentation](/docs/deployment/builders/dockerfiles.md) to learn about the different ways to configure Dockerfile-based deploys.
|
- [Dockerfile](https://docs.docker.com/reference/builder/): See the [dockerfile documentation](/docs/deployment/builders/dockerfiles.md) to learn about the different ways to configure Dockerfile-based deploys.
|
||||||
- [Docker Image](https://docs.docker.com/get-started/overview/#docker-objects): See the [docker image documentation](/docs/deployment/methods/images.md) to learn about how to deploy a Docker Image.
|
- [Docker Image](https://docs.docker.com/get-started/overview/#docker-objects): See the [docker image documentation](/docs/deployment/methods/git.md#initializing-an-app-repository-from-a-docker-image) to learn about how to deploy a Docker Image.
|
||||||
|
|
||||||
### Setting up SSL
|
### Setting up SSL
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@ See the [Dockerfile documentation](/docs/deployment/builders/dockerfiles.md) for
|
|||||||
|
|
||||||
## Image tagging
|
## Image tagging
|
||||||
|
|
||||||
See the [image tagging documentation](/docs/deployment/methods/images.md) for more information on how Docker images can be tagged and deployed for a given application.
|
See the [image tagging documentation](/docs/deployment/methods/git.md#initializing-an-app-repository-from-a-docker-image) for more information on how Docker images can be tagged and deployed for a given application.
|
||||||
|
|
||||||
## Specifying a custom buildpack
|
## Specifying a custom buildpack
|
||||||
|
|
||||||
|
|||||||
@@ -150,6 +150,12 @@ By default, Dokku will deploy the renamed app, though you can skip the deploy by
|
|||||||
dokku apps:rename --skip-deploy node-js-app io-js-app
|
dokku apps:rename --skip-deploy node-js-app io-js-app
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Remember to also change your git remote on your local machine in order to make `git push dokku main:master` work again. For this you can use `git remote set-url`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
git remote set-url dokku dokku@dokku.me:io-js-app
|
||||||
|
```
|
||||||
|
|
||||||
### Cloning an existing app
|
### Cloning an existing app
|
||||||
|
|
||||||
> New as of 0.11.5
|
> New as of 0.11.5
|
||||||
|
|||||||
@@ -17,6 +17,7 @@ Dokku supports the following built-in builders:
|
|||||||
|
|
||||||
- `builder-dockerfile`: Builds apps using a `Dockerfile` via `docker build`. See the [dockerfile builder documentation](/docs/deployment/builders/dockerfiles.md) for more information on how this builder functions.
|
- `builder-dockerfile`: Builds apps using a `Dockerfile` via `docker build`. See the [dockerfile builder documentation](/docs/deployment/builders/dockerfiles.md) for more information on how this builder functions.
|
||||||
- `builder-herokuish`: Builds apps with Heroku's v2a Buildpack specification via `gliderlabs/herokuish`. See the [herokuish builder documentation](/docs/deployment/builders/herokuish-buildpacks.md) for more information on how this builder functions.
|
- `builder-herokuish`: Builds apps with Heroku's v2a Buildpack specification via `gliderlabs/herokuish`. See the [herokuish builder documentation](/docs/deployment/builders/herokuish-buildpacks.md) for more information on how this builder functions.
|
||||||
|
- `builder-lambda`: Builds AWS Lambda functions in an environment simulating AWS Lambda runtimes via [lambda-builder](https://github.com/dokku/lambda-builder). See the [lambda builder documentation](/docs/deployment/builders/lambda.md) for more information on how this builder functions.
|
||||||
- `builder-null`: Does nothing during the build phase. See the [null builder documentation](/docs/deployment/builders/null.md) for more information on how this builder functions.
|
- `builder-null`: Does nothing during the build phase. See the [null builder documentation](/docs/deployment/builders/null.md) for more information on how this builder functions.
|
||||||
- `builder-pack`: Builds apps with Cloud Native Buildpacks via the `pack-cli` tool. See the [cloud native buildpacks builder documentation](/docs/deployment/builders/cloud-native-buildpacks.md) for more information on how this builder functions.
|
- `builder-pack`: Builds apps with Cloud Native Buildpacks via the `pack-cli` tool. See the [cloud native buildpacks builder documentation](/docs/deployment/builders/cloud-native-buildpacks.md) for more information on how this builder functions.
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Cloud Native Buildpacks (Experimental)
|
# Cloud Native Buildpacks
|
||||||
|
|
||||||
> New as of 0.22.0
|
> New as of 0.22.0
|
||||||
|
|
||||||
@@ -84,7 +84,7 @@ dokku builder-pack:set --global projecttoml-path
|
|||||||
You can get a report about the app's storage status using the `builder-pack:report` command:
|
You can get a report about the app's storage status using the `builder-pack:report` command:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku app-json:report
|
dokku builder-pack:report
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ dokku builder-dockerfile:set --global dockerfile-path
|
|||||||
You can get a report about the app's storage status using the `builder-dockerfile:report` command:
|
You can get a report about the app's storage status using the `builder-dockerfile:report` command:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku app-json:report
|
dokku builder-dockerfile:report
|
||||||
```
|
```
|
||||||
|
|
||||||
```
|
```
|
||||||
@@ -107,7 +107,7 @@ Dockerfile2
|
|||||||
|
|
||||||
For security reasons - and as per [Docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-based deploys have variables available only during runtime.
|
For security reasons - and as per [Docker recommendations](https://github.com/docker/docker/issues/13490) - Dockerfile-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):
|
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):
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku docker-options:add node-js-app build '--build-arg NODE_ENV=production'
|
dokku docker-options:add node-js-app build '--build-arg NODE_ENV=production'
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Herokuish Buildpack Deployment
|
# Herokuish Buildpacks
|
||||||
|
|
||||||
> Subcommands new as of 0.15.0
|
> Subcommands new as of 0.15.0
|
||||||
|
|
||||||
|
|||||||
107
docs/deployment/builders/lambda.md
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
# Lambda Builder
|
||||||
|
|
||||||
|
> New as of 0.28.0
|
||||||
|
|
||||||
|
The `lambda` builder builds AWS Lambda functions in an environment simulating AWS Lambda runtimes via [lambda-builder](https://github.com/dokku/lambda-builder). Apps built via this builder can run natively in Dokku and may also have their artifacts scheduled to Lambda via an appropriate scheduler.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Detection
|
||||||
|
|
||||||
|
This builder will be auto-detected in the following case:
|
||||||
|
|
||||||
|
- A `lambda.yml` 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 lambda
|
||||||
|
```
|
||||||
|
|
||||||
|
### Supported languages
|
||||||
|
|
||||||
|
The `lambda` builder plugin supports the following AWS runtime languages on Amazon Linux 2:
|
||||||
|
|
||||||
|
- dotnet
|
||||||
|
- go (builder is based on AL1)
|
||||||
|
- nodejs
|
||||||
|
- python
|
||||||
|
- ruby
|
||||||
|
|
||||||
|
See the [lambda-builder](https://github.com/dokku/lambda-builder#how-does-it-work) documentation for more information on how specific languages are detected.
|
||||||
|
|
||||||
|
### Customizing the build environment
|
||||||
|
|
||||||
|
The `lambda` builder plugin delegates all build logic to [lambda-builder](https://github.com/dokku/lambda-builder), including language detection and build/runtime environment specification. The lambda-builder tool supports a `lambda.yml` file format for customizing how apps are built. Please see the readme for lambda-builder for more information on different options.
|
||||||
|
|
||||||
|
### 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.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-lambda:set node-js-app lambdayml-path lambda2.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-lambda:set node-js-app lambdayml-path
|
||||||
|
```
|
||||||
|
|
||||||
|
The `lambdayml-path` property can also be set globally. The global default is `lambda.yml`, and the global value is used when no app-specific value is set.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-lambda:set --global lambdayml-path lambda2.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-lambda:set --global lambdayml-path
|
||||||
|
```
|
||||||
|
|
||||||
|
### Displaying builder-lambda reports for an app
|
||||||
|
|
||||||
|
You can get a report about the app's storage status using the `builder-lambda:report` command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-lambda-json:report
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app builder-lambda information
|
||||||
|
Builder-lambda computed lambdayml path: lambda2.yml
|
||||||
|
Builder-lambda global lambdayml path: lambda.yml
|
||||||
|
Builder-lambda lambdayml path: lambda2.yml
|
||||||
|
=====> python-sample builder-lambda information
|
||||||
|
Builder-lambda computed lambdayml path: lambda.yml
|
||||||
|
Builder-lambda global lambdayml path: lambda.yml
|
||||||
|
Builder-lambda lambdayml path:
|
||||||
|
=====> ruby-sample builder-lambda information
|
||||||
|
Builder-lambda computed lambdayml path: lambda.yml
|
||||||
|
Builder-lambda global lambdayml path: lambda.yml
|
||||||
|
Builder-lambda lambdayml path:
|
||||||
|
```
|
||||||
|
|
||||||
|
You can run the command for a specific app also.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-lambda:report node-js-app
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app builder-lambda information
|
||||||
|
Builder-lambda computed lambdayml path: lambda2.yml
|
||||||
|
Builder-lambda global lambdayml path: lambda.yml
|
||||||
|
Builder-lambda lambdayml path: lambda2.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
You can pass flags which will output only the value of the specific information you want. For example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-lambda:report node-js-app --builder-lambda-lambdayml-path
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
lambda2.yml
|
||||||
|
```
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# Log Management
|
# Log Management
|
||||||
|
|
||||||
```
|
```
|
||||||
logs <app> [-h] [-t|--tail] [-n|--num num] [-q|--quiet] [-p|--ps process] # Display recent log output
|
logs <app> [-h|--help] [-t|--tail] [-n|--num num] [-q|--quiet] [-p|--ps process] # Display recent log output
|
||||||
logs:failed [--all|<app>] # Shows the last failed deploy logs
|
logs:failed [--all|<app>] # Shows the last failed deploy logs
|
||||||
logs:report [<app>] [<flag>] # Displays a logs report for one or more apps
|
logs:report [<app>] [<flag>] # Displays a logs report for one or more apps
|
||||||
logs:set [--global|<app>] <key> <value> # Set or clear a logs property for an app
|
logs:set [--global|<app>] <key> <value> # Set or clear a logs property for an app
|
||||||
@@ -20,6 +20,8 @@ You can easily get logs of an app using the `logs` command:
|
|||||||
dokku logs node-js-app
|
dokku logs node-js-app
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Logs are pulled via integration with the scheduler for the specified application via "live tailing". As such, logs from previously running deployments are usually not available. Users that desire to see logs from previous deployments for debugging purposes should persist those logs to external services. Please see Dokku's [vector integration](/docs/deployment/logs.md#vector-logging-shipping) for more information on how to persist logs across deployments to ship logs to another service or a third-party platform.
|
||||||
|
|
||||||
#### Behavioral modifiers
|
#### Behavioral modifiers
|
||||||
|
|
||||||
Dokku also supports certain command-line arguments that augment the `log` command's behavior.
|
Dokku also supports certain command-line arguments that augment the `log` command's behavior.
|
||||||
@@ -41,7 +43,7 @@ The above command will show logs continually from the web process.
|
|||||||
|
|
||||||
### Failed deploy logs
|
### Failed deploy logs
|
||||||
|
|
||||||
> Warning: The default [docker-local scheduler](/docs/advanced-usage/schedulers/docker-local.md) will "store" these until the next deploy or until the old containers are garbage collected - whichever runs first. If you require the logs beyond this point in time, please ship the logs to a centralized log server.
|
> Warning: The default [docker-local scheduler](/docs/deployment/schedulers/docker-local.md) will "store" these until the next deploy or until the old containers are garbage collected - whichever runs first. If you require the logs beyond this point in time, please ship the logs to a centralized log server.
|
||||||
|
|
||||||
In some cases, it may be useful to retrieve the logs from a previously failed deploy.
|
In some cases, it may be useful to retrieve the logs from a previously failed deploy.
|
||||||
|
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ The resulting `git:from-image` call would then be:
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
# where the image sha is: sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
# where the image sha is: sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
||||||
dokku git:from-image node-js-app dokku/node-js-getting-started:@sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
dokku git:from-image node-js-app dokku/node-js-getting-started@sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
||||||
```
|
```
|
||||||
|
|
||||||
The `git:from-image` command can optionally take a git `user.name` and `user.email` argument (in that order) to customize the author. If the arguments are left empty, they will fallback to `Dokku` and `automated@dokku.sh`, respectively.
|
The `git:from-image` command can optionally take a git `user.name` and `user.email` argument (in that order) to customize the author. If the arguments are left empty, they will fallback to `Dokku` and `automated@dokku.sh`, respectively.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
Dokku commands can be run over SSH. Anywhere you would run `dokku <command>`, just run `ssh -t dokku@dokku.me <command>`
|
Dokku commands can be run over SSH. Anywhere you would run `dokku <command>`, just run `ssh -t dokku@dokku.me <command>`
|
||||||
The `-t` is used to request a pty. It is highly recommended to do so.
|
The `-t` is used to request a pty. It is highly recommended to do so.
|
||||||
To avoid the need to type the `-t` option each time, simply create/modify a section in the `.ssh/config` on the client side, as follows:
|
To avoid the need to type the `-t` option each time, create/modify a section in the `.ssh/config` on the client side, as follows:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
Host dokku.me
|
Host dokku.me
|
||||||
@@ -12,7 +12,7 @@ Host dokku.me
|
|||||||
## Behavioral modifiers
|
## Behavioral modifiers
|
||||||
|
|
||||||
Dokku also supports certain command line arguments that augment its behavior. If using these over SSH, you must use the form `ssh -t dokku@dokku.me -- <command>`
|
Dokku also supports certain command line arguments that augment its behavior. If using these over SSH, you must use the form `ssh -t dokku@dokku.me -- <command>`
|
||||||
in order to avoid SSH interpretting Dokku arguments for itself.
|
to avoid SSH interpreting Dokku arguments for itself.
|
||||||
|
|
||||||
```
|
```
|
||||||
--quiet suppress output headers
|
--quiet suppress output headers
|
||||||
@@ -71,7 +71,7 @@ All commands have the application name automatically set via the `--app` flag on
|
|||||||
|
|
||||||
The client supports several environment variables:
|
The client supports several environment variables:
|
||||||
|
|
||||||
- `DOKKU_HOST` (default: `dokku` git remote): Used to interact with a specific remote server. Can be overriden via `--remote` flag.
|
- `DOKKU_HOST` (default: `dokku` git remote): Used to interact with a specific remote server. Can be overridden via the `--remote` flag.
|
||||||
- `DOKKU_PORT` (default: `22`): Used to specify a port to connect to the Dokku server on.
|
- `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):
|
It also supports several flags (all flags unspecified here are passed as is to the server):
|
||||||
@@ -84,10 +84,10 @@ It also supports several flags (all flags unspecified here are passed as is to t
|
|||||||
In addition, the following commands have special local side-effects:
|
In addition, the following commands have special local side-effects:
|
||||||
|
|
||||||
- `apps:create`:
|
- `apps:create`:
|
||||||
- If no local `--app` flag is specified or detected from a `dokku` git remote, a random name is generated and used for the app.
|
- If no local `--app` flag is specified or detected from a `dokku` git remote, a random name is generated and used for the app.
|
||||||
- The `dokku` git remote is set if not already set.
|
- The `dokku` git remote is set if not already set.
|
||||||
- `apps:destroy`:
|
- `apps:destroy`:
|
||||||
- Removes the local `dokku` git remote if set.
|
- Removes the local `dokku` git remote if set.
|
||||||
|
|
||||||
## Unofficial Clients
|
## Unofficial Clients
|
||||||
|
|
||||||
|
|||||||
@@ -37,6 +37,22 @@ Once set, you may re-enable it by setting a blank value for `disable-chown`:
|
|||||||
dokku scheduler-docker-local:set node-js-app disable-chown
|
dokku scheduler-docker-local:set node-js-app disable-chown
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Disabling the init process
|
||||||
|
|
||||||
|
The `scheduler-docker-local` injects an init process by default via the `--init`. For some apps - such as those where the built docker image uses S6 as the init - this may be undesirable and cause issues with process starts. You may disable this by running the following `scheduler-docker-local:set` command for your application:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-docker-local:set node-js-app init-process false
|
||||||
|
```
|
||||||
|
|
||||||
|
Once set, you may re-enable it by setting a blank value for `init-process`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-docker-local:set node-js-app init-process
|
||||||
|
```
|
||||||
|
|
||||||
|
All image containers with the label `org.opencontainers.image.vendor=linuxserver.io` will have the automatic init process injection force-disabled without further intervention.
|
||||||
|
|
||||||
### Deploying Process Types in Parallel
|
### Deploying Process Types in Parallel
|
||||||
|
|
||||||
> New as of 0.25.5
|
> New as of 0.25.5
|
||||||
@@ -91,7 +107,11 @@ Omitting or removing the entry will result in parallelism for that process type
|
|||||||
|
|
||||||
Note that increasing the value of `max_parallel` may significantly impact CPU utilization on your host as your app containers - and their respective processes - start up. Setting a value higher than the number of available CPUs is discouraged. It is recommended that users carefully set this value so as not to overburden their server.
|
Note that increasing the value of `max_parallel` may significantly impact CPU utilization on your host as your app containers - and their respective processes - start up. Setting a value higher than the number of available CPUs is discouraged. It is recommended that users carefully set this value so as not to overburden their server.
|
||||||
|
|
||||||
## Implemented Triggers
|
## Scheduler Interface
|
||||||
|
|
||||||
|
The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
|
||||||
|
|
||||||
|
### Implemented Commands and Triggers
|
||||||
|
|
||||||
This plugin implements various functionality through `plugn` triggers to integrate with Docker for running apps on a single server. The following functionality is supported by the `scheduler-docker-local` plugin.
|
This plugin implements various functionality through `plugn` triggers to integrate with Docker for running apps on a single server. The following functionality is supported by the `scheduler-docker-local` plugin.
|
||||||
|
|
||||||
@@ -105,22 +125,27 @@ This plugin implements various functionality through `plugn` triggers to integra
|
|||||||
- `ps:stop`
|
- `ps:stop`
|
||||||
- `run`
|
- `run`
|
||||||
|
|
||||||
## Supported Resource Management Properties
|
|
||||||
|
### Logging support
|
||||||
|
|
||||||
|
App logs for the `logs` command are fetched from running containers via the `docker` cli. To persist logs across deployments, consider using Dokku's [vector integration](/docs/deployment/logs.md#vector-logging-shipping) to ship logs to another service or a third-party platform.
|
||||||
|
|
||||||
|
### Supported Resource Management Properties
|
||||||
|
|
||||||
The `docker-local` scheduler supports a minimal list of resource _limits_ and _reservations_. The following properties are supported:
|
The `docker-local` scheduler supports a minimal list of resource _limits_ and _reservations_. The following properties are supported:
|
||||||
|
|
||||||
### Resource Limits
|
#### Resource Limits
|
||||||
|
|
||||||
- cpu: (docker option: `--cpus`), is specified in number of CPUs a process can access.
|
- cpu: (docker option: `--cpus`), is specified in number of CPUs a process can access.
|
||||||
- See the ["CPU" section](https://docs.docker.com/config/containers/resource_constraints/#cpu) of the Docker Runtime Options documentation for more information.
|
- See the ["CPU" section](https://docs.docker.com/config/containers/resource_constraints/#cpu) of the Docker Runtime Options documentation for more information.
|
||||||
- memory: (docker option: `--memory`) should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes).
|
- memory: (docker option: `--memory`) should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes). Default unit is `m` (megabytes).
|
||||||
- See the ["Memory" section](https://docs.docker.com/config/containers/resource_constraints/#memory) of the Docker Runtime Options documentation for more information.
|
- See the ["Memory" section](https://docs.docker.com/config/containers/resource_constraints/#memory) of the Docker Runtime Options documentation for more information.
|
||||||
- memory-swap: (docker option: `--memory-swap`) should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes)
|
- memory-swap: (docker option: `--memory-swap`) should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes)
|
||||||
- See the ["Memory" section](https://docs.docker.com/config/containers/resource_constraints/#memory) of the Docker Runtime Options documentation for more information.
|
- See the ["Memory" section](https://docs.docker.com/config/containers/resource_constraints/#memory) of the Docker Runtime Options documentation for more information.
|
||||||
- nvidia-gpus: (docker option: `--gpus`), is specified in number of Nvidia GPUs a process can access.
|
- nvidia-gpus: (docker option: `--gpus`), is specified in number of Nvidia GPUs a process can access.
|
||||||
- See the ["GPU" section](https://docs.docker.com/config/containers/resource_constraints/#gpu) of the Docker Runtime Options documentation for more information.
|
- See the ["GPU" section](https://docs.docker.com/config/containers/resource_constraints/#gpu) of the Docker Runtime Options documentation for more information.
|
||||||
|
|
||||||
### Resource Reservations
|
#### Resource Reservations
|
||||||
|
|
||||||
- memory: (docker option: `--memory-reservation`) should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes)
|
- memory: (docker option: `--memory-reservation`) should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes). Default unit is `m` (megabytes).
|
||||||
- See the ["Memory" section](https://docs.docker.com/config/containers/resource_constraints/#memory) of the Docker Runtime Options documentation for more information.
|
- See the ["Memory" section](https://docs.docker.com/config/containers/resource_constraints/#memory) of the Docker Runtime Options documentation for more information.
|
||||||
|
|||||||
@@ -1,14 +1,24 @@
|
|||||||
# Kubernetes Scheduler
|
# Kubernetes Scheduler
|
||||||
|
|
||||||
> Warning: This scheduler is not in Dokku core and thus is considered experimental.
|
> Warning: This scheduler is not in Dokku core and thus functionality may change over time as the API stabilizes.
|
||||||
|
|
||||||
The [Kubernetes Scheduler Plugin](https://github.com/dokku/dokku-scheduler-kubernetes) implements the following functionality:
|
The [Kubernetes Scheduler Plugin](https://github.com/dokku/dokku-scheduler-kubernetes) is available free as an external plugin. Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-kubernetes/issues) for more information on the status of the plugin.
|
||||||
|
|
||||||
|
For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
|
||||||
|
|
||||||
|
## Scheduler Interface
|
||||||
|
|
||||||
|
The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
|
||||||
|
|
||||||
|
### Implemented Commands and Triggers
|
||||||
|
|
||||||
|
This plugin implements various functionality through `plugn` triggers to integrate with `kubectl` for running apps on a Kubernetes cluster. The following functionality is supported by the `scheduler-kubernetes` plugin.
|
||||||
|
|
||||||
- `apps:destroy`
|
- `apps:destroy`
|
||||||
- `deploy`: partial, does not implement failed deploy log capture
|
- `deploy`: partial, does not implement failed deploy log capture
|
||||||
- `logs`: partial, does not implement failure logs
|
- `logs`: partial, does not implement failure logs
|
||||||
- `ps:stop`
|
- `ps:stop`
|
||||||
|
|
||||||
Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-kubernetes/issues) for more information on the status of the plugin.
|
### Logging support
|
||||||
|
|
||||||
For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
|
App logs for the `logs` command are fetched from running pods via the `kubectl` cli. To persist logs across deployments, consider using [Vector](https://vector.dev/docs/setup/installation/platforms/kubernetes/) or a similar tool to ship logs to another service or a third-party platform.
|
||||||
|
|||||||
@@ -1,13 +1,23 @@
|
|||||||
# Nomad Scheduler
|
# Nomad Scheduler
|
||||||
|
|
||||||
> Warning: This scheduler is not in Dokku core and thus is considered experimental.
|
> Warning: This scheduler is not in Dokku core and thus functionality may change over time as the API stabilizes.
|
||||||
|
|
||||||
The [Nomad Scheduler Plugin](https://github.com/dokku/dokku-scheduler-nomad) implements the following functionality:
|
The [Nomad Scheduler Plugin](https://github.com/dokku/dokku-scheduler-nomad) is available free as an external plugin. Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-nomad/issues) for more information on the status of the plugin.
|
||||||
|
|
||||||
|
For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
|
||||||
|
|
||||||
|
## Scheduler Interface
|
||||||
|
|
||||||
|
The following sections describe implemented scheduler functionality for the `docker-local` scheduler.
|
||||||
|
|
||||||
|
### Implemented Commands and Triggers
|
||||||
|
|
||||||
|
This plugin implements various functionality through `plugn` triggers to integrate with the `nomad` cli for running apps on a Nomad cluster. The following functionality is supported by the `scheduler-nomad` plugin.
|
||||||
|
|
||||||
- `apps:destroy`
|
- `apps:destroy`
|
||||||
- `deploy`
|
- `deploy`
|
||||||
- `ps:stop`
|
- `ps:stop`
|
||||||
|
|
||||||
Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-nomad/issues) for more information on the status of the plugin.
|
### Logging support
|
||||||
|
|
||||||
For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
|
> Warning: Fetching app logs for the `logs` command is currently not implemented. Please consider using [Vector](https://vector.dev/docs/setup/installation/platforms/kubernetes/) or a similar tool to ship logs to another service or a third-party platform.
|
||||||
|
|||||||
@@ -18,8 +18,6 @@ Dokku supports the following built-in schedulers:
|
|||||||
- `scheduler-docker-local`: Schedules apps against the local docker socket and runs containers directly on the Dokku host. See the [docker-local scheduler documentation](/docs/deployment/schedulers/docker-local.md) for more information on how this scheduler functions.
|
- `scheduler-docker-local`: Schedules apps against the local docker socket and runs containers directly on the Dokku host. See the [docker-local scheduler documentation](/docs/deployment/schedulers/docker-local.md) for more information on how this scheduler functions.
|
||||||
- `scheduler-null`: Does nothing during the scheduler phase. See the [null scheduler documentation](/docs/deployment/schedulers/null.md) for more information on how this scheduler functions.
|
- `scheduler-null`: Does nothing during the scheduler phase. See the [null scheduler documentation](/docs/deployment/schedulers/null.md) for more information on how this scheduler functions.
|
||||||
|
|
||||||
See the [alternate schedulers documentation](/docs/deployment/schedulers/alternate-schedulers.md) for more information on other scheduler plugins.
|
|
||||||
|
|
||||||
### Overriding the auto-selected scheduler
|
### Overriding the auto-selected scheduler
|
||||||
|
|
||||||
If desired, the scheduler can be specified via the `scheduler:set` command by speifying a value for `selected`. The selected scheduler will always be used.
|
If desired, the scheduler can be specified via the `scheduler:set` command by speifying a value for `selected`. The selected scheduler will always be used.
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Zero Downtime Deploys
|
# Zero Downtime Deploy Checks
|
||||||
|
|
||||||
> New as of 0.5.0
|
> New as of 0.5.0
|
||||||
|
|
||||||
|
|||||||
@@ -74,6 +74,21 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `app-list`
|
||||||
|
|
||||||
|
- Description: Lists all apps in available to the currently logged in user. Optionally disables filtering by user if the first argument is `false`.
|
||||||
|
- Invoked by:
|
||||||
|
- Arguments: `$FILTER`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `app-json-process-deploy-parallelism`
|
### `app-json-process-deploy-parallelism`
|
||||||
|
|
||||||
- Description: Decides the parallelism to use when deploying a given process type. The default is 1 process entry at a type.
|
- Description: Decides the parallelism to use when deploying a given process type. The default is 1 process entry at a type.
|
||||||
@@ -426,7 +441,6 @@ DOKKU_SCHEDULER="$1"
|
|||||||
```shell
|
```shell
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Installs nginx for the current plugin
|
# Installs nginx for the current plugin
|
||||||
# Supports both opensuse and ubuntu
|
|
||||||
|
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
@@ -436,9 +450,8 @@ case "$DOKKU_DISTRO" in
|
|||||||
debian|raspbian|ubuntu)
|
debian|raspbian|ubuntu)
|
||||||
apt-get -qq -y --no-install-recommends install nginx
|
apt-get -qq -y --no-install-recommends install nginx
|
||||||
;;
|
;;
|
||||||
|
*)
|
||||||
opensuse)
|
echo "Installation on $DOKKU_DISTRO not supported" 1>&2
|
||||||
zypper -q in -y nginx
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
```
|
```
|
||||||
@@ -774,6 +787,20 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `git-has-code`
|
||||||
|
|
||||||
|
- Description: Checks to see if there is code at the specified branch
|
||||||
|
- Arguments: `$APP $BRANCH_NAME`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `git-post-pull`
|
### `git-post-pull`
|
||||||
|
|
||||||
- Description:
|
- Description:
|
||||||
@@ -1815,6 +1842,21 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `proxy-configure-ports`
|
||||||
|
|
||||||
|
- Description: Configures the proxy port mapping
|
||||||
|
- Invoked by: `internally triggered by proxy plugins`
|
||||||
|
- Arguments: `$APP`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `proxy-disable`
|
### `proxy-disable`
|
||||||
|
|
||||||
- Description: Disables the configured proxy implementation for an app
|
- Description: Disables the configured proxy implementation for an app
|
||||||
@@ -2367,3 +2409,44 @@ shift 2
|
|||||||
[[ "$SSH_NAME" == "default" && $1 == plugin:* ]] && exit 1
|
[[ "$SSH_NAME" == "default" && $1 == plugin:* ]] && exit 1
|
||||||
exit 0
|
exit 0
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `user-auth-app`
|
||||||
|
|
||||||
|
This is a special plugin trigger that is executed when listing apps or checking if an app exists. All Dokku commands should check if an app exists at least once before interacting with them so as not to circumvent the check.
|
||||||
|
|
||||||
|
Note that the trigger should exit `0`, and each non-empty line on stdout is captured as a valid app name.
|
||||||
|
|
||||||
|
The `SSH_USER` is the original ssh user. If you are running remote commands, this user will typically be `dokku`, and as such should not be trusted when checking permissions. If you are connected via ssh as a different user who then invokes `dokku`, the value of this variable will be that user's name (`root`, `myuser`, etc.).
|
||||||
|
|
||||||
|
The `SSH_NAME` is the `NAME` variable set via the `sshcommand acl-add` command. For reference, the following command can be run as the root user to specify a specific `NAME` for a given ssh key:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
sshcommand acl-add dokku NAME < $PATH_TO_SSH_KEY
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that the `NAME` value is set at the first ssh key match. If an ssh key is set in the `/home/dokku/.ssh/authorized_keys` multiple times, the first match will decide the value.
|
||||||
|
|
||||||
|
- Description: Allows you to deny access to a Dokku app by either ssh user or associated ssh-command NAME user.
|
||||||
|
- Invoked by: `dokku`
|
||||||
|
- Arguments: `$SSH_USER $SSH_NAME $DOKKU_COMMAND`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# hide any apps with the prefix "admin"
|
||||||
|
# if the logged in user (SSH_USER) or SSH_NAME is not `root`
|
||||||
|
|
||||||
|
main() {
|
||||||
|
declare SSH_USER="$1" SSH_NAME="$2" ARGS=("${@:3}")
|
||||||
|
|
||||||
|
for arg in "${ARGS[@]}"; do
|
||||||
|
if [[ "$arg" == admin-* ]] && [[ "$SSH_USER" != "root" ]] && [[ "$SSH_NAME" != "root" ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "${arg}"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
|
```
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ The workflow looks like this:
|
|||||||
```shell
|
```shell
|
||||||
# having dokku-arch in ../dokku-arch
|
# having dokku-arch in ../dokku-arch
|
||||||
vagrant up build-arch
|
vagrant up build-arch
|
||||||
# wait for "==> build-arch: ==> Finished making: dokku 0.26.3-2 (Mon Feb 22 23:20:37 CET 2016)"
|
# wait for "==> build-arch: ==> Finished making: dokku 0.28.3-2 (Mon Feb 22 23:20:37 CET 2016)"
|
||||||
cd ../dokku-arch
|
cd ../dokku-arch
|
||||||
git add PKGBUILD .SRCINFO
|
git add PKGBUILD .SRCINFO
|
||||||
git commit -m 'Update to dokku 0.9.9'
|
git commit -m 'Update to dokku 0.9.9'
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ While we do provide official packages for a variety of platforms, as our test su
|
|||||||
|
|
||||||
## Local Test Execution
|
## Local Test Execution
|
||||||
|
|
||||||
|
### Vagrant VM
|
||||||
|
|
||||||
- Setup Dokku in a [Vagrant VM](/docs/getting-started/install/vagrant.md).
|
- Setup Dokku in a [Vagrant VM](/docs/getting-started/install/vagrant.md).
|
||||||
- Run the following to setup tests and execute them:
|
- Run the following to setup tests and execute them:
|
||||||
|
|
||||||
@@ -25,18 +27,6 @@ While we do provide official packages for a variety of platforms, as our test su
|
|||||||
sudo su -
|
sudo su -
|
||||||
cd ~/dokku
|
cd ~/dokku
|
||||||
make ci-dependencies setup-deploy-tests
|
make ci-dependencies setup-deploy-tests
|
||||||
|
|
||||||
# execute the entire test suite (linter, bats tests, and app deployment tests)
|
|
||||||
make test
|
|
||||||
|
|
||||||
# run linter
|
|
||||||
make lint
|
|
||||||
|
|
||||||
# execute all bats tests
|
|
||||||
make unit-tests
|
|
||||||
|
|
||||||
# execute all app deployment tests
|
|
||||||
make deploy-tests
|
|
||||||
```
|
```
|
||||||
|
|
||||||
After making changes to your local Dokku clone, don't forget to update the Vagrant Dokku install.
|
After making changes to your local Dokku clone, don't forget to update the Vagrant Dokku install.
|
||||||
@@ -49,7 +39,54 @@ make copyfiles
|
|||||||
make go-build-plugin copyplugin PLUGIN_NAME=apps
|
make go-build-plugin copyplugin PLUGIN_NAME=apps
|
||||||
```
|
```
|
||||||
|
|
||||||
Additionally you may run a specific app deployment tests with a target similar to:
|
### VSCode Dev Container
|
||||||
|
|
||||||
|
- Open Dokku in a VSCode DevContainer
|
||||||
|
- Run the following in the VSCode terminal to setup tests and execute them:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make ci-dependencies setup-deploy-tests
|
||||||
|
```
|
||||||
|
|
||||||
|
After making changes to your local Dokku clone, don't forget to update the Vagrant Dokku install.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# update vagrant dokku install from local git clone
|
||||||
|
make copyfiles
|
||||||
|
|
||||||
|
# build a specific plugin
|
||||||
|
make go-build-plugin copyplugin PLUGIN_NAME=apps
|
||||||
|
```
|
||||||
|
|
||||||
|
### Executing tests
|
||||||
|
|
||||||
|
Execute the entire test suite (linter, bats tests, and app deployment tests):
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make test
|
||||||
|
```
|
||||||
|
|
||||||
|
Run the linter
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make lint
|
||||||
|
```
|
||||||
|
|
||||||
|
Execute all bats tests
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make unit-tests
|
||||||
|
```
|
||||||
|
|
||||||
|
Execute all app deployment tests
|
||||||
|
|
||||||
|
```shell
|
||||||
|
make deploy-tests
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Executing App Tests
|
||||||
|
|
||||||
|
You may run a specific app deployment tests with a target similar to:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
make deploy-test-nodejs-express
|
make deploy-test-nodejs-express
|
||||||
@@ -57,32 +94,32 @@ make deploy-test-nodejs-express
|
|||||||
|
|
||||||
For a full list of test make targets check out `tests.mk` in the root of the Dokku repository.
|
For a full list of test make targets check out `tests.mk` in the root of the Dokku repository.
|
||||||
|
|
||||||
## Executing a single test suite
|
#### Executing a single test suite
|
||||||
|
|
||||||
When working on a particular plugin, it may be useful to run _only_ a particular test suite. This can be done by specifying the test suite path:
|
When working on a particular plugin, it may be useful to run _only_ a particular test suite. This can be done by specifying the test suite path:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
bats tests/unit/10_apps.bats
|
bats tests/unit/apps_1.bats
|
||||||
```
|
```
|
||||||
|
|
||||||
It is also possible to target multiple test suites at a time.
|
It is also possible to target multiple test suites at a time.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
bats tests/unit/10_apps.bats tests/unit/10_certs.bats
|
bats tests/unit/apps_1.bats tests/unit/certs.bats
|
||||||
```
|
```
|
||||||
|
|
||||||
## Executing a single test
|
#### Executing a single test
|
||||||
|
|
||||||
In order to increase testing velocity, a wrapper script around Bats is available that can be used to run a single test case within a suite.
|
In order to increase testing velocity, a wrapper script around Bats is available that can be used to run a single test case within a suite.
|
||||||
|
|
||||||
Tests within a suite may be listed by specifying the suite as a parameter to `bats`.
|
Tests within a suite may be listed by specifying the suite as a parameter to `bats`.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
bats tests/unit/10_apps.bats
|
bats tests/unit/apps_1.bats
|
||||||
```
|
```
|
||||||
|
|
||||||
A single test can be specified via the `--filter` argument. The tests are selected via regex match, and all matches are executed.
|
A single test can be specified via the `--filter` argument. The tests are selected via regex match, and all matches are executed.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
bats --filter clone tests/unit/10_apps.bats
|
bats --filter list tests/unit/apps_1.bats
|
||||||
```
|
```
|
||||||
|
|||||||
32
docs/enterprise/pro.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Dokku Pro
|
||||||
|
|
||||||
|
Dokku Pro is a commercial offering that provides a familiar Web UI for all common tasks performed by developers. End users can expect an interface that provides various complex cli commands in an intuitive, app-centric manner, quickly speeding up tasks that might otherwise be difficult for new and old users to perform. Additionally, it provides a way to perform these tasks remotely via a json api, enabling easier, audited remote management of servers. Finally, Dokku Pro provides an alternative, https-based method for deploying code which can be used in environments that lockdown ssh access to servers.
|
||||||
|
|
||||||
|
## Purchasing
|
||||||
|
|
||||||
|
Dokku Pro may be purchased online by clicking the following purchase link:
|
||||||
|
|
||||||
|
<a data-dpd-type="button" data-text="PURCHASE NOW" data-variant="price-right" data-button-size="dpd-large" data-bg-color="469d3d" data-bg-color-hover="5cc052" data-text-color="ffffff" data-pr-bg-color="ffffff" data-pr-color="000000" data-lightbox="1" href="https://dokku.dpdcart.com/cart/add?product_id=217344&method_id=236878">Dokku Pro Purchase Link</a>
|
||||||
|
|
||||||
|
> Currently, the server must be able to contact the public internet to validate the license, or it will fail to start. For offline support, inquire for enterprise offline licensing.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
Dokku Pro is shipped as Debian and RPM packages, and depends on the following files:
|
||||||
|
|
||||||
|
- `/etc/default/dokku-pro`: Configures certain environment variables for usage by the dokku-pro binary
|
||||||
|
- `/etc/dokku-pro/license.key`: Contains the downloaded license key
|
||||||
|
- `/var/lib/dokku/data/pro/db`: Contains the local dokku-pro database
|
||||||
|
|
||||||
|
Please refer to the purchase email for details on configuring Dokku Pro.
|
||||||
|
|
||||||
|
## Features and Development
|
||||||
|
|
||||||
|
Dokku Pro has the following functionality:
|
||||||
|
|
||||||
|
- Shipped as a single binary for ease of use
|
||||||
|
- JSON-API-compatible API with JWT authentication
|
||||||
|
- Authenticated HTTP(S) endpoints for git push functionality
|
||||||
|
- Single Page App (SPA) Web UI exposing app, datastore, and ssh key management
|
||||||
|
|
||||||
|
While each release is fairly feature complete, individual features and documentation will expand over time. Feature development follows a monthly release cadence, with individual bug fixes released on an as needed basis.
|
||||||
@@ -1,5 +1,23 @@
|
|||||||
# Advanced installation
|
# Advanced installation
|
||||||
|
|
||||||
|
## Installing via other methods
|
||||||
|
|
||||||
|
For various reasons, certain hosting providers may have other steps that should be preferred to the above. If hosted on any of the following popular hosts, please follow the linked to instructions:
|
||||||
|
|
||||||
|
- [DigitalOcean Installation Notes](/docs/getting-started/install/digitalocean.md)
|
||||||
|
- [DreamHost Cloud Installation Notes](/docs/getting-started/install/dreamhost.md)
|
||||||
|
- [Microsoft Azure Installation Notes](/docs/getting-started/install/azure.md)
|
||||||
|
|
||||||
|
As well, you may wish to customize your installation in some other fashion. or experiment with Vagrant. The guides below should get you started:
|
||||||
|
|
||||||
|
- [Debian Package Installation Notes](/docs/getting-started/install/debian.md)
|
||||||
|
- [Docker-based Installation Notes](/docs/getting-started/install/docker.md)
|
||||||
|
- [Vagrant Installation Notes](/docs/getting-started/install/vagrant.md)
|
||||||
|
- [Advanced Install Customization](/docs/getting-started/advanced-installation.md)
|
||||||
|
- [Automated deployment via ansible](https://github.com/dokku/ansible-dokku)
|
||||||
|
|
||||||
|
## Installing from Source
|
||||||
|
|
||||||
You can always install Dokku straight from the latest - potentially unstable - `master` branch via the following Bash command:
|
You can always install Dokku straight from the latest - potentially unstable - `master` branch via the following Bash command:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
|||||||
@@ -6,6 +6,23 @@
|
|||||||
|
|
||||||
3. You'll be prompted to enter a few parameters, including a unique storage account name and a unique name for the subdomain used for your public IP address. For the `sshKeyData` parameter, copy and paste the contents of the *public* key file you just created. After a few minutes the Dokku instance will be deployed.
|
3. You'll be prompted to enter a few parameters, including a unique storage account name and a unique name for the subdomain used for your public IP address. For the `sshKeyData` parameter, copy and paste the contents of the *public* key file you just created. After a few minutes the Dokku instance will be deployed.
|
||||||
|
|
||||||
4. In your browser of choice, navigate to `http://[dnsNameForPublicIP].[location].cloudapp.azure.com`. Where `[dnsNameForPublicIP]` and `[location]` are template parameters you used to deploy the template.
|
4. Once the installation is complete, you should configure an ssh key and set your global domain.
|
||||||
|
|
||||||
5. Finish your Dokku setup like you normally would by creating a *new* public/private key pair for your deployments using `ssh-keygen` (don't use the same one as you created in the first step). You should select **Use Virtual Host Naming** and set the **Hostname** to a *public DNS name* that you own such as one you would purchase from [Namecheap](http://namecheap.com). Alternatively thanks to [sslip.io](https://sslip.io/) you can just use `[yourAzurePublicIP].sslip.io` for free. For example, if your public IP is `44.44.44.44` then you would set it to `44.44.44.44.sslip.io`.
|
```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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
dokku domains:set-global dokku.me
|
||||||
|
|
||||||
|
# you can also use the ip of your server
|
||||||
|
dokku domains:set-global 10.0.0.2
|
||||||
|
|
||||||
|
# finally, you can use sslip.io to get subdomain support
|
||||||
|
# as you would with a regular domain name
|
||||||
|
# this would be done by appending `.sslip.io` to your ip address
|
||||||
|
dokku domains:set-global 10.0.0.2.sslip.io
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [user management](/docs/deployment/user-management.md#adding-ssh-keys) and [domains documentation](/docs/configuration/domains.md#customizing-hostnames) for more information.
|
||||||
|
|||||||
@@ -11,9 +11,9 @@ sudo apt-get -qq -y --no-install-recommends install apt-transport-https
|
|||||||
wget -nv -O - https://get.docker.com/ | sh
|
wget -nv -O - https://get.docker.com/ | sh
|
||||||
|
|
||||||
# install dokku
|
# install dokku
|
||||||
wget -nv -O - https://packagecloud.io/dokku/dokku/gpgkey | apt-key add -
|
wget -qO- https://packagecloud.io/dokku/dokku/gpgkey | sudo tee /etc/apt/trusted.gpg.d/dokku.asc
|
||||||
OS_ID="$(lsb_release -cs 2>/dev/null || echo "bionic")"
|
OS_ID="$(lsb_release -cs 2>/dev/null || echo "bionic")"
|
||||||
echo "bionic focal" | grep -q "$OS_ID" || OS_ID="bionic"
|
echo "bionic focal jammy" | grep -q "$OS_ID" || OS_ID="bionic"
|
||||||
echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ ${OS_ID} main" | sudo tee /etc/apt/sources.list.d/dokku.list
|
echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ ${OS_ID} main" | sudo tee /etc/apt/sources.list.d/dokku.list
|
||||||
sudo apt-get update -qq >/dev/null
|
sudo apt-get update -qq >/dev/null
|
||||||
sudo apt-get -qq -y install dokku
|
sudo apt-get -qq -y install dokku
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Pull the dokku/dokku image:
|
Pull the dokku/dokku image:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker pull dokku/dokku:0.26.3
|
docker pull dokku/dokku:0.28.3
|
||||||
```
|
```
|
||||||
|
|
||||||
Next, run the image.
|
Next, run the image.
|
||||||
@@ -18,7 +18,7 @@ docker container run \
|
|||||||
--publish 8443:443 \
|
--publish 8443:443 \
|
||||||
--volume /var/lib/dokku:/mnt/dokku \
|
--volume /var/lib/dokku:/mnt/dokku \
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||||
dokku/dokku:0.26.3
|
dokku/dokku:0.28.3
|
||||||
```
|
```
|
||||||
|
|
||||||
The above command will start a new docker container that is ready when a message similar to `Runit started as PID 12345` appears.
|
The above command will start a new docker container that is ready when a message similar to `Runit started as PID 12345` appears.
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
# RPM Package Installation Notes
|
|
||||||
|
|
||||||
> New as of 0.8.0 *(experimental)*
|
|
||||||
|
|
||||||
> **Warning:** Web installer is not available on CentOS. You will need to configure [SSH keys](/docs/deployment/user-management.md#adding-ssh-keys) and [virtual hosts](/docs/configuration/domains.md#customizing-hostnames) using dokku command line interface.
|
|
||||||
|
|
||||||
Dokku defaults to being installed via RPM package on CentOS 7. While certain hosts may require extra work to get running, you may optionally wish to automate the installation of Dokku without the use of our `bootstrap.sh` Bash script. The following are the steps run by said script:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# Install docker
|
|
||||||
curl -fsSL https://get.docker.com/ | sh
|
|
||||||
|
|
||||||
# Install epel for nginx packages to be available
|
|
||||||
sudo yum install -y epel-release
|
|
||||||
|
|
||||||
# Install dokku
|
|
||||||
curl -s https://packagecloud.io/install/repositories/dokku/dokku/script.rpm.sh | sudo bash
|
|
||||||
sudo yum install -y herokuish dokku
|
|
||||||
sudo dokku plugin:install-dependencies --core
|
|
||||||
systemctl start nginx
|
|
||||||
|
|
||||||
# Enable docker and nginx on system startup
|
|
||||||
systemctl enable docker
|
|
||||||
systemctl enable nginx
|
|
||||||
```
|
|
||||||
|
|
||||||
The [devicemapper](https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/) is the default Docker storage driver on CentOS 7 and defaults to a configuration mode known as `loop-lvm`. This mode is designed to work out-of-the-box with no additional configuration. However, production deployments should not run under `loop-lvm` mode. The preferred configuration for production deployments is [`direct-lvm`](https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#/configure-direct-lvm-mode-for-production).
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
# Getting Started with Dokku
|
|
||||||
|
|
||||||
## What is Dokku?
|
|
||||||
|
|
||||||
Dokku is an extensible, open source Platform as a Service that runs on a single server of your choice.
|
|
||||||
|
|
||||||
To start using Dokku, you'll need a system that meets the following minimum requirements:
|
|
||||||
|
|
||||||
- A fresh installation of [Ubuntu 18.04/20.04 x64](https://www.ubuntu.com/download), [Debian 9+ x64](https://www.debian.org/distrib/) or [CentOS 7 x64](https://www.centos.org/download/) *(experimental)* with the FQDN set <sup>[1]</sup>
|
|
||||||
- At least 1 GB of system memory <sup>[2]</sup>
|
|
||||||
|
|
||||||
Dokku is designed for usage on a fresh VM installation, and should install all necessary dependencies if installing via the bootstrap method.
|
|
||||||
|
|
||||||
### Installing the latest stable version
|
|
||||||
|
|
||||||
#### 1. Install Dokku
|
|
||||||
|
|
||||||
To install the latest stable version of Dokku, you can run the following shell commands:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# for debian systems, installs Dokku via apt-get
|
|
||||||
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.3/bootstrap.sh;
|
|
||||||
sudo DOKKU_TAG=v0.26.3 bash bootstrap.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
The installation process takes about 5-10 minutes, depending upon internet connection speed.
|
|
||||||
|
|
||||||
If you're using Debian 9+ or Ubuntu 18.04, make sure your package manager is configured to install a sufficiently recent version of nginx<sup>[3]</sup>, otherwise, the installation may fail due to `unmet dependencies` relating nginx.
|
|
||||||
|
|
||||||
#### 2. Optionally connect a domain to your server
|
|
||||||
|
|
||||||
Dokku optionally supports one or more domain names. If you do not own a domain name, you may either purchase one or skip this step.
|
|
||||||
|
|
||||||
When connecting a domain, either a single domain or a wildcard may be associated to the server's IP. A wildcard domain will allow access to apps via `$APP.domain.tld`, whereas associating only a single domain name will result in apps being access via `domain.tld:$RANDOM_PORT`. Please see the [dns documentation](/docs/networking/dns.md) and [domains documentation](/docs/configuration/domains.md) for more details.
|
|
||||||
|
|
||||||
#### 3. Setup SSH key and Virtualhost Settings
|
|
||||||
|
|
||||||
Once the installation is complete, you should configure an ssh key and set your global domain:from-archive
|
|
||||||
|
|
||||||
```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
|
|
||||||
|
|
||||||
# you can use any domain you already have access to
|
|
||||||
dokku domains:set-global dokku.me
|
|
||||||
```
|
|
||||||
|
|
||||||
See the [user management](/docs/deployment/user-management.md#adding-ssh-keys) and [domains documentation](/docs/configuration/domains.md#customizing-hostnames) for more information.
|
|
||||||
|
|
||||||
Alternatively, instructions for an unattended installation are available in the [advanced install guide](/docs/getting-started/advanced-installation.md#configuring).
|
|
||||||
|
|
||||||
#### 4. Deploy your first application
|
|
||||||
|
|
||||||
At this point, you should be able to run or [deploy to the Dokku installation](/docs/deployment/application-deployment.md).
|
|
||||||
|
|
||||||
### Installing via other methods
|
|
||||||
|
|
||||||
For various reasons, certain hosting providers may have other steps that should be preferred to the above. If hosted on any of the following popular hosts, please follow the linked to instructions:
|
|
||||||
|
|
||||||
- [DigitalOcean Installation Notes](/docs/getting-started/install/digitalocean.md)
|
|
||||||
- [DreamHost Cloud Installation Notes](/docs/getting-started/install/dreamhost.md)
|
|
||||||
- [Microsoft Azure Installation Notes](/docs/getting-started/install/azure.md)
|
|
||||||
|
|
||||||
As well, you may wish to customize your installation in some other fashion. or experiment with Vagrant. The guides below should get you started:
|
|
||||||
|
|
||||||
- [Debian Package Installation Notes](/docs/getting-started/install/debian.md)
|
|
||||||
- [Docker-based Installation Notes](/docs/getting-started/install/docker.md)
|
|
||||||
- [RPM Package Installation Notes](/docs/getting-started/install/rpm.md)
|
|
||||||
- [Vagrant Installation Notes](/docs/getting-started/install/vagrant.md)
|
|
||||||
- [Advanced Install Customization](/docs/getting-started/advanced-installation.md)
|
|
||||||
- [Automated deployment via ansible](https://github.com/dokku/ansible-dokku)
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
- <sup>[1]: To check whether your system has an fqdn set, run `sudo hostname -f`</sup>
|
|
||||||
- <sup>[2]: If your system has less than 1GB of memory, you can use [this workaround](/docs/getting-started/advanced-installation.md#vms-with-less-than-1gb-of-memory).</sup>
|
|
||||||
- <sup>[3]: nginx >= 1.8.0 can be installed via the [nginx repositories](https://www.nginx.com/resources/admin-guide/installing-nginx-open-source/), or by adding [this PPA](https://launchpad.net/~nginx/+archive/ubuntu/stable) if you're using Ubuntu. nginx >= 1.11.5 is necessary for HTTP/2 support</sup>
|
|
||||||
72
docs/getting-started/installation/index.md
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
# Getting Started with Dokku
|
||||||
|
|
||||||
|
### What is Dokku?
|
||||||
|
|
||||||
|
Dokku is an extensible, open source Platform as a Service that runs on a single server of your choice. Dokku supports building apps on the fly from a `git push` via either Dockerfile or by auto-detecting the language with Buildpacks, and then starts containers based on your built image. Using technologies such as nginx and cron, Web processes are automatically routed to, while background processes and automated cron tasks are also managed by Dokku.
|
||||||
|
|
||||||
|
### System Requirements
|
||||||
|
|
||||||
|
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 18.04/20.04/22.04](https://www.ubuntu.com/download)
|
||||||
|
- [Debian 10+ x64](https://www.debian.org/distrib/)
|
||||||
|
- A server with one of the following architectures
|
||||||
|
- AMD64 (alternatively known as `x86_64`), commonly used for Intel cloud servers
|
||||||
|
- ARMV7 (alternatively known as `armhf`), commonly used for Raspberry PI
|
||||||
|
- ARMV8 (alternatively known as `arm64`), commonly used for Raspberry PI and AWS Graviton
|
||||||
|
|
||||||
|
To avoid memory pressure during builds or runtime of your applications, we suggest the following:
|
||||||
|
|
||||||
|
- At least 1 GB of system memory
|
||||||
|
- If your system has less than 1GB of memory, you can use [this workaround](/docs/getting-started/advanced-installation.md#vms-with-less-than-1-gb-of-memory).
|
||||||
|
|
||||||
|
Finally, we recommend attaching at least one domain name to your server. This is not required, but using a domain name will make app access easier. When connecting a domain, either a single domain or a wildcard may be associated to the server's IP.
|
||||||
|
|
||||||
|
- Wildcard domain (`*.domain.tld` A Record): will allow access to apps via `$APP.domain.tld`.
|
||||||
|
- Single domain (`domain.tld` A or CNAME Record): will result in apps being accessed via `domain.tld:$RANDOM_PORT`.
|
||||||
|
|
||||||
|
Please see the [dns documentation](/docs/networking/dns.md) and [domains documentation](/docs/configuration/domains.md) for more details.
|
||||||
|
|
||||||
|
### Installing the latest stable version
|
||||||
|
|
||||||
|
This is the simple method of installing Dokku. For alternative methods of installation, see the [advanced install guide](/docs/getting-started/advanced-installation.md#configuring).
|
||||||
|
|
||||||
|
#### 1. Install Dokku
|
||||||
|
|
||||||
|
To install the latest stable version of Dokku, you can run the following shell commands:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# for debian systems, installs Dokku via apt-get
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.28.3/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.28.3 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
The installation process takes about 5-10 minutes, depending upon internet connection speed.
|
||||||
|
|
||||||
|
#### 2. Setup SSH key and Virtualhost Settings
|
||||||
|
|
||||||
|
Once the installation is complete, you should configure an ssh key and set your global domain.
|
||||||
|
|
||||||
|
```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
|
||||||
|
|
||||||
|
# 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
|
||||||
|
dokku domains:set-global dokku.me
|
||||||
|
|
||||||
|
# you can also use the ip of your server
|
||||||
|
dokku domains:set-global 10.0.0.2
|
||||||
|
|
||||||
|
# finally, you can use sslip.io to get subdomain support
|
||||||
|
# as you would with a regular domain name
|
||||||
|
# this would be done by appending `.sslip.io` to your ip address
|
||||||
|
dokku domains:set-global 10.0.0.2.sslip.io
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [user management](/docs/deployment/user-management.md#adding-ssh-keys) and [domains documentation](/docs/configuration/domains.md#customizing-hostnames) for more information.
|
||||||
|
|
||||||
|
#### 3. Deploy your first application
|
||||||
|
|
||||||
|
At this point, you should be able to [deploy to the Dokku installation](/docs/deployment/application-deployment.md).
|
||||||
@@ -9,13 +9,6 @@ While we hate to see you go, if you need to uninstall Dokku, the following may h
|
|||||||
yay -Rsn dokku
|
yay -Rsn dokku
|
||||||
```
|
```
|
||||||
|
|
||||||
## CentOS Uninstallation
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# uninstall dokku
|
|
||||||
yum remove dokku herokuish
|
|
||||||
```
|
|
||||||
|
|
||||||
## Debian Uninstallation
|
## Debian Uninstallation
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Upgrading
|
# Upgrading
|
||||||
|
|
||||||
If your version of Dokku is pre 0.3.0 (check with `dokku version`), we recommend [a fresh install](/docs/getting-started/installation.md) on a new server.
|
If your version of Dokku is pre 0.3.0 (check with `dokku version`), we recommend [a fresh install](/docs/getting-started/installation/index.md) on a new server.
|
||||||
|
|
||||||
## Security Updates
|
## Security Updates
|
||||||
|
|
||||||
@@ -9,7 +9,6 @@ For any security related updates, please follow our [Twitter account](https://tw
|
|||||||
Your operating system may occasionally provide security updates. We recommend setting unattended upgrades for your operating system. Here are some helpful links:
|
Your operating system may occasionally provide security updates. We recommend setting unattended upgrades for your operating system. Here are some helpful links:
|
||||||
|
|
||||||
- [Arch Linux System Maintenance](https://wiki.archlinux.org/index.php/System_maintenance)
|
- [Arch Linux System Maintenance](https://wiki.archlinux.org/index.php/System_maintenance)
|
||||||
- [CentOS Automatic Security Updates](https://serversforhackers.com/c/automatic-security-updates-centos)
|
|
||||||
- [Debian Unattended Upgrades](https://wiki.debian.org/UnattendedUpgrades)
|
- [Debian Unattended Upgrades](https://wiki.debian.org/UnattendedUpgrades)
|
||||||
- [Ubuntu Unattended Upgrades](https://help.ubuntu.com/community/AutomaticSecurityUpdates)
|
- [Ubuntu Unattended Upgrades](https://help.ubuntu.com/community/AutomaticSecurityUpdates)
|
||||||
|
|
||||||
@@ -19,6 +18,8 @@ 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.
|
Before upgrading, check the migration guides to get comfortable with new features and prepare your deployment to be upgraded.
|
||||||
|
|
||||||
|
- [Upgrading to 0.28](/docs/appendices/0.28.0-migration-guide.md)
|
||||||
|
- [Upgrading to 0.27](/docs/appendices/0.27.0-migration-guide.md)
|
||||||
- [Upgrading to 0.26](/docs/appendices/0.26.0-migration-guide.md)
|
- [Upgrading to 0.26](/docs/appendices/0.26.0-migration-guide.md)
|
||||||
- [Upgrading to 0.25](/docs/appendices/0.25.0-migration-guide.md)
|
- [Upgrading to 0.25](/docs/appendices/0.25.0-migration-guide.md)
|
||||||
- [Upgrading to 0.24](/docs/appendices/0.24.0-migration-guide.md)
|
- [Upgrading to 0.24](/docs/appendices/0.24.0-migration-guide.md)
|
||||||
@@ -118,6 +119,5 @@ To upgrade Herokuish from source, upgrade with:
|
|||||||
cd /tmp
|
cd /tmp
|
||||||
git clone https://github.com/gliderlabs/herokuish.git
|
git clone https://github.com/gliderlabs/herokuish.git
|
||||||
cd herokuish
|
cd herokuish
|
||||||
git pull origin master
|
CIRCLECI=true IMAGE_NAME=gliderlabs/herokuish BUILD_TAG=latest make build/docker
|
||||||
IMAGE_NAME=gliderlabs/herokuish BUILD_TAG=latest VERSION=master make -e build-in-docker
|
|
||||||
```
|
```
|
||||||
@@ -20,9 +20,19 @@ GitHub Discussions is a new way for the Dokku community to interact with each ot
|
|||||||
|
|
||||||
### The Slack Channel
|
### The Slack Channel
|
||||||
|
|
||||||
- [Gliderlabs Slack](https://glider-slackin.herokuapp.com/) (Join the `#dokku` channel)
|
- [Gliderlabs Slack](https://slack.dokku.com/) (Join the `#dokku` channel)
|
||||||
|
|
||||||
If you’re stumped, give us a holler in the Dokku Slack channel. Someone from the development team is usually there, especially during the daylight hours for North and South American users. We’d love to hear from you, whether you need some help, want to find users in your area, or would like to donate your brand new sports car.
|
If you’re stumped, give us a holler in the Dokku Slack channel. Someone from the development team is usually there, especially during the daylight hours for North and South American users. We’d love to hear from you, whether you need some help, want to find users in your area, or would like to donate our brand new sports car.
|
||||||
|
|
||||||
|
Chat is synced to Discord and IRC.
|
||||||
|
|
||||||
|
## Discord
|
||||||
|
|
||||||
|
- [Dokku Discord](https://discord.gg/YQjANGMZvu)
|
||||||
|
|
||||||
|
We provide a Dokku Discord that folks can use to ask questions or comments about the project. Someone from the development team is usually there, especially during the daylight hours for North and South American users. Feel free to join us online!
|
||||||
|
|
||||||
|
Chat is synced to IRC and Slack.
|
||||||
|
|
||||||
## Unmonitored Locations
|
## Unmonitored Locations
|
||||||
|
|
||||||
@@ -38,4 +48,4 @@ Tag your questions with `dokku` to enable existing users of Stack Overflow to fi
|
|||||||
|
|
||||||
- [irc.libera.chat/#dokku](https://webchat.libera.chat/?channels=dokku)
|
- [irc.libera.chat/#dokku](https://webchat.libera.chat/?channels=dokku)
|
||||||
|
|
||||||
This location isn't as well monitored as Slack, and loses history.
|
This location isn't as well monitored as Slack, and loses history. Chat is synced to Discord and Slack
|
||||||
|
|||||||
1021
docs/home.html
@@ -65,7 +65,7 @@ If everything is working correctly, you should also be able to query for any oth
|
|||||||
|
|
||||||
If they all return your IP address, you have set DNS up properly for dokku. You should also be able to `ssh root@myserver.example.tld` and access your server.
|
If they all return your IP address, you have set DNS up properly for dokku. You should also be able to `ssh root@myserver.example.tld` and access your server.
|
||||||
|
|
||||||
Proceed with the setup instructions in the [installation documentation](/docs/getting-started/installation.md)
|
Proceed with the setup instructions in the [installation documentation](/docs/getting-started/installation/index.md)
|
||||||
|
|
||||||
### Using the root of your domain (node-js-app.example.tld)
|
### Using the root of your domain (node-js-app.example.tld)
|
||||||
|
|
||||||
@@ -74,4 +74,4 @@ This section is a work in progress. It is incomplete.
|
|||||||
Using the 'root' of your domain is nearly identical to the previous example.
|
Using the 'root' of your domain is nearly identical to the previous example.
|
||||||
|
|
||||||
* hostname is under `example.tld`, still needs `A` record.
|
* hostname is under `example.tld`, still needs `A` record.
|
||||||
* Update your global domain using the [domains plugin](docs/configuration/domains.md).
|
* Update your global domain using the [domains plugin](/docs/configuration/domains.md).
|
||||||
|
|||||||