Compare commits
1136 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
d26c12e6eb | ||
|
|
74d230c11c | ||
|
|
b146483940 | ||
|
|
9e2c79c5ed | ||
|
|
a0cece197f | ||
|
|
57858c1788 | ||
|
|
88736c1000 | ||
|
|
48357adac1 | ||
|
|
3b4d101a42 | ||
|
|
c3871e7da9 | ||
|
|
7a4ead4db4 | ||
|
|
c32d0cc791 | ||
|
|
b3c732e487 | ||
|
|
ae14b02cbd | ||
|
|
1532590b50 | ||
|
|
d3cbb730ac | ||
|
|
ffd5c896ed | ||
|
|
6bc960e10c | ||
|
|
2e237041ec | ||
|
|
23798b575b | ||
|
|
b690d9d18d | ||
|
|
cd030f4fa0 | ||
|
|
6db82861e6 | ||
|
|
a637ffc848 | ||
|
|
760be655e9 | ||
|
|
01e317259b | ||
|
|
c74c542b1f | ||
|
|
c4ad455aad | ||
|
|
8c43542f2e | ||
|
|
61f8590553 | ||
|
|
d84c17d9e2 | ||
|
|
c9d10b8a2b | ||
|
|
b43cec2d6b | ||
|
|
e1d5228796 | ||
|
|
fd77f9c7a0 | ||
|
|
f6b03dd55f | ||
|
|
43631e8847 | ||
|
|
afea3b54a8 | ||
|
|
17a2b333f3 | ||
|
|
06e63c8f95 | ||
|
|
1bc8bb2a24 | ||
|
|
1bf8493cd1 | ||
|
|
e705d4eed8 | ||
|
|
6e46bacf92 | ||
|
|
69bb8e3077 | ||
|
|
3aa7d39358 | ||
|
|
867403f589 | ||
|
|
cce7c5cb97 | ||
|
|
6ad8aa7988 | ||
|
|
36294e09a3 | ||
|
|
fddf130abd | ||
|
|
c0b6942392 | ||
|
|
f949fe2a49 | ||
|
|
55554ce9bd | ||
|
|
904894722f | ||
|
|
a8a167f87f | ||
|
|
cd7b8afccb | ||
|
|
6c6e72ca04 | ||
|
|
9616473c3a | ||
|
|
e53e8bb59f | ||
|
|
5cfe7610b2 | ||
|
|
6b50ba66a9 | ||
|
|
685ef90018 | ||
|
|
b48b79f5ca | ||
|
|
8f7f03a7d8 | ||
|
|
d1a16717b3 | ||
|
|
aa77638ca7 | ||
|
|
e893ac2aaa | ||
|
|
1f8c5509cf | ||
|
|
3c6396fbca | ||
|
|
8984b748c5 | ||
|
|
9fc7c49da5 | ||
|
|
650eb57e91 | ||
|
|
33a6c29517 | ||
|
|
ba2126c57a | ||
|
|
00bb9fad9f | ||
|
|
396ba7b1ab | ||
|
|
6fb306eb03 | ||
|
|
d12c9d7362 | ||
|
|
363039fe34 | ||
|
|
ef4eeab029 | ||
|
|
9ffd262801 | ||
|
|
a4318ecdbd | ||
|
|
c335eb9ad6 | ||
|
|
9d883f53c7 | ||
|
|
a25071f02f | ||
|
|
5f5efe2563 | ||
|
|
fa1f3d0a08 | ||
|
|
0720c3ef66 | ||
|
|
ea86a9f2ca | ||
|
|
4cf717baf8 | ||
|
|
bab3e714f7 | ||
|
|
74b2961f8d | ||
|
|
76201aed64 | ||
|
|
9e27b07772 | ||
|
|
51c5c58354 | ||
|
|
2d1b93c354 | ||
|
|
f945696d15 | ||
|
|
4687b96003 | ||
|
|
92524c2da0 | ||
|
|
a5ea0ba896 | ||
|
|
b7c7155852 | ||
|
|
fd28bf53de | ||
|
|
52d9cb6188 | ||
|
|
5dcdce8b62 | ||
|
|
b41b5c0a68 | ||
|
|
a9f820bfaa | ||
|
|
a2e40de597 | ||
|
|
2fa7baa035 | ||
|
|
177f0be21c | ||
|
|
c29def79f3 | ||
|
|
8fb50bbf68 | ||
|
|
ed9d356f60 | ||
|
|
a4be3a06f9 | ||
|
|
e636609fa8 | ||
|
|
1d1cf56692 | ||
|
|
82778a0aad | ||
|
|
3d239344fe | ||
|
|
c266d8c41e | ||
|
|
6f2c218f29 | ||
|
|
abfb0d3977 | ||
|
|
9a1a97d56f | ||
|
|
44caf44ce6 | ||
|
|
e800b8a9a7 | ||
|
|
4d0ff4a834 | ||
|
|
ce4fe7850b | ||
|
|
869a6ce553 | ||
|
|
43b90f1ae8 | ||
|
|
3e694926c9 | ||
|
|
1c277a99cb | ||
|
|
071416ef11 | ||
|
|
5502a61452 | ||
|
|
96924e54c4 | ||
|
|
8cff88dea0 | ||
|
|
fbff08a580 | ||
|
|
9b45aed6f0 | ||
|
|
d9eea74f18 | ||
|
|
301d5a19b0 | ||
|
|
8cb4bb74fa | ||
|
|
61447f9ffd | ||
|
|
06742cfcc4 | ||
|
|
82dfcc01e2 | ||
|
|
892391a7fd | ||
|
|
44a43cb130 | ||
|
|
e00c98546f | ||
|
|
27e2f7ab3d | ||
|
|
eadf9f1f8e | ||
|
|
597fb7d219 | ||
|
|
e27d19a346 | ||
|
|
15bf4a8386 | ||
|
|
003ed01e30 | ||
|
|
db239debf1 | ||
|
|
fccd4e1a20 | ||
|
|
0c8c093cf7 | ||
|
|
f74b702c5e | ||
|
|
75309bf3a0 | ||
|
|
dc310c4ce4 | ||
|
|
0aa3c3fa53 | ||
|
|
2d180f5e0f | ||
|
|
d83471bd46 | ||
|
|
974f601fa9 | ||
|
|
4a8ed5cd06 | ||
|
|
709d8d411c | ||
|
|
e79b750b6d | ||
|
|
bb4a2da52e | ||
|
|
79bb5cb9a7 | ||
|
|
70877e351c | ||
|
|
8877abb83f | ||
|
|
cdc5eb9909 | ||
|
|
e1482df157 | ||
|
|
b45b2db8e7 | ||
|
|
d21efd90b4 | ||
|
|
d82a259bab | ||
|
|
6f64a59f49 | ||
|
|
d67aa94709 | ||
|
|
f8376c8845 | ||
|
|
52f3cf2af0 | ||
|
|
0997fd3347 | ||
|
|
2c4fec77bb | ||
|
|
2a04ed70b6 | ||
|
|
1ea821a6c3 | ||
|
|
3358254212 | ||
|
|
dbde0b2719 | ||
|
|
9ead92a490 | ||
|
|
feb6f2fed6 | ||
|
|
128c442b17 | ||
|
|
162db40370 | ||
|
|
5855fd069f | ||
|
|
c045b1ca6b | ||
|
|
d1319977d6 | ||
|
|
9c073364f5 | ||
|
|
e9554447d6 | ||
|
|
f3f9d37d59 | ||
|
|
0454f3bc8f | ||
|
|
aa81bc0589 | ||
|
|
3f70ee3e54 | ||
|
|
e922615cc7 | ||
|
|
d6a70c7e7b | ||
|
|
c725506d63 | ||
|
|
cafcf5cb7c | ||
|
|
54e6dd59f1 | ||
|
|
bd89c31cb7 | ||
|
|
4136c2682f | ||
|
|
5b8c93fd29 | ||
|
|
0337a21f66 | ||
|
|
407c54757d | ||
|
|
5dbefcbd9c | ||
|
|
70e552535b | ||
|
|
8e6b19c36e | ||
|
|
c379b3e477 | ||
|
|
2271c476e9 | ||
|
|
c70be7a386 | ||
|
|
6c7217b873 | ||
|
|
aa276f0b18 | ||
|
|
c43149f4c9 | ||
|
|
3d4252f43c | ||
|
|
d0219ced67 | ||
|
|
2bc7b7e2cc | ||
|
|
8c42e85fcc | ||
|
|
257abfaee8 | ||
|
|
faf53aa479 | ||
|
|
d9204083f7 | ||
|
|
775e78bd08 | ||
|
|
997cc4f466 | ||
|
|
a825e2678c | ||
|
|
6c6e26712d | ||
|
|
c4985bca67 | ||
|
|
620a36be82 | ||
|
|
7bf61b401f | ||
|
|
10f6d00e04 | ||
|
|
dfae840ace | ||
|
|
f6ec744a1f | ||
|
|
8f1b142949 | ||
|
|
94c298a1e3 | ||
|
|
6e7e69b19d | ||
|
|
e34e36c390 | ||
|
|
5103ee21aa | ||
|
|
c58cb02689 | ||
|
|
72eb61d1fc | ||
|
|
9e18736475 | ||
|
|
7a564f3185 | ||
|
|
e8d9982330 | ||
|
|
e1f1531d42 | ||
|
|
5e6b27a63f | ||
|
|
9f326b3f28 | ||
|
|
66bded4910 | ||
|
|
9c96394369 | ||
|
|
df02a1c1cc | ||
|
|
f0ca3fef54 | ||
|
|
ca680c3aeb | ||
|
|
a1c768b9b3 | ||
|
|
857850b4c6 | ||
|
|
da92be3030 | ||
|
|
e290965acf | ||
|
|
d1b67f1fff | ||
|
|
7c4381bfd5 | ||
|
|
bc410b4111 | ||
|
|
534a5f0898 | ||
|
|
1a2153585e | ||
|
|
547c14d18e | ||
|
|
d0c0543659 | ||
|
|
e0a513650e | ||
|
|
9ecfa843f0 | ||
|
|
afd64c3e04 | ||
|
|
9b3ed8d614 | ||
|
|
79f181cd55 | ||
|
|
d5b14769dd | ||
|
|
bdc89e5907 | ||
|
|
a68234bdf4 | ||
|
|
3f2079b4ea | ||
|
|
ecb8a02356 | ||
|
|
39d8465938 | ||
|
|
b15244e672 | ||
|
|
a9905d3508 | ||
|
|
77340011bd | ||
|
|
5c1d99a04c | ||
|
|
b02f8ba88b | ||
|
|
f973239379 | ||
|
|
f0a125f070 | ||
|
|
5a19cebfd7 | ||
|
|
d5697b9399 | ||
|
|
8f98bbc66f | ||
|
|
d4ec8d3ab5 | ||
|
|
0a08911800 | ||
|
|
30a15aaa7a | ||
|
|
d727dd76ce | ||
|
|
39af6359be | ||
|
|
d1728a4653 | ||
|
|
13608df0ef | ||
|
|
c07b3161fc | ||
|
|
1f2e2ba61d | ||
|
|
93bd3cd9e3 | ||
|
|
9930c0493d | ||
|
|
455a80e09d | ||
|
|
9a845664e1 | ||
|
|
36c96be091 | ||
|
|
1a99271fa8 | ||
|
|
dc04ab912d | ||
|
|
93f819609e | ||
|
|
6480957c4f | ||
|
|
b33cd266e7 | ||
|
|
88cbae2a6d | ||
|
|
3848b467a2 | ||
|
|
e68c04b9a6 | ||
|
|
5d8340d305 | ||
|
|
336e901c1e | ||
|
|
a6e4949264 | ||
|
|
1b325435b8 | ||
|
|
f8edf6b07a | ||
|
|
9e6091e665 | ||
|
|
a755f69e92 | ||
|
|
518337812f | ||
|
|
324e1ad1b5 | ||
|
|
e95384f76b | ||
|
|
111d5c68bf | ||
|
|
25ecbcdbbd | ||
|
|
ca75d4162d | ||
|
|
a8a43812a0 | ||
|
|
7058989941 | ||
|
|
0decb386d5 | ||
|
|
4967cc1d1c | ||
|
|
06cb7a0d55 | ||
|
|
fcd16e849d | ||
|
|
eb55ba5dd0 | ||
|
|
a7593db0c3 | ||
|
|
7502cbd13d | ||
|
|
823629d332 | ||
|
|
401683a305 | ||
|
|
8fc0cb67ec | ||
|
|
a1dcc2c173 | ||
|
|
bd4621070c | ||
|
|
70eb751868 | ||
|
|
ef262c26e8 | ||
|
|
5ad5a29a00 | ||
|
|
46d333df4b | ||
|
|
247698fea6 | ||
|
|
302537efd2 | ||
|
|
a62f04fa7e | ||
|
|
1c98b48e5d | ||
|
|
33bf6f59b3 | ||
|
|
550a0bd07b | ||
|
|
213f7d224c | ||
|
|
c62bff3002 | ||
|
|
31f3c429ab | ||
|
|
fee6773ef3 | ||
|
|
bc49a2e124 | ||
|
|
3fe10efd09 | ||
|
|
772e4286f2 | ||
|
|
b9e30e7e19 | ||
|
|
67317f88df | ||
|
|
c6d99722eb | ||
|
|
bd2aa1bd43 | ||
|
|
6d9520e599 | ||
|
|
9d0bc930a6 | ||
|
|
f63c2d18a3 | ||
|
|
1bdedf1e28 | ||
|
|
14b511d673 | ||
|
|
86a2b7d2e3 | ||
|
|
a91a0f8abb | ||
|
|
5a1a30efeb | ||
|
|
3d913d89f6 | ||
|
|
e0453dbc15 | ||
|
|
1c6f847c55 | ||
|
|
61d4b478ce | ||
|
|
350a84d253 | ||
|
|
618158a0f3 | ||
|
|
dbc3d82017 | ||
|
|
bd3f753d85 | ||
|
|
864562221d | ||
|
|
52f2ce35f6 | ||
|
|
623aa737e0 | ||
|
|
e8c3472581 | ||
|
|
730af2e552 | ||
|
|
04ee7a7020 | ||
|
|
8612f1a926 | ||
|
|
69135ff37e | ||
|
|
0edb027a53 | ||
|
|
18b0c90d0e | ||
|
|
26a3a8fd0a | ||
|
|
97b0aa3eb8 | ||
|
|
745473322a | ||
|
|
0066de604e | ||
|
|
6797dc7df1 | ||
|
|
f9247a9c42 | ||
|
|
20f9fae613 | ||
|
|
84b34b2221 | ||
|
|
69ec927fd7 | ||
|
|
19f9648b40 | ||
|
|
be6c4dc6df | ||
|
|
7292eaefc3 | ||
|
|
84ca9ff7e5 | ||
|
|
24905e74a5 | ||
|
|
4022ebd31c | ||
|
|
135e78c868 | ||
|
|
a22391b7ad | ||
|
|
a4b024d6f9 | ||
|
|
d4016223d5 | ||
|
|
2580ad305c | ||
|
|
377ca5ca22 | ||
|
|
fda75cbaa5 | ||
|
|
441d1c2676 | ||
|
|
0ab135b034 | ||
|
|
5901c57bde | ||
|
|
0bd6970b4b | ||
|
|
bdfb1ee549 | ||
|
|
f62373c3fa | ||
|
|
79cd7e4cab | ||
|
|
326031d289 | ||
|
|
d68473bfc2 | ||
|
|
cb16e11cf5 | ||
|
|
5c04328081 | ||
|
|
913f709c39 | ||
|
|
41f6480834 | ||
|
|
ae6b0b07aa | ||
|
|
a6113f88e7 | ||
|
|
c3ece32145 | ||
|
|
9082c51074 | ||
|
|
da2b54823b | ||
|
|
6d40d52d7d | ||
|
|
fbdb76e705 | ||
|
|
847a405712 | ||
|
|
7cce5b1b79 | ||
|
|
b75dc20a7d | ||
|
|
0c7562c6f8 | ||
|
|
539f08f627 | ||
|
|
4448399e71 | ||
|
|
c50f39b4fa | ||
|
|
4469b7428a | ||
|
|
a108856a98 | ||
|
|
1b216841a8 | ||
|
|
db421c97dc | ||
|
|
93f1a8e59d | ||
|
|
d72c3ac6bf | ||
|
|
a3d9db0e00 | ||
|
|
e8a4a4c89e | ||
|
|
50361505db | ||
|
|
267cc3fd54 | ||
|
|
a086302fc5 | ||
|
|
bd894ceaaf | ||
|
|
3ed019d708 | ||
|
|
012040d5c7 | ||
|
|
8d26d06f5e | ||
|
|
84907be0cd | ||
|
|
21aef2eef1 | ||
|
|
017037586c | ||
|
|
1bb4e4920b | ||
|
|
1ff3b57f88 | ||
|
|
d473352f7f | ||
|
|
bf0d7bc23a | ||
|
|
7fe94596cd | ||
|
|
6135b762af | ||
|
|
cd35f7e545 | ||
|
|
acfdbd5d4d | ||
|
|
37a048d201 | ||
|
|
506ebc3f23 | ||
|
|
6c20d29e55 | ||
|
|
88244b2918 | ||
|
|
30dac07817 | ||
|
|
40e50c9a2f | ||
|
|
5894c334b9 | ||
|
|
9c05854928 | ||
|
|
d666d67877 | ||
|
|
c09444ae39 | ||
|
|
2f10d04452 | ||
|
|
1caa12a526 | ||
|
|
1d7354f8a3 | ||
|
|
8f56787bf1 | ||
|
|
01f90374b7 | ||
|
|
b34ec89871 | ||
|
|
c345882a2a | ||
|
|
b16e5516bf | ||
|
|
5fdae7dc1e | ||
|
|
2757f4157e | ||
|
|
ae8a12a4b4 | ||
|
|
a585b07522 | ||
|
|
3b655fb6a1 | ||
|
|
62ef52a4cd | ||
|
|
135c7d4b2c | ||
|
|
88606e272f | ||
|
|
b00061fa0f | ||
|
|
9562a75351 | ||
|
|
d633f4be06 | ||
|
|
2577233ff0 | ||
|
|
a15797ce6c | ||
|
|
c7700e8cc2 |
@@ -1,4 +1,8 @@
|
|||||||
---
|
---
|
||||||
|
engines:
|
||||||
|
duplication:
|
||||||
|
exclude_paths:
|
||||||
|
- "*"
|
||||||
exclude_paths:
|
exclude_paths:
|
||||||
- vendor/**/*
|
- vendor/**/*
|
||||||
- tests/**/*
|
- tests/**/*
|
||||||
|
|||||||
27
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
FROM dokku/dokku:latest
|
||||||
|
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install --no-install-recommends -y build-essential file nano && \
|
||||||
|
apt-get install --no-install-recommends -y help2man shellcheck uuid-runtime wget xmlstarlet && \
|
||||||
|
apt-get clean autoclean && \
|
||||||
|
apt-get autoremove --yes && \
|
||||||
|
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
|
||||||
|
|
||||||
|
COPY .devcontainer/bin/ /usr/local/bin/
|
||||||
|
COPY ["tests.mk", "Makefile"]
|
||||||
|
RUN make ci-dependencies
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
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
|
||||||
9
.devcontainer/bin/copy-plugin
Executable file
@@ -0,0 +1,9 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
main() {
|
||||||
|
declare PLUGIN_NAME="$1"
|
||||||
|
|
||||||
|
make go-build-plugin copyplugin PLUGIN_NAME=$PLUGIN_NAME PLUGIN_MAKE_TARGET=build
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
25
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
"build": {
|
||||||
|
"dockerfile": "Dockerfile",
|
||||||
|
"context": ".."
|
||||||
|
},
|
||||||
|
"containerEnv": {
|
||||||
|
"DOKKU_HOST_ROOT": "${localWorkspaceFolder}/tmp/data/home/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"],
|
||||||
|
"mounts": [
|
||||||
|
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind",
|
||||||
|
"source=${localWorkspaceFolder}/tmp/data/,target=/mnt/dokku/,type=bind"
|
||||||
|
],
|
||||||
|
"overrideCommand": false,
|
||||||
|
"postCreateCommand": "make setup-deploy-tests",
|
||||||
|
"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,9 +6,10 @@ 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/dokku-installer.py
|
|
||||||
!contrib/bash-completion
|
!contrib/bash-completion
|
||||||
!contrib/docker
|
!contrib/docker
|
||||||
vendor
|
vendor
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ insert_final_newline = true
|
|||||||
indent_style = tab
|
indent_style = tab
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|
||||||
[*.go]
|
[*.{go,mod}]
|
||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|||||||
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
|
||||||
4
.github/commands/bump-azure
vendored
@@ -27,8 +27,8 @@ main() {
|
|||||||
pushd azure-quickstart-templates >/dev/null
|
pushd azure-quickstart-templates >/dev/null
|
||||||
|
|
||||||
echo "=====> Updating values"
|
echo "=====> Updating values"
|
||||||
contents="$(jq '.githubUsername = "dokku"' dokku-vm/metadata.json)"
|
contents="$(jq '.githubUsername = "dokku"' application-workloads/dokku/dokku-vm/metadata.json)"
|
||||||
echo "${contents}" >dokku-vm/metadata.json
|
echo "${contents}" >application-workloads/dokku/dokku-vm/metadata.json
|
||||||
contents="$(jq --arg DATE_UPDATED "$DATE_UPDATED" '.dateUpdated = $DATE_UPDATED' application-workloads/dokku/dokku-vm/metadata.json)"
|
contents="$(jq --arg DATE_UPDATED "$DATE_UPDATED" '.dateUpdated = $DATE_UPDATED' application-workloads/dokku/dokku-vm/metadata.json)"
|
||||||
echo "${contents}" >application-workloads/dokku/dokku-vm/metadata.json
|
echo "${contents}" >application-workloads/dokku/dokku-vm/metadata.json
|
||||||
|
|
||||||
|
|||||||
3
.github/commands/ci-setup
vendored
@@ -1,9 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
|
set -x
|
||||||
|
|
||||||
echo "=====> set hostname"
|
echo "=====> set hostname"
|
||||||
hostname
|
hostname
|
||||||
internal_ip="$(ifconfig eth0 | grep 'inet addr:' | cut -d: -f2 | awk '{ print $1}')"
|
internal_ip="$(ifconfig eth0 | grep 'inet ' | awk '{print $2}')"
|
||||||
sudo hostname "dokku.me"
|
sudo hostname "dokku.me"
|
||||||
echo "dokku.me" | sudo tee /etc/hostname
|
echo "dokku.me" | sudo tee /etc/hostname
|
||||||
hostname
|
hostname
|
||||||
|
|||||||
5
.github/dependabot.yml
vendored
@@ -105,3 +105,8 @@ 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
|
||||||
|
|||||||
35
.github/workflows/ci.yml
vendored
@@ -13,14 +13,21 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
name: build
|
name: build
|
||||||
runs-on: ubuntu-16.04
|
runs-on: ubuntu-18.04
|
||||||
outputs:
|
outputs:
|
||||||
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
||||||
strategy:
|
strategy:
|
||||||
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
|
||||||
@@ -41,13 +48,13 @@ jobs:
|
|||||||
unit-tests:
|
unit-tests:
|
||||||
name: unit.${{ matrix.index }}
|
name: unit.${{ matrix.index }}
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-16.04
|
runs-on: ubuntu-18.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
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
|
||||||
@@ -67,10 +74,12 @@ jobs:
|
|||||||
timeout-minutes: 30
|
timeout-minutes: 30
|
||||||
run: sudo -E ./.github/commands/ci-run ${{ matrix.index }}
|
run: sudo -E ./.github/commands/ci-run ${{ matrix.index }}
|
||||||
env:
|
env:
|
||||||
|
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
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
|
||||||
@@ -78,12 +87,12 @@ jobs:
|
|||||||
docker-deploy-tests:
|
docker-deploy-tests:
|
||||||
name: docker
|
name: docker
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-16.04
|
runs-on: ubuntu-18.04
|
||||||
strategy:
|
strategy:
|
||||||
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
|
||||||
@@ -103,7 +112,7 @@ jobs:
|
|||||||
go-tests:
|
go-tests:
|
||||||
name: go.${{ matrix.index }}
|
name: go.${{ matrix.index }}
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-16.04
|
runs-on: ubuntu-18.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -112,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
|
||||||
@@ -135,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
|
||||||
@@ -143,7 +152,7 @@ jobs:
|
|||||||
publish-test-results:
|
publish-test-results:
|
||||||
name: publish-test-results
|
name: publish-test-results
|
||||||
needs: unit-tests
|
needs: unit-tests
|
||||||
runs-on: ubuntu-16.04
|
runs-on: ubuntu-18.04
|
||||||
# the build-and-test job might be skipped, we don't need to run this job then
|
# the build-and-test job might be skipped, we don't need to run this job then
|
||||||
if: success() || failure()
|
if: success() || failure()
|
||||||
|
|
||||||
@@ -154,7 +163,7 @@ jobs:
|
|||||||
path: test-results
|
path: test-results
|
||||||
|
|
||||||
- name: Publish Unit Test Results
|
- name: Publish Unit Test Results
|
||||||
uses: docker://ghcr.io/enricomi/publish-unit-test-result-action:v1.6
|
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.GITHUB_TOKEN }}
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|||||||
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'
|
||||||
|
|||||||
30
.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,5 +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 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
|
||||||
@@ -3,30 +3,28 @@
|
|||||||
The Dokku project would love to welcome your contributions. There are
|
The Dokku project would love to welcome your contributions. There are
|
||||||
several ways to help out:
|
several ways to help out:
|
||||||
|
|
||||||
* Create an [issue](https://github.com/dokku/dokku/issues) on GitHub, if you
|
- Create an [issue](https://github.com/dokku/dokku/issues) on GitHub, if you have found a bug
|
||||||
have found a bug
|
- Write [test cases](https://dokku.com/docs/development/testing/) for open bug issues
|
||||||
* Write [test cases](https://dokku.com/docs/development/testing/) for open bug issues
|
- Write patches for open bug/feature issues, preferably with test cases included
|
||||||
* Write patches for open bug/feature issues, preferably with test cases
|
- Contribute to the [documentation](https://dokku.com/docs/)
|
||||||
included
|
- Come up with new ways, non-commercial to show off our [lovely logo](https://avatars1.githubusercontent.com/u/13455795)
|
||||||
* Contribute to the [documentation](https://dokku.com/docs/)
|
- Blog about different ways you are using dokku
|
||||||
* Come up with new ways, non-commercial to show off our [lovely logo](https://avatars1.githubusercontent.com/u/13455795)
|
- Sponsor the Dokku project financially on [Github](https://github.com/sponsors/dokku), [OpenCollective](https://opencollective.com/dokku#support) or [Patreon](https://www.patreon.com/dokku)
|
||||||
* Blog about different ways you are using dokku
|
|
||||||
* Sponsor the Dokku project financially on [OpenCollective](https://opencollective.com/dokku#support) or [Patreon](https://www.patreon.com/dokku)
|
|
||||||
|
|
||||||
There are a few guidelines that we need contributors to follow so that we have
|
There are a few guidelines that we need contributors to follow so that we have
|
||||||
a chance of keeping on top of things.
|
a chance of keeping on top of things.
|
||||||
|
|
||||||
## Topics
|
## Topics
|
||||||
|
|
||||||
* [Reporting Security Issues](#reporting-security-issues)
|
- [Reporting Security Issues](#reporting-security-issues)
|
||||||
* [Reporting Issues](#reporting-other-issues)
|
- [Reporting Issues](#reporting-other-issues)
|
||||||
* [Contributing](#contributing)
|
- [Contributing](#contributing)
|
||||||
* [Making Changes](#making-changes)
|
- [Making Changes](#making-changes)
|
||||||
* [Which branch to base the work](#which-branch-to-base-the-work)
|
- [Which branch to base the work](#which-branch-to-base-the-work)
|
||||||
* [Submitting Changes](#submitting-changes)
|
- [Submitting Changes](#submitting-changes)
|
||||||
* [When will my change be merged?](#when-will-my-change-be-merged)
|
- [When will my change be merged?](#when-will-my-change-be-merged)
|
||||||
* [Running tests locally](#running-tests-locally)
|
- [Running tests locally](#running-tests-locally)
|
||||||
* [Additional Resources](#additional-resources)
|
- [Additional Resources](#additional-resources)
|
||||||
|
|
||||||
## Reporting security issues
|
## Reporting security issues
|
||||||
|
|
||||||
@@ -65,37 +63,36 @@ you.
|
|||||||
Before you contribute to the Dokku project, there are a few things that you'll
|
Before you contribute to the Dokku project, there are a few things that you'll
|
||||||
need to do
|
need to do
|
||||||
|
|
||||||
* Make sure you have a [GitHub account](https://github.com/signup/free).
|
- Make sure you have a [GitHub account](https://github.com/signup/free).
|
||||||
* Submit an [issue](https://github.com/dokku/dokku/issues), assuming one
|
- Submit an [issue](https://github.com/dokku/dokku/issues), assuming one does not already exist.
|
||||||
does not already exist.
|
- Clearly describe the issue including steps to reproduce when it is a bug.
|
||||||
* Clearly describe the issue including steps to reproduce when it is a bug.
|
- Make sure you fill in the earliest version that you know has the issue.
|
||||||
* Make sure you fill in the earliest version that you know has the issue.
|
- Fork the repository on GitHub.
|
||||||
* Fork the repository on GitHub.
|
|
||||||
|
|
||||||
### Making Changes
|
### Making Changes
|
||||||
|
|
||||||
* Create a topic branch from where you want to base your work.
|
- Create a topic branch from where you want to base your work.
|
||||||
* This is usually the master branch.
|
- This is usually the master branch.
|
||||||
* Only target an existing branch if you are certain your fix must be on that
|
- Only target an existing branch if you are certain your fix must be on that
|
||||||
branch.
|
branch.
|
||||||
* To quickly create a topic branch based on master; `git checkout -b my_contribution origin/master`.
|
- To quickly create a topic branch based on master; `git checkout -b my_contribution origin/master`.
|
||||||
It is best to avoid working directly on the `master` branch. Doing so will
|
It is best to avoid working directly on the `master` branch. Doing so will
|
||||||
help avoid conflicts if you pull in updates from origin.
|
help avoid conflicts if you pull in updates from origin.
|
||||||
* Make commits of logical units. Implementing a new function and calling it in
|
- Make commits of logical units. Implementing a new function and calling it in
|
||||||
another file constitute a single logical unit of work.
|
another file constitute a single logical unit of work.
|
||||||
* Before you make a pull request, squash your commits into logical units of work
|
- Before you make a pull request, squash your commits into logical units of work
|
||||||
using `git rebase -i` and `git push -f`.
|
using `git rebase -i` and `git push -f`.
|
||||||
* A majority of submissions should have a single commit, so if in doubt,
|
- A majority of submissions should have a single commit, so if in doubt,
|
||||||
squash your commits down to one commit.
|
squash your commits down to one commit.
|
||||||
* Check for unnecessary whitespace with `git diff --check` before committing.
|
- Check for unnecessary whitespace with `git diff --check` before committing.
|
||||||
* Use descriptive commit messages and reference the #issue number.
|
- Use descriptive commit messages and reference the #issue number.
|
||||||
* Core test cases should continue to pass. You can run tests locally or enable
|
- Core test cases should continue to pass. You can run tests locally or enable
|
||||||
[circle-ci](https://circleci.com/gh/dokku/dokku) for your fork, so all
|
[circle-ci](https://circleci.com/gh/dokku/dokku) for your fork, so all
|
||||||
tests and codesniffs will be executed.
|
tests and codesniffs will be executed.
|
||||||
* Your work should apply the [Dokku coding standards](https://github.com/progrium/bashstyle)
|
- Your work should apply the [Dokku coding standards](https://github.com/progrium/bashstyle)
|
||||||
* Pull requests must be cleanly rebased on top of master without multiple branches
|
- Pull requests must be cleanly rebased on top of master without multiple branches
|
||||||
mixed into the PR.
|
mixed into the PR.
|
||||||
* **Git tip**: If your PR no longer merges cleanly, use `rebase master` in your
|
- **Git tip**: If your PR no longer merges cleanly, use `rebase master` in your
|
||||||
feature branch to update your pull request rather than `merge master`.
|
feature branch to update your pull request rather than `merge master`.
|
||||||
|
|
||||||
### Which branch to base the work
|
### Which branch to base the work
|
||||||
@@ -104,8 +101,8 @@ All changes should be be based on the latest master commit.
|
|||||||
|
|
||||||
### Submitting Changes
|
### Submitting Changes
|
||||||
|
|
||||||
* Push your changes to a topic branch in your fork of the repository.
|
- Push your changes to a topic branch in your fork of the repository.
|
||||||
* Submit a pull request to the repository on github, with the correct target
|
- Submit a pull request to the repository on github, with the correct target
|
||||||
branch.
|
branch.
|
||||||
|
|
||||||
### When will my change be merged?
|
### When will my change be merged?
|
||||||
@@ -132,10 +129,10 @@ requests:
|
|||||||
Please read the [testing docs](https://dokku.com/docs/development/testing/),
|
Please read the [testing docs](https://dokku.com/docs/development/testing/),
|
||||||
which contains test setup information as well as tips for running tests.
|
which contains test setup information as well as tips for running tests.
|
||||||
|
|
||||||
# Additional Resources
|
## Additional Resources
|
||||||
|
|
||||||
* [Dokku coding standards](https://github.com/progrium/bashstyle)
|
- [Dokku coding standards](https://github.com/progrium/bashstyle)
|
||||||
* [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/)
|
||||||
* [#dokku IRC channel on freenode.org](https://webchat.freenode.net/?channels=dokku)
|
- [Gliderlabs Slack in the #dokku channel](https://slack.dokku.com/)
|
||||||
|
|||||||
69
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"]
|
||||||
|
|
||||||
@@ -11,49 +11,48 @@ ARG DOKKU_VHOST_ENABLE=false
|
|||||||
ARG DOKKU_WEB_CONFIG=false
|
ARG DOKKU_WEB_CONFIG=false
|
||||||
|
|
||||||
RUN addgroup --gid $DOKKU_GID dokku \
|
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
|
||||||
RUN echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | debconf-set-selections \
|
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 \
|
||||||
&& echo "dokku dokku/web_config boolean $DOKKU_WEB_CONFIG" | 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/ focal main" | tee /etc/apt/sources.list.d/dokku.list \
|
||||||
&& echo "deb https://packagecloud.io/dokku/dokku/ubuntu/ bionic 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 \
|
||||||
&& apt-get update -qq \
|
&& apt-get upgrade -y \
|
||||||
&& apt-get upgrade -qq -y \
|
&& apt-get -y --no-install-recommends --only-upgrade install openssl openssh-server \
|
||||||
&& apt-get -qq -y --no-install-recommends --only-upgrade install openssl openssh-server \
|
&& apt-get -y --no-install-recommends install rsync "/tmp/dokku-$(dpkg --print-architecture).deb" \
|
||||||
&& apt-get -qq -y --no-install-recommends install rsync /tmp/dokku.deb \
|
&& apt-get purge -y syslog-ng-core \
|
||||||
&& apt-get purge -qq -y syslog-ng-core \
|
&& apt-get autoremove -y \
|
||||||
&& apt-get autoremove -qq -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
|
||||||
|
|
||||||
COPY ./docker .
|
COPY ./docker .
|
||||||
|
|
||||||
RUN \
|
RUN \
|
||||||
rsync -a /tmp/ / \
|
rsync -a /tmp/ / \
|
||||||
&& rm -rf /tmp/* \
|
&& rm -rf /tmp/* \
|
||||||
&& rm /etc/runit/runsvdir/default/sshd/down \
|
&& rm /etc/runit/runsvdir/default/sshd/down \
|
||||||
&& chown -R dokku:dokku /home/dokku/ \
|
&& chown -R dokku:dokku /home/dokku/ \
|
||||||
&& mkdir -p /skel/etc /skel/home /skel/var/lib/dokku /var/log/services \
|
&& mkdir -p /skel/etc /skel/home /skel/var/lib/dokku /var/log/services \
|
||||||
&& mv /etc/ssh /skel/etc/ssh \
|
&& mv /etc/ssh /skel/etc/ssh \
|
||||||
&& mv /home/dokku /skel/home/dokku \
|
&& mv /home/dokku /skel/home/dokku \
|
||||||
&& mv /var/lib/dokku/config /skel/var/lib/dokku/config \
|
&& mv /var/lib/dokku/config /skel/var/lib/dokku/config \
|
||||||
&& mv /var/lib/dokku/data /skel/var/lib/dokku/data \
|
&& mv /var/lib/dokku/data /skel/var/lib/dokku/data \
|
||||||
&& ln -sf /mnt/dokku/etc/ssh /etc/ssh \
|
&& ln -sf /mnt/dokku/etc/ssh /etc/ssh \
|
||||||
&& ln -sf /mnt/dokku/home/dokku /home/dokku \
|
&& ln -sf /mnt/dokku/home/dokku /home/dokku \
|
||||||
&& ln -sf /mnt/dokku/var/lib/dokku/config /var/lib/dokku/config \
|
&& ln -sf /mnt/dokku/var/lib/dokku/config /var/lib/dokku/config \
|
||||||
&& ln -sf /mnt/dokku/var/lib/dokku/data /var/lib/dokku/data \
|
&& ln -sf /mnt/dokku/var/lib/dokku/data /var/lib/dokku/data \
|
||||||
&& mv /etc/my_init.d/00_regen_ssh_host_keys.sh /etc/my_init.d/15_regen_ssh_host_keys \
|
&& mv /etc/my_init.d/00_regen_ssh_host_keys.sh /etc/my_init.d/15_regen_ssh_host_keys \
|
||||||
&& rm -f /etc/nginx/sites-enabled/default /usr/share/nginx/html/index.html /etc/my_init.d/10_syslog-ng.init \
|
&& rm -f /etc/nginx/sites-enabled/default /usr/share/nginx/html/index.html /etc/my_init.d/10_syslog-ng.init \
|
||||||
&& rm -f /usr/local/openresty/nginx/conf/sites-enabled/default /usr/share/openresty/html/index.html \
|
&& rm -f /usr/local/openresty/nginx/conf/sites-enabled/default /usr/share/openresty/html/index.html \
|
||||||
&& sed -i '/imklog/d' /etc/rsyslog.conf \
|
&& sed -i '/imklog/d' /etc/rsyslog.conf \
|
||||||
&& rm -f /var/log/btmp /var/log/wtmp /var/log/*log /var/log/apt/* /var/log/dokku/*.log /var/log/nginx/* /var/log/openresty/*
|
&& rm -f /var/log/btmp /var/log/wtmp /var/log/*log /var/log/apt/* /var/log/dokku/*.log /var/log/nginx/* /var/log/openresty/*
|
||||||
|
|||||||
941
HISTORY.md
@@ -1,5 +1,944 @@
|
|||||||
# History
|
# History
|
||||||
|
|
||||||
|
## 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
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.3/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.26.3 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4889: @josegonzalez Skip herokuish version in report output and disable the herokuish builder on armhf architectures
|
||||||
|
|
||||||
|
## 0.26.2
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.2/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.26.2 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4888: @josegonzalez Ensure installations treat raspbian as similar to debian buster as possible
|
||||||
|
- #4887: @josegonzalez Ensure we do not add two debian folders in a single armhf package
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4886: @josegonzalez Add created-at time to apps:report output
|
||||||
|
|
||||||
|
## 0.26.1
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.1/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.26.1 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4884: @josegonzalez Correct recommends entry for bash-completion
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4885: @josegonzalez Add experimental support for arm devices
|
||||||
|
|
||||||
|
## 0.26.0
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.26.0/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.26.0 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [0.26.0 migration guide](/docs/appendices/0.26.0-migration-guide.md) for more information on migrating to 0.26.0.
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4882: @josegonzalez Add missing setup/teardown of builder plugin properties
|
||||||
|
- #4880: @josegonzalez Ensure the null scheduler reports the app as running when in use
|
||||||
|
- #4871: @josegonzalez Do not error when default Procfile path does not exist when using a custom procfile-path
|
||||||
|
- #4861: @josegonzalez Add missing clone/rename code for plugins
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4864: @josegonzalez Switch to unauthenticated tap for formula bumping
|
||||||
|
- #4860: @josegonzalez Add ability to increase the max parallelism when deploying a given process type
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4883: @josegonzalez Enable vertical scrolling on the version selector
|
||||||
|
- #4879: @josegonzalez Clarify that the docker-based dokku installation is ready when a certain message appears
|
||||||
|
- #4863: @josegonzalez Clarify what is necessary for implementing a scheduler plugin
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4874: @josegonzalez Upgrade vector log integration to 0.17.x
|
||||||
|
- #4881: @josegonzalez Drop bindutils as alternative dependency to bind-utils
|
||||||
|
- #4869: @dependabot[bot] chore(deps): bump socket.io from 4.2.0 to 4.3.0 in /tests/apps/.websocket.disabled
|
||||||
|
- #4868: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.6 to 11.0.7 in /tests/apps/java
|
||||||
|
- #4866: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 198 to 199 in /tests/apps/php
|
||||||
|
- #4862: @josegonzalez Set deploy-source and metadata at deploy time
|
||||||
|
- #4853: @josegonzalez Remove dangling images
|
||||||
|
- #4765: @josegonzalez Allow specifying a single process type to restart
|
||||||
|
- #4859: @josegonzalez Remove deprecated tar plugin
|
||||||
|
- #4858: @josegonzalez Remove deprecated tags plugin
|
||||||
|
- #4857: @josegonzalez Implement scheduler management plugin
|
||||||
|
|
||||||
|
## 0.25.7
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.25.7/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.25.7 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4855: @josegonzalez Output remote client help when there is no remote host
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4854: @josegonzalez Fix parallel usage for scheduler-docker-local
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4856: @josegonzalez Add a note to the migration guide regarding using a Procfile for Dockerfile deploys
|
||||||
|
- #4843: @schmijos Clarify that docker-options are not passed to the launched process but instead to the docker run command
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4844: @dependabot[bot] chore(deps): bump werkzeug from 2.0.1 to 2.0.2 in /tests/apps/python-flask
|
||||||
|
|
||||||
|
## 0.25.6
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.25.6/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.25.6 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4841: @josegonzalez Ensure pack is run as root user when building apps in docker
|
||||||
|
- #4836: @josegonzalez Fix custom dockerfile path detection
|
||||||
|
- #4839: @josegonzalez Choose the correct app when a named remote is specified in the remote ssh client
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4829: @josegonzalez Add ability to schedule process types in parallel
|
||||||
|
- #4837: @josegonzalez Filter --link and --volume flags during Dockerfile builds
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4840: @josegonzalez Explain sha256 image digest alternative when reusing docker image tags for git:from-image deployments
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #4842: @josegonzalez Set default process list in test cnb buildpacks
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4832: @dependabot[bot] chore(deps): bump flask from 2.0.1 to 2.0.2 in /tests/apps/python-flask
|
||||||
|
- #4833: @dependabot[bot] chore(deps): bump jinja2 from 3.0.1 to 3.0.2 in /tests/apps/python-flask
|
||||||
|
- #4831: @dependabot[bot] chore(deps): bump flask from 2.0.1 to 2.0.2 in /tests/apps/multi
|
||||||
|
|
||||||
|
## 0.25.5
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.25.5/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.25.5 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4787: @josegonzalez Do not require double quotes when issuing dokku run commands
|
||||||
|
- #4816: @josegonzalez Set the DOKKU_HOST_ROOT on docker container start
|
||||||
|
- #4810: @josegonzalez Handle udp ports when fetching network config
|
||||||
|
- #4812: @josegonzalez Silence stderr when fetching a command from the Procfile
|
||||||
|
- #4800: @josegonzalez Add help2man os package for copyfiles make target to devcontainer
|
||||||
|
- #4796: @josegonzalez Remove the --restart flag from pre-deploy chown containers
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4809: @josegonzalez Implement storage:ensure-directory command
|
||||||
|
- #4801: @josegonzalez Expose git-from-archive and git-from-image plugin triggers
|
||||||
|
- #4785: @josegonzalez Add support for VSCode Dev Containers
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4819: @stephenheron Fixed typo in tar documentation
|
||||||
|
- #4824: @dy3l Fix GitLab case
|
||||||
|
- #4822: @josegonzalez Add a note about using the registry:login command for private image deployments
|
||||||
|
- #4808: @francipvb Added a comment about Dockerfile deployment
|
||||||
|
- #4807: @FinnWoelm Docs: Fix instructions for enabling Docker Buildkit
|
||||||
|
- #4786: @josegonzalez Add missing argument from trigger documentation
|
||||||
|
- #4780: @adam12 Update source for `dokku-update`
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #4828: @josegonzalez Update golang in test apps to latest version
|
||||||
|
- #4815: @josegonzalez tests: use python3 shebang for shellcheck-to-junit script
|
||||||
|
- #4814: @josegonzalez Add wget to devcontainer to fix shfmt installation
|
||||||
|
- #4791: @josegonzalez Fix test running in devcontainer
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4813: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 197 to 198 in /tests/apps/php
|
||||||
|
- #4802: @dependabot[bot] chore(deps): bump django from 3.1.12 to 3.1.13 in /tests/apps/dockerfile-release
|
||||||
|
- #4784: @josegonzalez Upgrade vector image to 0.16.x
|
||||||
|
|
||||||
|
## 0.25.4
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.25.4/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.25.4 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4775: @josegonzalez Add support for url-encoded vector-sink config values …
|
||||||
|
- #4777: @josegonzalez Set correct version for registry plugin
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4776: @josegonzalez Clarify valid values for container-type when entering containers
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4774: @dependabot[bot] chore(deps): bump sqlparse from 0.4.1 to 0.4.2 in /tests/apps/dockerfile-release
|
||||||
|
|
||||||
|
## 0.25.3
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.25.3/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.25.3 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4767: @josegonzalez Output logs when container rename fails and continue on
|
||||||
|
- #4764: @josegonzalez Reference correct plugin when setting up app-json plugin
|
||||||
|
|
||||||
|
### Refactors
|
||||||
|
|
||||||
|
- #4741: @josegonzalez Use a Dockerfile to speed up env var injection for herokuish app builds
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4763: @josegonzalez Remove install doc references to removed web installer
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4766: @josegonzalez Capitalize certain log messages for aesthetic reasons
|
||||||
|
|
||||||
|
## 0.25.2
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.25.2/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.25.2 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4760: @josegonzalez Add missing rsync to OS dependency list for git:sync command
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4761: @josegonzalez Correct permissions for userns support
|
||||||
|
- #4742: @ashkulz bootstrap: add support for Debian 11 (bullseye)
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4747: @erickedji Fix process management references to formation key in app.json
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4753: @dependabot[bot] chore(deps): bump socket.io from 4.1.3 to 4.2.0 in /tests/apps/.websocket.disabled
|
||||||
|
- #4750: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 196 to 197 in /tests/apps/php
|
||||||
|
- #4758: @ltalirz Fix typo in network docs
|
||||||
|
- #4748: @trival Remove spare backtick in 0.25.0-migration-guide.md
|
||||||
|
|
||||||
|
## 0.25.1
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.25.1/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.25.1 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4736: @josegonzalez Ensure herokuish deploys respects the env vars during the release process
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4734: @josegonzalez docs: add github sponsorship link to contributing docs
|
||||||
|
|
||||||
|
## 0.25.0
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.25.0/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.25.0 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [0.25.0 migration guide](/docs/appendices/0.25.0-migration-guide.md) for more information on migrating to 0.25.0.
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #4733: @josegonzalez Force grep to run in quiet mode in domains:add call
|
||||||
|
- #4732: @josegonzalez Ensure image cleanup does not impact the stack image and refactor container/image cleanup
|
||||||
|
- #4731: @josegonzalez Respect debconf selections where possible
|
||||||
|
- #4729: @josegonzalez Correct count check for user-auth trigger
|
||||||
|
- #4721: @josegonzalez Recursively sync submodules
|
||||||
|
- #4717: @josegonzalez Silence stderr when checking for ufw on debian systems
|
||||||
|
- #4716: @josegonzalez Suppress dos2unix stderr output during Dockerfile builds
|
||||||
|
- #4686: @josegonzalez Ensure repository is bare when calling git:sync
|
||||||
|
- #4684: @josegonzalez Install gpg-agent in bootstrap script
|
||||||
|
- #4683: @josegonzalez Strip published port flags when triggering deploy tasks
|
||||||
|
- #4651: @josegonzalez Do not attempt to retire when there was no pre-existing container
|
||||||
|
- #4639: @josegonzalez Correct path for azure-vm releases
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #4730: @josegonzalez Execute motd at the end of the install
|
||||||
|
- #4719: @josegonzalez Add support for routing an app to a specified host:port
|
||||||
|
- #4715: @josegonzalez Switch from xip.io to sslip.io
|
||||||
|
- #4460: @josegonzalez Implement registry plugin
|
||||||
|
- #4711: @josegonzalez Enable installing on RPM systems where bind-utils is bindutils
|
||||||
|
- #4687: @josegonzalez Output message explaining how to remove a deploy lock when a lock is encountered
|
||||||
|
- #4682: @josegonzalez Properly space report output
|
||||||
|
- #4502: @josegonzalez Add monorepo support
|
||||||
|
- #4509: @josegonzalez Add ability to specify initial network
|
||||||
|
- #4641: @dbazile Add initial support for installing onto Fedora
|
||||||
|
|
||||||
|
### Refactors
|
||||||
|
|
||||||
|
- #4508: @josegonzalez Add support for the formation key in app.json
|
||||||
|
- #4507: @josegonzalez Drop support for Ubuntu 16.04
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #4723: @josegonzalez Clarify buildkit instructions
|
||||||
|
- #4718: @josegonzalez Update link to azure installation on homepage
|
||||||
|
- #4714: @josegonzalez Swap from freenode to libera.chat
|
||||||
|
- #4712: @josegonzalez Clarify the shape of the command that should be entered in app.json for a cron task
|
||||||
|
- #4709: @josegonzalez Add migration note for deprecation of ubuntu 16.04
|
||||||
|
- #4697: @josegonzalez Specify that run containers use the same image
|
||||||
|
- #4688: @josegonzalez Add a note on recovering networks
|
||||||
|
- #4689: @josegonzalez Add a note about wildcards in the installation doc page
|
||||||
|
- #4680: @josegonzalez Cleanup markdown lint errors
|
||||||
|
- #4679: @josegonzalez Cleanup markdown lint errors
|
||||||
|
- #4678: @josegonzalez Cleanup markdown lint errors
|
||||||
|
- #4677: @josegonzalez Cleanup markdown lint errors
|
||||||
|
- #4672: @bjab Fix typo in pack builder docs
|
||||||
|
- #4668: @RealOrangeOne Make example gitlab-ci script a list
|
||||||
|
- #4673: @eltociear Fix comment typo in dokku binary
|
||||||
|
- #4661: @dy3l Fix case style
|
||||||
|
- #4647: @AngCosmin Fixed unable to find version `v1` for official Github Action
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #4693: @josegonzalez Add package.lock for test app
|
||||||
|
- #4685: @josegonzalez Remove ci skip note in PULL_REQUEST_TEMPLATE.md
|
||||||
|
- #4681: @josegonzalez Ignore duplication warnings in codacy
|
||||||
|
- #4644: @josegonzalez Update unit test publisher to latest
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #4726: @josegonzalez Drop web installer in favor of setup via cli
|
||||||
|
- #4713: @josegonzalez Make heroku-20/focal the default stack for herokuish builds
|
||||||
|
- #4707: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 195 to 196 in /tests/apps/php
|
||||||
|
- #4701: @josegonzalez Revamp dokku run command
|
||||||
|
- #4671: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 193 to 195 in /tests/apps/php
|
||||||
|
- #4674: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.5 to 11.0.6 in /tests/apps/java
|
||||||
|
- #4652: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.4 to 11.0.5 in /tests/apps/java
|
||||||
|
- #4653: @dependabot[bot] chore(deps): bump maven-dependency-plugin from 3.1.2 to 3.2.0 in /tests/apps/java
|
||||||
|
- #4648: @dependabot[bot] chore(deps): bump django from 3.1.9 to 3.1.12 in /tests/apps/dockerfile-release
|
||||||
|
- #4645: @dependabot[bot] chore(deps): bump jetty-servlet from 11.0.3 to 11.0.4 in /tests/apps/java
|
||||||
|
- #4642: @dependabot[bot] chore(deps-dev): bump heroku/heroku-buildpack-php from 192 to 193 in /tests/apps/php
|
||||||
|
|
||||||
## 0.24.10
|
## 0.24.10
|
||||||
|
|
||||||
Install/update via the bootstrap script:
|
Install/update via the bootstrap script:
|
||||||
@@ -3084,7 +4023,6 @@ Thanks to all the contributors who helped with this release!
|
|||||||
- #2388: @josegonzalez Add documentation for proxy ports scheme handling
|
- #2388: @josegonzalez Add documentation for proxy ports scheme handling
|
||||||
- #2389: @josegonzalez Add plugin management documentation
|
- #2389: @josegonzalez Add plugin management documentation
|
||||||
|
|
||||||
|
|
||||||
## 0.7.0
|
## 0.7.0
|
||||||
|
|
||||||
Another great minor release! There are no known backwards incompatibilities with this release, though the following may be of interest to our users:
|
Another great minor release! There are no known backwards incompatibilities with this release, though the following may be of interest to our users:
|
||||||
@@ -4470,7 +5408,6 @@ This release pegs Dokku to Docker 1.6.2. Docker 1.7.0 introduced changes in `doc
|
|||||||
- #749: @vincentfretin Fix app certificate directory in backup-import/export
|
- #749: @vincentfretin Fix app certificate directory in backup-import/export
|
||||||
- #750: @th4t Remove unintended phrase repetition in installation.md
|
- #750: @th4t Remove unintended phrase repetition in installation.md
|
||||||
|
|
||||||
|
|
||||||
## 0.2.0 (2013-11-24)
|
## 0.2.0 (2013-11-24)
|
||||||
|
|
||||||
* Added DOKKU_TRACE variable for verbose trace information
|
* Added DOKKU_TRACE variable for verbose trace information
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
59
Makefile
@@ -1,20 +1,24 @@
|
|||||||
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
|
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-20
|
||||||
DOKKU_LIB_ROOT ?= /var/lib/dokku
|
DOKKU_LIB_ROOT ?= /var/lib/dokku
|
||||||
PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/plugins
|
PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/plugins
|
||||||
CORE_PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/core-plugins
|
CORE_PLUGINS_PATH ?= ${DOKKU_LIB_ROOT}/core-plugins
|
||||||
@@ -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 dokku-installer 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:
|
||||||
@@ -110,7 +114,11 @@ endif
|
|||||||
|
|
||||||
addman: help2man man-db
|
addman: help2man man-db
|
||||||
mkdir -p /usr/local/share/man/man1
|
mkdir -p /usr/local/share/man/man1
|
||||||
|
ifneq ("$(wildcard /usr/local/share/man/man1/dokku.1-generated)","")
|
||||||
|
cp /usr/local/share/man/man1/dokku.1-generated /usr/local/share/man/man1/dokku.1
|
||||||
|
else
|
||||||
help2man -Nh help -v version -n "configure and get information from your dokku installation" -o /usr/local/share/man/man1/dokku.1 dokku
|
help2man -Nh help -v version -n "configure and get information from your dokku installation" -o /usr/local/share/man/man1/dokku.1 dokku
|
||||||
|
endif
|
||||||
mandb
|
mandb
|
||||||
|
|
||||||
version:
|
version:
|
||||||
@@ -127,12 +135,15 @@ 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
|
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:
|
||||||
apt-get update -qq
|
apt-get update -qq
|
||||||
|
|
||||||
|
parallel:
|
||||||
|
apt-get -qq -y --no-install-recommends install parallel
|
||||||
|
|
||||||
jq:
|
jq:
|
||||||
apt-get -qq -y --no-install-recommends install jq
|
apt-get -qq -y --no-install-recommends install jq
|
||||||
|
|
||||||
@@ -148,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}
|
||||||
@@ -206,12 +227,6 @@ count:
|
|||||||
@echo "Test lines:"
|
@echo "Test lines:"
|
||||||
@find tests -type f -not -name .DS_Store | xargs cat | sed 's/^$$//g' | wc -l
|
@find tests -type f -not -name .DS_Store | xargs cat | sed 's/^$$//g' | wc -l
|
||||||
|
|
||||||
dokku-installer:
|
|
||||||
test -f /var/lib/dokku/.dokku-installer-created || python contrib/dokku-installer.py onboot
|
|
||||||
test -f /var/lib/dokku/.dokku-installer-created || service dokku-installer start
|
|
||||||
test -f /var/lib/dokku/.dokku-installer-created || service nginx reload
|
|
||||||
test -f /var/lib/dokku/.dokku-installer-created || touch /var/lib/dokku/.dokku-installer-created
|
|
||||||
|
|
||||||
vagrant-acl-add:
|
vagrant-acl-add:
|
||||||
vagrant ssh -- sudo sshcommand acl-add dokku $(USER)
|
vagrant ssh -- sudo sshcommand acl-add dokku $(USER)
|
||||||
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
**Note:** If this PR is just doc changes, please put [ci skip] in the body that way tests do not run.
|
|
||||||
131
README.md
@@ -3,8 +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://webchat.freenode.net/?channels=dokku)
|
[](https://slack.dokku.com/)
|
||||||
[](https://glider-slackin.herokuapp.com/)
|
|
||||||
[](https://dokku.com/docs/getting-started/installation/)
|
[](https://dokku.com/docs/getting-started/installation/)
|
||||||
[](#sponsors)
|
[](#sponsors)
|
||||||
[](#backers)
|
[](#backers)
|
||||||
@@ -14,81 +13,69 @@ Docker powered mini-Heroku. The smallest PaaS implementation you've ever seen.
|
|||||||
|
|
||||||
## Sponsors
|
## Sponsors
|
||||||
|
|
||||||
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 16.04/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.
|
||||||
@@ -99,11 +86,11 @@ 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.24.10/bootstrap.sh
|
wget https://raw.githubusercontent.com/dokku/dokku/v0.28.2/bootstrap.sh
|
||||||
sudo DOKKU_TAG=v0.24.10 bash bootstrap.sh
|
sudo DOKKU_TAG=v0.28.2 bash bootstrap.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
You can then proceed to the ip address or domain name associated with your server to complete the web-based 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.
|
||||||
|
|
||||||
If you wish for a more unattended installation method, see [these](https://dokku.com/docs/getting-started/install/debian/#unattended-installation) docs.
|
If you wish for a more unattended installation method, see [these](https://dokku.com/docs/getting-started/install/debian/#unattended-installation) docs.
|
||||||
|
|
||||||
@@ -113,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 [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku).
|
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 [freenode in #dokku](https://webchat.freenode.net/?channels=%23dokku), 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.
|
||||||
|
|
||||||
|
|||||||
25
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
|
||||||
|
|
||||||
@@ -56,7 +54,6 @@ Vagrant::configure("2") do |config|
|
|||||||
end
|
end
|
||||||
|
|
||||||
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git build-essential >/dev/null && cd /root/dokku && #{make_cmd}"
|
vm.vm.provision :shell, :inline => "export DEBIAN_FRONTEND=noninteractive && apt-get update -qq >/dev/null && apt-get -qq -y --no-install-recommends install git build-essential >/dev/null && cd /root/dokku && #{make_cmd}"
|
||||||
vm.vm.provision :shell, :inline => "cd /root/dokku && make dokku-installer"
|
|
||||||
vm.vm.provision :shell do |s|
|
vm.vm.provision :shell do |s|
|
||||||
s.inline = <<-EOT
|
s.inline = <<-EOT
|
||||||
echo '"\e[5~": history-search-backward' > /root/.inputrc
|
echo '"\e[5~": history-search-backward' > /root/.inputrc
|
||||||
@@ -65,42 +62,33 @@ Vagrant::configure("2") do |config|
|
|||||||
echo 'set completion-ignore-case on' >> /root/.inputrc
|
echo 'set completion-ignore-case on' >> /root/.inputrc
|
||||||
EOT
|
EOT
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if Pathname.new(PUBLIC_KEY_PATH).exist?
|
||||||
|
vm.vm.provision :shell, :inline => "echo 'Importing ssh key into dokku' && cat /root/.ssh/authorized_keys | dokku ssh-keys:add admin"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# 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"
|
||||||
vm.vm.provision :shell, :inline => "cd /vagrant/ && export DOKKU_BRANCH=`git symbolic-ref -q --short HEAD 2>/dev/null` && export DOKKU_TAG=`git describe --tags --exact-match 2>/dev/null` && cd /root/ && cp /vagrant/bootstrap.sh ./ && dos2unix bootstrap.sh && bash bootstrap.sh"
|
vm.vm.provision :shell, :inline => "cd /vagrant/ && export DOKKU_BRANCH=`git symbolic-ref -q --short HEAD 2>/dev/null` && export DOKKU_TAG=`git describe --tags --exact-match 2>/dev/null` && cd /root/ && cp /vagrant/bootstrap.sh ./ && dos2unix bootstrap.sh && bash bootstrap.sh"
|
||||||
vm.vm.provision :shell, :inline => "cd /root/dokku && make dokku-installer"
|
|
||||||
end
|
end
|
||||||
|
|
||||||
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|
|
||||||
@@ -109,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
|
||||||
@@ -117,6 +104,6 @@ Vagrant::configure("2") do |config|
|
|||||||
|
|
||||||
if Pathname.new(PUBLIC_KEY_PATH).exist?
|
if Pathname.new(PUBLIC_KEY_PATH).exist?
|
||||||
config.vm.provision :file, source: PUBLIC_KEY_PATH, destination: '/tmp/id_rsa.pub'
|
config.vm.provision :file, source: PUBLIC_KEY_PATH, destination: '/tmp/id_rsa.pub'
|
||||||
config.vm.provision :shell, :inline => "rm -f /root/.ssh/authorized_keys && mkdir -p /root/.ssh && sudo cp /tmp/id_rsa.pub /root/.ssh/authorized_keys"
|
config.vm.provision :shell, :inline => "echo 'Copying ssh key into vm' && rm -f /root/.ssh/authorized_keys && mkdir -p /root/.ssh && sudo cp /tmp/id_rsa.pub /root/.ssh/authorized_keys"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
70
bootstrap.sh
@@ -3,16 +3,16 @@ 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 16.04/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.
|
||||||
|
|
||||||
# We wrap this whole script in functions, so that we won't execute
|
# We wrap this whole script in functions, so that we won't execute
|
||||||
# until the entire script is downloaded.
|
# until the entire script is downloaded.
|
||||||
# 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], CentOS [7], Ubuntu [16.04, 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"
|
||||||
@@ -44,18 +44,26 @@ install-requirements() {
|
|||||||
|
|
||||||
case "$DOKKU_DISTRO" in
|
case "$DOKKU_DISTRO" in
|
||||||
debian)
|
debian)
|
||||||
|
if ! dpkg -l | grep -q gpg-agent; then
|
||||||
|
apt-get update -qq >/dev/null
|
||||||
|
apt-get -qq -y --no-install-recommends install gpg-agent
|
||||||
|
fi
|
||||||
if ! dpkg -l | grep -q software-properties-common; then
|
if ! dpkg -l | grep -q software-properties-common; then
|
||||||
apt-get update -qq >/dev/null
|
apt-get update -qq >/dev/null
|
||||||
apt-get -qq -y --no-install-recommends install software-properties-common
|
apt-get -qq -y --no-install-recommends install software-properties-common
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
ubuntu)
|
ubuntu)
|
||||||
|
if ! dpkg -l | grep -q gpg-agent; then
|
||||||
|
apt-get update -qq >/dev/null
|
||||||
|
apt-get -qq -y --no-install-recommends install gpg-agent
|
||||||
|
fi
|
||||||
if ! dpkg -l | grep -q software-properties-common; then
|
if ! dpkg -l | grep -q software-properties-common; then
|
||||||
apt-get update -qq >/dev/null
|
apt-get update -qq >/dev/null
|
||||||
apt-get -qq -y --no-install-recommends install software-properties-common
|
apt-get -qq -y --no-install-recommends install 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
|
||||||
@@ -131,9 +139,6 @@ install-dokku-from-package() {
|
|||||||
debian | ubuntu)
|
debian | ubuntu)
|
||||||
install-dokku-from-deb-package "$@"
|
install-dokku-from-deb-package "$@"
|
||||||
;;
|
;;
|
||||||
centos | 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/"
|
||||||
;;
|
;;
|
||||||
@@ -155,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" "16.04" "18.04" "20.04" "9" "10"; 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
|
||||||
|
|
||||||
@@ -181,30 +186,34 @@ install-dokku-from-deb-package() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
OS_ID="$(lsb_release -cs 2>/dev/null || echo "bionic")"
|
OS_ID="$(lsb_release -cs 2>/dev/null || echo "bionic")"
|
||||||
if ! in-array "$DOKKU_DISTRO" "debian" "ubuntu"; then
|
if ! in-array "$DOKKU_DISTRO" "debian" "ubuntu" "raspbian"; then
|
||||||
DOKKU_DISTRO="ubuntu"
|
DOKKU_DISTRO="ubuntu"
|
||||||
OS_ID="bionic"
|
OS_ID="bionic"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
|
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
|
||||||
OS_IDS=("xenial" "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
|
||||||
elif [[ "$DOKKU_DISTRO" == "debian" ]]; then
|
elif [[ "$DOKKU_DISTRO" == "debian" ]]; then
|
||||||
OS_IDS=("stretch" "buster")
|
OS_IDS=("stretch" "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
|
||||||
|
elif [[ "$DOKKU_DISTRO" == "raspbian" ]]; then
|
||||||
|
OS_IDS=("buster" "bullseye")
|
||||||
|
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||||
|
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
|
||||||
|
|
||||||
[[ -n $DOKKU_VHOST_ENABLE ]] && echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | sudo debconf-set-selections
|
[[ -n $DOKKU_VHOST_ENABLE ]] && echo "dokku dokku/vhost_enable boolean $DOKKU_VHOST_ENABLE" | sudo debconf-set-selections
|
||||||
[[ -n $DOKKU_WEB_CONFIG ]] && echo "dokku dokku/web_config boolean $DOKKU_WEB_CONFIG" | sudo debconf-set-selections
|
|
||||||
[[ -n $DOKKU_HOSTNAME ]] && echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | sudo debconf-set-selections
|
[[ -n $DOKKU_HOSTNAME ]] && echo "dokku dokku/hostname string $DOKKU_HOSTNAME" | sudo debconf-set-selections
|
||||||
[[ -n $DOKKU_SKIP_KEY_FILE ]] && echo "dokku dokku/skip_key_file boolean $DOKKU_SKIP_KEY_FILE" | sudo debconf-set-selections
|
[[ -n $DOKKU_SKIP_KEY_FILE ]] && echo "dokku dokku/skip_key_file boolean $DOKKU_SKIP_KEY_FILE" | sudo debconf-set-selections
|
||||||
[[ -n $DOKKU_KEY_FILE ]] && echo "dokku dokku/key_file string $DOKKU_KEY_FILE" | sudo debconf-set-selections
|
[[ -n $DOKKU_KEY_FILE ]] && echo "dokku dokku/key_file string $DOKKU_KEY_FILE" | sudo debconf-set-selections
|
||||||
@@ -219,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
|
||||||
@@ -261,6 +241,10 @@ main() {
|
|||||||
ensure-environment
|
ensure-environment
|
||||||
install-requirements
|
install-requirements
|
||||||
install-dokku
|
install-dokku
|
||||||
|
|
||||||
|
if [[ -f /etc/update-motd.d/99-dokku ]]; then
|
||||||
|
/etc/update-motd.d/99-dokku || true
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
main "$@"
|
main "$@"
|
||||||
|
|||||||
10
common.mk
@@ -1,9 +1,11 @@
|
|||||||
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)
|
||||||
|
GOARCH ?= amd64
|
||||||
|
|
||||||
.PHONY: build-in-docker build clean src-clean
|
.PHONY: build-in-docker build clean src-clean
|
||||||
|
|
||||||
@@ -12,14 +14,14 @@ build: $(BUILD)
|
|||||||
build-in-docker: clean
|
build-in-docker: clean
|
||||||
mkdir -p /tmp/dokku-go-build-cache
|
mkdir -p /tmp/dokku-go-build-cache
|
||||||
docker run --rm \
|
docker run --rm \
|
||||||
-v $$PWD/../..:$(GO_REPO_ROOT) \
|
-v $(GO_ROOT_MOUNT) \
|
||||||
-v $(GO_BUILD_CACHE):/root/.cache \
|
-v $(GO_BUILD_CACHE):/root/.cache \
|
||||||
-v $(GO_MOD_CACHE):/go/pkg/mod \
|
-v $(GO_MOD_CACHE):/go/pkg/mod \
|
||||||
-e PLUGIN_NAME=$(PLUGIN_NAME) \
|
-e PLUGIN_NAME=$(PLUGIN_NAME) \
|
||||||
-e GO111MODULE=on \
|
-e GO111MODULE=on \
|
||||||
-w $(GO_REPO_ROOT)/plugins/$(PLUGIN_NAME) \
|
-w $(GO_REPO_ROOT)/plugins/$(PLUGIN_NAME) \
|
||||||
$(BUILD_IMAGE) \
|
$(BUILD_IMAGE) \
|
||||||
bash -c "GO_ARGS='$(GO_ARGS)' make -j4 $(GO_PLUGIN_MAKE_TARGET)" || exit $$?
|
bash -c "GO_ARGS='$(GO_ARGS)' CGO_ENABLED=0 GOOS=linux GOARCH=$(GOARCH) make -j4 $(GO_PLUGIN_MAKE_TARGET)" || exit $$?
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BUILD)
|
rm -rf $(BUILD)
|
||||||
|
|||||||
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 "$@"
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
FROM dokku/build-base:0.0.1
|
FROM dokku/build-base:0.0.1 AS builder
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
@@ -8,8 +8,8 @@ RUN command -v fpm >/dev/null || sudo gem install fpm --no-ri --no-rdoc
|
|||||||
ARG GOLANG_VERSION
|
ARG GOLANG_VERSION
|
||||||
|
|
||||||
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux-amd64.tar.gz https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz \
|
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux-amd64.tar.gz https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-amd64.tar.gz \
|
||||||
&& tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux-amd64.tar.gz \
|
&& tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux-amd64.tar.gz \
|
||||||
&& cp /usr/local/go/bin/* /usr/local/bin
|
&& cp /usr/local/go/bin/* /usr/local/bin
|
||||||
|
|
||||||
ARG WORKDIR=/go/src/github.com/dokku/dokku
|
ARG WORKDIR=/go/src/github.com/dokku/dokku
|
||||||
|
|
||||||
@@ -18,23 +18,65 @@ 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}
|
||||||
|
|
||||||
|
ENV GOPATH=/go
|
||||||
|
|
||||||
|
FROM builder as amd64
|
||||||
|
|
||||||
ARG PLUGIN_MAKE_TARGET
|
ARG PLUGIN_MAKE_TARGET
|
||||||
ARG DOKKU_VERSION=master
|
ARG DOKKU_VERSION=master
|
||||||
ARG DOKKU_GIT_REV
|
ARG DOKKU_GIT_REV
|
||||||
ARG IS_RELEASE=false
|
ARG IS_RELEASE=false
|
||||||
|
|
||||||
ENV GOPATH=/go
|
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 \
|
||||||
|
make version copyfiles \
|
||||||
|
&& make deb-dokku
|
||||||
|
|
||||||
|
FROM builder as armhf
|
||||||
|
|
||||||
|
COPY --from=amd64 /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} \
|
RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
|
||||||
DOKKU_VERSION=${DOKKU_VERSION} \
|
DOKKU_VERSION=${DOKKU_VERSION} \
|
||||||
DOKKU_GIT_REV=${DOKKU_GIT_REV} \
|
DOKKU_GIT_REV=${DOKKU_GIT_REV} \
|
||||||
IS_RELEASE=${IS_RELEASE} \
|
IS_RELEASE=${IS_RELEASE} \
|
||||||
SKIP_GO_CLEAN=true \
|
SKIP_GO_CLEAN=true \
|
||||||
make version copyfiles \
|
GOARCH=arm make version copyfiles \
|
||||||
&& make deb-dokku rpm-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,20 +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"]
|
||||||
"xenial"
|
|
||||||
"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)
|
||||||
@@ -26,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))
|
||||||
|
|||||||
@@ -1,438 +0,0 @@
|
|||||||
#!/usr/bin/env python3
|
|
||||||
|
|
||||||
import cgi
|
|
||||||
import json
|
|
||||||
import os
|
|
||||||
import re
|
|
||||||
import shutil
|
|
||||||
try:
|
|
||||||
import SimpleHTTPServer
|
|
||||||
import SocketServer
|
|
||||||
except ImportError:
|
|
||||||
import http.server as SimpleHTTPServer
|
|
||||||
import socketserver as SocketServer
|
|
||||||
import subprocess
|
|
||||||
import sys
|
|
||||||
import threading
|
|
||||||
|
|
||||||
VERSION = 'v0.24.10'
|
|
||||||
|
|
||||||
def bytes_to_string(b):
|
|
||||||
if type(b) == bytes:
|
|
||||||
encoding = sys.stdout.encoding
|
|
||||||
if encoding is None:
|
|
||||||
encoding = 'utf-8'
|
|
||||||
b = b.decode(encoding)
|
|
||||||
b = b.strip()
|
|
||||||
return b
|
|
||||||
|
|
||||||
|
|
||||||
def string_to_bytes(s):
|
|
||||||
if type(s) == str:
|
|
||||||
encoding = sys.stdout.encoding
|
|
||||||
if encoding is None:
|
|
||||||
encoding = 'utf-8'
|
|
||||||
s = s.encode(encoding)
|
|
||||||
return s
|
|
||||||
|
|
||||||
|
|
||||||
hostname = ''
|
|
||||||
try:
|
|
||||||
command = "bash -c '[[ $(dig +short $HOSTNAME) ]] && echo $HOSTNAME || wget -q -O - icanhazip.com'"
|
|
||||||
hostname = bytes_to_string(subprocess.check_output(command, shell=True))
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
key_file = os.getenv('KEY_FILE', None)
|
|
||||||
if os.path.isfile('/home/ec2-user/.ssh/authorized_keys'):
|
|
||||||
key_file = '/home/ec2-user/.ssh/authorized_keys'
|
|
||||||
elif os.path.isfile('/home/ubuntu/.ssh/authorized_keys'):
|
|
||||||
key_file = '/home/ubuntu/.ssh/authorized_keys'
|
|
||||||
else:
|
|
||||||
key_file = '/root/.ssh/authorized_keys'
|
|
||||||
|
|
||||||
admin_keys = []
|
|
||||||
if os.path.isfile(key_file):
|
|
||||||
try:
|
|
||||||
command = "cat {0}".format(key_file)
|
|
||||||
admin_keys = bytes_to_string(subprocess.check_output(command, shell=True)).strip().split("\n")
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
ufw_display = 'block'
|
|
||||||
try:
|
|
||||||
command = "sudo ufw status"
|
|
||||||
ufw_output = bytes_to_string(subprocess.check_output(command, shell=True).strip())
|
|
||||||
if "inactive" in ufw_output:
|
|
||||||
ufw_display = 'none'
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
ufw_display = 'none'
|
|
||||||
|
|
||||||
|
|
||||||
nginx_dir = '/etc/nginx'
|
|
||||||
nginx_init = '/etc/init.d/nginx'
|
|
||||||
try:
|
|
||||||
command = "test -x /usr/bin/openresty"
|
|
||||||
subprocess.check_output(command, shell=True)
|
|
||||||
nginx_dir = '/usr/local/openresty/nginx/conf'
|
|
||||||
nginx_init = '/etc/init.d/openresty'
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def check_boot():
|
|
||||||
if 'onboot' not in sys.argv:
|
|
||||||
return
|
|
||||||
init_dir = os.getenv('INIT_DIR', '/etc/init')
|
|
||||||
systemd_dir = os.getenv('SYSTEMD_DIR', '/etc/systemd/system')
|
|
||||||
nginx_conf_dir = os.getenv('NGINX_CONF_DIR', '{0}/conf.d'.format(nginx_dir))
|
|
||||||
|
|
||||||
if os.path.exists(init_dir):
|
|
||||||
with open('{0}/dokku-installer.conf'.format(init_dir), 'w') as f:
|
|
||||||
f.write("start on runlevel [2345]\n")
|
|
||||||
f.write("exec {0} selfdestruct\n".format(os.path.abspath(__file__)))
|
|
||||||
if os.path.exists(systemd_dir):
|
|
||||||
with open('{0}/dokku-installer.service'.format(systemd_dir), 'w') as f:
|
|
||||||
f.write("[Unit]\n")
|
|
||||||
f.write("Description=Dokku web-installer\n")
|
|
||||||
f.write("\n")
|
|
||||||
f.write("[Service]\n")
|
|
||||||
f.write("ExecStart={0} selfdestruct\n".format(os.path.abspath(__file__)))
|
|
||||||
f.write("\n")
|
|
||||||
f.write("[Install]\n")
|
|
||||||
f.write("WantedBy=multi-user.target\n")
|
|
||||||
f.write("WantedBy=graphical.target\n")
|
|
||||||
if os.path.exists(nginx_conf_dir):
|
|
||||||
with open('{0}/dokku-installer.conf'.format(nginx_conf_dir), 'w') as f:
|
|
||||||
f.write("upstream dokku-installer { server 127.0.0.1:2000; }\n")
|
|
||||||
f.write("server {\n")
|
|
||||||
f.write(" listen 80;\n")
|
|
||||||
f.write(" location / {\n")
|
|
||||||
f.write(" proxy_pass http://dokku-installer;\n")
|
|
||||||
f.write(" }\n")
|
|
||||||
f.write("}\n")
|
|
||||||
|
|
||||||
subprocess.call('rm -f {0}/sites-enabled/*'.format(nginx_dir), shell=True)
|
|
||||||
sys.exit(0)
|
|
||||||
|
|
||||||
|
|
||||||
class GetHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
|
|
||||||
def write_content(self, content):
|
|
||||||
try:
|
|
||||||
self.wfile.write(content)
|
|
||||||
except TypeError:
|
|
||||||
self.wfile.write(string_to_bytes(content))
|
|
||||||
|
|
||||||
|
|
||||||
def do_GET(self):
|
|
||||||
content = PAGE.replace('{VERSION}', VERSION)
|
|
||||||
content = content.replace('{UFW_DISPLAY}', ufw_display)
|
|
||||||
content = content.replace('{HOSTNAME}', hostname)
|
|
||||||
content = content.replace('{AUTHORIZED_KEYS_LOCATION}', key_file)
|
|
||||||
content = content.replace('{ADMIN_KEYS}', "\n".join(admin_keys))
|
|
||||||
self.send_response(200)
|
|
||||||
self.end_headers()
|
|
||||||
self.write_content(content)
|
|
||||||
|
|
||||||
def do_POST(self):
|
|
||||||
if self.path not in ['/setup', '/setup/']:
|
|
||||||
return
|
|
||||||
|
|
||||||
params = cgi.FieldStorage(fp=self.rfile,
|
|
||||||
headers=self.headers,
|
|
||||||
environ={
|
|
||||||
'REQUEST_METHOD': 'POST',
|
|
||||||
'CONTENT_TYPE': self.headers['Content-Type']})
|
|
||||||
|
|
||||||
dokku_root = os.getenv('DOKKU_ROOT', '/home/dokku')
|
|
||||||
dokku_user = os.getenv('DOKKU_SYSTEM_GROUP', 'dokku')
|
|
||||||
dokku_group = os.getenv('DOKKU_SYSTEM_USER', 'dokku')
|
|
||||||
|
|
||||||
vhost_enable = 'false'
|
|
||||||
vhost_filename = '{0}/VHOST'.format(dokku_root)
|
|
||||||
|
|
||||||
if 'vhost' in params and params['vhost'].value == 'true':
|
|
||||||
vhost_enable = 'true'
|
|
||||||
with open(vhost_filename, 'w') as f:
|
|
||||||
f.write(params['hostname'].value.strip("/"))
|
|
||||||
shutil.chown(vhost_filename, dokku_user, dokku_group)
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
os.remove(vhost_filename)
|
|
||||||
except OSError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
hostname_filename = '{0}/HOSTNAME'.format(dokku_root)
|
|
||||||
|
|
||||||
with open(hostname_filename, 'w') as f:
|
|
||||||
f.write(params['hostname'].value.strip("/"))
|
|
||||||
|
|
||||||
shutil.chown(hostname_filename, dokku_user, dokku_group)
|
|
||||||
|
|
||||||
for (index, key) in enumerate(params['keys'].value.splitlines(), 1):
|
|
||||||
user = 'admin'
|
|
||||||
if self.admin_user_exists() is not None:
|
|
||||||
user = 'web-admin'
|
|
||||||
if self.web_admin_user_exists() is not None:
|
|
||||||
index = int(self.web_admin_user_exists()) + 1
|
|
||||||
elif self.web_admin_user_exists() is None:
|
|
||||||
index = 1
|
|
||||||
elif self.admin_user_exists() is None:
|
|
||||||
pass
|
|
||||||
else:
|
|
||||||
index = int(self.admin_user_exists()) + 1
|
|
||||||
user = user + str(index)
|
|
||||||
command = ['sshcommand', 'acl-add', 'dokku', user]
|
|
||||||
proc = subprocess.Popen(command, stdin=subprocess.PIPE)
|
|
||||||
try:
|
|
||||||
proc.stdin.write(key)
|
|
||||||
except TypeError:
|
|
||||||
proc.stdin.write(string_to_bytes(key))
|
|
||||||
proc.stdin.close()
|
|
||||||
proc.wait()
|
|
||||||
|
|
||||||
set_debconf_selection('boolean', 'nginx_enable', 'true')
|
|
||||||
set_debconf_selection('boolean', 'skip_key_file', 'true')
|
|
||||||
set_debconf_selection('boolean', 'vhost_enable', vhost_enable)
|
|
||||||
set_debconf_selection('boolean', 'web_config', 'false')
|
|
||||||
set_debconf_selection('string', 'hostname', params['hostname'].value)
|
|
||||||
|
|
||||||
if 'selfdestruct' in sys.argv:
|
|
||||||
DeleteInstallerThread()
|
|
||||||
|
|
||||||
content = json.dumps({'status': 'ok'})
|
|
||||||
|
|
||||||
self.send_response(200)
|
|
||||||
self.end_headers()
|
|
||||||
self.write_content(content)
|
|
||||||
|
|
||||||
def web_admin_user_exists(self):
|
|
||||||
return self.user_exists('web-admin(\d+)')
|
|
||||||
|
|
||||||
def admin_user_exists(self):
|
|
||||||
return self.user_exists('admin(\d+)')
|
|
||||||
|
|
||||||
def user_exists(self, name):
|
|
||||||
command = 'dokku ssh-keys:list'
|
|
||||||
pattern = re.compile(r'NAME="' + name + '"')
|
|
||||||
proc = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
|
|
||||||
max_num = 0
|
|
||||||
exists = False
|
|
||||||
for line in proc.stdout:
|
|
||||||
m = pattern.search(bytes_to_string(line))
|
|
||||||
if m:
|
|
||||||
# User of the form `user` or `user#` exists
|
|
||||||
exists = True
|
|
||||||
max_num = max(max_num, int(m.group(1)))
|
|
||||||
if exists:
|
|
||||||
return max_num
|
|
||||||
else:
|
|
||||||
return None
|
|
||||||
|
|
||||||
|
|
||||||
def set_debconf_selection(debconf_type, key, value):
|
|
||||||
found = False
|
|
||||||
with open('/etc/os-release', 'r') as f:
|
|
||||||
for line in f:
|
|
||||||
if 'debian' in line:
|
|
||||||
found = True
|
|
||||||
|
|
||||||
if not found:
|
|
||||||
return
|
|
||||||
|
|
||||||
ps = subprocess.Popen(['echo', 'dokku dokku/{0} {1} {2}'.format(
|
|
||||||
key, debconf_type, value
|
|
||||||
)], stdout=subprocess.PIPE)
|
|
||||||
|
|
||||||
try:
|
|
||||||
subprocess.check_output(['debconf-set-selections'], stdin=ps.stdout)
|
|
||||||
except subprocess.CalledProcessError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
ps.wait()
|
|
||||||
|
|
||||||
|
|
||||||
class DeleteInstallerThread(object):
|
|
||||||
def __init__(self, interval=1):
|
|
||||||
thread = threading.Thread(target=self.run, args=())
|
|
||||||
thread.daemon = True
|
|
||||||
thread.start()
|
|
||||||
|
|
||||||
def run(self):
|
|
||||||
command = "rm {0}/conf.d/dokku-installer.conf && {1} stop && {1} start".format(nginx_dir, nginx_init)
|
|
||||||
try:
|
|
||||||
subprocess.call(command, shell=True)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
command = "rm -f /etc/init/dokku-installer.conf /etc/systemd/system/dokku-installer.service && (stop dokku-installer || systemctl stop dokku-installer.service)"
|
|
||||||
try:
|
|
||||||
subprocess.call(command, shell=True)
|
|
||||||
except:
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
check_boot()
|
|
||||||
|
|
||||||
port = int(os.getenv('PORT', 2000))
|
|
||||||
httpd = SocketServer.TCPServer(("", port), GetHandler)
|
|
||||||
print("Listening on 0.0.0.0:{0}, CTRL+C to stop".format(port))
|
|
||||||
httpd.serve_forever()
|
|
||||||
|
|
||||||
|
|
||||||
PAGE = """
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<title>Dokku Setup</title>
|
|
||||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
|
||||||
<style>
|
|
||||||
.bd-callout {
|
|
||||||
padding: 1.25rem;
|
|
||||||
margin-top: 1.25rem;
|
|
||||||
margin-bottom: 1.25rem;
|
|
||||||
border: 1px solid #eee;
|
|
||||||
border-left-width: .25rem;
|
|
||||||
border-radius: .25rem;
|
|
||||||
}
|
|
||||||
.bd-callout p:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
.bd-callout-info {
|
|
||||||
border-left-color: #5bc0de;
|
|
||||||
}
|
|
||||||
pre {
|
|
||||||
font-size: 80%;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
h1 small {
|
|
||||||
font-size: 50%;
|
|
||||||
}
|
|
||||||
h5 {
|
|
||||||
font-size: 1rem;
|
|
||||||
}
|
|
||||||
.container {
|
|
||||||
width: 640px;
|
|
||||||
}
|
|
||||||
.result {
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
input.form-control, textarea.form-control {
|
|
||||||
background-color: #fafbfc;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
input.form-control::placeholder, textarea.form-control::placeholder {
|
|
||||||
color: #adb2b8
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div class="container">
|
|
||||||
<form id="form" role="form">
|
|
||||||
<h1 class="pt-3">Dokku Setup <small class="text-muted">{VERSION}</small></h1>
|
|
||||||
<div class="alert alert-warning small" role="alert">
|
|
||||||
<strong>Warning:</strong> The SSH key filled out here can grant root access to the server. Please complete the setup as soon as possible.
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h3>Admin Access</h3>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="key">Public SSH Keys</label><br />
|
|
||||||
<textarea class="form-control" name="keys" rows="5" id="key" placeholder="Begins with 'ssh-rsa', 'ssh-dss', 'ssh-ed25519', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', or 'ecdsa-sha2-nistp521'">{ADMIN_KEYS}</textarea>
|
|
||||||
<small class="form-text text-muted">Public keys allow users to ssh onto the server as the <code>dokku</code> user, as well as remotely execute Dokku commands. They are currently auto-populated from: <code>{AUTHORIZED_KEYS_LOCATION}</code>, and can be changed later via the <a href="https://dokku.com/docs/deployment/user-management/" target="_blank"><code>dokku ssh-keys</code></a> plugin.</small>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row">
|
|
||||||
<div class="col">
|
|
||||||
<h3>Hostname Configuration</h3>
|
|
||||||
<div class="form-group">
|
|
||||||
<label for="hostname">Hostname</label>
|
|
||||||
<input class="form-control" type="text" id="hostname" name="hostname" value="{HOSTNAME}" placeholder="A hostname or ip address such as {HOSTNAME}" />
|
|
||||||
<small class="form-text text-muted">This will be used as the default host for all applications, and can be changed later via the <a href="https://dokku.com/docs/configuration/domains/" target="_blank"><code>dokku domains:set-global</code></a> command.</small>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="vhost" name="vhost" value="true">
|
|
||||||
<label class="form-check-label" for="vhost">Use virtualhost naming for apps</label>
|
|
||||||
<small class="form-text text-muted">When enabled, Nginx will be run on port 80 and proxy requests to apps based on hostname.</small>
|
|
||||||
<small class="form-text text-muted">When disabled, a specific port will be setup for each application on first deploy, and requests to that port will be proxied to the relevant app.</small>
|
|
||||||
</div>
|
|
||||||
<div class="alert alert-warning small mt-3 d-{UFW_DISPLAY}" role="alert">
|
|
||||||
<strong>Warning:</strong> UFW is active. To allow traffic to specific ports, run <code>sudo ufw allow PORT</code> for the port in question.
|
|
||||||
</div>
|
|
||||||
<div class="bd-callout bd-callout-info">
|
|
||||||
<h5>What will app URLs look like?</h5>
|
|
||||||
<pre><code id="example">http://hostname:port</code></pre>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<button type="button" onclick="setup()" class="btn btn-primary">Finish Setup</button> <span class="result"></span>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div id="error-output"></div>
|
|
||||||
<script>
|
|
||||||
var $ = document.querySelector.bind(document)
|
|
||||||
|
|
||||||
function setup() {
|
|
||||||
if ($("#key").value.trim() == "") {
|
|
||||||
alert("Your admin public key cannot be blank.")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if ($("#hostname").value.trim() == "") {
|
|
||||||
alert("Your hostname cannot be blank.")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
var data = new FormData($("#form"))
|
|
||||||
|
|
||||||
var inputs = [].slice.call(document.querySelectorAll("input, textarea, button"))
|
|
||||||
inputs.forEach(function (input) {
|
|
||||||
input.disabled = true
|
|
||||||
})
|
|
||||||
|
|
||||||
var result = $(".result")
|
|
||||||
fetch("/setup", {method: "POST", body: data})
|
|
||||||
.then(function(response) {
|
|
||||||
if (response.ok) {
|
|
||||||
return response.json()
|
|
||||||
} else {
|
|
||||||
throw new Error('Server returned error')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(function(response) {
|
|
||||||
result.classList.add("text-success");
|
|
||||||
result.textContent = "Success! Redirecting in 3 seconds. .."
|
|
||||||
setTimeout(function() {
|
|
||||||
window.location.href = "https://dokku.com/docs~{VERSION}/deployment/application-deployment/";
|
|
||||||
}, 3000);
|
|
||||||
})
|
|
||||||
.catch(function (error) {
|
|
||||||
result.classList.add("text-danger");
|
|
||||||
result.textContent = "Could not send the request"
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function update() {
|
|
||||||
if ($("#vhost").matches(":checked") && $("#hostname").value.match(/^(\d{1,3}\.){3}\d{1,3}$/)) {
|
|
||||||
alert("In order to use virtualhost naming, the hostname must not be an IP but a valid domain name.")
|
|
||||||
$("#vhost").checked = false;
|
|
||||||
}
|
|
||||||
if ($("#vhost").matches(':checked')) {
|
|
||||||
$("#example").textContent = "http://<app-name>."+$("#hostname").value
|
|
||||||
} else {
|
|
||||||
$("#example").textContent = "http://"+$("#hostname").value+":<app-port>"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$("#vhost").addEventListener("change", update);
|
|
||||||
$("#hostname").addEventListener("input", update);
|
|
||||||
update();
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
"""
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
@@ -55,7 +55,7 @@ fn-dokku-host() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -z "$DOKKU_HOST" ]]; then
|
if [[ -z "$DOKKU_HOST" ]]; then
|
||||||
fn-client-help-msg
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$DOKKU_HOST"
|
echo "$DOKKU_HOST"
|
||||||
@@ -100,11 +100,14 @@ main() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
DOKKU_REMOTE_HOST="$(fn-dokku-host "$DOKKU_GIT_REMOTE" "$DOKKU_HOST")"
|
DOKKU_REMOTE_HOST="$(fn-dokku-host "$DOKKU_GIT_REMOTE" "$DOKKU_HOST")"
|
||||||
|
if [[ -z "$DOKKU_REMOTE_HOST" ]]; then
|
||||||
|
fn-client-help-msg
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -z "$APP" ]]; then
|
if [[ -z "$APP" ]]; then
|
||||||
if [[ -d .git ]] || git rev-parse --git-dir >/dev/null 2>&1; then
|
if [[ -d .git ]] || git rev-parse --git-dir >/dev/null 2>&1; then
|
||||||
set +e
|
set +e
|
||||||
APP=$(git remote -v 2>/dev/null | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | head -n 1 | cut -f2 -d'@' | cut -f1 -d' ' | cut -f2 -d':' 2>/dev/null)
|
APP=$(git remote -v 2>/dev/null | grep -Ei "^${DOKKU_GIT_REMOTE}\s" | grep -Ei "dokku@$DOKKU_REMOTE_HOST" | head -n 1 | cut -f2 -d'@' | cut -f1 -d' ' | cut -f2 -d':' 2>/dev/null)
|
||||||
set -e
|
set -e
|
||||||
else
|
else
|
||||||
echo " ! This is not a git repository" 1>&2
|
echo " ! This is not a git repository" 1>&2
|
||||||
@@ -157,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
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ readonly ROOT_DIR="$(cd "$(dirname "$(dirname "${BASH_SOURCE[0]}")")" && pwd)"
|
|||||||
readonly TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-release.XXXXXX")"
|
readonly TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-release.XXXXXX")"
|
||||||
readonly DOKKU_GIT_REV="$(git rev-parse HEAD)"
|
readonly DOKKU_GIT_REV="$(git rev-parse HEAD)"
|
||||||
|
|
||||||
trap 'rm -rf "$TMP_WORK_DIR" >/dev/null' RETURN INT TERM EXIT
|
trap "rm -rf '$TMP_WORK_DIR' >/dev/null" RETURN INT TERM EXIT
|
||||||
|
|
||||||
log-info() {
|
log-info() {
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
@@ -49,6 +49,7 @@ fn-build-dokku() {
|
|||||||
--build-arg IS_RELEASE="$IS_RELEASE" \
|
--build-arg IS_RELEASE="$IS_RELEASE" \
|
||||||
--build-arg PLUGIN_MAKE_TARGET="build" \
|
--build-arg PLUGIN_MAKE_TARGET="build" \
|
||||||
--build-arg GOLANG_VERSION="$GOLANG_VERSION" \
|
--build-arg GOLANG_VERSION="$GOLANG_VERSION" \
|
||||||
|
--progress plain \
|
||||||
-f "contrib/build-dokku.Dockerfile" \
|
-f "contrib/build-dokku.Dockerfile" \
|
||||||
-t "$NAME" .
|
-t "$NAME" .
|
||||||
return "$?"
|
return "$?"
|
||||||
@@ -133,10 +134,20 @@ 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
|
||||||
|
|
||||||
if [[ "$DIST" == "ubuntu" ]]; then
|
if [[ "$RELEASE_TYPE" == "raspbian" ]]; then
|
||||||
OS_IDS=("xenial" "bionic" "focal")
|
OS_IDS=("buster" "bullseye")
|
||||||
|
for OS_ID in "${OS_IDS[@]}"; do
|
||||||
|
log-info "(release-dokku) pushing deb to packagecloud.com/${REPOSITORY}/${DIST}"
|
||||||
|
package_cloud push "${REPOSITORY}/${DIST}/${OS_ID}" "$PACKAGE_NAME"
|
||||||
|
ex="$?"
|
||||||
|
if [[ "$ex" -ne "0" ]]; then
|
||||||
|
EXIT_CODE="$ex"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
elif [[ "$DIST" == "ubuntu" ]]; then
|
||||||
|
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"
|
||||||
@@ -147,7 +158,7 @@ fn-publish-package() {
|
|||||||
done
|
done
|
||||||
|
|
||||||
DIST=debian
|
DIST=debian
|
||||||
OS_IDS=("stretch" "buster")
|
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"
|
||||||
@@ -204,7 +215,6 @@ fn-repo-update() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" contrib/dokku-installer.py
|
|
||||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" debian/control
|
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" debian/control
|
||||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" Dockerfile
|
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" Dockerfile
|
||||||
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/advanced-usage/plugin-management.md
|
fn-replace-version "$CURRENT_VERSION" "$NEXT_VERSION" docs/advanced-usage/plugin-management.md
|
||||||
@@ -213,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
|
||||||
@@ -339,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() {
|
||||||
@@ -380,30 +404,29 @@ 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}_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" "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 "$@"
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ set -eo pipefail
|
|||||||
|
|
||||||
readonly TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-plugin-release.XXXXXX")"
|
readonly TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-plugin-release.XXXXXX")"
|
||||||
|
|
||||||
trap 'rm -rf "$TMP_WORK_DIR" >/dev/null' RETURN INT TERM EXIT
|
trap "rm -rf '$TMP_WORK_DIR' >/dev/null" RETURN INT TERM EXIT
|
||||||
|
|
||||||
log-info() {
|
log-info() {
|
||||||
# shellcheck disable=SC2034
|
# shellcheck disable=SC2034
|
||||||
|
|||||||
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()
|
||||||
15
deb.mk
@@ -1,8 +1,7 @@
|
|||||||
BUILD_DIRECTORY ?= /tmp
|
BUILD_DIRECTORY ?= /tmp
|
||||||
|
DOKKU_DESCRIPTION = 'Docker powered PaaS that helps you build and manage the lifecycle of applications'
|
||||||
DOKKU_DESCRIPTION = 'Docker powered PaaS that helps you build and manage the lifecycle of applications'
|
DOKKU_REPO_NAME ?= dokku/dokku
|
||||||
DOKKU_REPO_NAME ?= dokku/dokku
|
DOKKU_ARCHITECTURE ?= amd64
|
||||||
DOKKU_ARCHITECTURE = amd64
|
|
||||||
|
|
||||||
ifndef IS_RELEASE
|
ifndef IS_RELEASE
|
||||||
IS_RELEASE = true
|
IS_RELEASE = true
|
||||||
@@ -20,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
|
||||||
@@ -45,9 +44,9 @@ ifneq (,$(findstring false,$(IS_RELEASE)))
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
cp -r debian /tmp/build-dokku/DEBIAN
|
cp -r debian /tmp/build-dokku/DEBIAN
|
||||||
|
sed -i.bak "s/^Architecture: .*/Architecture: $(DOKKU_ARCHITECTURE)/g" /tmp/build-dokku/DEBIAN/control && rm /tmp/build-dokku/DEBIAN/control.bak
|
||||||
rm -f /tmp/build-dokku/DEBIAN/lintian-overrides
|
rm -f /tmp/build-dokku/DEBIAN/lintian-overrides
|
||||||
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
|
||||||
|
|
||||||
|
|||||||
8
debian/config
vendored
@@ -10,14 +10,6 @@ fi
|
|||||||
readonly ACTION="${1:-configure}"
|
readonly ACTION="${1:-configure}"
|
||||||
readonly VERSION="${2:-dev}"
|
readonly VERSION="${2:-dev}"
|
||||||
|
|
||||||
db_input "high" "dokku/web_config" || true
|
|
||||||
db_go || true
|
|
||||||
|
|
||||||
db_get "dokku/web_config"
|
|
||||||
if [ $RET = "true" ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
db_input "high" "dokku/nginx_enable" || true
|
db_input "high" "dokku/nginx_enable" || true
|
||||||
db_input "high" "dokku/hostname" || true
|
db_input "high" "dokku/hostname" || true
|
||||||
db_input "high" "dokku/vhost_enable" || true
|
db_input "high" "dokku/vhost_enable" || true
|
||||||
|
|||||||
6
debian/control
vendored
@@ -1,10 +1,10 @@
|
|||||||
Package: dokku
|
Package: dokku
|
||||||
Version: 0.24.10
|
Version: 0.28.2
|
||||||
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, procfile-util (>= 0.11.0), python-software-properties | python3-software-properties, 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, parallel, 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>
|
||||||
Description: Docker-powered PaaS that helps build and manage the lifecycle of applications
|
Description: Docker-powered PaaS that helps build and manage the lifecycle of applications
|
||||||
|
|||||||
3
debian/lintian-overrides
vendored
@@ -10,6 +10,3 @@ dokku: hardening-no-relro
|
|||||||
|
|
||||||
# Built golang binaries link to libc
|
# Built golang binaries link to libc
|
||||||
dokku: missing-dependency-on-libc
|
dokku: missing-dependency-on-libc
|
||||||
|
|
||||||
# Temporary python dependency until #2247 is resolved
|
|
||||||
dokku: python-script-but-no-python-dep usr/share/dokku/contrib/dokku-installer.py
|
|
||||||
|
|||||||
41
debian/postinst
vendored
@@ -102,40 +102,7 @@ setup-sshcommand() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
setup-dokku-installer() {
|
|
||||||
NGINX_ROOT="/etc/nginx"
|
|
||||||
[[ -x /usr/bin/openresty ]] && NGINX_ROOT="/usr/local/openresty/nginx/conf"
|
|
||||||
|
|
||||||
if command -v "python3" &>/dev/null; then
|
|
||||||
sed -i '1 s/^.*$/#!\/usr\/bin\/env python3/' /usr/share/dokku/contrib/dokku-installer.py
|
|
||||||
elif command -v "python2.7" &>/dev/null; then
|
|
||||||
sed -i '1 s/^.*$/#!\/usr\/bin\/env python2.7/' /usr/share/dokku/contrib/dokku-installer.py
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -f "$NGINX_ROOT/conf.d/dokku-installer.conf" ]]; then
|
|
||||||
echo "Setting up dokku-installer"
|
|
||||||
/usr/share/dokku/contrib/dokku-installer.py onboot
|
|
||||||
|
|
||||||
if command -v systemctl &>/dev/null; then
|
|
||||||
echo "Enabling dokku-installer"
|
|
||||||
systemctl enable dokku-installer
|
|
||||||
fi
|
|
||||||
|
|
||||||
installer_status="$(service dokku-installer status 2>/dev/null || true)"
|
|
||||||
if echo $installer_status | grep -Eq "(inactive|waiting)" >/dev/null; then
|
|
||||||
echo "Starting dokku-installer"
|
|
||||||
service dokku-installer start || echo "Unable to start dokku-installer"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
dpkg-handling() {
|
dpkg-handling() {
|
||||||
db_get "dokku/web_config"
|
|
||||||
if [ "$RET" = "true" ]; then
|
|
||||||
db_stop
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -f "${DOKKU_ROOT}/VHOST" ]; then
|
if [ -f "${DOKKU_ROOT}/VHOST" ]; then
|
||||||
echo "VHOST file detected, skipping modification"
|
echo "VHOST file detected, skipping modification"
|
||||||
else
|
else
|
||||||
@@ -144,12 +111,10 @@ 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
|
||||||
|
|
||||||
db_get "dokku/hostname"
|
|
||||||
echo "$RET" >"${DOKKU_ROOT}/HOSTNAME"
|
|
||||||
|
|
||||||
if [ -z "${DEBCONF_RECONFIGURE}" ]; then
|
if [ -z "${DEBCONF_RECONFIGURE}" ]; then
|
||||||
db_get "dokku/key_file"
|
db_get "dokku/key_file"
|
||||||
if [ -f "$RET" ]; then
|
if [ -f "$RET" ]; then
|
||||||
@@ -171,10 +136,10 @@ case "$1" in
|
|||||||
|
|
||||||
setup-user
|
setup-user
|
||||||
setup-storage
|
setup-storage
|
||||||
|
|
||||||
|
dpkg-handling
|
||||||
setup-plugins
|
setup-plugins
|
||||||
setup-sshcommand
|
setup-sshcommand
|
||||||
setup-dokku-installer
|
|
||||||
dpkg-handling
|
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
|
|||||||
47
debian/preinst
vendored
@@ -7,55 +7,8 @@ if [[ -e /usr/share/debconf/confmodule ]]; then
|
|||||||
. /usr/share/debconf/confmodule
|
. /usr/share/debconf/confmodule
|
||||||
fi
|
fi
|
||||||
|
|
||||||
setup_dokku_installer() {
|
|
||||||
NGINX_BASE_PATH="$1"
|
|
||||||
NGINX_INIT_NAME="$2"
|
|
||||||
|
|
||||||
NGINX_CONF="${NGINX_BASE_PATH}/conf.d/dokku-installer.conf"
|
|
||||||
|
|
||||||
rm -f $NGINX_CONF
|
|
||||||
touch $NGINX_CONF
|
|
||||||
|
|
||||||
{
|
|
||||||
echo 'upstream dokku-installer { server 127.0.0.1:2000; }'
|
|
||||||
echo 'server {'
|
|
||||||
echo ' listen 80;'
|
|
||||||
echo ' location / {'
|
|
||||||
echo ' proxy_pass http://dokku-installer;'
|
|
||||||
echo ' }'
|
|
||||||
echo '}'
|
|
||||||
} >>$NGINX_CONF
|
|
||||||
|
|
||||||
rm -f $NGINX_BASE_PATH/sites-enabled/*
|
|
||||||
DOKKU_DISTRO="$(
|
|
||||||
. /etc/os-release >/dev/null 2>&1 || true
|
|
||||||
echo "$ID"
|
|
||||||
)"
|
|
||||||
case "$DOKKU_DISTRO" in
|
|
||||||
debian)
|
|
||||||
/usr/sbin/invoke-rc.d "$NGINX_INIT_NAME" reload || /usr/sbin/invoke-rc.d "$NGINX_INIT_NAME" start
|
|
||||||
;;
|
|
||||||
ubuntu)
|
|
||||||
if [[ -x /usr/bin/sv ]]; then
|
|
||||||
/usr/bin/sv reload "$NGINX_INIT_NAME" || /usr/bin/sv start "$NGINX_INIT_NAME"
|
|
||||||
else
|
|
||||||
"/etc/init.d/$NGINX_INIT_NAME" reload || "/etc/init.d/$NGINX_INIT_NAME" start
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$1" in
|
case "$1" in
|
||||||
install)
|
install)
|
||||||
db_get "dokku/web_config"
|
|
||||||
if [ "$RET" = "true" ]; then
|
|
||||||
if [[ -x /usr/bin/openresty ]]; then
|
|
||||||
setup_dokku_installer "/usr/local/openresty/nginx/conf" "openresty"
|
|
||||||
else
|
|
||||||
setup_dokku_installer "/etc/nginx" "nginx"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
db_get "dokku/skip_key_file"
|
db_get "dokku/skip_key_file"
|
||||||
if [ -z "${DEBCONF_RECONFIGURE}" ] && [ "$RET" != "true" ]; then
|
if [ -z "${DEBCONF_RECONFIGURE}" ] && [ "$RET" != "true" ]; then
|
||||||
db_get "dokku/key_file"
|
db_get "dokku/key_file"
|
||||||
|
|||||||
5
debian/templates
vendored
@@ -1,8 +1,3 @@
|
|||||||
Template: dokku/web_config
|
|
||||||
Description: Enable the web-based config page?
|
|
||||||
Type: boolean
|
|
||||||
Default: true
|
|
||||||
|
|
||||||
Template: dokku/vhost_enable
|
Template: dokku/vhost_enable
|
||||||
Description: Enable vhost-based deployments?
|
Description: Enable vhost-based deployments?
|
||||||
Type: boolean
|
Type: boolean
|
||||||
|
|||||||
@@ -12,9 +12,20 @@ log-fail() {
|
|||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
support-userns() {
|
||||||
|
chown 0:0 /usr/bin/sudo
|
||||||
|
chmod 4755 /usr/bin/sudo
|
||||||
|
chown 0:0 /usr/lib/sudo/sudoers.so
|
||||||
|
chown -R 0:0 /etc/sudoers
|
||||||
|
chown -R 0:0 /etc/sudoers.d
|
||||||
|
chown -R 0:0 /run/sshd
|
||||||
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
local NGINX_ROOT
|
local NGINX_ROOT
|
||||||
|
|
||||||
|
support-userns
|
||||||
|
|
||||||
if [[ ! -d /mnt/dokku ]]; then
|
if [[ ! -d /mnt/dokku ]]; then
|
||||||
log-info "Creating missing /mnt/dokku"
|
log-info "Creating missing /mnt/dokku"
|
||||||
mkdir -p /mnt/dokku
|
mkdir -p /mnt/dokku
|
||||||
@@ -51,6 +62,12 @@ main() {
|
|||||||
echo "export DOCKER_BIN=/usr/local/bin/docker" >"/home/dokku/.dokkurc/DOCKER_BIN"
|
echo "export DOCKER_BIN=/usr/local/bin/docker" >"/home/dokku/.dokkurc/DOCKER_BIN"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [[ -n "$DOKKU_HOST_ROOT" ]]; then
|
||||||
|
touch /etc/default/dokku
|
||||||
|
echo "export DOKKU_HOST_ROOT=$DOKKU_HOST_ROOT" >>/etc/default/dokku
|
||||||
|
chown dokku:dokku /etc/default/dokku
|
||||||
|
fi
|
||||||
|
|
||||||
NGINX_ROOT="/etc/nginx"
|
NGINX_ROOT="/etc/nginx"
|
||||||
if [[ -x /usr/bin/openresty ]]; then
|
if [[ -x /usr/bin/openresty ]]; then
|
||||||
NGINX_ROOT="/usr/local/openresty/nginx/conf"
|
NGINX_ROOT="/usr/local/openresty/nginx/conf"
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-image-labeler
|
dokku ALL=NOPASSWD:SETENV:/usr/bin/docker,/usr/bin/docker-image-labeler,/usr/bin/pack,/usr/bin/crontab
|
||||||
|
|||||||
20
docker/usr/local/bin/pack
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
[[ $TRACE ]] && set -x
|
||||||
|
|
||||||
|
main() {
|
||||||
|
declare desc="re-runs pack commands as sudo"
|
||||||
|
local PACK_BIN=""
|
||||||
|
if [[ -x "/usr/bin/pack" ]]; then
|
||||||
|
PACK_BIN="/usr/bin/pack"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$PACK_BIN" ]]; then
|
||||||
|
echo "! No pack binary found" 1>&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo -E "$PACK_BIN" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
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-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 %}
|
||||||
@@ -32,7 +32,7 @@ To extract the backup onto another server, copy the backup to the server and ext
|
|||||||
sudo tar -xzvf path/to/dokku/backup.tar.gz -C /
|
sudo tar -xzvf path/to/dokku/backup.tar.gz -C /
|
||||||
```
|
```
|
||||||
|
|
||||||
At this point, all datastores should be individually started and checked for data integrity. Once this is complete, individual applications can be rebuilt. Please consult the [process management documentation](/docs/processes/process-management.md#rebuilding-apps) for more information on how to rebuild applications.
|
At this point, all datastores should be individually started and checked for data integrity. Once this is complete, individual apps can be rebuilt. Please consult the [process management documentation](/docs/processes/process-management.md#rebuilding-apps) for more information on how to rebuild apps.
|
||||||
|
|
||||||
## Caveats
|
## Caveats
|
||||||
|
|
||||||
@@ -56,9 +56,15 @@ git remote add dokku dokku@[dokku.me:dokku.me]
|
|||||||
git push dokku [master]
|
git push dokku [master]
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Docker Networks
|
||||||
|
|
||||||
|
Docker networks generated by Dokku should be recreated. Running `dokku network:report` will output all networks in use by various apps, which can then be used to recreate them via `dokku network:create $NETWORK`.
|
||||||
|
|
||||||
|
Networks created by tools other than Dokku may be created as they initially were.
|
||||||
|
|
||||||
### Docker Image and Tar-based Apps
|
### Docker Image and Tar-based Apps
|
||||||
|
|
||||||
These applications may fail to rebuild via the normal `ps:rebuild` method. Redeploy these apps by running the original commands used to deploy them
|
These apps may fail to rebuild via the normal `ps:rebuild` method. Redeploy these apps by running the original commands used to deploy them
|
||||||
|
|
||||||
### Datastores
|
### Datastores
|
||||||
|
|
||||||
@@ -81,14 +87,13 @@ The plugin directory is contained at the `/var/lib/dokku/plugins` directory. Cor
|
|||||||
|
|
||||||
Note that restoring a plugin will not trigger any `install` or `dependencies` triggers. You will need to run these manually. See the [plugin management documentation](/docs/advanced-usage/plugin-management.md#installing-a-plugin) for more information on how to trigger these two hooks.
|
Note that restoring a plugin will not trigger any `install` or `dependencies` triggers. You will need to run these manually. See the [plugin management documentation](/docs/advanced-usage/plugin-management.md#installing-a-plugin) for more information on how to trigger these two hooks.
|
||||||
|
|
||||||
|
|
||||||
### Volumes and Static Assets
|
### Volumes and Static Assets
|
||||||
|
|
||||||
Dokku doesn't enforce a [300mb](https://devcenter.heroku.com/articles/slug-compiler#slug-size) limit on apps, but it's best practice to keep binary assets outside of git. Since containers are considered volatile in Dokku, external stores like s3 or storage mounts should be used for non-volatile items like user uploads. The Dokku storage core plugin can be used to mount local directories / volumes inside the docker container.
|
Dokku doesn't enforce a [300mb](https://devcenter.heroku.com/articles/slug-compiler#slug-size) limit on apps, but it's best practice to keep binary assets outside of git. Since containers are considered volatile in Dokku, external stores like s3 or storage mounts should be used for non-volatile items like user uploads. The Dokku storage core plugin can be used to mount local directories / volumes inside the docker container.
|
||||||
|
|
||||||
System administrators are highly encouraged to store persistent data in app-specific subdirectories of the path `/var/lib/dokku/data/storage`. This will help ensure restores of the aforementioned primary Dokku directories will restore service to all apps.
|
System administrators are highly encouraged to store persistent data in app-specific subdirectories of the path `/var/lib/dokku/data/storage`. This will help ensure restores of the aforementioned primary Dokku directories will restore service to all apps.
|
||||||
|
|
||||||
See the [persistent storage documentation](/docs/advanced-usage/persistent-storage.md) for more information on how to attach persistent storage to your application.
|
See the [persistent storage documentation](/docs/advanced-usage/persistent-storage.md) for more information on how to attach persistent storage to your app.
|
||||||
|
|
||||||
## Recovering app code
|
## Recovering app code
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,15 @@
|
|||||||
|
|
||||||
> New as of 0.5.0
|
> New as of 0.5.0
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Overview
|
||||||
|
|
||||||
Sometimes you need to run a command on deployment time, but before an app is completely deployed. Common use cases include:
|
Sometimes you need to run a command on deployment time, but before an app is completely deployed. Common use cases include:
|
||||||
|
|
||||||
* Checking a database is initialized
|
- Checking a database is initialized
|
||||||
* Running database migrations
|
- Running database migrations
|
||||||
* Any commands required to set up the server (e.g. something like a Django `collectstatic`)
|
- Any commands required to set up the server (e.g. something like a Django `collectstatic`)
|
||||||
|
|
||||||
To support this, Dokku provides support for a special `release` command within your app's `Procfile`, as well as a special `scripts.dokku` key inside of your app's `app.json` file. Be aware that all commands are run within the context of the built docker image - no commands affect the host unless there are volume mounts attached to your app.
|
To support this, Dokku provides support for a special `release` command within your app's `Procfile`, as well as a special `scripts.dokku` key inside of your app's `app.json` file. Be aware that all commands are run within the context of the built docker image - no commands affect the host unless there are volume mounts attached to your app.
|
||||||
|
|
||||||
@@ -22,8 +26,8 @@ Each "phase" has different expectations and limitations:
|
|||||||
- 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
|
||||||
@@ -49,13 +53,89 @@ Please keep the above in mind when utilizing deployment tasks.
|
|||||||
|
|
||||||
> To execute commands on the host during a release phase, see the [plugin creation documentation](/docs/development/plugin-creation.md) docs for more information on building your own custom plugin.
|
> To execute commands on the host during a release phase, see the [plugin creation documentation](/docs/development/plugin-creation.md) docs for more information on building your own custom plugin.
|
||||||
|
|
||||||
## `app.json` deployment tasks
|
### Changing the `app.json` location
|
||||||
|
|
||||||
|
When deploying a monorepo, it may be desirable to specify the specific path of the `app.json` file to use for a given app. This can be done via the `app-json:set` command. If a value is specified and that file does not exist within the repository, Dokku will continue the build process as if the repository has no `app.json` file.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku app-json:set node-js-app appjson-path second-app.json
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku app-json:set node-js-app appjson-path
|
||||||
|
```
|
||||||
|
|
||||||
|
The `appjson-path` property can also be set globally. The global default is `app.json`, and the global value is used when no app-specific value is set.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku app-json:set --global appjson-path global-app.json
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku app-json:set --global appjson-path
|
||||||
|
```
|
||||||
|
|
||||||
|
### Displaying app-json reports for an app
|
||||||
|
|
||||||
|
> New as of 0.25.0
|
||||||
|
|
||||||
|
You can get a report about the app's storage status using the `app-json:report` command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku app-json:report
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app app-json information
|
||||||
|
App-json computed appjson path: app2.json
|
||||||
|
App-json global appjson path: app.json
|
||||||
|
App-json appjson path: app2.json
|
||||||
|
=====> python-sample app-json information
|
||||||
|
App-json computed appjson path: app.json
|
||||||
|
App-json global appjson path: app.json
|
||||||
|
App-json appjson path:
|
||||||
|
=====> ruby-sample app-json information
|
||||||
|
App-json computed appjson path: app.json
|
||||||
|
App-json global appjson path: app.json
|
||||||
|
App-json appjson path:
|
||||||
|
```
|
||||||
|
|
||||||
|
You can run the command for a specific app also.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku app-json:report node-js-app
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app app-json information
|
||||||
|
App-json computed appjson path: app2.json
|
||||||
|
App-json global appjson path: app.json
|
||||||
|
App-json appjson path: app2.json
|
||||||
|
```
|
||||||
|
|
||||||
|
You can pass flags which will output only the value of the specific information you want. For example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku app-json:report node-js-app --app-json-appjson-path
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
app2.json
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deployment tasks
|
||||||
|
|
||||||
|
#### `app.json` deployment tasks
|
||||||
|
|
||||||
Dokku provides limited support for the `app.json` manifest from Heroku (documentation available [here](https://devcenter.heroku.com/articles/app-json-schema)). The keys available for use with Deployment Tasks are:
|
Dokku provides limited support for the `app.json` manifest from Heroku (documentation available [here](https://devcenter.heroku.com/articles/app-json-schema)). The keys available for use with Deployment Tasks are:
|
||||||
|
|
||||||
- `scripts.dokku.predeploy`: This is run _after_ an app's docker image is built, but _before_ any containers are scheduled. Changes made to your image are committed at this phase.
|
- `scripts.dokku.predeploy`: This is run _after_ an app's docker image is built, but _before_ any containers are scheduled. Changes made to your image are committed at this phase.
|
||||||
- `scripts.dokku.postdeploy`: This is run _after_ an app's containers are scheduled. Changes made to your image are *not* committed at this phase.
|
- `scripts.dokku.postdeploy`: This is run _after_ an app's containers are scheduled. Changes made to your image are _not_ committed at this phase.
|
||||||
- `scripts.postdeploy`: This is run _after_ an app's containers are scheduled. Changes made to your image are *not* committed at this phase.
|
- `scripts.postdeploy`: This is run _after_ an app's containers are scheduled. Changes made to your image are _not_ committed at this phase.
|
||||||
|
|
||||||
For buildpack-based deployments, the location of the `app.json` file should be at the root of your repository. Dockerfile-based app deploys should have the `app.json` in the configured `WORKDIR` directory; otherwise Dokku defaults to the buildpack app behavior of looking in `/app`.
|
For buildpack-based deployments, the location of the `app.json` file should be at the root of your repository. Dockerfile-based app deploys should have the `app.json` in the configured `WORKDIR` directory; otherwise Dokku defaults to the buildpack app behavior of looking in `/app`.
|
||||||
|
|
||||||
@@ -75,7 +155,7 @@ The following is an example `app.json` file. Please note that only the `scripts.
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## Procfile Release command
|
#### Procfile Release command
|
||||||
|
|
||||||
> New as of 0.14.0
|
> New as of 0.14.0
|
||||||
|
|
||||||
@@ -87,6 +167,6 @@ To use the `release` command, simply add a `release` stanza to your Procfile.
|
|||||||
release: curl https://some.external.api.service.com/deployment?state=built
|
release: curl https://some.external.api.service.com/deployment?state=built
|
||||||
```
|
```
|
||||||
|
|
||||||
Unlike the `scripts.dokku.predeploy` command, changes made during by the `release` command are *not* persisted to disk.
|
Unlike the `scripts.dokku.predeploy` command, changes made during by the `release` command are _not_ persisted to disk.
|
||||||
|
|
||||||
> Warning: scaling the release command up will likely result in unspecified issues within your deployment, and is highly discouraged.
|
> Warning: scaling the release command up will likely result in unspecified issues within your deployment, and is highly discouraged.
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
> New as of 0.3.17
|
> New as of 0.3.17
|
||||||
|
|
||||||
Pass [options](https://docs.docker.com/engine/reference/run/) to Docker during Dokku's `build`, `deploy` and `run` phases
|
Pass [container options](https://docs.docker.com/engine/reference/run/) to the `docker run` command during Dokku's `build`, `deploy` and `run` phases
|
||||||
|
|
||||||
```
|
```
|
||||||
docker-options:add <app> <phase(s)> OPTION # Add Docker option to app for phase (comma-separated phase list)
|
docker-options:add <app> <phase(s)> OPTION # Add Docker option to app for phase (comma-separated phase list)
|
||||||
@@ -29,6 +29,8 @@ Manipulation of docker options will not restart running containers. This enables
|
|||||||
|
|
||||||
More information on supported Docker options can be found here: https://docs.docker.com/engine/reference/commandline/run/.
|
More information on supported Docker options can be found here: https://docs.docker.com/engine/reference/commandline/run/.
|
||||||
|
|
||||||
|
Container options configured via the `docker-options` plugin are not used to modify the process a container runs. Container options are the `[OPTIONS]` portion of the following, where `[CONTAINER_COMMAND]` and `[ARG]` are the process and the arguments passed to it that are launched in the created container: `docker run [OPTIONS] [CONTAINER_COMMAND] [ARG...]`. Please see the documentation for [customizing the run command](/docs/deployment/builders/dockerfiles.md#customizing-the-run-command) or use a [Procfile](/docs/deployment/builders/dockerfiles.md#procfiles-and-multiple-processes) to modify the command used by a Dockerfile-based container.
|
||||||
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
### Add Docker options
|
### Add Docker options
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
|
|
||||||
The preferred method to mount external containers to a Dokku managed container, is to use the Dokku storage plugin.
|
The preferred method to mount external containers to a Dokku managed container, is to use the Dokku storage plugin.
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
storage:list <app> # List bind mounts for app's container(s) (host:container)
|
storage:ensure-directory [--chown option] <directory> # Creates a persistent storage directory in the recommended storage path
|
||||||
storage:mount <app> <host-dir:container-dir> # Create a new bind mount
|
storage:list <app> # List bind mounts for app's container(s) (host:container)
|
||||||
storage:report [<app>] [<flag>] # Displays a checks report for one or more apps
|
storage:mount <app> <host-dir:container-dir> # Create a new bind mount
|
||||||
storage:unmount <app> <host-dir:container-dir> # Remove an existing bind mount
|
storage:report [<app>] [<flag>] # Displays a checks report for one or more apps
|
||||||
|
storage:unmount <app> <host-dir:container-dir> # Remove an existing bind mount
|
||||||
```
|
```
|
||||||
|
|
||||||
> The storage plugin is compatible with storage mounts created with the docker-options. The storage plugin will only list mounts from the deploy/run phase.
|
> The storage plugin is compatible with storage mounts created with the docker-options. The storage plugin will only list mounts from the deploy/run phase.
|
||||||
@@ -21,50 +21,77 @@ The storage plugin supports the following mount points:
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
This example demonstrates how to mount the recommended directory to `/storage` inside an application called `node-js-app`. For simplicity, the Dokku project recommends using the directory `/var/lib/dokku/data/storage` directory as the root host path for mounts. This directory is created on Dokku installation.
|
### Creating storage directories
|
||||||
|
|
||||||
|
> 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/dokku/data/storage` path - created during Dokku installation - and prepare it for use with an app.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# we use a subdirectory inside of the host directory to scope it to just the app
|
dokku storage:ensure-directory lollipop
|
||||||
dokku storage:mount node-js-app /var/lib/dokku/data/storage/node-js-app:/storage
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Dokku will then mount the shared contents of `/var/lib/dokku/data/storage/node-js-app` to `/storage` inside the container. Mounts are only available for containers crated via `run` and by the deploy process, and not during the build process. In addition, the host path is never auto-created by either Dokku or Docker, and should be an explicit path, not one relative to the current working directory.
|
```
|
||||||
|
-----> Ensuring /var/lib/dokku/data/storage/lollipop exists
|
||||||
|
Setting directory ownership to 32767:32767
|
||||||
|
Directory ready for mounting
|
||||||
|
```
|
||||||
|
|
||||||
> If the `/storage` path within the container had pre-existing content, the container files will be overrwritten. This may be an issue for users that create assets at build time but then mount a directory at the same place during runtime. Files are not merged.
|
By default, permissions are set for usage with Herokuish buildpacks. These permissions can be changed via the `--chown` option according to the following table:
|
||||||
|
|
||||||
Once you have mounted persistent storage, you will also need to restart the application. See the
|
- `--chown herokuish` (default): Use `32767:32767` as the folder permissions.
|
||||||
[process scaling documentation](/docs/processes/process-management.md) for more information.
|
- This is used for apps deployed with Buildpacks via Herokuish.
|
||||||
|
- `--chown heroku`: Use `1000:1000` as the folder permissions.
|
||||||
|
- This is used for apps deployed with Cloud Native Buildpacks using the `heroku/buildpacks` builder.
|
||||||
|
- `--chown packeto`: Use `2000:2000` as the folder permissions.
|
||||||
|
- This is used for apps deployed with Cloud Native Buildpacks using the `cloudfoundry/cnb` or `packeto` builders.
|
||||||
|
- `--chown false`: Skips the `chown` call.
|
||||||
|
|
||||||
|
Users deploying via Dockerfile will want to specify `--chown false` and manually `chown` the created directory if the user and/or group id of the runnning process in the deployed container do not correspond to any of the above options.
|
||||||
|
|
||||||
|
> Warning: Failing to set the correct directory ownership may result in issues in persisting files written to the mounted storage directory.
|
||||||
|
|
||||||
|
### Mounting storage into apps
|
||||||
|
|
||||||
|
Dokku supports mounting both explicit host paths as well as docker volumes via the `storage:mount` command. This takes two arguments, an app name and a `host-path:container-path` or `docker-volume:container-path` combination.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# mount the directory into your container's /app/storage directory, relative to the container root (/)
|
||||||
|
# explicit host paths _must_ exist prior to usage.
|
||||||
|
dokku storage:mount node-js-app /var/lib/dokku/data/storage/node-js-app:/app/storage
|
||||||
|
|
||||||
|
# mount the docker volume into your container's /app/storage directory, relative to the container root (/)
|
||||||
|
# docker volumes _must_ exist prior to usage.
|
||||||
|
dokku storage:mount node-js-app some-docker-volume:/app/storage
|
||||||
|
```
|
||||||
|
|
||||||
|
In the first example, Dokku will then mount the shared contents of `/var/lib/dokku/data/storage/node-js-app` to `/app/storage` inside the container. The mount point is *not* relative to your app's working directory, and is instead relative to the root (`/`) of the container. Mounts are only available for containers created via `run` and by the deploy process, and not during the build process. In addition, the host path is never auto-created by either Dokku or Docker, and should be an explicit path, not one relative to the current working directory.
|
||||||
|
|
||||||
|
> If the `/storage` path within the container had pre-existing content, the container files will be over-written. This may be an issue for users that create assets at build time but then mount a directory at the same place during runtime. Files are not merged.
|
||||||
|
|
||||||
|
Once persistent storage is mounted, the app requires a restart. See the [process scaling documentation](/docs/processes/process-management.md) for more information.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku ps:restart app-name
|
dokku ps:restart app-name
|
||||||
```
|
```
|
||||||
|
|
||||||
A more complete workflow may require making a custom directory for your application and mounting it within your `/app/storage` directory instead. The mount point is *not* relative to your application's working directory, and is instead relative to the root (`/`) of the container.
|
### Unmounting storage
|
||||||
|
|
||||||
|
If an app no longer requires a mounted volume or directory, the `storage:unmount` command can be called. This takes the same arguments as the `storage:mount` command, an app name and a `host-path:container-path` or `docker-volume:container-path` combination.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# creating storage for the app 'node-js-app'
|
# unmount the directory from your container's /app/storage directory, relative to the container root (/)
|
||||||
mkdir -p /var/lib/dokku/data/storage/node-js-app
|
dokku storage:unmount node-js-app /var/lib/dokku/data/storage/node-js-app:/app/storage
|
||||||
|
|
||||||
# set the directory ownership. Below is an example for herokuish
|
# unmount the docker volume from your container's /app/storage directory, relative to the container root (/)
|
||||||
# but see the `Directory Permissions` section for more details
|
dokku storage:unmount node-js-app some-docker-volume:/app/storage
|
||||||
chown -R 32767:32767 /var/lib/dokku/data/storage/node-js-app
|
|
||||||
|
|
||||||
# mount the directory into your container's /app/storage directory, relative to root
|
|
||||||
dokku storage:mount app-name /var/lib/dokku/data/storage/node-js-app:/app/storage
|
|
||||||
```
|
```
|
||||||
|
|
||||||
You can mount one or more directories as desired by following the above pattern.
|
Once persistent storage is unmounted, the app requires a restart. See the [process scaling documentation](/docs/processes/process-management.md) for more information.
|
||||||
|
|
||||||
### Directory Permissions
|
```shell
|
||||||
|
dokku ps:restart app-name
|
||||||
The host directory should always be owned by the container user and group id. If this is not the case, files may not persist when written to mounted storage.
|
```
|
||||||
|
|
||||||
- Buildpacks via Herokuish: Use `32767:32767` as the file permissions
|
|
||||||
- For Cloud Native Buildpacks: This will depend on the builder in question, but can be retrieved via the `CNB_USER_ID` and `CNB_GROUP_ID` environment variables on the builder image. Common builders are as follows:
|
|
||||||
- heroku/buildpacks: `1000:1000`
|
|
||||||
- cloudfoundry/cnb: `2000:2000`
|
|
||||||
- packeto: `2000:2000`
|
|
||||||
- Dockerfile and Docker Image: Use the user and group id which corresponds to the one running the process within the container.
|
|
||||||
|
|
||||||
### Displaying storage reports for an app
|
### Displaying storage reports for an app
|
||||||
|
|
||||||
@@ -112,9 +139,9 @@ dokku storage:report node-js-app --storage-deploy-mounts
|
|||||||
|
|
||||||
## Use Cases
|
## Use Cases
|
||||||
|
|
||||||
### Persistent storage
|
### Sharing storage across deploys
|
||||||
|
|
||||||
Dokku is powered by Docker containers, which recommends in their [best practices](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#containers-should-be-ephemeral) that containers be treated as ephemeral. In order to manage persistent storage for web applications, like user uploads or large binary assets like images, a directory outside the container should be mounted.
|
Dokku is powered by Docker containers, which recommends in their [best practices](https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#containers-should-be-ephemeral) that containers be treated as ephemeral. In order to manage persistent storage for web apps, like user uploads or large binary assets like images, a directory outside the container should be mounted.
|
||||||
|
|
||||||
### Shared storage between containers
|
### Shared storage between containers
|
||||||
|
|
||||||
@@ -140,12 +167,12 @@ You cannot use mounted volumes during the build phase of a Dockerfile deploy. Th
|
|||||||
|
|
||||||
> Note: **This can cause data loss** if you bind a mount under `/app` in buildpack apps as herokuish will attempt to remove the original app path during the build phase.
|
> Note: **This can cause data loss** if you bind a mount under `/app` in buildpack apps as herokuish will attempt to remove the original app path during the build phase.
|
||||||
|
|
||||||
## Application User and Persistent Storage file ownership (buildpack apps only)
|
## App User and Persistent Storage file ownership (buildpack apps only)
|
||||||
|
|
||||||
> New as of 0.7.1
|
> New as of 0.7.1
|
||||||
|
|
||||||
By default, Dokku will execute your buildpack application processes as the `herokuishuser` user. You may override this by setting the `DOKKU_APP_USER` config variable.
|
By default, Dokku will execute your buildpack app processes as the `herokuishuser` user. You may override this by setting the `DOKKU_APP_USER` config variable.
|
||||||
|
|
||||||
> 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.24.10 enabled dokku core standard plugin
|
00_dokku-standard 0.28.2 enabled dokku core standard plugin
|
||||||
20_events 0.24.10 enabled dokku core events logging plugin
|
20_events 0.28.2 enabled dokku core events logging plugin
|
||||||
app-json 0.24.10 enabled dokku core app-json plugin
|
app-json 0.28.2 enabled dokku core app-json plugin
|
||||||
apps 0.24.10 enabled dokku core apps plugin
|
apps 0.28.2 enabled dokku core apps plugin
|
||||||
build-env 0.24.10 enabled dokku core build-env plugin
|
build-env 0.28.2 enabled dokku core build-env plugin
|
||||||
buildpacks 0.24.10 enabled dokku core buildpacks plugin
|
buildpacks 0.28.2 enabled dokku core buildpacks plugin
|
||||||
certs 0.24.10 enabled dokku core certificate management plugin
|
certs 0.28.2 enabled dokku core certificate management plugin
|
||||||
checks 0.24.10 enabled dokku core checks plugin
|
checks 0.28.2 enabled dokku core checks plugin
|
||||||
common 0.24.10 enabled dokku core common plugin
|
common 0.28.2 enabled dokku core common plugin
|
||||||
config 0.24.10 enabled dokku core config plugin
|
config 0.28.2 enabled dokku core config plugin
|
||||||
docker-options 0.24.10 enabled dokku core docker-options plugin
|
docker-options 0.28.2 enabled dokku core docker-options plugin
|
||||||
domains 0.24.10 enabled dokku core domains plugin
|
domains 0.28.2 enabled dokku core domains plugin
|
||||||
enter 0.24.10 enabled dokku core enter plugin
|
enter 0.28.2 enabled dokku core enter plugin
|
||||||
git 0.24.10 enabled dokku core git plugin
|
git 0.28.2 enabled dokku core git plugin
|
||||||
logs 0.24.10 enabled dokku core logs plugin
|
logs 0.28.2 enabled dokku core logs plugin
|
||||||
network 0.24.10 enabled dokku core network plugin
|
network 0.28.2 enabled dokku core network plugin
|
||||||
nginx-vhosts 0.24.10 enabled dokku core nginx-vhosts plugin
|
nginx-vhosts 0.28.2 enabled dokku core nginx-vhosts plugin
|
||||||
plugin 0.24.10 enabled dokku core plugin plugin
|
plugin 0.28.2 enabled dokku core plugin plugin
|
||||||
proxy 0.24.10 enabled dokku core proxy plugin
|
proxy 0.28.2 enabled dokku core proxy plugin
|
||||||
ps 0.24.10 enabled dokku core ps plugin
|
ps 0.28.2 enabled dokku core ps plugin
|
||||||
repo 0.24.10 enabled dokku core repo plugin
|
repo 0.28.2 enabled dokku core repo plugin
|
||||||
resource 0.24.10 enabled dokku core resource plugin
|
resource 0.28.2 enabled dokku core resource plugin
|
||||||
scheduler-docker-local 0.24.10 enabled dokku core scheduler-docker-local plugin
|
scheduler-docker-local 0.28.2 enabled dokku core scheduler-docker-local plugin
|
||||||
shell 0.24.10 enabled dokku core shell plugin
|
shell 0.28.2 enabled dokku core shell plugin
|
||||||
ssh-keys 0.24.10 enabled dokku core ssh-keys plugin
|
ssh-keys 0.28.2 enabled dokku core ssh-keys plugin
|
||||||
storage 0.24.10 enabled dokku core storage plugin
|
storage 0.28.2 enabled dokku core storage plugin
|
||||||
tags 0.24.10 enabled dokku core tags plugin
|
tags 0.28.2 enabled dokku core tags plugin
|
||||||
tar 0.24.10 enabled dokku core tar plugin
|
tar 0.28.2 enabled dokku core tar plugin
|
||||||
trace 0.24.10 enabled dokku core trace plugin
|
trace 0.28.2 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.
|
||||||
|
|||||||
126
docs/advanced-usage/registry-management.md
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
# Registry Management
|
||||||
|
|
||||||
|
> New as of 0.25.0
|
||||||
|
|
||||||
|
```
|
||||||
|
registry:login [--password-stdin] <server> <username> [<password>] # Login to a docker registry
|
||||||
|
registry:report [<app>] [<flag>] # Displays a registry report for one or more apps
|
||||||
|
registry:set <app> <key> (<value>) # Set or clear a registry property for an app
|
||||||
|
```
|
||||||
|
|
||||||
|
The registry plugin enables interacting with remote registries, which is useful when either deploying images via `git:from-image` or when interacting with custom schedulers to deploy built image artifacts.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Logging into a registry
|
||||||
|
|
||||||
|
The `registry:login` command can be used to log into a docker registry. The following are examples for logging into various common registries:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# hub.docker.com
|
||||||
|
dokku registry:login docker.io $USERNAME $PASSWORD
|
||||||
|
|
||||||
|
# digitalocean
|
||||||
|
# the username and password are both defined as the same api token
|
||||||
|
dokku registry:login registry.digitalocean.com $DIGITALOCEAN_API_TOKEN $DIGITALOCEAN_API_TOKEN
|
||||||
|
|
||||||
|
# github container registry
|
||||||
|
# see the following link for information on retrieving a personal access token
|
||||||
|
# https://docs.github.com/en/packages/guides/pushing-and-pulling-docker-images#authenticating-to-github-container-registry
|
||||||
|
dokku registry:login ghcr.io $USERNAME $REGISTRY_PAT_TOKEN
|
||||||
|
|
||||||
|
# quay
|
||||||
|
# a robot user may be used to login
|
||||||
|
dokku registry:login quay.io $USERNAME $PASSWORD
|
||||||
|
```
|
||||||
|
|
||||||
|
For security reasons, the password may also be specified as stdin by specifying the `--password-stdin` flag. This is supported regardless of the registry being logged into.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
echo "$PASSWORD" | dokku registry:login --password-stdin docker.io $USERNAME
|
||||||
|
```
|
||||||
|
|
||||||
|
For certain Docker registries - such as Amazon ECR or Google's GCR registries - users may instead wish to use a docker credential helper to automatically authenticate against a server; please see the documentation regarding the credential helper in question for further setup instructions.
|
||||||
|
|
||||||
|
### Setting a remote server
|
||||||
|
|
||||||
|
To specify a remote server registry for pushes, set the `server` property via the `registry:set` command. The default value for this property is empty string. Setting the value to `docker.io` or `hub.docker.com` will result in the computed value being empty string (as that is the default, implicit registry), while any non-zero length value will have a `/` appended to it if there is not one already.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku registry:set node-js-app server docker.io
|
||||||
|
```
|
||||||
|
|
||||||
|
This property can be set for a single app or globally via the `--global` flag. When set globally, the app-specific value will always overide the global value. The default global value for this property is empty string.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku registry:set --global server docker.io
|
||||||
|
```
|
||||||
|
|
||||||
|
Setting the property value to an empty string will reset the value to the system default. Resetting the value can be done per app or globally.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# per-app
|
||||||
|
dokku registry:set node-js-app server
|
||||||
|
|
||||||
|
# globally
|
||||||
|
dokku registry:set --global server
|
||||||
|
```
|
||||||
|
|
||||||
|
The following are the values that should be used for common remote servers:
|
||||||
|
|
||||||
|
- Amazon Elastic Container Registry:
|
||||||
|
- value: `$AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/`
|
||||||
|
- notes: The `$AWS_ACCOUNT_ID` and `$AWS_REGION` should match the values for your account and region, respectively. Additionally, an IAM profile that allows `push` access to the repository specified by `image-repo` should be attached to your Dokku server.
|
||||||
|
- Azure Container Registry:
|
||||||
|
- value `$REGISTRY_NAME.azurecr.io/`
|
||||||
|
- notes: The `$AKS_REGISTRY_NAME` should match the name of the registry created on your account.
|
||||||
|
- Docker Hub:
|
||||||
|
- value: `docker.io/`
|
||||||
|
- notes: Requires owning the namespace used in the `image-repo` value.
|
||||||
|
- Digitalocean:
|
||||||
|
- value: `registry.digitalocean.com/`
|
||||||
|
- notes: Requires setting the correct `image-repo` value for your registry.
|
||||||
|
- Github Container Registry:
|
||||||
|
- value: `ghcr.io/`
|
||||||
|
- notes: Requires that the authenticated user has access to the namespace used in the `image-repo` value.
|
||||||
|
- Quay.io:
|
||||||
|
- value: `quay.io/`
|
||||||
|
|
||||||
|
### Specifying an image repository name
|
||||||
|
|
||||||
|
By default, Dokku uses the value `dokku/$APP_NAME` as the image repository that is pushed and deployed. For certain registries, the `dokku` namespace may not be available to your user. In these cases, the value can be set by changing the value of the `image-repo` property via the `registry:set` command.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku registry:set node-js-app image-repo my-awesome-prefix/node-js-app
|
||||||
|
```
|
||||||
|
|
||||||
|
Setting the property value to an empty string will reset the value to the system default. Resetting the value has to be done per-app.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# per-app
|
||||||
|
dokku registry:set node-js-app push-on-release
|
||||||
|
```
|
||||||
|
|
||||||
|
### 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 image being tagged with an ID that is incremented with every release. This tag will be what is used for running app code.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku registry:set node-js-app push-on-release true
|
||||||
|
```
|
||||||
|
|
||||||
|
This property can be set for a single app or globally via the `--global` flag. When set globally, the app-specific value will always overide the global value. The default global value for this property is `false`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku registry:set --global push-on-release true
|
||||||
|
```
|
||||||
|
|
||||||
|
Setting the property value to an empty string will reset the value to the system default. Resetting the value can be done per app or globally.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# per-app
|
||||||
|
dokku registry:set node-js-app push-on-release
|
||||||
|
|
||||||
|
# globally
|
||||||
|
dokku registry:set --global push-on-release
|
||||||
|
```
|
||||||
@@ -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.
|
||||||
|
|
||||||
@@ -103,7 +103,6 @@ dokku resource:limit node-js-app
|
|||||||
|
|
||||||
This may also be combined with the `--process-type` flag to see app limits on a process-type level. Note that the displayed values are not merged with the defaults.
|
This may also be combined with the `--process-type` flag to see app limits on a process-type level. Note that the displayed values are not merged with the defaults.
|
||||||
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku resource:limit --process-type web node-js-app
|
dokku resource:limit --process-type web node-js-app
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# Alternative Schedulers
|
|
||||||
|
|
||||||
In addition to the built-in [docker-local scheduler](/docs/advanced-usage/schedulers/docker-local.md), Dokku also supports two scheduler plugins:
|
|
||||||
|
|
||||||
- [Kubernetes](https://github.com/dokku/dokku-scheduler-kubernetes)
|
|
||||||
- [Nomad](https://github.com/dokku/dokku-scheduler-nomad)
|
|
||||||
|
|
||||||
These scheduler implementations may not be complete, though provide enough functionality for a user to get an app deployed via the underlying scheduler.
|
|
||||||
|
|
||||||
For users that require additional functionality, please refer to the [Sponsoring Documentation](https://github.com/dokku/.github/blob/master/SPONSORING.md).
|
|
||||||
@@ -1,83 +0,0 @@
|
|||||||
# Docker Local Scheduler
|
|
||||||
|
|
||||||
> Subcommands new as of 0.12.12
|
|
||||||
|
|
||||||
```
|
|
||||||
scheduler-docker-local:report [<app>] [<flag>] # Displays a scheduler-docker-local report for one or more apps
|
|
||||||
scheduler-docker-local:set <app> <key> (<value>) # Set or clear a scheduler-docker-local property for an app
|
|
||||||
```
|
|
||||||
|
|
||||||
> New as of 0.12.0
|
|
||||||
|
|
||||||
Dokku natively includes functionality to manage application lifecycles for a single server using the `scheduler-docker-local` plugin. It is the default scheduler, but as with all schedulers, it is set on a per-application basis. The scheduler can currently be overridden by running the following command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku config:set node-js-app DOCKER_SCHEDULER=docker-local
|
|
||||||
```
|
|
||||||
|
|
||||||
As it is the default, unsetting the `DOCKER_SCHEDULER` config variable is also a valid way to reset the scheduler.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku config:unset node-js-app DOCKER_SCHEDULER
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
### Disabling chown of persistent storage
|
|
||||||
|
|
||||||
The `scheduler-docker-local` plugin will ensure your storage mounts are owned by either `herokuishuser` or the overridden value you have set in `DOKKU_APP_USER`. You may disable this by running the following `scheduler-docker-local:set` command for your application:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku scheduler-docker-local:set node-js-app disable-chown true
|
|
||||||
```
|
|
||||||
|
|
||||||
Once set, you may re-enable it by setting a blank value for `disable-chown`:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku scheduler-docker-local:set node-js-app disable-chown
|
|
||||||
```
|
|
||||||
|
|
||||||
## Implemented 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.
|
|
||||||
|
|
||||||
- `check-deploy`
|
|
||||||
- `core-post-deploy`
|
|
||||||
- `post-app-clone-setup`
|
|
||||||
- `post-app-rename-setup`
|
|
||||||
- `post-create`
|
|
||||||
- `post-delete`
|
|
||||||
- `pre-deploy`
|
|
||||||
- `pre-restore`
|
|
||||||
- `scheduler-app-status`
|
|
||||||
- `scheduler-deploy`
|
|
||||||
- `scheduler-docker-cleanup`
|
|
||||||
- `scheduler-inspect`
|
|
||||||
- `scheduler-is-deployed`
|
|
||||||
- `scheduler-logs`
|
|
||||||
- `scheduler-logs-failed`
|
|
||||||
- `scheduler-retire`
|
|
||||||
- `scheduler-run`
|
|
||||||
- `scheduler-stop`
|
|
||||||
- `scheduler-tags-create`
|
|
||||||
- `scheduler-tags-destroy`
|
|
||||||
|
|
||||||
## Supported Resource Management Properties
|
|
||||||
|
|
||||||
The `docker-local` scheduler supports a minimal list of resource _limits_ and _reservations_. The following properties are supported:
|
|
||||||
|
|
||||||
### Resource Limits
|
|
||||||
|
|
||||||
- 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.
|
|
||||||
- memory: (docker option: `--memory`) 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.
|
|
||||||
- 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.
|
|
||||||
- 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.
|
|
||||||
|
|
||||||
### Resource Reservations
|
|
||||||
|
|
||||||
- memory: (docker option: `--memory-reservation`) 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.
|
|
||||||
@@ -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.
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ Dokku will no longer distribute packages for Debian versions that are not `stabl
|
|||||||
- Debian 7 (wheezy)
|
- Debian 7 (wheezy)
|
||||||
- Debian 8 (jessie)
|
- Debian 8 (jessie)
|
||||||
|
|
||||||
### App report flags
|
### Removed App report flags
|
||||||
|
|
||||||
The `--git-sha` flag was moved from the `apps:report` command to the `git:report` command.
|
The `--git-sha` flag was moved from the `apps:report` command to the `git:report` command.
|
||||||
|
|
||||||
|
|||||||
37
docs/appendices/0.25.0-migration-guide.md
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
# 0.25.0 Migration Guide
|
||||||
|
|
||||||
|
## Registry Plugin
|
||||||
|
|
||||||
|
The [dokku-registry](https://github.com/dokku/dokku-registry) plugin is now built-in. This comes with a few changes:
|
||||||
|
|
||||||
|
- 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.
|
||||||
|
- 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/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
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
- The network plugin can now set an `initial-network` for all containers on creation. This is a replacement for specifying the `--network` flag via the `docker-options` plugin. Please see the [network documentation](/docs/networking/network.md#attaching-an-app-to-a-network) for more information.
|
||||||
|
- The `dokku run` command now always removes the ephemeral container on exit. Users that need a persistent container should instead specify a `console` process type in their `Procfile` specifying an available shell (usually either `bash` or `sh`) and scale that container appropriately.
|
||||||
|
- The `pre-deploy` plugin trigger is now called internally by Dokku. Scheduler plugins should avoid calling this trigger, as any image changes introduced by subsequent trigger calls will be ignored.
|
||||||
|
- The default image used for Herokuish Buildpack builds is now `gliderlabs/herokuish:latest-20`, and is based on both the `heroku-20` stack as well as Ubuntu 20.04. Users that wish to stick with the old, `heroku-18`/Ubuntu 18.04 builder may specify `gliderlabs/herokuish:latest-18` as their builder image. Please see the [herokuish buildpack deployment documentation](/docs/deployment/builders/herokuish-buildpacks.md#customizing-the-buildpack-stack-builder) for more information on how to specify a custom buildpack stack builder.
|
||||||
|
- This change does not impact any users of Cloud Native Buildpacks.
|
||||||
|
- We fixed an issue that required extracting Procfiles at the beginning of a deploy. Due to this change, a `Dockerfile` app contains a `Procfile` that does not specify a `web` process will fail to start. Usage of a `Procfile` with _only_ a `release` command should be replaced with a `scripts.dokku.postdeploy` deployment task in the `app.json` file. The alternative is to define the `web` process in the `Procfile`. See the [deployment task documentation](/docs/advanced-usage/deployment-tasks.md) for more information.
|
||||||
|
|
||||||
|
### Deprecations
|
||||||
|
|
||||||
|
- In previous versions of Dokku, the only way to specify a custom `Dockerfile` was to use the `docker-options` plugin to set the `--file` flag for a docker build. As of 0.25.0, the `builder-dockerfile:set` command should be used instead, as outlined in the [docs here](/docs/deployment/builders/dockerfiles.md#changingthe-dockerfile-location). Usage of the old method should be migrated to the new method.
|
||||||
|
- The `--rm` and `--rm-container` flags may be specified but no longer have any effect on `dokku run`.
|
||||||
|
- The `--detach` flag is deprecated in favor of the `run:detached` command.
|
||||||
|
- The `DOKKU_SCALE` file is deprecated. Please see the [process management documentation](/docs/processes/process-management.md#manually-managing-process-scaling) for more information on it's replacement with the `formation` key of the `app.json` file.
|
||||||
|
- The hooks `post-release-buildpack`, `post-release-dockerfile`, and `post-release-pack` are deprecated in favor of `post-release-builder`. See the [plugin triggers documentation](https://dokku.com/docs/development/plugin-triggers/#post-release-builder) for more details.
|
||||||
|
|
||||||
|
## Removals
|
||||||
|
|
||||||
|
- As of April 2021, Ubuntu 16.04 is no longer an LTS release, and support has been removed. Packages may still install on older versions of Ubuntu, but are no longer tested, and therefore no support will be provided.
|
||||||
|
- The web installer has been removed. Users are now required to setup Dokku via cli commands. This change was made to combat potential security issues where users ignored the web installer, allowing unauthorized users to add their keys to the host.
|
||||||
|
- The `scheduler-docker-cleanup` plugin trigger has been removed from the scheduler interface, and is no longer invoked.
|
||||||
12
docs/appendices/0.26.0-migration-guide.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# 0.26.0 Migration Guide
|
||||||
|
|
||||||
|
## Removals
|
||||||
|
|
||||||
|
- The `tags` plugin - deprecated in [0.24.0](/docs/appendices/0.24.0-migration-guide.md) - was removed. Users are highly encouraged to switch their workflows to `git:from-image`.
|
||||||
|
- The `tar` plugin - deprecated in [0.24.0](/docs/appendices/0.24.0-migration-guide.md) - was removed. Users are highly encouraged to switch their workflows to `git:from-archive`.
|
||||||
|
|
||||||
|
## Changes
|
||||||
|
|
||||||
|
- The `scheduler` plugin now controls the scheduler in use for deploys. Apps will have their `DOKKU_SCHEDULER` environment variables migrated to the scheduler plugin, after which that value will be removed from said app. Please see the [scheduler documentation](/docs/deployment/schedulers/scheduler-management.md) for more information.
|
||||||
|
- The `deploy-source` metadata from `apps:report` is now no longer computed on the fly, but hydrated at deploy time via the `deploy-source-set` trigger. This value may be empty until your next deploy.
|
||||||
|
- Additionally, the `deploy-source` trigger has now been removed.
|
||||||
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
|
||||||
|
|||||||
@@ -23,10 +23,10 @@
|
|||||||
## Calling the `dokku` binary
|
## Calling the `dokku` binary
|
||||||
|
|
||||||
- Plugins should *not* call the `dokku` binary directly. Clients using the `--app` argument are potentially broken, amongst others, when doing so. Instead, please source the `functions` file for a given plugin when attempting to call Dokku internal functions. As a result, the following Dokku commands are no longer publicly exposed:
|
- Plugins should *not* call the `dokku` binary directly. Clients using the `--app` argument are potentially broken, amongst others, when doing so. Instead, please source the `functions` file for a given plugin when attempting to call Dokku internal functions. As a result, the following Dokku commands are no longer publicly exposed:
|
||||||
- `dokku build`
|
- `dokku build`
|
||||||
- `dokku receive`
|
- `dokku receive`
|
||||||
- `dokku release`
|
- `dokku release`
|
||||||
- `dokku tar:build`
|
- `dokku tar:build`
|
||||||
- `dokku tar:build-locked`
|
- `dokku tar:build-locked`
|
||||||
- `dokku git:build`
|
- `dokku git:build`
|
||||||
- `dokku git:build-locked`
|
- `dokku git:build-locked`
|
||||||
|
|||||||
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.24.10/docs/assets/favicons/mstile-70x70.png"/>
|
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.28.2/docs/assets/favicons/mstile-70x70.png"/>
|
||||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.24.10/docs/assets/favicons/mstile-150x150.png"/>
|
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.28.2/docs/assets/favicons/mstile-150x150.png"/>
|
||||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.24.10/docs/assets/favicons/mstile-310x310.png"/>
|
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.28.2/docs/assets/favicons/mstile-310x310.png"/>
|
||||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.24.10/docs/assets/favicons/mstile-310x150.png"/>
|
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.28.2/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.24.10\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.2\/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.24.10\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.2\/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.24.10\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.2\/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.24.10\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.2\/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.24.10\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.2\/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.24.10\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.28.2\/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 |
@@ -21,6 +21,10 @@
|
|||||||
"0.21.4",
|
"0.21.4",
|
||||||
"0.22.9",
|
"0.22.9",
|
||||||
"0.23.9",
|
"0.23.9",
|
||||||
"0.24.10"
|
"0.24.10",
|
||||||
|
"0.25.7",
|
||||||
|
"0.26.8",
|
||||||
|
"0.27.10",
|
||||||
|
"0.28.2"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -47,112 +47,26 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
|
|
||||||
> Warning: The following plugins have been supplied by our community and may not have been tested by Dokku maintainers.
|
> Warning: The following plugins have been supplied by our community and may not have been tested by Dokku maintainers.
|
||||||
|
|
||||||
[256dpi]: https://github.com/256dpi
|
|
||||||
[abossard]: https://github.com/dudagroup
|
|
||||||
[ademuk]: https://github.com/ademuk
|
|
||||||
[agco-adm]: https://github.com/agco-adm
|
|
||||||
[alessio]: https://github.com/alessio
|
|
||||||
[alex-sherwin]: https://github.com/alex-sherwin
|
|
||||||
[alexanderbeletsky]: https://github.com/alexanderbeletsky
|
|
||||||
[alexkruegger]: https://github.com/alexkruegger
|
|
||||||
[Aluxian]: https://github.com/Aluxian
|
|
||||||
[Aomitayo]: https://github.com/Aomitayo
|
|
||||||
[apmorton]: https://github.com/apmorton
|
|
||||||
[artofrawr]: https://github.com/artofrawr
|
|
||||||
[badsyntax]: https://github.com/badsyntax
|
|
||||||
[basgys]: https://github.com/basgys
|
|
||||||
[Benjamin-Dobell]: https://github.com/Benjamin-Dobell
|
|
||||||
[blag]: https://github.com/blag
|
|
||||||
[cameron-martin]: https://github.com/cameron-martin
|
|
||||||
[candlewaster]: https://notabug.org/candlewaster
|
|
||||||
[cedricziel]: https://github.com/cedricziel
|
|
||||||
[cef]: https://github.com/cef
|
|
||||||
[cjblomqvist]: https://github.com/cjblomqvist
|
|
||||||
[crisward]: https://github.com/crisward
|
|
||||||
[cu12]: https://github.com/cu12
|
|
||||||
[darkpixel]: https://github.com/darkpixel
|
|
||||||
[dokku]: https://github.com/dokku
|
|
||||||
[dokku-community]: https://github.com/dokku-community
|
|
||||||
[dyson]: https://github.com/dyson
|
|
||||||
[fermuch]: https://github.com/fermuch
|
|
||||||
[fgrehm]: https://github.com/fgrehm
|
|
||||||
[Flink]: https://github.com/Flink
|
|
||||||
[fomojola]: https://github.com/fomojola
|
|
||||||
[gdi2290]: https://github.com/gdi2290
|
|
||||||
[hughfletcher]: https://github.com/hughfletcher
|
|
||||||
[iamale]: https://github.com/iamale
|
|
||||||
[ignlg]: https://github.com/ignlg
|
|
||||||
[iloveitaly]: https://github.com/iloveitaly
|
|
||||||
[investtools]: https://github.com/investtools
|
|
||||||
[iskandar]: https://github.com/iskandar
|
|
||||||
[jagandecapri]: https://github.com/jagandecapri
|
|
||||||
[jeffutter]: https://github.com/jeffutter
|
|
||||||
[jlachowski]: https://github.com/jlachowski
|
|
||||||
[josegonzalez]: https://github.com/josegonzalez
|
|
||||||
[Kloadut]: https://github.com/Kloadut
|
|
||||||
[krisrang]: https://github.com/krisrang
|
|
||||||
[luxifer]: https://github.com/luxifer
|
|
||||||
[m0rth1um]: https://github.com/m0rth1um
|
|
||||||
[Maciej Łebkowski]: https://github.com/mlebkowski
|
|
||||||
[matto1990]: https://github.com/matto1990
|
|
||||||
[mbreit]: https://github.com/mbreit
|
|
||||||
[mbriskar]: https://github.com/mbriskar
|
|
||||||
[michaelshobbs]: https://github.com/michaelshobbs
|
|
||||||
[mikecsh]: https://github.com/mikecsh
|
|
||||||
[mikexstudios]: https://github.com/mikexstudios
|
|
||||||
[mimischi]: https://github.com/mimischi
|
|
||||||
[mixxorz]: https://github.com/mixxorz
|
|
||||||
[mlebkowski]: https://github.com/mlebkowski
|
|
||||||
[motin]: https://github.com/motin
|
|
||||||
[mrname]: https://github.com/mrname
|
|
||||||
[musicglue]: https://github.com/musicglue
|
|
||||||
[neam]: https://github.com/neam
|
|
||||||
[nickcharlton]: https://github.com/nickcharlton
|
|
||||||
[nickstenning]: https://github.com/nickstenning
|
|
||||||
[nornagon]: https://github.com/nornagon
|
|
||||||
[ohardy]: https://github.com/ohardy
|
|
||||||
[pauldub]: https://github.com/pauldub
|
|
||||||
[pnegahdar]: https://github.com/pnegahdar
|
|
||||||
[RaceHub]: https://github.com/racehub
|
|
||||||
[ribot]: https://github.com/ribot
|
|
||||||
[rlaneve]: https://github.com/rlaneve
|
|
||||||
[robv]: https://github.com/robv
|
|
||||||
[scottatron]: https://github.com/scottatron
|
|
||||||
[sehrope]: https://github.com/sehrope
|
|
||||||
[sekjun9878]: https://github.com/sekjun9878
|
|
||||||
[sgulseth]: https://github.com/sgulseth
|
|
||||||
[sseemayer]: https://github.com/sseemayer
|
|
||||||
[statianzo]: https://github.com/statianzo
|
|
||||||
[stuartpb]: https://github.com/stuartpb
|
|
||||||
[thrashr888]: https://github.com/thrashr888
|
|
||||||
[wmluke]: https://github.com/wmluke
|
|
||||||
[Zenedith]: https://github.com/Zenedith
|
|
||||||
[fteychene]: https://github.com/fteychene
|
|
||||||
[sarendsen]: https://github.com/sarendsen
|
|
||||||
[baikunz]: https://github.com/baikunz
|
|
||||||
[lazyatom]: https://github.com/lazyatom
|
|
||||||
[ollej]: https://github.com/ollej
|
|
||||||
|
|
||||||
### Datastores
|
### Datastores
|
||||||
|
|
||||||
#### Relational
|
#### Relational
|
||||||
|
|
||||||
| Plugin | Author | Compatibility |
|
| Plugin | Author | Compatibility |
|
||||||
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
||||||
| [MariaDB](https://github.com/Kloadut/dokku-md-plugin) | [Kloadut][] | 0.3.x |
|
| [MariaDB](https://github.com/Kloadut/dokku-md-plugin) | [kloadut][] | 0.3.x |
|
||||||
| [MariaDB (single container)](https://github.com/ohardy/dokku-mariadb) | [ohardy][] | 0.3.x |
|
| [MariaDB (single container)](https://github.com/ohardy/dokku-mariadb) | [ohardy][] | 0.3.x |
|
||||||
| [MariaDB (single container)](https://github.com/krisrang/dokku-mariadb) | [krisrang][] | 0.3.26+ |
|
| [MariaDB (single container)](https://github.com/krisrang/dokku-mariadb) | [krisrang][] | 0.3.26+ |
|
||||||
| [PostgreSQL](https://github.com/jlachowski/dokku-pg-plugin) | [jlachowski][] | 0.3.x |
|
| [PostgreSQL](https://github.com/jlachowski/dokku-pg-plugin) | [jlachowski][] | 0.3.x |
|
||||||
| [PostgreSQL (single container)](https://github.com/ohardy/dokku-psql) | [ohardy][] | 0.3.x |
|
| [PostgreSQL (single container)](https://github.com/ohardy/dokku-psql) | [ohardy][] | 0.3.x |
|
||||||
| [PostgreSQL (single container)](https://github.com/Flink/dokku-psql-single-container) | [Flink][] | 0.3.26+ |
|
| [PostgreSQL (single container)](https://github.com/Flink/dokku-psql-single-container) | [flink][] | 0.3.26+ |
|
||||||
|
|
||||||
#### Caching
|
#### Caching
|
||||||
|
|
||||||
| Plugin | Author | Compatibility |
|
| Plugin | Author | Compatibility |
|
||||||
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
||||||
| [Nginx Cache](https://github.com/Aluxian/dokku-nginx-cache) | [Aluxian][] | 0.5.0+ |
|
| [Nginx Cache](https://github.com/Aluxian/dokku-nginx-cache) | [aluxian][] | 0.5.0+ |
|
||||||
| [Redis (single container)](https://github.com/ohardy/dokku-redis) | [ohardy][] | 0.3.x |
|
| [Redis (single container)](https://github.com/ohardy/dokku-redis) | [ohardy][] | 0.3.x |
|
||||||
| [Varnish](https://github.com/Zenedith/dokku-varnish-plugin) | [Zenedith][] | Varnish cache between nginx and application with base configuration|
|
| [Varnish](https://github.com/Zenedith/dokku-varnish-plugin) | [zenedith][] | Varnish cache between nginx and application with base configuration|
|
||||||
|
|
||||||
#### Queuing
|
#### Queuing
|
||||||
|
|
||||||
@@ -173,10 +87,6 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
| [RethinkDB](https://github.com/stuartpb/dokku-rethinkdb-plugin) | [stuartpb][] | 0.3.x |
|
| [RethinkDB](https://github.com/stuartpb/dokku-rethinkdb-plugin) | [stuartpb][] | 0.3.x |
|
||||||
| [Headless Chrome](https://github.com/lazyatom/dokku-chrome) | [lazyatom][] | 0.8.1+ |
|
| [Headless Chrome](https://github.com/lazyatom/dokku-chrome) | [lazyatom][] | 0.8.1+ |
|
||||||
|
|
||||||
[dccee02]: https://github.com/jeffutter/dokku-riakcs-plugin/commit/dccee02702e7001851917b7814e78a99148fb709
|
|
||||||
[c77cbf1]: https://github.com/dokku/dokku/commit/c77cbf1d3ae07f0eafb85082ed7edcae9e836147
|
|
||||||
[28de3ec]: https://github.com/dokku/dokku/commit/28de3ecaa3231a223f83fd8d03f373308673bc40
|
|
||||||
|
|
||||||
### Plugins Implementing New Dokku Functionality
|
### Plugins Implementing New Dokku Functionality
|
||||||
|
|
||||||
| Plugin | Author | Compatibility |
|
| Plugin | Author | Compatibility |
|
||||||
@@ -185,13 +95,14 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
| [Docker Direct](https://github.com/josegonzalez/dokku-docker-direct) | [josegonzalez][] | 0.4.0+ |
|
| [Docker Direct](https://github.com/josegonzalez/dokku-docker-direct) | [josegonzalez][] | 0.4.0+ |
|
||||||
| [Dokku Clone](https://github.com/crisward/dokku-clone) | [crisward][] | 0.4.0+ |
|
| [Dokku Clone](https://github.com/crisward/dokku-clone) | [crisward][] | 0.4.0+ |
|
||||||
| [Dokku Copy App Config Files](https://github.com/josegonzalez/dokku-supply-config) | [josegonzalez][] | 0.4.0+ |
|
| [Dokku Copy App Config Files](https://github.com/josegonzalez/dokku-supply-config) | [josegonzalez][] | 0.4.0+ |
|
||||||
| [Dockerfile custom path](https://github.com/mimischi/dokku-dockerfile) | [mimischi][] | 0.8.0+ |
|
| [Dockerfile custom path](https://github.com/mimischi/dokku-dockerfile) | [mimischi][] | 0.8.0+ |
|
||||||
| [Dokku Require](https://github.com/crisward/dokku-require)<sup>1</sup> | [crisward][] | 0.4.0+ |
|
| [Dokku Require](https://github.com/crisward/dokku-require)<sup>1</sup> | [crisward][] | 0.4.0+ |
|
||||||
| [Global Certificates](https://github.com/josegonzalez/dokku-global-cert) | [josegonzalez][] | 0.5.0+ |
|
| [Global Certificates](https://github.com/josegonzalez/dokku-global-cert) | [josegonzalez][] | 0.5.0+ |
|
||||||
| [Graduate (Environment Management)](https://github.com/glassechidna/dokku-graduate) | [Benjamin-Dobell][] | 0.4.0+ |
|
| [Graduate (Environment Management)](https://github.com/glassechidna/dokku-graduate) | [benjamin-dobell][] | 0.4.0+ |
|
||||||
| [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 |
|
||||||
@@ -199,28 +110,28 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
| [robots.txt](https://notabug.org/candlewaster/dokku-robots.txt) | [candlewaster][] | 0.4.x |
|
| [robots.txt](https://notabug.org/candlewaster/dokku-robots.txt) | [candlewaster][] | 0.4.x |
|
||||||
| [SSH Deployment Keys](https://github.com/cedricziel/dokku-deployment-keys)<sup>2</sup> | [cedricziel][] | 0.4.0+ |
|
| [SSH Deployment Keys](https://github.com/cedricziel/dokku-deployment-keys)<sup>2</sup> | [cedricziel][] | 0.4.0+ |
|
||||||
| [SSH Hostkeys](https://github.com/cedricziel/dokku-hostkeys-plugin)<sup>3</sup> | [cedricziel][] | 0.3.x |
|
| [SSH Hostkeys](https://github.com/cedricziel/dokku-hostkeys-plugin)<sup>3</sup> | [cedricziel][] | 0.3.x |
|
||||||
| [Application build hook](https://github.com/fteychene/dokku-build-hook) | [fteychene][] | 0.4.0+ |
|
| [Application build hook](https://github.com/fteychene/dokku-build-hook) | [fteychene][] | 0.4.0+ |
|
||||||
| [Post Deploy Script](https://github.com/baikunz/dokku-post-deploy-script) | [baikunz][] | 0.4.0+ |
|
| [Post Deploy Script](https://github.com/baikunz/dokku-post-deploy-script) | [baikunz][] | 0.4.0+ |
|
||||||
| [Auto Sync](https://github.com/IdeaSynthesis/dokku-autosync)<sup>4</sup> | [fomojola][] | 0.8.1+ |
|
| [Auto Sync](https://github.com/IdeaSynthesis/dokku-autosync)<sup>4</sup> | [fomojola][] | 0.8.1+ |
|
||||||
| [Deploy Webhook](https://github.com/IdeaSynthesis/dokku-deploy-webhook)<sup>5</sup> | [fomojola][] | 0.8.1+ |
|
| [Deploy Webhook](https://github.com/IdeaSynthesis/dokku-deploy-webhook)<sup>5</sup> | [fomojola][] | 0.8.1+ |
|
||||||
|
|
||||||
[217d00a]: https://github.com/dokku/dokku/commit/217d00a1bc47a7e24d8847617bb08a1633025fc7
|
|
||||||
|
|
||||||
<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
|
||||||
|
|
||||||
| Plugin | Author | Compatibility |
|
| Plugin | Author | Compatibility |
|
||||||
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
||||||
| [Airbrake deploy](https://github.com/Flink/dokku-airbrake-deploy) | [Flink][] | 0.4.0+ |
|
| [Airbrake deploy](https://github.com/Flink/dokku-airbrake-deploy) | [flink][] | 0.4.0+ |
|
||||||
| [APT](https://github.com/dokku-community/dokku-apt) | [dokku-community][] | 0.18.x+ |
|
| [APT](https://github.com/dokku-community/dokku-apt) | [dokku-community][] | 0.18.x+ |
|
||||||
| [Bower install](https://github.com/alexanderbeletsky/dokku-bower-install) | [alexanderbeletsky][] | 0.3.x |
|
| [Bower install](https://github.com/alexanderbeletsky/dokku-bower-install) | [alexanderbeletsky][] | 0.3.x |
|
||||||
| [Bower/Grunt](https://github.com/thrashr888/dokku-bower-grunt-build-plugin) | [thrashr888][] | 0.3.x |
|
| [Bower/Grunt](https://github.com/thrashr888/dokku-bower-grunt-build-plugin) | [thrashr888][] | 0.3.x |
|
||||||
@@ -228,7 +139,7 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
| [Bower/Gulp](https://github.com/jagandecapri/dokku-bower-gulp-build-plugin) | [jagandecapri][] | 0.3.x |
|
| [Bower/Gulp](https://github.com/jagandecapri/dokku-bower-gulp-build-plugin) | [jagandecapri][] | 0.3.x |
|
||||||
| [Builders: bower, compass, gulp, grunt](https://github.com/ignlg/dokku-builders-plugin) | [ignlg][] | 0.4.0+ |
|
| [Builders: bower, compass, gulp, grunt](https://github.com/ignlg/dokku-builders-plugin) | [ignlg][] | 0.4.0+ |
|
||||||
| [Chef cookbook](https://github.com/nickcharlton/dokku-cookbook) | [nickcharlton][] | |
|
| [Chef cookbook](https://github.com/nickcharlton/dokku-cookbook) | [nickcharlton][] | |
|
||||||
| [Docker auto persist volumes](https://github.com/Flink/dokku-docker-auto-volumes) | [Flink][] | 0.4.0+ |
|
| [Docker auto persist volumes](https://github.com/Flink/dokku-docker-auto-volumes) | [flink][] | 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+ |
|
||||||
| [Limit (Resource management)](https://github.com/sarendsen/dokku-limit) | [sarendsen][] | 0.9.0+ |
|
| [Limit (Resource management)](https://github.com/sarendsen/dokku-limit) | [sarendsen][] | 0.9.0+ |
|
||||||
| [Logspout](https://github.com/michaelshobbs/dokku-logspout) | [michaelshobbs][] | 0.4.0+ |
|
| [Logspout](https://github.com/michaelshobbs/dokku-logspout) | [michaelshobbs][] | 0.4.0+ |
|
||||||
@@ -243,16 +154,15 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
| [Slack Notifications](https://github.com/ribot/dokku-slack) | [ribot][] | 0.4.0+ |
|
| [Slack Notifications](https://github.com/ribot/dokku-slack) | [ribot][] | 0.4.0+ |
|
||||||
| [Telegram Notifications](https://github.com/m0rth1um/dokku-telegram) | [m0rth1um][] | 0.4.0+ |
|
| [Telegram Notifications](https://github.com/m0rth1um/dokku-telegram) | [m0rth1um][] | 0.4.0+ |
|
||||||
| [Tor](https://github.com/michaelshobbs/dokku-tor) | [michaelshobbs][] | 0.4.0+ |
|
| [Tor](https://github.com/michaelshobbs/dokku-tor) | [michaelshobbs][] | 0.4.0+ |
|
||||||
| [User ACL](https://github.com/dokku-community/dokku-acl) | [Maciej Łebkowski][] | 0.4.0+ |
|
| [User ACL](https://github.com/dokku-community/dokku-acl) | [maciej łebkowski][] | 0.4.0+ |
|
||||||
| [Webhooks](https://github.com/nickstenning/dokku-webhooks) | [nickstenning][] | 0.3.x |
|
| [Webhooks](https://github.com/nickstenning/dokku-webhooks) | [nickstenning][] | 0.3.x |
|
||||||
| [Wkhtmltopdf](https://github.com/mbriskar/dokku-wkhtmltopdf) | [mbriskar][] | 0.4.0+ |
|
| [Wkhtmltopdf](https://github.com/mbriskar/dokku-wkhtmltopdf) | [mbriskar][] | 0.4.0+ |
|
||||||
| [Dokku Wordpress](https://github.com/dokku-community/dokku-wordpress) | [dokku-community][] | 0.4.0+ |
|
| [Dokku Wordpress](https://github.com/dokku-community/dokku-wordpress) | [dokku-community][] | 0.4.0+ |
|
||||||
| [Access](https://github.com/mainto/dokku-access) | [mainto](https://github.com/mainto) | 0.4.0+ |
|
| [Access](https://github.com/mainto/dokku-access) | [mainto][] | 0.4.0+ |
|
||||||
| [Dokku Nginx Trust Proxy](https://github.com/kingsquare/dokku-nginx-vhost-trustproxy) | [kingsquare](https://github.com/kingsquare) | 0.4.0+ |
|
| [Dokku Nginx Trust Proxy](https://github.com/kingsquare/dokku-nginx-vhost-trustproxy) | [kingsquare][] | 0.4.0+ |
|
||||||
| [Fonts](https://github.com/ollej/dokku-fonts) | [ollej] | 0.19.11+ |
|
| [Fonts](https://github.com/ollej/dokku-fonts) | [ollej][] | 0.19.11+ |
|
||||||
| [Discourse](https://github.com/badsyntax/dokku-discourse) | [badsyntax][] | 0.21.4+ |
|
| [Discourse](https://github.com/badsyntax/dokku-discourse) | [badsyntax][] | 0.21.4+ |
|
||||||
|
|
||||||
|
|
||||||
### Deprecated Plugins
|
### Deprecated Plugins
|
||||||
|
|
||||||
The following plugins have been removed as their functionality is now in Dokku Core.
|
The following plugins have been removed as their functionality is now in Dokku Core.
|
||||||
@@ -260,7 +170,7 @@ The following plugins have been removed as their functionality is now in Dokku C
|
|||||||
| Plugin | Author | In Dokku Since |
|
| Plugin | Author | In Dokku Since |
|
||||||
| ------------------------------------------------------------------------------------------------- | --------------------- | ----------------------------------------- |
|
| ------------------------------------------------------------------------------------------------- | --------------------- | ----------------------------------------- |
|
||||||
| [App User](https://github.com/michaelshobbs/dokku-app-user) | [michaelshobbs][] | v0.7.1 (herokuish 0.3.18) |
|
| [App User](https://github.com/michaelshobbs/dokku-app-user) | [michaelshobbs][] | v0.7.1 (herokuish 0.3.18) |
|
||||||
| [Custom Domains](https://github.com/neam/dokku-custom-domains) | [motin][] | v0.3.10 (domains plugin) |
|
| [Custom Domains](https://github.com/neam/dokku-custom-domains) | [neam][] | v0.3.10 (domains plugin) |
|
||||||
| [Debug](https://github.com/josegonzalez/dokku-debug) | [josegonzalez][] | v0.3.9 (trace command) |
|
| [Debug](https://github.com/josegonzalez/dokku-debug) | [josegonzalez][] | v0.3.9 (trace command) |
|
||||||
| [Docker Options](https://github.com/dyson/dokku-docker-options) | [dyson][] | v0.3.17 (docker-options plugin) |
|
| [Docker Options](https://github.com/dyson/dokku-docker-options) | [dyson][] | v0.3.17 (docker-options plugin) |
|
||||||
| [Dokku Name](https://github.com/alex-sherwin/dokku-name) | [alex-sherwin][] | v0.4.2 (named containers plugin) |
|
| [Dokku Name](https://github.com/alex-sherwin/dokku-name) | [alex-sherwin][] | v0.4.2 (named containers plugin) |
|
||||||
@@ -271,31 +181,27 @@ The following plugins have been removed as their functionality is now in Dokku C
|
|||||||
| [List Containers](https://github.com/josegonzalez/dokku-list) | [josegonzalez][] | v0.3.14 (ps plugin) |
|
| [List Containers](https://github.com/josegonzalez/dokku-list) | [josegonzalez][] | v0.3.14 (ps plugin) |
|
||||||
| [Multi-Buildpack](https://github.com/pauldub/dokku-multi-buildpack) | [pauldub][] | v0.4.0 (herokuish) |
|
| [Multi-Buildpack](https://github.com/pauldub/dokku-multi-buildpack) | [pauldub][] | v0.4.0 (herokuish) |
|
||||||
| [Multiple Domains](https://github.com/wmluke/dokku-domains-plugin)<sup>1</sup> | [wmluke][] | v0.3.10 (domains plugin) |
|
| [Multiple Domains](https://github.com/wmluke/dokku-domains-plugin)<sup>1</sup> | [wmluke][] | v0.3.10 (domains plugin) |
|
||||||
| [Named-containers](https://github.com/Flink/dokku-named-containers) | [Flink][] | v0.4.2 (named-containers plugin) |
|
| [Named-containers](https://github.com/Flink/dokku-named-containers) | [flink][] | v0.4.2 (named-containers plugin) |
|
||||||
| [Nginx-Alt](https://github.com/mikexstudios/dokku-nginx-alt) | [mikexstudios][] | v0.3.10 (domains plugin) |
|
| [Nginx-Alt](https://github.com/mikexstudios/dokku-nginx-alt) | [mikexstudios][] | v0.3.10 (domains plugin) |
|
||||||
| [Persistent Storage](https://github.com/dyson/dokku-persistent-storage) | [dyson][] | v0.3.17 (docker-options plugin) |
|
| [Persistent Storage](https://github.com/dyson/dokku-persistent-storage) | [dyson][] | v0.3.17 (docker-options plugin) |
|
||||||
| [Pre-Deploy Tasks](https://github.com/michaelshobbs/dokku-app-predeploy-tasks) | [michaelshobbs][] | v0.5.0 (deployment tasks) |
|
| [Pre-Deploy Tasks](https://github.com/michaelshobbs/dokku-app-predeploy-tasks) | [michaelshobbs][] | v0.5.0 (deployment tasks) |
|
||||||
| [PrimeCache](https://github.com/darkpixel/dokku-prime-cache) | [darkpixel][] | v0.3.0 (zero downtime deploys) |
|
| [PrimeCache](https://github.com/darkpixel/dokku-prime-cache) | [darkpixel][] | v0.3.0 (zero downtime deploys) |
|
||||||
| [Process Manager: Circus](https://github.com/apmorton/dokku-circus) | [apmorton][] | v0.3.14/0.7.0 (ps/restart policy plugin) |
|
| [Process Manager: Circus](https://github.com/apmorton/dokku-circus) | [apmorton][] | v0.3.14/0.7.0 (ps/restart policy plugin) |
|
||||||
| [Process Manager: Forego](https://github.com/Flink/dokku-forego) | [Flink][] | v0.3.14/0.7.0 (ps plugin) |
|
| [Process Manager: Forego](https://github.com/Flink/dokku-forego) | [flink][] | v0.3.14/0.7.0 (ps plugin) |
|
||||||
| [Process Manager: Forego](https://github.com/iskandar/dokku-forego) | [iskandar][] | v0.3.14/0.7.0 (ps plugin) |
|
| [Process Manager: Forego](https://github.com/iskandar/dokku-forego) | [iskandar][] | v0.3.14/0.7.0 (ps plugin) |
|
||||||
| [Process Manager: Logging Supervisord](https://github.com/sehrope/dokku-logging-supervisord) | [sehrope][] | v0.3.14/0.7.0 (ps plugin) |
|
| [Process Manager: Logging Supervisord](https://github.com/sehrope/dokku-logging-supervisord) | [sehrope][] | v0.3.14/0.7.0 (ps plugin) |
|
||||||
| [Process Manager: Shoreman ](https://github.com/statianzo/dokku-shoreman) | [statianzo][] | v0.3.14/0.7.0 (ps plugin) |
|
| [Process Manager: Shoreman](https://github.com/statianzo/dokku-shoreman) | [statianzo][] | v0.3.14/0.7.0 (ps plugin) |
|
||||||
| [Process Manager: Supervisord](https://github.com/statianzo/dokku-supervisord) | [statianzo][] | v0.3.14/0.7.0 (ps plugin) |
|
| [Process Manager: Supervisord](https://github.com/statianzo/dokku-supervisord) | [statianzo][] | v0.3.14/0.7.0 (ps plugin) |
|
||||||
| [Rebuild application](https://github.com/scottatron/dokku-rebuild) | [scottatron][] | v0.3.14 (ps plugin) |
|
| [Rebuild application](https://github.com/scottatron/dokku-rebuild) | [scottatron][] | v0.3.14 (ps plugin) |
|
||||||
| [Reset mtime](https://github.com/mixxorz/dokku-docker-reset-mtime) | [mixxorz][] | Docker 1.8+ |
|
| [Reset mtime](https://github.com/mixxorz/dokku-docker-reset-mtime) | [mixxorz][] | Docker 1.8+ |
|
||||||
| [Supply env vars to buildpacks](https://github.com/cameron-martin/dokku-build-env)<sup>2</sup> | [cameron-martin][] | v0.3.9 (build-env plugin) |
|
| [Supply env vars to buildpacks](https://github.com/cameron-martin/dokku-build-env)<sup>2</sup> | [cameron-martin][] | v0.3.9 (build-env plugin) |
|
||||||
| [user-env-compile](https://github.com/motin/dokku-user-env-compile)<sup>2</sup> | [motin][] | v0.3.9 (build-env plugin) |
|
| [user-env-compile](https://github.com/motin/dokku-user-env-compile)<sup>2</sup> | [motin][] | v0.3.9 (build-env plugin) |
|
||||||
| [user-env-compile](https://github.com/musicglue/dokku-user-env-compile)<sup>2</sup> | [musicglue][] | v0.3.9 (build-env plugin) |
|
| [user-env-compile](https://github.com/musicglue/dokku-user-env-compile)<sup>2</sup> | [musicglue][] | v0.3.9 (build-env plugin) |
|
||||||
| [VHOSTS Custom Configuration](https://github.com/neam/dokku-nginx-vhosts-custom-configuration) | [motin][] | v0.3.10 (domains plugin) |
|
|
||||||
| [Volume (persistent storage)](https://github.com/ohardy/dokku-volume) | [ohardy][] | v0.5.0 (storage plugin) |
|
| [Volume (persistent storage)](https://github.com/ohardy/dokku-volume) | [ohardy][] | v0.5.0 (storage plugin) |
|
||||||
|
|
||||||
<sup>1</sup> Conflicts with [VHOSTS Custom Configuration](https://github.com/neam/dokku-nginx-vhosts-custom-configuration)
|
<sup>1</sup> Conflicts with [VHOSTS Custom Configuration](https://github.com/neam/dokku-nginx-vhosts-custom-configuration)
|
||||||
<sup>2</sup> Similar to the heroku-labs feature (see https://devcenter.heroku.com/articles/labs-user-env-compile)
|
<sup>2</sup> Similar to the heroku-labs feature (see https://devcenter.heroku.com/articles/labs-user-env-compile)
|
||||||
|
|
||||||
[a043e98]: https://github.com/stuartpb/dokku-bind-port/commit/a043e9892f4815b6525c850131e09fd64db5c1fa
|
|
||||||
|
|
||||||
|
|
||||||
### Unmaintained Plugins
|
### Unmaintained Plugins
|
||||||
|
|
||||||
The following plugins are no longer maintained by their developers.
|
The following plugins are no longer maintained by their developers.
|
||||||
@@ -304,22 +210,106 @@ The following plugins are no longer maintained by their developers.
|
|||||||
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
||||||
| [app-url](https://github.com/mikecsh/dokku-app-url) | [mikecsh][] | Works with 0.2.0 |
|
| [app-url](https://github.com/mikecsh/dokku-app-url) | [mikecsh][] | Works with 0.2.0 |
|
||||||
| [Chef cookbooks](https://github.com/fgrehm/chef-dokku) | [fgrehm][] | |
|
| [Chef cookbooks](https://github.com/fgrehm/chef-dokku) | [fgrehm][] | |
|
||||||
| [CouchDB (multi containers)](https://github.com/Flink/dokku-couchdb-multi-containers) | [Flink][] | 0.4.0+ |
|
| [CouchDB (multi containers)](https://github.com/Flink/dokku-couchdb-multi-containers) | [flink][] | 0.4.0+ |
|
||||||
| [CouchDB](https://github.com/racehub/dokku-couchdb-plugin) | [RaceHub][] | Compatible with 0.2.0 |
|
| [CouchDB](https://github.com/racehub/dokku-couchdb-plugin) | [raceHub][] | Compatible with 0.2.0 |
|
||||||
| [Dokku Copy App Config Files](https://github.com/alexkruegger/dokku-app-configfiles) | [alexkruegger][] | Compatible with 0.3.17+ |
|
| [Dokku Copy App Config Files](https://github.com/alexkruegger/dokku-app-configfiles) | [alexkruegger][] | Compatible with 0.3.17+ |
|
||||||
| [Dokku Registry](https://github.com/agco-adm/dokku-registry) | [agco-adm][] | 0.4.0+
|
| [Dokku Registry](https://github.com/agco-adm/dokku-registry) | [agco-adm][] | 0.4.0+
|
||||||
| [Elasticsearch](https://github.com/robv/dokku-elasticsearch) | [robv][] | Not compatible with >= 0.3.0 (still uses /home/git) |
|
| [Elasticsearch](https://github.com/robv/dokku-elasticsearch) | [robv][] | Not compatible with >= 0.3.0 (still uses /home/git) |
|
||||||
| [Elasticsearch](https://github.com/blag/dokku-elasticsearch-plugin)<sup>1</sup> | [blag][] | Compatible with 0.2.0 |
|
| [Elasticsearch](https://github.com/blag/dokku-elasticsearch-plugin)<sup>1</sup> | [blag][] | Compatible with 0.2.0 |
|
||||||
| [Graphite/statsd](https://github.com/jlachowski/dokku-graphite-plugin) | [jlachowski][] | < 0.4.0 |
|
| [Graphite/statsd](https://github.com/jlachowski/dokku-graphite-plugin) | [jlachowski][] | < 0.4.0 |
|
||||||
| [HipChat Notifications](https://github.com/cef/dokku-hipchat) | [cef][] | |
|
| [HipChat Notifications](https://github.com/cef/dokku-hipchat) | [cef][] | |
|
||||||
| [Memcached](https://github.com/Flink/dokku-memcached-plugin) | [Flink][] | 0.4.0+ |
|
| [Memcached](https://github.com/Flink/dokku-memcached-plugin) | [flink][] | 0.4.0+ |
|
||||||
| [MongoDB (single container)](https://github.com/jeffutter/dokku-mongodb-plugin) | [jeffutter][] | |
|
| [MongoDB (single container)](https://github.com/jeffutter/dokku-mongodb-plugin) | [jeffutter][] | |
|
||||||
| [MySQL](https://github.com/hughfletcher/dokku-mysql-plugin) | [hughfletcher][] | |
|
| [MySQL](https://github.com/hughfletcher/dokku-mysql-plugin) | [hughfletcher][] | |
|
||||||
| [Neo4j](https://github.com/Aomitayo/dokku-neo4j-plugin) | [Aomitayo][] | |
|
| [Neo4j](https://github.com/Aomitayo/dokku-neo4j-plugin) | [aomitayo][] | |
|
||||||
| [PostGIS](https://github.com/fermuch/dokku-pg-plugin) | [fermuch][] | |
|
| [PostGIS](https://github.com/fermuch/dokku-pg-plugin) | [fermuch][] | |
|
||||||
| [PostgreSQL (single container)](https://github.com/jeffutter/dokku-postgresql-plugin) | [jeffutter][] | This plugin creates a single postgresql container that all your apps can use. Thus only one instance of postgresql running (good for servers without a ton of memory). |
|
| [PostgreSQL (single container)](https://github.com/jeffutter/dokku-postgresql-plugin) | [jeffutter][] | This plugin creates a single postgresql container that all your apps can use. Thus only one instance of postgresql running (good for servers without a ton of memory). |
|
||||||
| [RiakCS (single container)](https://github.com/jeffutter/dokku-riakcs-plugin) | [jeffutter][] | Incompatible with 0.2.0 (checked at [dccee02][]) |
|
| [RiakCS (single container)](https://github.com/jeffutter/dokku-riakcs-plugin) | [jeffutter][] | Incompatible with 0.2.0 |
|
||||||
| [Redis](https://github.com/luxifer/dokku-redis-plugin) | [luxifer][] | |
|
| [Redis](https://github.com/luxifer/dokku-redis-plugin) | [luxifer][] | |
|
||||||
| [Redis](https://github.com/sekjun9878/dokku-redis-plugin) | [sekjun9878][] | 0.3.26+ |
|
| [Redis](https://github.com/sekjun9878/dokku-redis-plugin) | [sekjun9878][] | 0.3.26+ |
|
||||||
|
|
||||||
<sup>1</sup> Forked from [jezdez/dokku-elasticsearch-plugin](https://github.com/jezdez/dokku-elasticsearch-plugin): uses Elasticsearch 1.2 (instead of 0.90), doesn't depend on dokku-link, runs as elasticsearch user instead of root, and turns off multicast autodiscovery for use in a VPS environment.
|
<sup>1</sup> Forked from [jezdez/dokku-elasticsearch-plugin](https://github.com/jezdez/dokku-elasticsearch-plugin): uses Elasticsearch 1.2 (instead of 0.90), doesn't depend on dokku-link, runs as elasticsearch user instead of root, and turns off multicast autodiscovery for use in a VPS environment.
|
||||||
|
|
||||||
|
[256dpi]: https://github.com/256dpi
|
||||||
|
[ademuk]: https://github.com/ademuk
|
||||||
|
[agco-adm]: https://github.com/agco-adm
|
||||||
|
[alessio]: https://github.com/alessio
|
||||||
|
[alex-sherwin]: https://github.com/alex-sherwin
|
||||||
|
[alexanderbeletsky]: https://github.com/alexanderbeletsky
|
||||||
|
[alexkruegger]: https://github.com/alexkruegger
|
||||||
|
[aluxian]: https://github.com/aluxian
|
||||||
|
[aomitayo]: https://github.com/aomitayo
|
||||||
|
[apmorton]: https://github.com/apmorton
|
||||||
|
[artofrawr]: https://github.com/artofrawr
|
||||||
|
[AxelTheGerman]: https://github.com/AxelTheGerman
|
||||||
|
[badsyntax]: https://github.com/badsyntax
|
||||||
|
[basgys]: https://github.com/basgys
|
||||||
|
[benjamin-dobell]: https://github.com/benjamin-dobell
|
||||||
|
[blag]: https://github.com/blag
|
||||||
|
[cameron-martin]: https://github.com/cameron-martin
|
||||||
|
[candlewaster]: https://notabug.org/candlewaster
|
||||||
|
[cedricziel]: https://github.com/cedricziel
|
||||||
|
[cef]: https://github.com/cef
|
||||||
|
[cjblomqvist]: https://github.com/cjblomqvist
|
||||||
|
[crisward]: https://github.com/crisward
|
||||||
|
[cu12]: https://github.com/cu12
|
||||||
|
[darkpixel]: https://github.com/darkpixel
|
||||||
|
[dokku]: https://github.com/dokku
|
||||||
|
[dokku-community]: https://github.com/dokku-community
|
||||||
|
[dyson]: https://github.com/dyson
|
||||||
|
[fermuch]: https://github.com/fermuch
|
||||||
|
[fgrehm]: https://github.com/fgrehm
|
||||||
|
[flink]: https://github.com/flink
|
||||||
|
[fomojola]: https://github.com/fomojola
|
||||||
|
[gdi2290]: https://github.com/gdi2290
|
||||||
|
[hughfletcher]: https://github.com/hughfletcher
|
||||||
|
[iamale]: https://github.com/iamale
|
||||||
|
[ignlg]: https://github.com/ignlg
|
||||||
|
[iloveitaly]: https://github.com/iloveitaly
|
||||||
|
[investtools]: https://github.com/investtools
|
||||||
|
[iskandar]: https://github.com/iskandar
|
||||||
|
[jagandecapri]: https://github.com/jagandecapri
|
||||||
|
[jeffutter]: https://github.com/jeffutter
|
||||||
|
[jlachowski]: https://github.com/jlachowski
|
||||||
|
[josegonzalez]: https://github.com/josegonzalez
|
||||||
|
[kingsquare]: https://github.com/kingsquare
|
||||||
|
[kloadut]: https://github.com/kloadut
|
||||||
|
[krisrang]: https://github.com/krisrang
|
||||||
|
[luxifer]: https://github.com/luxifer
|
||||||
|
[m0rth1um]: https://github.com/m0rth1um
|
||||||
|
[maciej łebkowski]: https://github.com/mlebkowski
|
||||||
|
[mainto]: https://github.com/mainto
|
||||||
|
[matto1990]: https://github.com/matto1990
|
||||||
|
[mbreit]: https://github.com/mbreit
|
||||||
|
[mbriskar]: https://github.com/mbriskar
|
||||||
|
[michaelshobbs]: https://github.com/michaelshobbs
|
||||||
|
[mikecsh]: https://github.com/mikecsh
|
||||||
|
[mikexstudios]: https://github.com/mikexstudios
|
||||||
|
[mimischi]: https://github.com/mimischi
|
||||||
|
[mixxorz]: https://github.com/mixxorz
|
||||||
|
[motin]: https://github.com/motin
|
||||||
|
[mrname]: https://github.com/mrname
|
||||||
|
[musicglue]: https://github.com/musicglue
|
||||||
|
[neam]: https://github.com/neam
|
||||||
|
[nickcharlton]: https://github.com/nickcharlton
|
||||||
|
[nickstenning]: https://github.com/nickstenning
|
||||||
|
[ohardy]: https://github.com/ohardy
|
||||||
|
[pauldub]: https://github.com/pauldub
|
||||||
|
[pnegahdar]: https://github.com/pnegahdar
|
||||||
|
[racehub]: https://github.com/racehub
|
||||||
|
[ribot]: https://github.com/ribot
|
||||||
|
[rlaneve]: https://github.com/rlaneve
|
||||||
|
[robv]: https://github.com/robv
|
||||||
|
[scottatron]: https://github.com/scottatron
|
||||||
|
[sehrope]: https://github.com/sehrope
|
||||||
|
[sekjun9878]: https://github.com/sekjun9878
|
||||||
|
[statianzo]: https://github.com/statianzo
|
||||||
|
[stuartpb]: https://github.com/stuartpb
|
||||||
|
[thrashr888]: https://github.com/thrashr888
|
||||||
|
[wmluke]: https://github.com/wmluke
|
||||||
|
[zenedith]: https://github.com/zenedith
|
||||||
|
[fteychene]: https://github.com/fteychene
|
||||||
|
[sarendsen]: https://github.com/sarendsen
|
||||||
|
[baikunz]: https://github.com/baikunz
|
||||||
|
[lazyatom]: https://github.com/lazyatom
|
||||||
|
[ollej]: https://github.com/ollej
|
||||||
|
|||||||
@@ -32,7 +32,6 @@ If an FQDN such as `dokku.org` is used as the application name, the global virtu
|
|||||||
|
|
||||||
You can optionally override this in a plugin by implementing the `nginx-hostname` plugin trigger. If the `nginx-hostname` plugin has no output, the normal hostname algorithm will be executed. See the [plugin trigger documentation](/docs/development/plugin-triggers.md#nginx-hostname) for more information.
|
You can optionally override this in a plugin by implementing the `nginx-hostname` plugin trigger. If the `nginx-hostname` plugin has no output, the normal hostname algorithm will be executed. See the [plugin trigger documentation](/docs/development/plugin-triggers.md#nginx-hostname) for more information.
|
||||||
|
|
||||||
|
|
||||||
## Disabling VHOSTS
|
## Disabling VHOSTS
|
||||||
|
|
||||||
If desired, it is possible to disable vhosts with the domains plugin.
|
If desired, it is possible to disable vhosts with the domains plugin.
|
||||||
@@ -43,7 +42,6 @@ dokku domains:disable node-js-app
|
|||||||
|
|
||||||
On subsequent deploys, the nginx virtualhost will be discarded. This is useful when deploying internal-facing services that should not be publicly routeable. As of 0.4.0, nginx will still be configured to proxy your app on some random high port. This allows internal services to maintain the same port between deployments. You may change this port by setting `DOKKU_PROXY_PORT` and/or `DOKKU_PROXY_SSL_PORT` (for services configured to use SSL.)
|
On subsequent deploys, the nginx virtualhost will be discarded. This is useful when deploying internal-facing services that should not be publicly routeable. As of 0.4.0, nginx will still be configured to proxy your app on some random high port. This allows internal services to maintain the same port between deployments. You may change this port by setting `DOKKU_PROXY_PORT` and/or `DOKKU_PROXY_SSL_PORT` (for services configured to use SSL.)
|
||||||
|
|
||||||
|
|
||||||
The domains plugin allows you to specify custom domains for applications. This plugin is aware of any ssl certificates that are imported via `certs:add`. Be aware that disabling domains (with `domains:disable`) will override any custom domains.
|
The domains plugin allows you to specify custom domains for applications. This plugin is aware of any ssl certificates that are imported via `certs:add`. Be aware that disabling domains (with `domains:disable`) will override any custom domains.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@@ -115,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,11 +14,11 @@ 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.
|
||||||
|
|
||||||
For buildpack deploys, Dokku will create a `/app/.env` file that can be used for legacy buildpacks. Note that this is *not* updated when `config:set` or `config:unset` is called, and is only written during a `deploy` or `ps:rebuild`. Developers are encouraged to instead read from the application environment directly, as the proper values will be available then.
|
For buildpack deploys, Dokku will create a `/app/.env` file that can be used for legacy buildpacks. Note that this is _not_ updated when `config:set` or `config:unset` is called, and is only written during a `deploy` or `ps:rebuild`. Developers are encouraged to instead read from the application environment directly, as the proper values will be available then.
|
||||||
|
|
||||||
> Note: Global `ENV` files are sourced before app-specific `ENV` files. This means that app-specific variables will take precedence over global variables. Configuring your global `ENV` file is manual, and should be considered potentially dangerous as configuration applies to all applications.
|
> Note: Global `ENV` files are sourced before app-specific `ENV` files. This means that app-specific variables will take precedence over global variables. Configuring your global `ENV` file is manual, and should be considered potentially dangerous as configuration applies to all applications.
|
||||||
|
|
||||||
@@ -91,11 +91,11 @@ The following config variables have special meanings and can be set in a variety
|
|||||||
| `DOKKU_EVENTS_LOGFILE` | `$DOKKU_LOGS_DIR/events.log` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Where the events log file is written to. |
|
| `DOKKU_EVENTS_LOGFILE` | `$DOKKU_LOGS_DIR/events.log` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Where the events log file is written to. |
|
||||||
| `DOKKU_APP_NAME` | none | `--app APP` flag | Name of application to work on. Respected by core plugins. |
|
| `DOKKU_APP_NAME` | none | `--app APP` flag | Name of application to work on. Respected by core plugins. |
|
||||||
| `DOKKU_APPS_FORCE_DELETE` | none | `--force` flag | Whether to force delete an application. Also used by other plugins for destructive actions. |
|
| `DOKKU_APPS_FORCE_DELETE` | none | `--force` flag | Whether to force delete an application. Also used by other plugins for destructive actions. |
|
||||||
| `DOKKU_CHECKS_URL` | `https://dokku.com/docs/deployment/zero-downtime-deploys/` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Url displayed during deployment when no CHECKS file exists. |
|
| `DOKKU_CHECKS_URL` | `https://dokku.com/docs/deployment/zero-downtime-deploys/` | `/etc/environment` <br /> `~dokku/.dokkurc` <br /> `~dokku/.dokkurc/*` | Url displayed during deployment when no CHECKS file exists. |
|
||||||
| `DOKKU_DETACH_CONTAINER` | none | `--detach` flag | Whether to detach a container started via `dokku run`. |
|
| `DOKKU_DETACH_CONTAINER` | none | `--detach` flag | Deprecated: Whether to detach a container started via `dokku run`. |
|
||||||
| `DOKKU_QUIET_OUTPUT` | none | `--quiet` flag | Silences certain header output for `dokku` commands. |
|
| `DOKKU_QUIET_OUTPUT` | none | `--quiet` flag | Silences certain header output for `dokku` commands. |
|
||||||
| `DOKKU_RM_CONTAINER` | none | `dokku config:set` <br /> `--rm-container` flag <br /> `--rm` flag | Whether to keep `dokku run` containers around or not. |
|
| `DOKKU_RM_CONTAINER` | none | `dokku config:set` <br /> | Deprecated: Whether to keep `dokku run` containers around or not. |
|
||||||
| `DOKKU_TRACE` | none | `dokku trace:on` <br /> `dokku trace:off` <br /> `--trace` flag | Turn on very verbose debugging. |
|
| `DOKKU_TRACE` | none | `dokku trace:on` <br /> `dokku trace:off` <br /> `--trace` flag | Turn on very verbose debugging. |
|
||||||
| `DOKKU_APP_PROXY_TYPE` | `nginx` | `dokku proxy:set` | |
|
| `DOKKU_APP_PROXY_TYPE` | `nginx` | `dokku proxy:set` | |
|
||||||
| `DOKKU_APP_RESTORE` | `1` | `dokku config:set` <br /> `dokku ps:stop` | |
|
| `DOKKU_APP_RESTORE` | `1` | `dokku config:set` <br /> `dokku ps:stop` | |
|
||||||
| `DOKKU_APP_SHELL` | `/bin/bash` | `dokku config:set` | Allows users to change the default shell used by Dokku for `dokku enter` and execution of deployment tasks. |
|
| `DOKKU_APP_SHELL` | `/bin/bash` | `dokku config:set` | Allows users to change the default shell used by Dokku for `dokku enter` and execution of deployment tasks. |
|
||||||
|
|||||||
@@ -41,9 +41,9 @@ cat yourdomain_com.crt yourdomain_com.ca-bundle > server.crt
|
|||||||
|
|
||||||
#### SSL and Multiple Domains
|
#### SSL and Multiple Domains
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
@@ -211,10 +211,12 @@ git remote add dokku dokku@dokku.me:dokku.me
|
|||||||
git push dokku main:master
|
git push dokku main:master
|
||||||
```
|
```
|
||||||
|
|
||||||
... deployment ...
|
```
|
||||||
|
... deployment ...
|
||||||
|
|
||||||
remote: -----> Application deployed:
|
remote: -----> Application deployed:
|
||||||
remote: http://dokku.me
|
remote: http://dokku.me
|
||||||
|
```
|
||||||
|
|
||||||
## Dokku/Docker container management compatibility
|
## Dokku/Docker container management compatibility
|
||||||
|
|
||||||
@@ -240,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
|
||||||
@@ -191,7 +197,6 @@ dokku apps:clone --ignore-existing node-js-app io-js-app
|
|||||||
|
|
||||||
If you wish to disable deploying for a period of time, this can be done via deploy locks. Normally, deploy locks exist only for the duration of a deploy so as to avoid deploys from colliding, but a deploy lock can be created by running the `apps:lock` command.
|
If you wish to disable deploying for a period of time, this can be done via deploy locks. Normally, deploy locks exist only for the duration of a deploy so as to avoid deploys from colliding, but a deploy lock can be created by running the `apps:lock` command.
|
||||||
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku apps:lock node-js-app
|
dokku apps:lock node-js-app
|
||||||
```
|
```
|
||||||
@@ -224,7 +229,6 @@ dokku apps:unlock node-js-app
|
|||||||
|
|
||||||
In some cases, you may wish to inspect the state of an app lock. To do so, you can issue an `apps:lock` command. This will exit non-zero if there is no app lock in place.
|
In some cases, you may wish to inspect the state of an app lock. To do so, you can issue an `apps:lock` command. This will exit non-zero if there is no app lock in place.
|
||||||
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku apps:locked node-js-app
|
dokku apps:locked node-js-app
|
||||||
```
|
```
|
||||||
@@ -245,17 +249,23 @@ dokku apps:report
|
|||||||
|
|
||||||
```
|
```
|
||||||
=====> node-js-app app information
|
=====> node-js-app app information
|
||||||
App dir: /home/dokku/node-js-app
|
App created at: 1635126111
|
||||||
App deploy source: git
|
App dir: /home/dokku/node-js-app
|
||||||
App locked: false
|
App deploy source: git
|
||||||
|
App deploy source metadata: cd7b8afccb202f222e7dc7b427553e71ba5ddafd
|
||||||
|
App locked: false
|
||||||
=====> python-sample app information
|
=====> python-sample app information
|
||||||
App dir: /home/dokku/python-sample
|
App created at: 1635126000
|
||||||
|
App dir: /home/dokku/python-sample
|
||||||
App deploy source:
|
App deploy source:
|
||||||
App locked: false
|
App deploy source metadata:
|
||||||
|
App locked: false
|
||||||
=====> ruby-sample app information
|
=====> ruby-sample app information
|
||||||
App dir: /home/dokku/ruby-sample
|
App created at: 1635122462
|
||||||
App deploy source: git
|
App dir: /home/dokku/ruby-sample
|
||||||
App locked: false
|
App deploy source: git
|
||||||
|
App deploy source metadata: c60921ea2799ca108276414b95ea197f16798d51
|
||||||
|
App locked: false
|
||||||
```
|
```
|
||||||
|
|
||||||
You can run the command for a specific app also.
|
You can run the command for a specific app also.
|
||||||
@@ -266,9 +276,10 @@ dokku apps:report node-js-app
|
|||||||
|
|
||||||
```
|
```
|
||||||
=====> node-js-app app information
|
=====> node-js-app app information
|
||||||
App dir: /home/dokku/node-js-app
|
App dir: /home/dokku/node-js-app
|
||||||
App deploy source: git
|
App deploy source: git
|
||||||
App locked: false
|
App deploy source metadata: cd7b8afccb202f222e7dc7b427553e71ba5ddafd
|
||||||
|
App locked: false
|
||||||
```
|
```
|
||||||
|
|
||||||
You can pass flags which will output only the value of the specific information you want. For example:
|
You can pass flags which will output only the value of the specific information you want. For example:
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ 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-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.
|
||||||
|
|
||||||
Builders run a detection script against a source code repository, and the first detected builder will be used to build the app artifact. The exception to this is when a `Dockerfile` is detected and the app is also able to use either `herokuish` or `pack-cli` for building, in which case one of the latter will be chosen.
|
Builders run a detection script against a source code repository, and the first detected builder will be used to build the app artifact. The exception to this is when a `Dockerfile` is detected and the app is also able to use either `herokuish` or `pack-cli` for building, in which case one of the latter will be chosen.
|
||||||
@@ -47,6 +49,34 @@ The default value may be set by passing an empty value for the option.
|
|||||||
dokku builder:set --global selected
|
dokku builder:set --global selected
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Changing the build directory
|
||||||
|
|
||||||
|
> Warning: Please keep in mind that setting a custom build directory will result in loss of any changes to the top-level directory, such as the `git.keep-git-dir` property.
|
||||||
|
|
||||||
|
When deploying a monorepo, it may be desirable to specify the specific build directory to use for a given app. This can be done via the `builder:set` command. If a value is specified and that directory does not exist within the repository, the build will fail.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder:set node-js-app build-dir app2
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder:set node-js-app build-dir
|
||||||
|
```
|
||||||
|
|
||||||
|
The `build-dir` property can also be set globally. The global default is empty string, and the global value is used when no app-specific value is set.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder:set --global build-dir app2
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder:set --global build-dir
|
||||||
|
```
|
||||||
|
|
||||||
### Displaying builder reports for an app
|
### Displaying builder reports for an app
|
||||||
|
|
||||||
You can get a report about the app's builder status using the `builder:report` command:
|
You can get a report about the app's builder status using the `builder:report` command:
|
||||||
@@ -57,15 +87,24 @@ dokku builder:report
|
|||||||
|
|
||||||
```
|
```
|
||||||
=====> node-js-app builder information
|
=====> node-js-app builder information
|
||||||
Builder computed selected: herokuish
|
Builder build dir: custom
|
||||||
|
Builder computed build dir: custom
|
||||||
|
Builder computed selected: herokuish
|
||||||
|
Builder global build dir:
|
||||||
Builder global selected: herokuish
|
Builder global selected: herokuish
|
||||||
Builder selected: herokuish
|
Builder selected: herokuish
|
||||||
=====> python-sample builder information
|
=====> python-sample builder information
|
||||||
|
Builder build dir:
|
||||||
|
Builder computed build dir:
|
||||||
Builder computed selected: dockerfile
|
Builder computed selected: dockerfile
|
||||||
|
Builder global build dir:
|
||||||
Builder global selected: herokuish
|
Builder global selected: herokuish
|
||||||
Builder selected: dockerfile
|
Builder selected: dockerfile
|
||||||
=====> ruby-sample builder information
|
=====> ruby-sample builder information
|
||||||
|
Builder build dir:
|
||||||
|
Builder computed build dir:
|
||||||
Builder computed selected: herokuish
|
Builder computed selected: herokuish
|
||||||
|
Builder global build dir:
|
||||||
Builder global selected: herokuish
|
Builder global selected: herokuish
|
||||||
Builder selected:
|
Builder selected:
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Cloud Native Buildpacks (Experimental)
|
# Cloud Native Buildpacks
|
||||||
|
|
||||||
> New as of 0.22.0
|
> New as of 0.22.0
|
||||||
|
|
||||||
@@ -12,25 +12,6 @@ Cloud Native Buildpacks are an evolution over the Buildpacks technology provided
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
### Detection
|
|
||||||
|
|
||||||
This builder will be auto-detected in either the following cases:
|
|
||||||
|
|
||||||
- The `DOKKU_CNB_EXPERIMENTAL` app environment variable is set to `1`.
|
|
||||||
```shell
|
|
||||||
dokku config:set --no-restart node-js-app DOKKU_CNB_EXPERIMENTAL=1
|
|
||||||
```
|
|
||||||
- A `.project.toml` file exists in the root of the app repository.
|
|
||||||
- This file is consumed by `pack-cli` and used to describe how the app is built.
|
|
||||||
|
|
||||||
The builder can also be specified via the `builder:set` command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku builder:set node-js-app selected pack
|
|
||||||
```
|
|
||||||
|
|
||||||
> Dokku will only select the `dockerfile` builder if both the `herokuish` and `pack` builders are not detected and a Dockerfile exists. See the [dockerfile builder documentation](/docs/deployment/builders/dockerfiles.md) for more information on how that builder functions.
|
|
||||||
|
|
||||||
### Requirements
|
### Requirements
|
||||||
|
|
||||||
The `pack` cli tool is not included by default with Dokku or as a dependency. It must also be installed as shown on [this page](https://buildpacks.io/docs/tools/pack/).
|
The `pack` cli tool is not included by default with Dokku or as a dependency. It must also be installed as shown on [this page](https://buildpacks.io/docs/tools/pack/).
|
||||||
@@ -51,6 +32,99 @@ As this functionality is highly experimental, there are a number of caveats. Ple
|
|||||||
- `pack` is not currently included with Dokku, nor is it added as a package dependency.
|
- `pack` is not currently included with Dokku, nor is it added as a package dependency.
|
||||||
- A future version will include it as a package dependency.
|
- A future version will include it as a package dependency.
|
||||||
|
|
||||||
|
### Detection
|
||||||
|
|
||||||
|
This builder will be auto-detected in either the following cases:
|
||||||
|
|
||||||
|
- The `DOKKU_CNB_EXPERIMENTAL` app environment variable is set to `1`.
|
||||||
|
```shell
|
||||||
|
dokku config:set --no-restart node-js-app DOKKU_CNB_EXPERIMENTAL=1
|
||||||
|
```
|
||||||
|
- A `project.toml` file exists in the root of the app repository.
|
||||||
|
- This file is consumed by `pack-cli` and used to describe how the app is built.
|
||||||
|
|
||||||
|
The builder can also be specified via the `builder:set` command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder:set node-js-app selected pack
|
||||||
|
```
|
||||||
|
|
||||||
|
> Dokku will only select the `dockerfile` builder if both the `herokuish` and `pack` builders are not detected and a Dockerfile exists. See the [dockerfile builder documentation](/docs/deployment/builders/dockerfiles.md) for more information on how that builder functions.
|
||||||
|
|
||||||
|
### Changing the `project.toml` location
|
||||||
|
|
||||||
|
When deploying a monorepo, it may be desirable to specify the specific path of the `project.toml` file to use for a given app. This can be done via the `builder-pack:set` command. If a value other than `project.toml` is specified and that file does not exist in the app's build directory, Dokku will continue the build process as if the repository has no `project.toml`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-pack:set node-js-app projecttoml-path project2.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-pack:set node-js-app projecttoml-path
|
||||||
|
```
|
||||||
|
|
||||||
|
The `projecttoml-path` property can also be set globally. The global default is `project.toml`, and the global value is used when no app-specific value is set.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-pack:set --global projecttoml-path project2.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-pack:set --global projecttoml-path
|
||||||
|
```
|
||||||
|
|
||||||
|
### Displaying builder-pack reports for an app
|
||||||
|
|
||||||
|
> New as of 0.25.0
|
||||||
|
|
||||||
|
You can get a report about the app's storage status using the `builder-pack:report` command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-pack:report
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app builder-pack information
|
||||||
|
Builder-pack computed projecttoml path: project2.toml
|
||||||
|
Builder-pack global projecttoml path: project.toml
|
||||||
|
Builder-pack projecttoml path: project2.toml
|
||||||
|
=====> python-sample builder-pack information
|
||||||
|
Builder-pack computed projecttoml path: project.toml
|
||||||
|
Builder-pack global projecttoml path: project.toml
|
||||||
|
Builder-pack projecttoml path:
|
||||||
|
=====> ruby-sample builder-pack information
|
||||||
|
Builder-pack computed projecttoml path: project.toml
|
||||||
|
Builder-pack global projecttoml path: project.json
|
||||||
|
Builder-pack projecttoml path:
|
||||||
|
```
|
||||||
|
|
||||||
|
You can run the command for a specific app also.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-pack:report node-js-app
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app builder-pack information
|
||||||
|
Builder-pack computed projecttoml path: project2.toml
|
||||||
|
Builder-pack global projecttoml path: project.toml
|
||||||
|
Builder-pack projecttoml path: project2.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
You can pass flags which will output only the value of the specific information you want. For example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-pack:report node-js-app --builder-pack-projecttoml-path
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
project2.toml
|
||||||
|
```
|
||||||
|
|
||||||
### Customizing the Buildpack stack builder
|
### Customizing the Buildpack stack builder
|
||||||
|
|
||||||
> New as of 0.23.0
|
> New as of 0.23.0
|
||||||
|
|||||||
@@ -27,22 +27,92 @@ If an application was previously deployed via buildpacks, the following commands
|
|||||||
dokku config:unset --no-restart node-js-app DOKKU_PROXY_PORT_MAP
|
dokku config:unset --no-restart node-js-app DOKKU_PROXY_PORT_MAP
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Changing the `Dockerfile` location
|
||||||
|
|
||||||
|
> The previous method to perform this - via `docker-options:add` - should be removed in favor of the `builder-dockerfile:set` command outlined here.
|
||||||
|
|
||||||
|
When deploying a monorepo, it may be desirable to specify the specific path of the `Dockerfile` file to use for a given app. This can be done via the `builder-dockerfile:set` command. If a value is specified and that file does not exist in the app's build directory, then the build will fail.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-dockerfile:set node-js-app dockerfile-path Dockerfile2
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-dockerfile:set node-js-app dockerfile-path
|
||||||
|
```
|
||||||
|
|
||||||
|
The `dockerfile-path` property can also be set globally. The global default is `Dockerfile`, and the global value is used when no app-specific value is set.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-dockerfile:set --global dockerfile-path Dockerfile2
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-dockerfile:set --global dockerfile-path
|
||||||
|
```
|
||||||
|
|
||||||
|
### Displaying builder-dockerfile reports for an app
|
||||||
|
|
||||||
|
> New as of 0.25.0
|
||||||
|
|
||||||
|
You can get a report about the app's storage status using the `builder-dockerfile:report` command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-dockerfile:report
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app builder-dockerfile information
|
||||||
|
Builder-dockerfile computed dockerfile path: Dockerfile2
|
||||||
|
Builder-dockerfile global dockerfile path: Dockerfile
|
||||||
|
Builder-dockerfile dockerfile path: Dockerfile2
|
||||||
|
=====> python-sample builder-dockerfile information
|
||||||
|
Builder-dockerfile computed dockerfile path: Dockerfile
|
||||||
|
Builder-dockerfile global dockerfile path: Dockerfile
|
||||||
|
Builder-dockerfile dockerfile path:
|
||||||
|
=====> ruby-sample builder-dockerfile information
|
||||||
|
Builder-dockerfile computed dockerfile path: Dockerfile
|
||||||
|
Builder-dockerfile global dockerfile path: Dockerfile
|
||||||
|
Builder-dockerfile dockerfile path:
|
||||||
|
```
|
||||||
|
|
||||||
|
You can run the command for a specific app also.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-dockerfile:report node-js-app
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app builder-dockerfile information
|
||||||
|
Builder-dockerfile computed dockerfile path: Dockerfile2
|
||||||
|
Builder-dockerfile global dockerfile path: Dockerfile
|
||||||
|
Builder-dockerfile dockerfile path: Dockerfile2
|
||||||
|
```
|
||||||
|
|
||||||
|
You can pass flags which will output only the value of the specific information you want. For example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-dockerfile:report node-js-app --builder-dockerfile-dockerfile-path
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Dockerfile2
|
||||||
|
```
|
||||||
|
|
||||||
### Build-time configuration variables
|
### Build-time configuration variables
|
||||||
|
|
||||||
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'
|
||||||
```
|
```
|
||||||
|
|
||||||
The location of the `Dockerfile` may also be specified. If the location is changed, the repository **must also** have a `Dockerfile` in the root directory in order to trigger a dockerfile-based deploy.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku docker-options:add node-js-app build '--file Dockerfile.dokku'
|
|
||||||
```
|
|
||||||
|
|
||||||
Once set, the Dockerfile usage would be as follows:
|
Once set, the Dockerfile usage would be as follows:
|
||||||
|
|
||||||
```Dockerfile
|
```Dockerfile
|
||||||
@@ -75,7 +145,12 @@ RUN echo $NODE_ENV
|
|||||||
|
|
||||||
### Building images with Docker Buildkit
|
### Building images with Docker Buildkit
|
||||||
|
|
||||||
If your Dockerfile is using Docker engine's [buildkit](https://docs.docker.com/develop/develop-images/build_enhancements/) (not to be confused with buildpacks), then the `DOCKER_BUILDKIT=1` environment variable needs to be set. One way to do this is to edit `/etc/environment` on your dokku host and reboot your instance. Note, for complete build log output, you should also set `BUILDKIT_PROGRESS=plain` in the same file.
|
If your Dockerfile is using Docker engine's [buildkit](https://docs.docker.com/develop/develop-images/build_enhancements/) (not to be confused with buildpacks), then the `DOCKER_BUILDKIT=1` environment variable needs to be set. Additionally, complete build log output can be forced via `BUILDKIT_PROGRESS=plain`. Both of these environment variables can be set as follows:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
echo "export DOCKER_BUILDKIT=1" | sudo tee -a /etc/default/dokku
|
||||||
|
echo "export BUILDKIT_PROGRESS=plain" | sudo tee -a /etc/default/dokku
|
||||||
|
```
|
||||||
|
|
||||||
#### Buildkit directory caching
|
#### Buildkit directory caching
|
||||||
|
|
||||||
@@ -92,7 +167,6 @@ RUN --mount=target=/var/lib/apt/lists,type=cache \
|
|||||||
|
|
||||||
Mount cache targets may vary depending on the tool in use, and users are encouraged to investigate the directories that apply for their language and framework.
|
Mount cache targets may vary depending on the tool in use, and users are encouraged to investigate the directories that apply for their language and framework.
|
||||||
|
|
||||||
|
|
||||||
You would adjust the cache directory for whatever application cache you have, e.g. `/root/.pnpm-store/v3` for pnpm, `$HOME/.m2` for maven, or `/root/.cache` for golang.
|
You would adjust the cache directory for whatever application cache you have, e.g. `/root/.pnpm-store/v3` for pnpm, `$HOME/.m2` for maven, or `/root/.cache` for golang.
|
||||||
|
|
||||||
### Customizing the run command
|
### Customizing the run command
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Herokuish Buildpack Deployment
|
# Herokuish Buildpacks
|
||||||
|
|
||||||
> Subcommands new as of 0.15.0
|
> Subcommands new as of 0.15.0
|
||||||
|
|
||||||
@@ -55,7 +55,6 @@ dokku buildpacks:list node-js-app
|
|||||||
-----> test buildpack urls
|
-----> test buildpack urls
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# running for an app with two buildpacks specified
|
# running for an app with two buildpacks specified
|
||||||
dokku buildpacks:list node-js-app
|
dokku buildpacks:list node-js-app
|
||||||
@@ -159,7 +158,7 @@ dokku buildpacks:set-property node-js-app stack
|
|||||||
|
|
||||||
A change in the stack builder value will execute the `post-stack-set` trigger.
|
A change in the stack builder value will execute the `post-stack-set` trigger.
|
||||||
|
|
||||||
Finally, stack builders can be set or unset globally as a fallback. This will take precedence over a globally set `DOKKU_IMAGE` environment variable (`gliderlabs/herokuish:latest` by default).
|
Finally, stack builders can be set or unset globally as a fallback. This will take precedence over a globally set `DOKKU_IMAGE` environment variable (`gliderlabs/herokuish:latest-20` by default).
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# set globally
|
# set globally
|
||||||
@@ -180,17 +179,17 @@ dokku buildpacks:report
|
|||||||
```
|
```
|
||||||
=====> node-js-app buildpacks information
|
=====> node-js-app buildpacks information
|
||||||
Buildpacks computed stack: gliderlabs/herokuish:v0.5.23-20
|
Buildpacks computed stack: gliderlabs/herokuish:v0.5.23-20
|
||||||
Buildpacks global stack: gliderlabs/herokuish:latest
|
Buildpacks global stack: gliderlabs/herokuish:latest-20
|
||||||
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git
|
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git
|
||||||
Buildpacks stack: gliderlabs/herokuish:v0.5.23-20
|
Buildpacks stack: gliderlabs/herokuish:v0.5.23-20
|
||||||
=====> python-sample buildpacks information
|
=====> python-sample buildpacks information
|
||||||
Buildpacks computed stack: gliderlabs/herokuish:v0.5.23-20
|
Buildpacks computed stack: gliderlabs/herokuish:latest-20
|
||||||
Buildpacks global stack: gliderlabs/herokuish:latest
|
Buildpacks global stack: gliderlabs/herokuish:latest-20
|
||||||
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git,https://github.com/heroku/heroku-buildpack-python.git
|
Buildpacks list: https://github.com/heroku/heroku-buildpack-nodejs.git,https://github.com/heroku/heroku-buildpack-python.git
|
||||||
Buildpacks stack:
|
Buildpacks stack:
|
||||||
=====> ruby-sample buildpacks information
|
=====> ruby-sample buildpacks information
|
||||||
Buildpacks computed stack: gliderlabs/herokuish:v0.5.23-20
|
Buildpacks computed stack: gliderlabs/herokuish:latest-20
|
||||||
Buildpacks global stack: gliderlabs/herokuish:latest
|
Buildpacks global stack: gliderlabs/herokuish:latest-20
|
||||||
Buildpacks list:
|
Buildpacks list:
|
||||||
Buildpacks stack:
|
Buildpacks stack:
|
||||||
```
|
```
|
||||||
@@ -226,7 +225,7 @@ dokku config:unset --no-restart node-js-app DOKKU_PROXY_PORT_MAP
|
|||||||
|
|
||||||
> Always remember to pin your buildpack versions when using the multi-buildpacks method, or you may find deploys changing your deployed environment.
|
> Always remember to pin your buildpack versions when using the multi-buildpacks method, or you may find deploys changing your deployed environment.
|
||||||
|
|
||||||
By default, Dokku uses the [gliderlabs/herokuish](https://github.com/gliderlabs/herokuish/) project, which pins all of it's vendored buildpacks. There may be occasions where the pinned version results in a broken deploy, or does not have a particular feature that is required to build your project. To use a more recent version of a given buildpack, the buildpack may be specified *without* a Git commit SHA like so:
|
By default, Dokku uses the [gliderlabs/herokuish](https://github.com/gliderlabs/herokuish/) project, which pins all of it's vendored buildpacks. There may be occasions where the pinned version results in a broken deploy, or does not have a particular feature that is required to build your project. To use a more recent version of a given buildpack, the buildpack may be specified _without_ a Git commit SHA like so:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
# using the latest nodejs buildpack
|
# using the latest nodejs buildpack
|
||||||
@@ -265,7 +264,6 @@ importantworker: env QUEUE=important bundle exec rake resque:work
|
|||||||
|
|
||||||
The `web` process type holds some significance in that it is the only process type that is automatically scaled to `1` on the initial application deploy. See the [process scaling documentation](/docs/processes/process-management.md) for more details around scaling individual processes.
|
The `web` process type holds some significance in that it is the only process type that is automatically scaled to `1` on the initial application deploy. See the [process scaling documentation](/docs/processes/process-management.md) for more details around scaling individual processes.
|
||||||
|
|
||||||
|
|
||||||
### `curl` build timeouts
|
### `curl` build timeouts
|
||||||
|
|
||||||
Certain buildpacks may time out in retrieving dependencies via `curl`. This can happen when your network connection is poor or if there is significant network congestion. You may see a message similar to `gzip: stdin: unexpected end of file` after a `curl` command.
|
Certain buildpacks may time out in retrieving dependencies via `curl`. This can happen when your network connection is poor or if there is significant network congestion. You may see a message similar to `gzip: stdin: unexpected end of file` after a `curl` command.
|
||||||
|
|||||||
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
|
||||||
|
```
|
||||||
15
docs/deployment/builders/null.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Null Builder
|
||||||
|
|
||||||
|
> New as of 0.25.0
|
||||||
|
|
||||||
|
The `null` builder does nothing, and is useful for routing to services not managed by Dokku. It should not be used in normal operation. Please see the [network documentation](/docs/networking/network.md#routing-an-app-to-a-known-ip:port-combination) for more information on the aforementioned use case.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Detection
|
||||||
|
|
||||||
|
This builder is _never_ auto-detected. The builder _must_ be specified via the `builder:set` command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder:set node-js-app selected null
|
||||||
|
```
|
||||||
@@ -21,11 +21,10 @@ jobs:
|
|||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Push to dokku
|
- name: Push to dokku
|
||||||
uses: dokku/github-action@v1
|
uses: dokku/github-action@master
|
||||||
with:
|
with:
|
||||||
git_remote_url: 'ssh://dokku@dokku.me:22/appname'
|
git_remote_url: 'ssh://dokku@dokku.me:22/appname'
|
||||||
ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
|
ssh_private_key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
For further usage documentation and other advanced examples, see the entry on the [GitHub Marketplace](https://github.com/marketplace/actions/dokku).
|
For further usage documentation and other advanced examples, see the entry on the [GitHub Marketplace](https://github.com/marketplace/actions/dokku).
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Gitlab CI
|
# GitLab CI
|
||||||
|
|
||||||
Gitlab-CI can be used to automatically deploy a Dokku application via the official the [dokku/ci-docker-image](https://github.com/dokku/ci-docker-image). The simplest example is as follows:
|
GitLab CI can be used to automatically deploy a Dokku application via the official the [dokku/ci-docker-image](https://github.com/dokku/ci-docker-image). The simplest example is as follows:
|
||||||
|
|
||||||
```
|
```
|
||||||
---
|
---
|
||||||
@@ -18,8 +18,10 @@ deploy:
|
|||||||
- master
|
- master
|
||||||
variables:
|
variables:
|
||||||
GIT_REMOTE_URL: ssh://dokku@dokku.me:22/appname
|
GIT_REMOTE_URL: ssh://dokku@dokku.me:22/appname
|
||||||
script: dokku-deploy
|
script:
|
||||||
after_script: dokku-unlock
|
- dokku-deploy
|
||||||
|
after_script:
|
||||||
|
- dokku-unlock
|
||||||
```
|
```
|
||||||
|
|
||||||
For further usage documentation and other advanced examples, see Dokku's [gitlab-ci](https://github.com/dokku/gitlab-ci) repository.
|
For further usage documentation and other advanced examples, see Dokku's [gitlab-ci](https://github.com/dokku/gitlab-ci) repository.
|
||||||
|
|||||||
@@ -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.
|
||||||
@@ -37,11 +39,11 @@ You can use these modifiers as follows:
|
|||||||
dokku logs node-js-app -t -p web
|
dokku logs node-js-app -t -p web
|
||||||
```
|
```
|
||||||
|
|
||||||
will show logs continually from the web process.
|
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.
|
||||||
|
|
||||||
@@ -127,6 +129,29 @@ dokku logs:vector-stop
|
|||||||
|
|
||||||
The `vector` container will be stopped and removed from the system. If the container is not running, this command will do nothing.
|
The `vector` container will be stopped and removed from the system. If the container is not running, this command will do nothing.
|
||||||
|
|
||||||
|
#### Checking Vector's Logs
|
||||||
|
|
||||||
|
It may be necessary to check the vector container's logs to ensure that vector is operating as expected. This can be performed with the `logs:vector-logs` command.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku logs:vector-logs
|
||||||
|
```
|
||||||
|
|
||||||
|
This command also supports the following modifiers:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
--num NUM # the number of lines to display
|
||||||
|
--tail # continually stream logs
|
||||||
|
```
|
||||||
|
|
||||||
|
You can use these modifiers as follows:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku logs:vector-logs --tail --num 10
|
||||||
|
```
|
||||||
|
|
||||||
|
The above command will show logs continually from the vector container, with an initial history of 10 log lines
|
||||||
|
|
||||||
#### Configuring a log sink
|
#### Configuring a log sink
|
||||||
|
|
||||||
Vector uses the concept of log "sinks" to send logs to a given endpoint. Log sinks may be configured globally or on a per-app basis by specifying a `vector-sink` in DSN form with the `logs:set` command. Specifying a sink value will reload any running vector container.
|
Vector uses the concept of log "sinks" to send logs to a given endpoint. Log sinks may be configured globally or on a per-app basis by specifying a `vector-sink` in DSN form with the `logs:set` command. Specifying a sink value will reload any running vector container.
|
||||||
@@ -172,6 +197,15 @@ Valid values for `SINK_TYPE` include all log vector log sinks, while `SINK_OPTIO
|
|||||||
- `int`: form: `key=int`
|
- `int`: form: `key=int`
|
||||||
- `[string]`: form: `key[]=string`
|
- `[string]`: form: `key[]=string`
|
||||||
- `[int]`: form: `key[]=int`
|
- `[int]`: form: `key[]=int`
|
||||||
- `table`: form: `option[key]=value
|
- `table`: form: `option[key]=value`
|
||||||
|
|
||||||
|
For some sinks - such as the `http` sink - it may be useful to use special characters such as `&`. These characters must be url escaped as per [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986.html).
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# the following command will set the `http` sink with a uri config value
|
||||||
|
# for a uri config value: https://loggerservice.com:1234/?token=abc1234&type=vector
|
||||||
|
# the url quoted version: https%3A//loggerservice.com%3A1234/%3Ftoken%3Dabc1234%26type%3Dvector
|
||||||
|
dokku logs:set test vector-sink "http://?uri=https%3A//loggerservice.com%3A1234/%3Ftoken%3Dabc1234%26type%3Dvector"
|
||||||
|
```
|
||||||
|
|
||||||
Please read the [sink documentation](https://vector.dev/docs/reference/sinks/) for your sink of choice to configure the sink as desired.
|
Please read the [sink documentation](https://vector.dev/docs/reference/sinks/) for your sink of choice to configure the sink as desired.
|
||||||
|
|||||||