Compare commits
660 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2e66cee50f | ||
|
|
61f1a23238 | ||
|
|
d8dc566b35 | ||
|
|
8ee12eaf5c | ||
|
|
fb1420f78f | ||
|
|
ee2e5c426d | ||
|
|
029e1f5f48 | ||
|
|
3dc917253b | ||
|
|
ed152ccd83 | ||
|
|
584be40776 | ||
|
|
a4a90e3c76 | ||
|
|
21a59d7f96 | ||
|
|
f5182aa553 | ||
|
|
928d35ee77 | ||
|
|
d031f569fc | ||
|
|
5b8e8b91e3 | ||
|
|
e2c6cf2527 | ||
|
|
d90135fce6 | ||
|
|
baad9ec79d | ||
|
|
27703e23cf | ||
|
|
af1b2ba450 | ||
|
|
58182f6d38 | ||
|
|
02329b53f6 | ||
|
|
6843b2ae06 | ||
|
|
aa05a95243 | ||
|
|
c496f8abd6 | ||
|
|
b6425ab431 | ||
|
|
9ac76dec2f | ||
|
|
ea95d71e56 | ||
|
|
b1334c7406 | ||
|
|
44e3d38d45 | ||
|
|
ef20b22f54 | ||
|
|
2be6a1724b | ||
|
|
ea55db2747 | ||
|
|
e164f8393a | ||
|
|
1d99e0bc6e | ||
|
|
a64e9514ee | ||
|
|
578afc0ef7 | ||
|
|
6fec401ded | ||
|
|
a644908fbf | ||
|
|
b56495b367 | ||
|
|
4f26913e44 | ||
|
|
bbf9febe30 | ||
|
|
54a12c9c89 | ||
|
|
2cd8e1e61e | ||
|
|
ca33c437d3 | ||
|
|
ef63b28804 | ||
|
|
5958179d86 | ||
|
|
67ef6f98ab | ||
|
|
7025968b74 | ||
|
|
3d4005b3e6 | ||
|
|
5d8fdb31db | ||
|
|
552d08ea88 | ||
|
|
790f087800 | ||
|
|
dda8aed1e2 | ||
|
|
0f3538f158 | ||
|
|
82835e03a2 | ||
|
|
569105d479 | ||
|
|
68d61fba0b | ||
|
|
51e2676c3b | ||
|
|
dc1d9fe92f | ||
|
|
c53e7330b5 | ||
|
|
ee23dac2f3 | ||
|
|
6707e5f1eb | ||
|
|
56ee889295 | ||
|
|
c1b3c73096 | ||
|
|
1f35575a2a | ||
|
|
d8fcabdf40 | ||
|
|
7b2484962b | ||
|
|
1d07801f3c | ||
|
|
cf7d35601d | ||
|
|
99f20a962e | ||
|
|
25925c0ae2 | ||
|
|
4a7db5ce24 | ||
|
|
c8f5ad9029 | ||
|
|
a9e6e96697 | ||
|
|
cc62bc080b | ||
|
|
fbbc967e8d | ||
|
|
a0811c2cb3 | ||
|
|
57e76e29d1 | ||
|
|
ff849cd4f8 | ||
|
|
204517074b | ||
|
|
c6838b645e | ||
|
|
56f25c4855 | ||
|
|
1e559f20e5 | ||
|
|
2336063ca2 | ||
|
|
75539273e3 | ||
|
|
2eb346d50d | ||
|
|
001ae3c83b | ||
|
|
b1802547ae | ||
|
|
62c8cb770e | ||
|
|
22f27ea2d3 | ||
|
|
661dfbbf51 | ||
|
|
29760e8ecd | ||
|
|
63a6e9087f | ||
|
|
b0485495e4 | ||
|
|
01ec08fd79 | ||
|
|
2bee070e78 | ||
|
|
2619c3db08 | ||
|
|
b64c3a1859 | ||
|
|
3d6225406d | ||
|
|
3ddfd2bc7d | ||
|
|
f7acbb1e7c | ||
|
|
e4a74366ba | ||
|
|
309256955d | ||
|
|
0730647af7 | ||
|
|
d494e01c7b | ||
|
|
33a3e6a2fc | ||
|
|
3375474a4c | ||
|
|
a354210f67 | ||
|
|
09ca1f1299 | ||
|
|
707c22eae7 | ||
|
|
78bc2849cb | ||
|
|
68fef56403 | ||
|
|
34b06d488f | ||
|
|
b85bc49f03 | ||
|
|
a1428ceb74 | ||
|
|
69e9511666 | ||
|
|
af3009f0da | ||
|
|
632b26905a | ||
|
|
9cd0644883 | ||
|
|
5c4e1dfc39 | ||
|
|
86da40ba19 | ||
|
|
cee47b4836 | ||
|
|
e6d372f963 | ||
|
|
dce900588e | ||
|
|
ceae555e43 | ||
|
|
84ef557c93 | ||
|
|
4650585ded | ||
|
|
27b82f77a3 | ||
|
|
5449c35dbe | ||
|
|
e13561ec4d | ||
|
|
a90f6bdee8 | ||
|
|
599692446e | ||
|
|
8762bede07 | ||
|
|
da4771e6e4 | ||
|
|
997f04afae | ||
|
|
ba714c189f | ||
|
|
7bce908c2d | ||
|
|
cb62ab02f4 | ||
|
|
c2b78bb2d7 | ||
|
|
e4855941fe | ||
|
|
297853781f | ||
|
|
1c5505f78b | ||
|
|
9d27ff39da | ||
|
|
10e3bac24c | ||
|
|
966ce76122 | ||
|
|
bb8fd39e80 | ||
|
|
277df036e9 | ||
|
|
0127f836fa | ||
|
|
3f7e1d161a | ||
|
|
8b8444fb1f | ||
|
|
6b85374857 | ||
|
|
a2504fadd2 | ||
|
|
1e11ec3911 | ||
|
|
2911218816 | ||
|
|
dfa7d0f78c | ||
|
|
46b6f446fd | ||
|
|
8a719a2880 | ||
|
|
3137c457fa | ||
|
|
57b62f51d3 | ||
|
|
9c891563c3 | ||
|
|
c2d1f80bc4 | ||
|
|
55d7a4a1a0 | ||
|
|
737f54a5c7 | ||
|
|
6fb03eda4e | ||
|
|
6c234c66a3 | ||
|
|
7101d1bf7b | ||
|
|
f377c23403 | ||
|
|
65d840e4bc | ||
|
|
ec538ce1c5 | ||
|
|
d6824c44c7 | ||
|
|
523d7bcf9e | ||
|
|
3821d22b93 | ||
|
|
a80c73fb2c | ||
|
|
3bf677ff9b | ||
|
|
7381cf74c6 | ||
|
|
cb558c1a19 | ||
|
|
6908177095 | ||
|
|
d40b264a40 | ||
|
|
b6d3749f51 | ||
|
|
0cf26ac994 | ||
|
|
e2056e296b | ||
|
|
83b0cf4065 | ||
|
|
1172ac4653 | ||
|
|
dc39e5c0f3 | ||
|
|
2e0f1ac89a | ||
|
|
4fc3ab4b7a | ||
|
|
213f9400ec | ||
|
|
44c8d69096 | ||
|
|
d711c729cf | ||
|
|
874f2dfaf4 | ||
|
|
7fbb86093b | ||
|
|
ec65d97139 | ||
|
|
214dc9b69a | ||
|
|
ea28367689 | ||
|
|
69e79b227d | ||
|
|
ab735333c6 | ||
|
|
6c6d016f1b | ||
|
|
43775d7b91 | ||
|
|
ab51247e3a | ||
|
|
464019f439 | ||
|
|
193798b9e6 | ||
|
|
f0c7985970 | ||
|
|
d656d185ce | ||
|
|
68fd65b25f | ||
|
|
c72ed428a4 | ||
|
|
94926d141f | ||
|
|
7984a8d9a0 | ||
|
|
2acc492906 | ||
|
|
fb851e3e51 | ||
|
|
49d98eb1f2 | ||
|
|
6dadfde948 | ||
|
|
98d0a95ae6 | ||
|
|
d89e2ba2bb | ||
|
|
199e29cc15 | ||
|
|
c4984cd4f8 | ||
|
|
428ad046c6 | ||
|
|
4aa13bdf47 | ||
|
|
4cc44dc5d9 | ||
|
|
7a94b10266 | ||
|
|
215c135487 | ||
|
|
78d24ead09 | ||
|
|
44054ac993 | ||
|
|
66466f6d7c | ||
|
|
57224f16df | ||
|
|
276ae4ea10 | ||
|
|
f47c767736 | ||
|
|
1a5e17bd68 | ||
|
|
e093b04511 | ||
|
|
a3ae54a977 | ||
|
|
badb73a8de | ||
|
|
33f532e022 | ||
|
|
5ffbcf24de | ||
|
|
59f74cbccf | ||
|
|
698979983f | ||
|
|
ca23e42e23 | ||
|
|
8947060fab | ||
|
|
1549f84aa4 | ||
|
|
7a54f13da1 | ||
|
|
7cbfb3c750 | ||
|
|
6ae406609c | ||
|
|
37acfca459 | ||
|
|
6bcb4a016d | ||
|
|
eb6a0dc71d | ||
|
|
580d2dc3ee | ||
|
|
8cc822eed0 | ||
|
|
3f96a250a2 | ||
|
|
d971bb31d7 | ||
|
|
fb73474675 | ||
|
|
4294694be3 | ||
|
|
d4da8aea84 | ||
|
|
35357abc86 | ||
|
|
eb1b8b0f9b | ||
|
|
5007ca1812 | ||
|
|
a97f18c85d | ||
|
|
cca5060725 | ||
|
|
fe5e5c7d9a | ||
|
|
a69454d683 | ||
|
|
53fd5fd475 | ||
|
|
2fdfa65532 | ||
|
|
d0acaa827d | ||
|
|
214fd95c98 | ||
|
|
bdee495a0a | ||
|
|
b8329d76ec | ||
|
|
3a47e5f54d | ||
|
|
555bcbaf1f | ||
|
|
3a333551e5 | ||
|
|
823a83fed8 | ||
|
|
af9dc4604a | ||
|
|
9b4a376f68 | ||
|
|
b1a7032e9f | ||
|
|
85918a9f99 | ||
|
|
066dc29549 | ||
|
|
ddfedfa018 | ||
|
|
e4d0b2ca22 | ||
|
|
2ccb07f509 | ||
|
|
422ac72fa4 | ||
|
|
598ff6a734 | ||
|
|
ff70a98852 | ||
|
|
9cf0dc01a4 | ||
|
|
f209adea69 | ||
|
|
8ec29abc9e | ||
|
|
cb7203c0ed | ||
|
|
928c388f10 | ||
|
|
1533e149fc | ||
|
|
82434256ff | ||
|
|
1da537ac4d | ||
|
|
200d67cfc1 | ||
|
|
0cc46e1b54 | ||
|
|
276b23a14b | ||
|
|
745c16db94 | ||
|
|
41499c640a | ||
|
|
5867c029f6 | ||
|
|
4f3b9b64e3 | ||
|
|
2f5760a680 | ||
|
|
99add3359a | ||
|
|
9b51b76d98 | ||
|
|
59bc4b38cc | ||
|
|
745b8e8e5c | ||
|
|
b13b035cd7 | ||
|
|
659e415f43 | ||
|
|
39d4b2d5d0 | ||
|
|
f46a03518d | ||
|
|
f2d7d897fd | ||
|
|
145b4d7dda | ||
|
|
d8cad25271 | ||
|
|
940f872113 | ||
|
|
115b152ec6 | ||
|
|
9bc9f1f5ce | ||
|
|
1547674de3 | ||
|
|
b0153f7e6b | ||
|
|
09363fdc33 | ||
|
|
81e3024999 | ||
|
|
c3e0f33739 | ||
|
|
3670120404 | ||
|
|
333212b091 | ||
|
|
b6456c07ce | ||
|
|
5b2b4d6ee5 | ||
|
|
66c46fc8ff | ||
|
|
ae2e0d4d2f | ||
|
|
e8a70c14ee | ||
|
|
314521cbca | ||
|
|
d6a24f678e | ||
|
|
bebae24d2f | ||
|
|
ab3e009823 | ||
|
|
1d186a5a81 | ||
|
|
e6953d60e9 | ||
|
|
f8f52c1af0 | ||
|
|
03d156c994 | ||
|
|
3fc24bf1e3 | ||
|
|
400a87868f | ||
|
|
f6a3db9c6d | ||
|
|
52bfbcdc3d | ||
|
|
785ffc0e8e | ||
|
|
3ffa5927b3 | ||
|
|
2f8a7d894b | ||
|
|
27f80a7bd2 | ||
|
|
0a4b6ebbc7 | ||
|
|
a7cac343d1 | ||
|
|
dc8c3c3b39 | ||
|
|
9b0ca017b5 | ||
|
|
e8f803d5d8 | ||
|
|
f31e24768d | ||
|
|
03c51e6e36 | ||
|
|
11a2c547a5 | ||
|
|
f3a564497c | ||
|
|
5c0c48f23e | ||
|
|
357b88e43c | ||
|
|
1c0ca34d12 | ||
|
|
58cd5cf67c | ||
|
|
924361a6a0 | ||
|
|
07cdf04b9c | ||
|
|
dda38faab9 | ||
|
|
7710dc453c | ||
|
|
bad19bff6b | ||
|
|
e4fe5cf232 | ||
|
|
cb793d1dd4 | ||
|
|
e8d3bfd264 | ||
|
|
555f207637 | ||
|
|
6a2287714c | ||
|
|
9f2132ac8f | ||
|
|
8df335fbd9 | ||
|
|
1809b3ca06 | ||
|
|
29a4679ed5 | ||
|
|
46f310ceea | ||
|
|
261a8e53ed | ||
|
|
9c7205c301 | ||
|
|
af835370d2 | ||
|
|
4d24d7f6af | ||
|
|
e0bbef23e7 | ||
|
|
8eb497f835 | ||
|
|
1c807a8f0c | ||
|
|
b12c25f72d | ||
|
|
343032fcf8 | ||
|
|
463601fb1c | ||
|
|
20ee524067 | ||
|
|
2e22f49898 | ||
|
|
d301f68b90 | ||
|
|
ab6efcfcda | ||
|
|
619d898051 | ||
|
|
1e3f130432 | ||
|
|
1983feaba5 | ||
|
|
0e8e2fcc8e | ||
|
|
17170fbb82 | ||
|
|
c589c184ba | ||
|
|
eab5ad191f | ||
|
|
d219f82bf1 | ||
|
|
d753dd0d31 | ||
|
|
2a0c8b7cd9 | ||
|
|
c20ed1ba6c | ||
|
|
5e9cb3f157 | ||
|
|
247591af8e | ||
|
|
6cb5baf6b4 | ||
|
|
091993e3d9 | ||
|
|
8869bbac21 | ||
|
|
909eb33ca5 | ||
|
|
4ef96e8e33 | ||
|
|
cf420fe16e | ||
|
|
20d93752a1 | ||
|
|
ca678f9282 | ||
|
|
6f9012064f | ||
|
|
59b3a5e715 | ||
|
|
19739509ea | ||
|
|
dc52683166 | ||
|
|
a16a14d308 | ||
|
|
459ee7dbb6 | ||
|
|
7549a56473 | ||
|
|
5f6665e29c | ||
|
|
2148dc54a4 | ||
|
|
6c529410de | ||
|
|
87a76c667e | ||
|
|
39c850144c | ||
|
|
5a9509c0bf | ||
|
|
7baed4184e | ||
|
|
894bb06555 | ||
|
|
7ba838486f | ||
|
|
49b8657f3d | ||
|
|
b24452f2ff | ||
|
|
6cac8d2c45 | ||
|
|
ba57919dfe | ||
|
|
29f53da0bb | ||
|
|
9bcf9191fb | ||
|
|
822ac2214c | ||
|
|
98a81f215e | ||
|
|
0372a5b250 | ||
|
|
f5ee946e74 | ||
|
|
e6747e8357 | ||
|
|
5f8b1e0ff0 | ||
|
|
7b209b01f0 | ||
|
|
8961a1efd2 | ||
|
|
fe72bd47d1 | ||
|
|
fb92be97a2 | ||
|
|
c1fbe29803 | ||
|
|
62a1e7c546 | ||
|
|
0312203e01 | ||
|
|
a408a01deb | ||
|
|
0822394c76 | ||
|
|
99da35e6d2 | ||
|
|
c2675dc6a6 | ||
|
|
7b2c7ef598 | ||
|
|
0cf6abe851 | ||
|
|
fb15db11a7 | ||
|
|
0c4d4ff7e2 | ||
|
|
a4d1e7350a | ||
|
|
ad152a5f8b | ||
|
|
747e9fca12 | ||
|
|
43d86f7846 | ||
|
|
0a9e0d18e9 | ||
|
|
2ac0e1ee29 | ||
|
|
32d0390215 | ||
|
|
c7f6597624 | ||
|
|
a5319827c5 | ||
|
|
d0c4ce0a63 | ||
|
|
75e1f72d8d | ||
|
|
056e9301d6 | ||
|
|
9bcff32879 | ||
|
|
52cf42876c | ||
|
|
b0bd00429c | ||
|
|
8b829cf0f6 | ||
|
|
cbadda53d1 | ||
|
|
412468b6eb | ||
|
|
16e06bbf33 | ||
|
|
c6c1d745c3 | ||
|
|
a062f938f1 | ||
|
|
5a699dce08 | ||
|
|
d8e4b7d8f8 | ||
|
|
92e7c76e7a | ||
|
|
cededa6867 | ||
|
|
bd4c201d1a | ||
|
|
05659986cc | ||
|
|
6037e1ea0b | ||
|
|
cbdba71a8b | ||
|
|
718713ca13 | ||
|
|
5cfbef70b2 | ||
|
|
0d3b33bfdf | ||
|
|
4dbdcc0bea | ||
|
|
b3e752c5bb | ||
|
|
5e72bfabad | ||
|
|
8dfee06c31 | ||
|
|
787829e263 | ||
|
|
30b8a25ced | ||
|
|
e23dcb4abe | ||
|
|
1adbcf7e2d | ||
|
|
126a3ed509 | ||
|
|
f33d7f129b | ||
|
|
ab8a957786 | ||
|
|
fe6a0f796e | ||
|
|
76a979e139 | ||
|
|
c23e878e7d | ||
|
|
a433508fb1 | ||
|
|
b19b409dd6 | ||
|
|
cdd5698db9 | ||
|
|
ffc64e7d8b | ||
|
|
4a43eeaaa8 | ||
|
|
c41cf0c4a3 | ||
|
|
859b87fadd | ||
|
|
358da862c8 | ||
|
|
bf44d685a1 | ||
|
|
4503045d8a | ||
|
|
44716c7146 | ||
|
|
8a15779c8d | ||
|
|
a89b8d6213 | ||
|
|
678757d55f | ||
|
|
4c2f939480 | ||
|
|
4d6bd92b24 | ||
|
|
5886339da7 | ||
|
|
64ff701cd8 | ||
|
|
29a72d9aed | ||
|
|
40620538dd | ||
|
|
944c12f734 | ||
|
|
934a6b5cd5 | ||
|
|
aaf4c1d7d1 | ||
|
|
dc865ceb9a | ||
|
|
978179181c | ||
|
|
97ae4bf17e | ||
|
|
2e1b98ff8f | ||
|
|
4e846f53d8 | ||
|
|
5554397658 | ||
|
|
b880029956 | ||
|
|
3c36970655 | ||
|
|
0c8267e0d2 | ||
|
|
98be085425 | ||
|
|
4455b495e0 | ||
|
|
2ff642bd2f | ||
|
|
c745e05382 | ||
|
|
96f9c66144 | ||
|
|
c84089cc11 | ||
|
|
7190270c0e | ||
|
|
7c93c490d0 | ||
|
|
46de39b792 | ||
|
|
03571b200f | ||
|
|
97cf966b22 | ||
|
|
09116cb42b | ||
|
|
1204e8b4c0 | ||
|
|
0646cee6c8 | ||
|
|
baf3d347f0 | ||
|
|
bb019f9bcb | ||
|
|
3688365e5d | ||
|
|
fc942f20c1 | ||
|
|
cf35d913f9 | ||
|
|
cef902e315 | ||
|
|
b382aedcee | ||
|
|
6538f076d2 | ||
|
|
2acc7976d0 | ||
|
|
378a228ab7 | ||
|
|
8c0b069171 | ||
|
|
fd97c1721d | ||
|
|
53b7ce0dc6 | ||
|
|
483612bc10 | ||
|
|
417130a760 | ||
|
|
7cfed12584 | ||
|
|
b77c856120 | ||
|
|
e2cafe1599 | ||
|
|
46bd543bc9 | ||
|
|
41cd4587a7 | ||
|
|
25b702e7d6 | ||
|
|
46641f8fc7 | ||
|
|
a5292abe03 | ||
|
|
db4becf56f | ||
|
|
c0ef4d0e4c | ||
|
|
80b7856732 | ||
|
|
be693fa3cd | ||
|
|
b9bb78fc33 | ||
|
|
37d6e12124 | ||
|
|
db99f8c2be | ||
|
|
a4d3ade82b | ||
|
|
d4cf202d7a | ||
|
|
f8faf51e66 | ||
|
|
99ba76a40f | ||
|
|
31de4dd5a4 | ||
|
|
a1959a7036 | ||
|
|
e8f5b2efcf | ||
|
|
bfc60816e5 | ||
|
|
861b28edb9 | ||
|
|
a77c27d088 | ||
|
|
978644c1f7 | ||
|
|
dbb42cf18c | ||
|
|
b6a917492f | ||
|
|
23efb7295c | ||
|
|
38765ec07d | ||
|
|
2911772244 | ||
|
|
e49cb50e67 | ||
|
|
a0af2139b4 | ||
|
|
9cb847bf23 | ||
|
|
71e5ffac5b | ||
|
|
fbcc667ca0 | ||
|
|
726f92c6e2 | ||
|
|
1b1c42d69f | ||
|
|
e007ee83c5 | ||
|
|
6aee78b640 | ||
|
|
8817955190 | ||
|
|
a82cb6c0ec | ||
|
|
f0b3517e9a | ||
|
|
2130d94fb0 | ||
|
|
f1740b9247 | ||
|
|
8c13bc183b | ||
|
|
da7b4fcb59 | ||
|
|
1717a8da79 | ||
|
|
a4203843a1 | ||
|
|
634307eca6 | ||
|
|
a6439605a1 | ||
|
|
0bb5508c72 | ||
|
|
5c30b2fb38 | ||
|
|
414e630c8b | ||
|
|
d88c7f5319 | ||
|
|
0ea482bace | ||
|
|
3e99c5769b | ||
|
|
3316914e67 | ||
|
|
a8aed16b17 | ||
|
|
ac0ba064ce | ||
|
|
2c9aaadae4 | ||
|
|
5c2bb443bd | ||
|
|
833e136ec5 | ||
|
|
2056914c92 | ||
|
|
f239ca6dd5 | ||
|
|
ffcb7fef06 | ||
|
|
3bb4a0ab09 | ||
|
|
3d8850897f | ||
|
|
fe4d8d76c5 | ||
|
|
610827abe6 | ||
|
|
7eb897798c | ||
|
|
c9438a37d2 | ||
|
|
0f42fbbb4d | ||
|
|
b246f45d86 | ||
|
|
df24091459 | ||
|
|
c23bf5046b | ||
|
|
5b772d6a22 | ||
|
|
6b85d141a1 | ||
|
|
12f5ebf313 | ||
|
|
08b1f4ac04 | ||
|
|
e1e3d91000 | ||
|
|
323e996dd2 | ||
|
|
804f774889 | ||
|
|
24b6c0ac33 | ||
|
|
fc59b39874 | ||
|
|
2c07aa20d6 | ||
|
|
435cc6c793 | ||
|
|
1e75ecfbf6 | ||
|
|
c0b4570bbe | ||
|
|
3ec04b4d9e | ||
|
|
c18af09f52 | ||
|
|
e18340618f | ||
|
|
7ae5c38946 | ||
|
|
adca710a7c | ||
|
|
fecd107955 | ||
|
|
b9a94553f8 | ||
|
|
86628123a4 | ||
|
|
136798cd6e | ||
|
|
a25ddba5f8 | ||
|
|
73e7c70193 | ||
|
|
f14f563c97 | ||
|
|
dab2af48cd | ||
|
|
f37bbecd47 | ||
|
|
ab65ba66cc | ||
|
|
e8ea1519ce | ||
|
|
5d9e7213e2 | ||
|
|
bc4d00d6c7 | ||
|
|
6000bd772a | ||
|
|
848c54c910 |
@@ -8,8 +8,10 @@ RUN apt-get install --no-install-recommends -y build-essential file nano && \
|
|||||||
rm -rf /var/lib/apt/lists/*
|
rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ARG TARGETARCH
|
ARG TARGETARCH
|
||||||
RUN wget https://dl.google.com/go/go1.19.6.linux-${TARGETARCH}.tar.gz && \
|
COPY common.mk common.mk
|
||||||
tar -xvf go1.19.6.linux-${TARGETARCH}.tar.gz && \
|
RUN GOLANG_VERSION=$(grep BUILD_IMAGE common.mk | cut -d' ' -f3 | cut -d':' -f2) && \
|
||||||
|
wget https://dl.google.com/go/go${GOLANG_VERSION}.linux-${TARGETARCH}.tar.gz && \
|
||||||
|
tar -xvf go${GOLANG_VERSION}.linux-${TARGETARCH}.tar.gz && \
|
||||||
mv go /usr/local
|
mv go /usr/local
|
||||||
|
|
||||||
RUN GOROOT=/usr/local/go /usr/local/go/bin/go install golang.org/x/tools/gopls@latest 2>&1
|
RUN GOROOT=/usr/local/go /usr/local/go/bin/go install golang.org/x/tools/gopls@latest 2>&1
|
||||||
|
|||||||
21
.devcontainer/bin/bump-modules
Executable file
21
.devcontainer/bin/bump-modules
Executable file
@@ -0,0 +1,21 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
export GOWORK=off
|
||||||
|
pushd /root/go/src/github.com/dokku/dokku/plugins/ >/dev/null || exit 1
|
||||||
|
for plugin in *; do
|
||||||
|
if [[ ! -f "/root/go/src/github.com/dokku/dokku/plugins/$plugin/go.mod" ]]; then continue; fi
|
||||||
|
echo "$plugin"
|
||||||
|
pushd /root/go/src/github.com/dokku/dokku/plugins/$plugin || exit 1
|
||||||
|
echo "running go mod tidy for $plugin"
|
||||||
|
if ! go mod tidy; then
|
||||||
|
echo "go mod tidy failed for $plugin"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "running go mod download for $plugin"
|
||||||
|
if ! go mod download; then
|
||||||
|
echo "go mod download failed for $plugin"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
popd >/dev/null || exit 1
|
||||||
|
done
|
||||||
|
popd >/dev/null || exit 1
|
||||||
@@ -3,27 +3,7 @@
|
|||||||
install-go-devtools() {
|
install-go-devtools() {
|
||||||
go install github.com/go-delve/delve/cmd/dlv@latest
|
go install github.com/go-delve/delve/cmd/dlv@latest
|
||||||
go install honnef.co/go/tools/cmd/staticcheck@latest
|
go install honnef.co/go/tools/cmd/staticcheck@latest
|
||||||
}
|
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
|
||||||
|
|
||||||
install-go-mods() {
|
|
||||||
local plugin_root="/root/go/src/github.com/dokku/dokku/plugins"
|
|
||||||
|
|
||||||
export GO111MODULE=off
|
|
||||||
echo "-----> Fetching onsi/gomega dependency for tests"
|
|
||||||
go get github.com/onsi/gomega || true
|
|
||||||
|
|
||||||
echo "-----> Fetching spf13/pflag dependency for subcommands"
|
|
||||||
go get github.com/spf13/pflag || true
|
|
||||||
pushd "$plugin_root" >/dev/null || true
|
|
||||||
find "$plugin_root/" -mindepth 1 -maxdepth 1 -type d -printf '%f\n' | while read -r plugin; do
|
|
||||||
pushd "$plugin_root/$plugin" >/dev/null || true
|
|
||||||
if [[ -f "go.mod" ]]; then
|
|
||||||
echo "-----> Fetching dependencies for $plugin plugin"
|
|
||||||
go get || true
|
|
||||||
fi
|
|
||||||
popd >/dev/null || true
|
|
||||||
done
|
|
||||||
popd >/dev/null || true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
setup-ci() {
|
setup-ci() {
|
||||||
@@ -34,7 +14,6 @@ setup-ci() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
install-go-mods
|
|
||||||
install-go-devtools
|
install-go-devtools
|
||||||
setup-ci
|
setup-ci
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,18 +13,25 @@
|
|||||||
"golang.go",
|
"golang.go",
|
||||||
"mads-hartmann.bash-ide-vscode",
|
"mads-hartmann.bash-ide-vscode",
|
||||||
"ms-vscode.makefile-tools",
|
"ms-vscode.makefile-tools",
|
||||||
"sleistner.vscode-fileutils"
|
"sleistner.vscode-fileutils",
|
||||||
|
"ms-azuretools.vscode-docker"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"initializeCommand": ["mkdir", "-p", "tmp/data"],
|
"initializeCommand": [
|
||||||
|
"mkdir",
|
||||||
|
"-p",
|
||||||
|
"tmp/data"
|
||||||
|
],
|
||||||
"mounts": [
|
"mounts": [
|
||||||
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind",
|
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind",
|
||||||
"source=${localWorkspaceFolder}/tmp/data/,target=/mnt/dokku/,type=bind"
|
"source=${localWorkspaceFolder}/tmp/data/,target=/mnt/dokku/,type=bind"
|
||||||
],
|
],
|
||||||
"overrideCommand": false,
|
"overrideCommand": false,
|
||||||
"postCreateCommand": "setup-dev-env",
|
"postCreateCommand": "setup-dev-env",
|
||||||
"runArgs": ["--init"],
|
"runArgs": [
|
||||||
|
"--init"
|
||||||
|
],
|
||||||
"workspaceFolder": "/root/go/src/github.com/dokku/dokku",
|
"workspaceFolder": "/root/go/src/github.com/dokku/dokku",
|
||||||
"workspaceMount": "type=bind,source=${localWorkspaceFolder},target=/root/go/src/github.com/dokku/dokku,consistency=cached"
|
"workspaceMount": "type=bind,source=${localWorkspaceFolder},target=/root/go/src/github.com/dokku/dokku,consistency=cached"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,5 +11,7 @@ tests
|
|||||||
!docs/_build/requirements.txt
|
!docs/_build/requirements.txt
|
||||||
!tests/dhparam.pem
|
!tests/dhparam.pem
|
||||||
!contrib/bash-completion
|
!contrib/bash-completion
|
||||||
|
!contrib/dependencies.json
|
||||||
!contrib/docker
|
!contrib/docker
|
||||||
|
!contrib/update-deb-dependencies
|
||||||
vendor
|
vendor
|
||||||
|
|||||||
@@ -19,3 +19,6 @@ indent_size = 4
|
|||||||
insert_final_newline = true
|
insert_final_newline = true
|
||||||
indent_style = tab
|
indent_style = tab
|
||||||
indent_size = 4
|
indent_size = 4
|
||||||
|
|
||||||
|
[*.md]
|
||||||
|
tab_width = 4
|
||||||
|
|||||||
10
.github/actions/build-image/action.yml
vendored
10
.github/actions/build-image/action.yml
vendored
@@ -25,15 +25,7 @@ runs:
|
|||||||
- name: build docker image
|
- name: build docker image
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
if [[ "${{ inputs.architecture }}" == "linux/arm" ]]; then
|
docker buildx build \
|
||||||
docker buildx build \
|
|
||||||
--platform linux/arm \
|
|
||||||
--progress plain \
|
--progress plain \
|
||||||
--tag "dokku/dokku:latest" \
|
--tag "dokku/dokku:latest" \
|
||||||
.
|
.
|
||||||
else
|
|
||||||
docker buildx build \
|
|
||||||
--progress plain \
|
|
||||||
--tag "dokku/dokku:latest" \
|
|
||||||
.
|
|
||||||
fi
|
|
||||||
|
|||||||
18
.github/dependabot.yml
vendored
18
.github/dependabot.yml
vendored
@@ -85,6 +85,13 @@ updates:
|
|||||||
open-pull-requests-limit: 2
|
open-pull-requests-limit: 2
|
||||||
labels:
|
labels:
|
||||||
- "type: dependencies"
|
- "type: dependencies"
|
||||||
|
- package-ecosystem: gomod
|
||||||
|
directory: "/plugins/ports"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 2
|
||||||
|
labels:
|
||||||
|
- "type: dependencies"
|
||||||
- package-ecosystem: gomod
|
- package-ecosystem: gomod
|
||||||
directory: "/plugins/proxy"
|
directory: "/plugins/proxy"
|
||||||
schedule:
|
schedule:
|
||||||
@@ -120,6 +127,13 @@ updates:
|
|||||||
open-pull-requests-limit: 2
|
open-pull-requests-limit: 2
|
||||||
labels:
|
labels:
|
||||||
- "type: dependencies"
|
- "type: dependencies"
|
||||||
|
- package-ecosystem: gomod
|
||||||
|
directory: "/plugins/scheduler-docker-local"
|
||||||
|
schedule:
|
||||||
|
interval: daily
|
||||||
|
open-pull-requests-limit: 2
|
||||||
|
labels:
|
||||||
|
- "type: dependencies"
|
||||||
- package-ecosystem: gomod
|
- package-ecosystem: gomod
|
||||||
directory: "/plugins/scheduler"
|
directory: "/plugins/scheduler"
|
||||||
schedule:
|
schedule:
|
||||||
@@ -204,10 +218,6 @@ updates:
|
|||||||
open-pull-requests-limit: 10
|
open-pull-requests-limit: 10
|
||||||
labels:
|
labels:
|
||||||
- "type: dependencies"
|
- "type: dependencies"
|
||||||
ignore:
|
|
||||||
- dependency-name: google.golang.org/grpc
|
|
||||||
versions:
|
|
||||||
- "> 1.29.1"
|
|
||||||
- package-ecosystem: pip
|
- package-ecosystem: pip
|
||||||
directory: "/tests/apps/multi"
|
directory: "/tests/apps/multi"
|
||||||
schedule:
|
schedule:
|
||||||
|
|||||||
3
.github/linters/.yamllint.yml
vendored
3
.github/linters/.yamllint.yml
vendored
@@ -3,3 +3,6 @@ extends: default
|
|||||||
|
|
||||||
rules:
|
rules:
|
||||||
line-length: disable
|
line-length: disable
|
||||||
|
|
||||||
|
ignore:
|
||||||
|
- plugins/scheduler-k3s/templates/*
|
||||||
|
|||||||
49
.github/workflows/ci.yml
vendored
49
.github/workflows/ci.yml
vendored
@@ -19,12 +19,12 @@ env:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check-commit:
|
check-commit:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
outputs:
|
outputs:
|
||||||
skip: ${{ steps.check-commit.outputs.skip }}
|
skip: ${{ steps.check-commit.outputs.skip }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
ref: ${{ github.event.pull_request.head.sha }}
|
ref: ${{ github.event.pull_request.head.sha }}
|
||||||
|
|
||||||
@@ -43,7 +43,7 @@ jobs:
|
|||||||
|
|
||||||
build:
|
build:
|
||||||
name: build
|
name: build
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
needs: check-commit
|
needs: check-commit
|
||||||
if: ${{ needs.check-commit.outputs.skip != 'true' }}
|
if: ${{ needs.check-commit.outputs.skip != 'true' }}
|
||||||
outputs:
|
outputs:
|
||||||
@@ -53,14 +53,14 @@ jobs:
|
|||||||
timeout-minutes: 45
|
timeout-minutes: 45
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: set up qemu
|
- name: set up qemu
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
- name: set up docker buildx
|
- name: set up docker buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: build package
|
- name: build package
|
||||||
run: ./tests/ci/setup.sh build
|
run: ./tests/ci/setup.sh build
|
||||||
@@ -83,34 +83,17 @@ jobs:
|
|||||||
build-image-amd64:
|
build-image-amd64:
|
||||||
name: build-image.linux/amd64
|
name: build-image.linux/amd64
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: build-image
|
- name: build-image
|
||||||
uses: ./.github/actions/build-image
|
uses: ./.github/actions/build-image
|
||||||
with:
|
with:
|
||||||
architecture: linux/amd64
|
architecture: linux/amd64
|
||||||
|
|
||||||
build-image-arm:
|
|
||||||
name: build-image.linux/arm
|
|
||||||
needs: build
|
|
||||||
runs-on: buildjet-4vcpu-ubuntu-2204-arm
|
|
||||||
timeout-minutes: 20
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: set up qemu
|
|
||||||
uses: docker/setup-qemu-action@v2
|
|
||||||
|
|
||||||
- name: build-image
|
|
||||||
uses: ./.github/actions/build-image
|
|
||||||
with:
|
|
||||||
architecture: linux/arm
|
|
||||||
|
|
||||||
build-image-arm64:
|
build-image-arm64:
|
||||||
name: build-image.linux/arm64
|
name: build-image.linux/arm64
|
||||||
needs: build
|
needs: build
|
||||||
@@ -118,7 +101,7 @@ jobs:
|
|||||||
timeout-minutes: 20
|
timeout-minutes: 20
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: build-image
|
- name: build-image
|
||||||
uses: ./.github/actions/build-image
|
uses: ./.github/actions/build-image
|
||||||
@@ -128,13 +111,13 @@ jobs:
|
|||||||
unit-tests:
|
unit-tests:
|
||||||
name: unit.${{ matrix.index }}
|
name: unit.${{ matrix.index }}
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.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@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: download packages
|
- name: download packages
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v3
|
||||||
@@ -168,12 +151,12 @@ jobs:
|
|||||||
docker-deploy-tests:
|
docker-deploy-tests:
|
||||||
name: docker
|
name: docker
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: download packages
|
- name: download packages
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v3
|
||||||
@@ -194,7 +177,7 @@ jobs:
|
|||||||
go-tests:
|
go-tests:
|
||||||
name: go.${{ matrix.index }}
|
name: go.${{ matrix.index }}
|
||||||
needs: build
|
needs: build
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -203,7 +186,7 @@ jobs:
|
|||||||
GITHUB_NODE_INDEX: ${{ matrix.index }}
|
GITHUB_NODE_INDEX: ${{ matrix.index }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: download packages
|
- name: download packages
|
||||||
uses: actions/download-artifact@v3
|
uses: actions/download-artifact@v3
|
||||||
@@ -235,7 +218,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-20.04
|
runs-on: ubuntu-22.04
|
||||||
permissions:
|
permissions:
|
||||||
checks: write
|
checks: write
|
||||||
# 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
|
||||||
|
|||||||
22
.github/workflows/codeql-analysis.yml
vendored
22
.github/workflows/codeql-analysis.yml
vendored
@@ -23,10 +23,14 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: '18 22 * * 2'
|
- cron: '18 22 * * 2'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: codeql-analysis-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
analyze:
|
analyze:
|
||||||
name: Analyze
|
name: Analyze
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
@@ -38,11 +42,15 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
# workaround for https://github.com/github/codeql/issues/14235
|
||||||
|
- name: Remove go.work file
|
||||||
|
run: rm go.work
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
uses: github/codeql-action/init@v2
|
uses: github/codeql-action/init@v3
|
||||||
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 +61,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@v2
|
uses: github/codeql-action/autobuild@v3
|
||||||
|
|
||||||
# ℹ️ 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
|
||||||
@@ -62,9 +70,5 @@ jobs:
|
|||||||
# and modify them (or add more) to build your code if your project
|
# and modify them (or add more) to build your code if your project
|
||||||
# uses a compiled language
|
# uses a compiled language
|
||||||
|
|
||||||
# - run: |
|
|
||||||
# make bootstrap
|
|
||||||
# make release
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v2
|
uses: github/codeql-action/analyze@v3
|
||||||
|
|||||||
10
.github/workflows/docs.yml
vendored
10
.github/workflows/docs.yml
vendored
@@ -7,17 +7,21 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: docs-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Cloning repo
|
- name: Cloning repo
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: "Setup python 3.10"
|
- name: "Setup python 3.10"
|
||||||
uses: actions/setup-python@v4
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.10'
|
python-version: '3.10'
|
||||||
|
|
||||||
|
|||||||
34
.github/workflows/lint.yml
vendored
34
.github/workflows/lint.yml
vendored
@@ -10,25 +10,29 @@ on:
|
|||||||
branches:
|
branches:
|
||||||
- 'master'
|
- 'master'
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: lint-${{ github.event.pull_request.number || github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
hadolint:
|
hadolint:
|
||||||
name: hadolint
|
name: hadolint
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
- name: Run hadolint
|
- name: Run hadolint
|
||||||
uses: hadolint/hadolint-action@54c9adbab1582c2ef04b2016b760714a4bfde3cf
|
uses: hadolint/hadolint-action@54c9adbab1582c2ef04b2016b760714a4bfde3cf
|
||||||
# v3.0.0 => 4b5806eb9c6bee4954fc0e0cc3ad6175fc9782c1
|
# v3.0.0 => 4b5806eb9c6bee4954fc0e0cc3ad6175fc9782c1
|
||||||
|
|
||||||
markdown-lint:
|
markdown-lint:
|
||||||
name: markdown-lint
|
name: markdown-lint
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
- name: Setup node
|
- name: Setup node
|
||||||
uses: actions/setup-node@v3
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: '20'
|
node-version: '20'
|
||||||
cache: 'npm'
|
cache: 'npm'
|
||||||
@@ -40,10 +44,10 @@ jobs:
|
|||||||
|
|
||||||
packer:
|
packer:
|
||||||
name: packer
|
name: packer
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
- name: Setup packer
|
- name: Setup packer
|
||||||
uses: hashicorp/setup-packer@main
|
uses: hashicorp/setup-packer@main
|
||||||
with:
|
with:
|
||||||
@@ -54,7 +58,7 @@ jobs:
|
|||||||
PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
PACKER_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Get changed files in the docs folder
|
- name: Get changed files in the docs folder
|
||||||
id: changed-files-specific
|
id: changed-files-specific
|
||||||
uses: tj-actions/changed-files@v38.1.0
|
uses: tj-actions/changed-files@v42.0.2
|
||||||
with:
|
with:
|
||||||
files: contrib/images/digitalocean/**
|
files: contrib/images/digitalocean/**
|
||||||
- name: Run `packer validate`
|
- name: Run `packer validate`
|
||||||
@@ -65,22 +69,22 @@ jobs:
|
|||||||
|
|
||||||
shellcheck:
|
shellcheck:
|
||||||
name: shellcheck
|
name: shellcheck
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
- name: Run shellcheck
|
- name: Run shellcheck
|
||||||
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38
|
uses: ludeeus/action-shellcheck@00cae500b08a931fb5698e11e79bfbd38e612a38
|
||||||
# 1.1.0 => 94e0aab03ca135d11a35e5bfc14e6746dc56e7e9
|
# 1.1.0 => 94e0aab03ca135d11a35e5bfc14e6746dc56e7e9
|
||||||
|
|
||||||
shfmt:
|
shfmt:
|
||||||
name: shfmt
|
name: shfmt
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
- name: Run shfmt
|
- name: Run shfmt
|
||||||
uses: luizm/action-sh-checker@76ab0b22e1f194e4a582edc7969df6485c4e9246
|
uses: luizm/action-sh-checker@c6edb3de93e904488b413636d96c6a56e3ad671a
|
||||||
# v0.5.0 => edd0e45ecff35b05f162052b50df50976c1b74fc
|
# v0.5.0 => edd0e45ecff35b05f162052b50df50976c1b74fc
|
||||||
env:
|
env:
|
||||||
SHFMT_OPTS: -l -bn -ci -i 2 -d
|
SHFMT_OPTS: -l -bn -ci -i 2 -d
|
||||||
@@ -89,10 +93,10 @@ jobs:
|
|||||||
|
|
||||||
yamllint:
|
yamllint:
|
||||||
name: yamllint
|
name: yamllint
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Clone
|
- name: Clone
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
- name: Run yamllint
|
- name: Run yamllint
|
||||||
uses: ibiqlik/action-yamllint@2576378a8e339169678f9939646ee3ee325e845c
|
uses: ibiqlik/action-yamllint@2576378a8e339169678f9939646ee3ee325e845c
|
||||||
# v3.1.1 => 2576378a8e339169678f9939646ee3ee325e845c
|
# v3.1.1 => 2576378a8e339169678f9939646ee3ee325e845c
|
||||||
|
|||||||
34
.github/workflows/release.yml
vendored
34
.github/workflows/release.yml
vendored
@@ -1,44 +1,50 @@
|
|||||||
---
|
---
|
||||||
name: 'release'
|
name: "release"
|
||||||
|
|
||||||
# yamllint disable-line rule:truthy
|
# yamllint disable-line rule:truthy
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
inputs:
|
inputs:
|
||||||
release_type:
|
release_type:
|
||||||
description: 'Release type [build, betafish, patch, minor, major]'
|
description: "Release type"
|
||||||
|
default: "patch"
|
||||||
required: true
|
required: true
|
||||||
default: 'build'
|
type: choice
|
||||||
|
options:
|
||||||
|
- patch
|
||||||
|
- minor
|
||||||
|
- major
|
||||||
|
- build
|
||||||
|
- betafish
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
name: release
|
name: release
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
env:
|
env:
|
||||||
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
PACKAGECLOUD_TOKEN: ${{ secrets.PACKAGECLOUD_TOKEN }}
|
||||||
outputs:
|
outputs:
|
||||||
version: ${{ steps.version.outputs.version }}
|
version: ${{ steps.version.outputs.version }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- uses: ruby/setup-ruby@v1
|
- uses: ruby/setup-ruby@v1
|
||||||
with:
|
with:
|
||||||
ruby-version: 2.6
|
ruby-version: 2.7
|
||||||
|
|
||||||
- name: login to docker hub
|
- name: login to docker hub
|
||||||
uses: docker/login-action@v2
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
|
||||||
- name: set up qemu
|
- name: set up qemu
|
||||||
uses: docker/setup-qemu-action@v2
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
- name: set up docker buildx
|
- name: set up docker buildx
|
||||||
id: buildx
|
id: buildx
|
||||||
uses: docker/setup-buildx-action@v2
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: inspect builder
|
- name: inspect builder
|
||||||
run: |
|
run: |
|
||||||
@@ -74,11 +80,11 @@ jobs:
|
|||||||
|
|
||||||
build-digitalocean:
|
build-digitalocean:
|
||||||
name: build-digitalocean
|
name: build-digitalocean
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
needs: release
|
needs: release
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Setup packer
|
- name: Setup packer
|
||||||
uses: hashicorp/setup-packer@main
|
uses: hashicorp/setup-packer@main
|
||||||
@@ -110,11 +116,11 @@ jobs:
|
|||||||
|
|
||||||
bump-azure:
|
bump-azure:
|
||||||
name: bump-azure
|
name: bump-azure
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
needs: release
|
needs: release
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
- name: Bump Azure Template
|
- name: Bump Azure Template
|
||||||
env:
|
env:
|
||||||
BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
BOT_GITHUB_USERNAME: ${{ secrets.HOMEBREW_GITHUB_USERNAME }}
|
||||||
|
|||||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -12,3 +12,4 @@ stack.tgz
|
|||||||
tmp
|
tmp
|
||||||
coverage.out
|
coverage.out
|
||||||
site
|
site
|
||||||
|
go.work.sum
|
||||||
|
|||||||
24
.golangci-lint.yml
Normal file
24
.golangci-lint.yml
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
---
|
||||||
|
run:
|
||||||
|
timeout: 5m
|
||||||
|
|
||||||
|
linters:
|
||||||
|
disable-all: true
|
||||||
|
|
||||||
|
enable:
|
||||||
|
- errcheck
|
||||||
|
- goconst
|
||||||
|
- gocyclo
|
||||||
|
- gofumpt
|
||||||
|
- gosec
|
||||||
|
- gosimple
|
||||||
|
- govet
|
||||||
|
- ineffassign
|
||||||
|
- misspell
|
||||||
|
- revive
|
||||||
|
- staticcheck
|
||||||
|
- typecheck
|
||||||
|
- unconvert
|
||||||
|
- unparam
|
||||||
|
- unused
|
||||||
|
- whitespace
|
||||||
1
.prettierignore
Normal file
1
.prettierignore
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.md
|
||||||
509
HISTORY.md
509
HISTORY.md
@@ -1,5 +1,514 @@
|
|||||||
# History
|
# History
|
||||||
|
|
||||||
|
## 0.33.2
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.33.2/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.33.2 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #6535: @josegonzalez Properly fetch default vector image if none is passed
|
||||||
|
- #6533: @josegonzalez Ensure all k3s traefik middleware resources are scoped to the process
|
||||||
|
- #6524: @josegonzalez Ensure all copied files always have line endings converted to unix-style
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #6537: @josegonzalez Add the dokku logo as the chart icon
|
||||||
|
- #6527: @josegonzalez Upgrade vector image to 0.35.x
|
||||||
|
- #6534: @josegonzalez Allow specifying an ingress class via chart value
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #6530: @josegonzalez Fix indentation on letsencrypt sections for k3s scheduler docs
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #6532: @josegonzalez Correct issues in tests for vector image log property
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6540: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.5 to 9.5.6 in /docs/_build
|
||||||
|
- #6538: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.0.1 to 42.0.2
|
||||||
|
- #6528: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 42.0.0 to 42.0.1
|
||||||
|
- #6529: @dependabot[bot] chore(deps): bump google.golang.org/protobuf from 1.31.0 to 1.32.0 in /tests/apps/gogrpc
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #6526: @josegonzalez Allow setting the vector image as a global property
|
||||||
|
|
||||||
|
## 0.33.1
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.33.1/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.33.1 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #6520: @josegonzalez Guard against missing healthcheck config
|
||||||
|
- #6519: @josegonzalez Use correct name for cluster-issuers helm chart
|
||||||
|
|
||||||
|
### Refactors
|
||||||
|
|
||||||
|
- #6521: @josegonzalez Install traefik via helm chart directly to avoid issues where traefik silently fails installation
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6523: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.4 to 9.5.5 in /docs/_build
|
||||||
|
- #6522: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.60.1 to 1.61.0 in /tests/apps/gogrpc
|
||||||
|
|
||||||
|
## 0.33.0
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.33.0/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.33.0 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #6466: @josegonzalez Use correct key for migrating global scheduler configuration on upgrade
|
||||||
|
- #6450: @josegonzalez Always set -- on docker run commands internally to avoid parsing flags on specified commands
|
||||||
|
- #6447: @josegonzalez Propagate arm64 build support for development builds
|
||||||
|
- #6445: @josegonzalez Do not strip whitespace when displaying a file for debugging purposes
|
||||||
|
- #6442: @josegonzalez Ignore go.work when bumping modules
|
||||||
|
- #6427: @josegonzalez Add missing gitignore entry for app-json trigger
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #6500: @josegonzalez Add support for custom user namespaces when creating persistent storage directories
|
||||||
|
- #6492: @josegonzalez Add support for multierror when exiting triggers
|
||||||
|
- #6491: @josegonzalez Add wrappers for exec and ssh commands
|
||||||
|
- #6489: @josegonzalez Disable flag parsing for dokku enter
|
||||||
|
- #6469: @josegonzalez Allow generating an ssh deploy key via the git plugin
|
||||||
|
- #6468: @josegonzalez Implement global support for setting proxy type
|
||||||
|
- #6467: @josegonzalez Add ability to customize the registry repo with a template
|
||||||
|
- #6464: @josegonzalez Create helper function for exposing a docker image's working directory
|
||||||
|
- #6462: @josegonzalez Ensure ps:stop has a proper cli header
|
||||||
|
- #6460: @josegonzalez Add a post-registry-login trigger
|
||||||
|
- #6459: @josegonzalez Alias common registry names to docker.io
|
||||||
|
- #6457: @josegonzalez Add the ability to specify the output format when listing ports
|
||||||
|
- #6452: @josegonzalez Add alternative implementation for calling plugin triggers
|
||||||
|
- #6446: @josegonzalez Add support for global-only environment properties
|
||||||
|
- #6443: @josegonzalez Add support for exposing healthchecks in the AppJson struct
|
||||||
|
- #6435: @josegonzalez Implement native k3s scheduler support
|
||||||
|
- #6433: @josegonzalez Add go.work.sum to gitignore
|
||||||
|
- #6432: @josegonzalez Upgrade golang to 1.21.6
|
||||||
|
- #6430: @josegonzalez Reformat devcontainer file
|
||||||
|
- #6428: @josegonzalez Add ms-azuretools.vscode-docker to devcontainer setup
|
||||||
|
- #6313: @josegonzalez Set the platform flag in order to run amd64 images on arm64 deploy targets
|
||||||
|
|
||||||
|
### Refactors
|
||||||
|
|
||||||
|
- #6448: @josegonzalez Return an int32 for scale count
|
||||||
|
- #6444: @josegonzalez Allow setting a custom mode when writing a slice to a file
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #6517: @josegonzalez Remove k3s tutorial from documentation
|
||||||
|
- #6516: @josegonzalez Note that the external kubernetes plugin is deprecated
|
||||||
|
- #6515: @josegonzalez Replace the kubernetes plugin with k3s in the documentation
|
||||||
|
- #6514: @josegonzalez Add notes on k3s replacement of the scheduler-kubernetes plugin
|
||||||
|
- #6461: @josegonzalez Add documentation for implementing scheduler-related commands
|
||||||
|
- #6458: @josegonzalez Add docblocks to appjson structs
|
||||||
|
- #6420: @aochagavia Fix typo in zero downtime documentation
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #6465: @josegonzalez Update haproxy tests so they pass
|
||||||
|
- #6449: @josegonzalez Run ci on ubuntu 22.04
|
||||||
|
- #6431: @josegonzalez Add golanglint-ci testing support
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6513: @dependabot[bot] chore(deps): bump github.com/containerd/containerd from 1.7.6 to 1.7.11 in /plugins/scheduler-k3s
|
||||||
|
- #6512: @josegonzalez Update github.com/gonsi/gomega golang dependency
|
||||||
|
- #6511: @josegonzalez Update crypto and sys golang dependencies
|
||||||
|
- #6494: @dependabot[bot] chore(deps): bump markupsafe from 2.1.3 to 2.1.4 in /docs/_build
|
||||||
|
- #6482: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.3 to 9.5.4 in /docs/_build
|
||||||
|
- #6478: @dependabot[bot] chore(deps): bump golang from 1.21.5 to 1.21.6 in /tests/apps/zombies-dockerfile-tini
|
||||||
|
- #6456: @dependabot[bot] chore(deps): bump google.golang.org/grpc from 1.29.1 to 1.60.1 in /tests/apps/gogrpc
|
||||||
|
- #6454: @dependabot[bot] chore(deps): bump flask from 3.0.0 to 3.0.1 in /tests/apps/python-flask
|
||||||
|
- #6455: @dependabot[bot] chore(deps): bump flask from 3.0.0 to 3.0.1 in /tests/apps/multi
|
||||||
|
- #6453: @josegonzalez Remove ignored dependency from dependabot
|
||||||
|
- #6451: @josegonzalez Update go modules
|
||||||
|
- #6439: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.30.0 to 1.31.0 in /plugins/config
|
||||||
|
- #6438: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.30.0 to 1.31.0 in /plugins/common
|
||||||
|
- #6437: @dependabot[bot] chore(deps): bump beautifulsoup4 from 4.12.2 to 4.12.3 in /docs/_build
|
||||||
|
- #6436: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 41.1.1 to 42.0.0
|
||||||
|
- #6425: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 41.0.1 to 41.1.1
|
||||||
|
- #6424: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.3 to 9.5.4 in /docs/_build
|
||||||
|
- #6421: @josegonzalez chore: bump golang.org/x/sync from 0.5.0 to 0.6.0
|
||||||
|
- #6419: @dependabot[bot] chore(deps): bump jinja2 from 3.1.2 to 3.1.3 in /docs/_build
|
||||||
|
- #6418: @dependabot[bot] chore(deps): bump jinja2 from 3.1.2 to 3.1.3 in /tests/apps/python-flask
|
||||||
|
- #6415: @dependabot[bot] chore(deps): bump golang from 1.21.5 to 1.21.6 in /tests/apps/go-fail-postdeploy
|
||||||
|
- #6414: @dependabot[bot] chore(deps): bump golang from 1.21.5 to 1.21.6 in /tests/apps/gogrpc
|
||||||
|
- #6413: @dependabot[bot] chore(deps): bump golang from 1.21.5 to 1.21.6 in /tests/apps/go-fail-predeploy
|
||||||
|
- #6412: @dependabot[bot] chore(deps): bump golang from 1.21.5 to 1.21.6 in /tests/apps/zombies-dockerfile-no-tini
|
||||||
|
- #6411: @dependabot[bot] chore(deps): bump golang from 1.21.5 to 1.21.6 in /tests/apps/zombies-dockerfile-tini
|
||||||
|
- #6410: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.19.0 to 0.20.0 in /tests/apps/gogrpc
|
||||||
|
- #6406: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.5.0 to 0.6.0 in /plugins/scheduler-docker-local
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #6463: @josegonzalez Use exported function from appjson module instead of manually parsing
|
||||||
|
- #6429: @josegonzalez Use go.work for development purposes
|
||||||
|
|
||||||
|
## 0.32.4
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.32.4/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.32.4 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #6407: @josegonzalez Upgrade ruby to fix the release process
|
||||||
|
- #6394: @josegonzalez Scope the delete of symlinked plugins in debian post-install to the plugin folders
|
||||||
|
|
||||||
|
### Refactors
|
||||||
|
|
||||||
|
- #6388: @Juneezee Replace deprecated `io/ioutil` functions
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #6385: @josegonzalez Fix docblock entries for properties in plugins
|
||||||
|
- #6384: @josegonzalez Cleanup some markdown in documentation
|
||||||
|
- #6365: @josegonzalez Split out archive/image deployment docs into their own file
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #6408: @josegonzalez Add options to the release workflow
|
||||||
|
- #6359: @josegonzalez Update buildpack api for test buildpack
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6399: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.5 to 10.7 in /docs/_build
|
||||||
|
- #6398: @dependabot[bot] chore(deps): bump sinatra from 3.1.0 to 3.2.0 in /tests/apps/ruby
|
||||||
|
- #6395: @dependabot[bot] chore(deps): bump ruby from 3.2.2 to 3.3.0 in /tests/apps/dockerfile-entrypoint
|
||||||
|
- #6391: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.2 to 9.5.3 in /docs/_build
|
||||||
|
- #6392: @dependabot[bot] chore(deps): bump importlib-metadata from 7.0.0 to 7.0.1 in /docs/_build
|
||||||
|
- #6393: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 40.2.3 to 41.0.1
|
||||||
|
- #6387: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.18 to 11.0.19 in /tests/apps/java
|
||||||
|
- #6386: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 40.2.2 to 40.2.3
|
||||||
|
- #6377: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 40.2.1 to 40.2.2
|
||||||
|
- #6380: @dependabot[bot] chore(deps): bump github/codeql-action from 2 to 3
|
||||||
|
- #6379: @dependabot[bot] chore(deps): bump mkdocs-material from 9.5.1 to 9.5.2 in /docs/_build
|
||||||
|
- #6378: @dependabot[bot] chore(deps): bump python from 3.12.0-alpine to 3.12.1-alpine in /docs/_build
|
||||||
|
- #6376: @dependabot[bot] chore(deps): bump mkdocs-material from 9.4.14 to 9.5.1 in /docs/_build
|
||||||
|
- #6371: @dependabot[bot] chore(deps): bump golang from 1.21.4 to 1.21.5 in /tests/apps/gogrpc
|
||||||
|
- #6369: @dependabot[bot] chore(deps): bump golang from 1.21.4 to 1.21.5 in /tests/apps/zombies-dockerfile-tini
|
||||||
|
- #6368: @dependabot[bot] chore(deps): bump golang from 1.21.4 to 1.21.5 in /tests/apps/zombies-dockerfile-no-tini
|
||||||
|
- #6367: @dependabot[bot] chore(deps): bump importlib-metadata from 6.8.0 to 7.0.0 in /docs/_build
|
||||||
|
- #6366: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 40.2.0 to 40.2.1
|
||||||
|
- #6370: @dependabot[bot] chore(deps): bump golang from 1.21.4 to 1.21.5 in /tests/apps/go-fail-predeploy
|
||||||
|
- #6372: @dependabot[bot] chore(deps): bump golang from 1.21.4 to 1.21.5 in /tests/apps/go-fail-postdeploy
|
||||||
|
- #6373: @dependabot[bot] chore(deps): bump actions/setup-python from 4 to 5
|
||||||
|
- #6364: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.18.0 to 0.19.0 in /tests/apps/gogrpc
|
||||||
|
- #6361: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.4 to 10.5 in /docs/_build
|
||||||
|
- #6362: @dependabot[bot] chore(deps): bump mkdocs-material from 9.4.12 to 9.4.14 in /docs/_build
|
||||||
|
- #6360: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 40.1.1 to 40.2.0
|
||||||
|
- #6357: @dependabot[bot] chore(deps): bump mkdocs-material-extensions from 1.3 to 1.3.1 in /docs/_build
|
||||||
|
- #6355: @dependabot[bot] chore(deps): bump pygments from 2.16.1 to 2.17.2 in /docs/_build
|
||||||
|
- #6358: @dependabot[bot] chore(deps): bump mkdocs-material from 9.4.8 to 9.4.12 in /docs/_build
|
||||||
|
- #6348: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.3.1 to 10.4 in /docs/_build
|
||||||
|
|
||||||
|
## 0.32.3
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.32.3/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.32.3 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #6345: @josegonzalez Use updated pre-build trigger for builder-herokuish
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #6346: @josegonzalez Update all go modules and add a command to bump modules
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #6339: @nschlemm Fixed link to vector sink documentation
|
||||||
|
- #6314: @josegonzalez Remove reference to DOKKU_SCHEDULER environment variable in favor of scheduler:set
|
||||||
|
- #6317: @edmorley Replace deprecated builder reference in persistent-storage.md
|
||||||
|
- #6325: @josegonzalez Add documentation on openresty includes
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6343: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.17.0 to 0.18.0 in /tests/apps/gogrpc
|
||||||
|
- #6338: @dependabot[bot] chore(deps): bump golang from 1.21.3 to 1.21.4 in /tests/apps/go-fail-postdeploy
|
||||||
|
- #6337: @dependabot[bot] chore(deps): bump golang from 1.21.3 to 1.21.4 in /tests/apps/gogrpc
|
||||||
|
- #6336: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 40.0.2 to 40.1.1
|
||||||
|
- #6335: @dependabot[bot] chore(deps): bump golang from 1.21.3 to 1.21.4 in /tests/apps/go-fail-predeploy
|
||||||
|
- #6334: @dependabot[bot] chore(deps): bump golang from 1.21.3 to 1.21.4 in /tests/apps/zombies-dockerfile-tini
|
||||||
|
- #6333: @dependabot[bot] chore(deps): bump golang from 1.21.3 to 1.21.4 in /tests/apps/zombies-dockerfile-no-tini
|
||||||
|
- #6328: @dependabot[bot] chore(deps): bump mkdocs-material from 9.4.7 to 9.4.8 in /docs/_build
|
||||||
|
- #6320: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.17 to 11.0.18 in /tests/apps/java
|
||||||
|
- #6318: @dependabot[bot] chore(deps): bump mkdocs-material from 9.4.6 to 9.4.7 in /docs/_build
|
||||||
|
- #6322: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 40.0.0 to 40.0.2
|
||||||
|
- #6323: @dependabot[bot] chore(deps): bump django from 4.1.10 to 4.1.13 in /tests/apps/dockerfile-release
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #6315: @josegonzalez Correct key in dependency file to fix docker-container-healthchecker installs on local arm64 servers
|
||||||
|
|
||||||
|
## 0.32.2
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.32.2/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.32.2 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #6324: @josegonzalez Update openresty image to 0.6.0
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #6316: @holamendi Fix docs app-exists plugin trigger description
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6307: @dependabot[bot] chore(deps): bump luizm/action-sh-checker from 0.7.0 to 0.8.0
|
||||||
|
- #6308: @dependabot[bot] chore(deps): bump werkzeug from 3.0.0 to 3.0.1 in /tests/apps/python-flask
|
||||||
|
- #6310: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.28.1 to 1.29.0 in /plugins/config
|
||||||
|
- #6311: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 39.2.4 to 40.0.0
|
||||||
|
|
||||||
|
## 0.32.1
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.32.1/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.32.1 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #6286: @josegonzalez Remove trailing quote on openresty letsencrypt email
|
||||||
|
- #6287: @josegonzalez Recursively delete old custom openresty includes
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #6303: @josegonzalez feat: add the ability to specify location-block includes
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #6288: @josegonzalez Add missing link to nixpacks builder
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6306: @dependabot[bot] chore(deps): bump org.apache.maven.plugins:maven-dependency-plugin from 3.6.0 to 3.6.1 in /tests/apps/java
|
||||||
|
- #6301: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.28.0 to 1.28.1 in /plugins/config
|
||||||
|
- #6304: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 39.2.3 to 39.2.4
|
||||||
|
- #6305: @dependabot[bot] chore(deps): bump actions/setup-node from 3 to 4
|
||||||
|
- #6297: @dependabot[bot] chore(deps): bump node from 20-alpine to 21-alpine in /tests/apps/dockerfile-procfile
|
||||||
|
- #6292: @dependabot[bot] chore(deps): bump node from 20-alpine to 21-alpine in /tests/apps/dockerfile-procfile-bad
|
||||||
|
- #6293: @dependabot[bot] chore(deps): bump node from 20-alpine to 21-alpine in /tests/apps/dockerfile
|
||||||
|
- #6294: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.3 to 10.3.1 in /docs/_build
|
||||||
|
- #6295: @dependabot[bot] chore(deps): bump node from 20-alpine to 21-alpine in /tests/apps/dockerfile-app-json-formations
|
||||||
|
- #6296: @dependabot[bot] chore(deps): bump node from 20-alpine to 21-alpine in /tests/apps/dockerfile-noexpose
|
||||||
|
- #6289: @dependabot[bot] chore(deps): bump mkdocs-material-extensions from 1.2 to 1.3 in /docs/_build
|
||||||
|
- #6290: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 39.2.2 to 39.2.3
|
||||||
|
|
||||||
|
## 0.32.0
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.32.0/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.32.0 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [0.32.0 migration guide](/docs/appendices/0.32.0-migration-guide.md) for more information on migrating to 0.32.0.
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #6277: @josegonzalez Run ps:restore in parallel by default
|
||||||
|
- #6276: @josegonzalez Warn when incorrect interface/port in use for web processes
|
||||||
|
- #6132: @josegonzalez Add the ability to specify a custom mailto for all cron output
|
||||||
|
- #6124: @josegonzalez Add a shell function to check if a plugin trigger exists
|
||||||
|
- #5348: @josegonzalez Add nixpacks builder support
|
||||||
|
|
||||||
|
### Removals
|
||||||
|
|
||||||
|
- #6283: @josegonzalez Remove deprecated proxy-ports functions and and plugin subcommands
|
||||||
|
|
||||||
|
### Deprecations
|
||||||
|
|
||||||
|
- #6127: @josegonzalez Deprecate the builder-specific pre-release-* triggers in favor of a global pre-release-builder trigger
|
||||||
|
- #6126: @josegonzalez Deprecate the builder-specific post-build-* triggers in favor of a global post-build trigger
|
||||||
|
- #6125: @josegonzalez Deprecate the builder-specific pre-build-* triggers in favor of a global pre-build trigger
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #6284: @josegonzalez Document future removal of deprecated CHECKS file format
|
||||||
|
- #6123: @josegonzalez Add a migration guide for 0.32.x
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6285: @dependabot[bot] chore(deps): bump mkdocs-material from 9.4.5 to 9.4.6 in /docs/_build
|
||||||
|
- #6281: @josegonzalez Upgrade golang to 1.21
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #6155: @josegonzalez Remove ARM support
|
||||||
|
|
||||||
|
## 0.31.5
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.31.5/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.31.5 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #6275: @josegonzalez Update message referencing CHECKS file usage to app.json
|
||||||
|
- #6273: @josegonzalez Clean up local build images immediately after an image is released
|
||||||
|
|
||||||
|
### New Features
|
||||||
|
|
||||||
|
- #6274: @josegonzalez Add more version output to dokku report command
|
||||||
|
- #6255: @josegonzalez Add ci concurrency to linting workflow
|
||||||
|
- #6253: @josegonzalez Add ci concurrency to doc building
|
||||||
|
- #6254: @josegonzalez Add ci concurrency to codeql analysis
|
||||||
|
- #6222: @josegonzalez Install docker-buildx-plugin to silence buildx warnings
|
||||||
|
|
||||||
|
### Refactors
|
||||||
|
|
||||||
|
- #6257: @josegonzalez Manage Dokku system dependencies in a single file
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #6271: @josegonzalez Update list of official, community, and deprecated plugins
|
||||||
|
- #6224: @joeyates Correct typo in example app.json for healthchecks
|
||||||
|
- #6207: @AlejandroAkbal Update port clearing command in Dockerfile deploy documentation
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #6278: @josegonzalez Remove pack installation from builder-lambda tests
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6269: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.14.0 to 0.17.0 in /plugins/common
|
||||||
|
- #6270: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 39.2.1 to 39.2.2
|
||||||
|
- #6262: @dependabot[bot] chore(deps): bump golang from 1.21.2 to 1.21.3 in /tests/apps/zombies-dockerfile-no-tini
|
||||||
|
- #6263: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.16.0 to 0.17.0 in /tests/apps/gogrpc
|
||||||
|
- #6264: @dependabot[bot] chore(deps): bump golang from 1.21.2 to 1.21.3 in /tests/apps/zombies-dockerfile-tini
|
||||||
|
- #6265: @dependabot[bot] chore(deps): bump golang from 1.21.2 to 1.21.3 in /tests/apps/go-fail-predeploy
|
||||||
|
- #6259: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.16 to 11.0.17 in /tests/apps/java
|
||||||
|
- #6260: @dependabot[bot] chore(deps): bump mkdocs-material from 9.4.4 to 9.4.5 in /docs/_build
|
||||||
|
- #6261: @dependabot[bot] chore(deps): bump golang from 1.21.2 to 1.21.3 in /tests/apps/gogrpc
|
||||||
|
- #6266: @dependabot[bot] chore(deps): bump golang from 1.21.2 to 1.21.3 in /tests/apps/go-fail-postdeploy
|
||||||
|
- #6258: @dependabot[bot] chore(deps): update markdown requirement from <3.5,>=3.2.1 to >=3.2.1,<3.6 in /docs/_build
|
||||||
|
- #6256: @josegonzalez chore: bump github.com/otiai10/copy and golang.org/x/sync
|
||||||
|
- #6241: @dependabot[bot] chore(deps): bump python from 3.11.5-alpine to 3.12.0-alpine in /docs/_build
|
||||||
|
- #6252: @dependabot[bot] chore(deps): bump mkdocs-material from 9.4.2 to 9.4.4 in /docs/_build
|
||||||
|
- #6235: @dependabot[bot] chore(deps): bump packaging from 23.1 to 23.2 in /docs/_build
|
||||||
|
- #6232: @dependabot[bot] chore(deps): bump werkzeug from 2.3.7 to 3.0.0 in /tests/apps/python-flask
|
||||||
|
- #6231: @dependabot[bot] chore(deps): bump flask from 2.3.3 to 3.0.0 in /tests/apps/python-flask
|
||||||
|
- #6248: @dependabot[bot] chore(deps): bump golang from 1.21.1 to 1.21.2 in /tests/apps/gogrpc
|
||||||
|
- #6251: @dependabot[bot] chore(deps): bump golang from 1.21.1 to 1.21.2 in /tests/apps/zombies-dockerfile-tini
|
||||||
|
- #6250: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.15.0 to 0.16.0 in /tests/apps/gogrpc
|
||||||
|
- #6249: @dependabot[bot] chore(deps): bump golang from 1.21.1 to 1.21.2 in /tests/apps/go-fail-predeploy
|
||||||
|
- #6247: @dependabot[bot] chore(deps): bump golang from 1.21.1 to 1.21.2 in /tests/apps/zombies-dockerfile-no-tini
|
||||||
|
- #6246: @dependabot[bot] chore(deps): bump golang from 1.21.1 to 1.21.2 in /tests/apps/go-fail-postdeploy
|
||||||
|
- #6245: @dependabot[bot] chore(deps): bump golang.org/x/sync from 0.3.0 to 0.4.0 in /plugins/scheduler-docker-local
|
||||||
|
- #6233: @dependabot[bot] chore(deps): bump flask from 2.3.3 to 3.0.0 in /tests/apps/multi
|
||||||
|
- #6239: @dependabot[bot] chore(deps): bump github.com/otiai10/copy from 1.12.0 to 1.14.0 in /plugins/ps
|
||||||
|
- #6234: @dependabot[bot] chore(deps): bump github.com/otiai10/copy from 1.12.0 to 1.14.0 in /plugins/builder
|
||||||
|
- #6240: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 39.2.0 to 39.2.1
|
||||||
|
- #6228: @josegonzalez Update all go modules and ensure all are tracked in dependabot
|
||||||
|
- #6227: @dependabot[bot] chore(deps): bump github.com/onsi/gomega from 1.27.10 to 1.28.0 in /plugins/common
|
||||||
|
- #6216: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 39.1.2 to 39.2.0
|
||||||
|
- #6217: @dependabot[bot] chore(deps): bump mkdocs-material from 9.4.1 to 9.4.2 in /docs/_build
|
||||||
|
- #6215: @dependabot[bot] chore(deps): bump mkdocs-material from 9.3.1 to 9.4.1 in /docs/_build
|
||||||
|
- #6214: @dependabot[bot] chore(deps): bump mkdocs-material-extensions from 1.1.1 to 1.2 in /docs/_build
|
||||||
|
- #6209: @dependabot[bot] chore(deps): bump zipp from 3.16.2 to 3.17.0 in /docs/_build
|
||||||
|
- #6211: @dependabot[bot] chore(deps): bump mkdocs from 1.5.2 to 1.5.3 in /docs/_build
|
||||||
|
- #6213: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 39.0.2 to 39.1.2
|
||||||
|
- #6202: @dependabot[bot] chore(deps): bump docker/setup-buildx-action from 2 to 3
|
||||||
|
- #6199: @dependabot[bot] chore(deps): bump docker/login-action from 2 to 3
|
||||||
|
- #6200: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 39.0.0 to 39.0.2
|
||||||
|
- #6201: @dependabot[bot] chore(deps): bump docker/setup-qemu-action from 2 to 3
|
||||||
|
- #6203: @dependabot[bot] chore(deps): bump mkdocs-material from 9.2.8 to 9.3.1 in /docs/_build
|
||||||
|
|
||||||
|
## 0.31.4
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.31.4/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.31.4 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Documentation
|
||||||
|
|
||||||
|
- #5958: @gamedevsam Update command used to retrieve image digest when image is not pushed to a registry
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6194: @dependabot[bot] chore(deps): bump golang from 1.21.0 to 1.21.1 in /tests/apps/go-fail-predeploy
|
||||||
|
- #6197: @dependabot[bot] chore(deps): bump golang from 1.21.0 to 1.21.1 in /tests/apps/gogrpc
|
||||||
|
- #6195: @dependabot[bot] chore(deps): bump golang from 1.21.0 to 1.21.1 in /tests/apps/go-fail-postdeploy
|
||||||
|
- #6196: @dependabot[bot] chore(deps): bump golang from 1.21.0 to 1.21.1 in /tests/apps/zombies-dockerfile-tini
|
||||||
|
- #6193: @dependabot[bot] chore(deps): bump golang from 1.21.0 to 1.21.1 in /tests/apps/zombies-dockerfile-no-tini
|
||||||
|
- #6190: @dependabot[bot] chore(deps): bump golang.org/x/net from 0.14.0 to 0.15.0 in /tests/apps/gogrpc
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- #6191: @josegonzalez chore: remove debug logging from git plugin
|
||||||
|
|
||||||
|
## 0.31.3
|
||||||
|
|
||||||
|
Install/update via the bootstrap script:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget -NP . https://dokku.com/install/v0.31.3/bootstrap.sh
|
||||||
|
sudo DOKKU_TAG=v0.31.3 bash bootstrap.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
- #6179: @rct-k Fix build cache for herokuish-built apps
|
||||||
|
|
||||||
|
### Tests
|
||||||
|
|
||||||
|
- #6177: @maxvisser Update shellcheck junit integration for newer version of shellcheck
|
||||||
|
|
||||||
|
### Dependencies
|
||||||
|
|
||||||
|
- #6186: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.2.1 to 10.3 in /docs/_build
|
||||||
|
- #6184: @dependabot[bot] chore(deps): bump soupsieve from 2.4.1 to 2.5 in /docs/_build
|
||||||
|
- #6183: @dependabot[bot] chore(deps): bump actions/checkout from 3 to 4
|
||||||
|
- #6187: @dependabot[bot] chore(deps): bump mkdocs-material from 9.2.6 to 9.2.8 in /docs/_build
|
||||||
|
- #6188: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 38.2.0 to 39.0.0
|
||||||
|
- #6173: @dependabot[bot] chore(deps): bump org.eclipse.jetty:jetty-servlet from 11.0.15 to 11.0.16 in /tests/apps/java
|
||||||
|
- #6174: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 38.1.3 to 38.2.0
|
||||||
|
- #6175: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.2 to 10.2.1 in /docs/_build
|
||||||
|
- #6176: @dependabot[bot] chore(deps): bump mkdocs-material from 9.2.5 to 9.2.6 in /docs/_build
|
||||||
|
- #6171: @dependabot[bot] chore(deps): bump pymdown-extensions from 10.1 to 10.2 in /docs/_build
|
||||||
|
- #6168: @dependabot[bot] chore(deps): bump tj-actions/changed-files from 38.1.0 to 38.1.3
|
||||||
|
- #6170: @dependabot[bot] chore(deps): bump mkdocs-material from 9.2.3 to 9.2.5 in /docs/_build
|
||||||
|
- #6169: @dependabot[bot] chore(deps): bump python from 3.11.4-alpine to 3.11.5-alpine in /docs/_build
|
||||||
|
|
||||||
## 0.31.2
|
## 0.31.2
|
||||||
|
|
||||||
Install/update via the bootstrap script:
|
Install/update via the bootstrap script:
|
||||||
|
|||||||
25
Makefile
25
Makefile
@@ -2,23 +2,14 @@ DOKKU_VERSION ?= master
|
|||||||
|
|
||||||
TARGETARCH ?= amd64
|
TARGETARCH ?= amd64
|
||||||
|
|
||||||
DOCKER_IMAGE_LABELER_VERSION ?= 0.6.1
|
DOCKER_IMAGE_LABELER_URL ?= $(shell jq -r --arg name docker-image-labeler --arg arch $(TARGETARCH) '.dependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||||
DOCKER_CONTAINER_HEALTHCHECKER_VERSION ?= 0.6.4
|
DOCKER_CONTAINER_HEALTHCHECKER_URL ?= $(shell jq -r --arg name docker-container-healthchecker --arg arch $(TARGETARCH) '.dependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||||
HEROKUISH_VERSION ?= 0.7.1
|
LAMBDA_BUILDER_URL ?= $(shell jq -r --arg name lambda-builder --arg arch $(TARGETARCH) '.dependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||||
LAMBDA_BUILDER_VERSION ?= 0.5.0
|
NETRC_URL ?= $(shell jq -r --arg name netrc --arg arch $(TARGETARCH) '.dependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||||
NETRC_VERSION ?= 0.7.1
|
PLUGN_URL ?= $(shell jq -r --arg name plugn --arg arch $(TARGETARCH) '.predependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||||
PLUGN_VERSION ?= 0.12.0
|
PROCFILE_UTIL_URL ?= $(shell jq -r --arg name procfile-util --arg arch $(TARGETARCH) '.dependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||||
PROCFILE_VERSION ?= 0.16.0
|
SIGIL_URL ?= $(shell jq -r --arg name gliderlabs-sigil --arg arch $(TARGETARCH) '.predependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||||
SIGIL_VERSION ?= 0.10.1
|
SSHCOMMAND_URL ?= $(shell jq -r --arg name sshcommand --arg arch $(TARGETARCH) '.dependencies[] | select(.name == $$name) | .urls[$$arch]' contrib/dependencies.json)
|
||||||
SSHCOMMAND_VERSION ?= 0.17.1
|
|
||||||
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
|
|
||||||
DOCKER_CONTAINER_HEALTHCHECKER_URL ?= https://github.com/dokku/docker-container-healthchecker/releases/download/v${DOCKER_CONTAINER_HEALTHCHECKER_VERSION}/docker-container-healthchecker_${DOCKER_CONTAINER_HEALTHCHECKER_VERSION}_linux_${TARGETARCH}.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
|
|
||||||
STACK_URL ?= https://github.com/gliderlabs/herokuish.git
|
STACK_URL ?= https://github.com/gliderlabs/herokuish.git
|
||||||
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-22
|
PREBUILT_STACK_URL ?= gliderlabs/herokuish:latest-22
|
||||||
DOKKU_LIB_ROOT ?= /var/lib/dokku
|
DOKKU_LIB_ROOT ?= /var/lib/dokku
|
||||||
|
|||||||
@@ -86,8 +86,8 @@ Otherwise, you will need to import the keypair manually after installation using
|
|||||||
To install the latest stable release, run the following commands as a user who has access to `sudo`:
|
To install the latest stable release, run the following commands as a user who has access to `sudo`:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
wget -NP . https://dokku.com/install/v0.31.2/bootstrap.sh
|
wget -NP . https://dokku.com/install/v0.33.2/bootstrap.sh
|
||||||
sudo DOKKU_TAG=v0.31.2 bash bootstrap.sh
|
sudo DOKKU_TAG=v0.33.2 bash bootstrap.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
You can then proceed to configure your server domain (via `dokku domains:set-global`) and user access (via `dokku ssh-keys:add`) to complete the installation.
|
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.
|
||||||
|
|||||||
@@ -185,16 +185,16 @@ install-dokku-from-deb-package() {
|
|||||||
wget -nv -O - https://get.docker.com/ | sh
|
wget -nv -O - https://get.docker.com/ | sh
|
||||||
fi
|
fi
|
||||||
|
|
||||||
OS_ID="$(lsb_release -cs 2>/dev/null || echo "bionic")"
|
OS_ID="$(lsb_release -cs 2>/dev/null || echo "jammy")"
|
||||||
if ! in-array "$DOKKU_DISTRO" "debian" "ubuntu" "raspbian"; then
|
if ! in-array "$DOKKU_DISTRO" "debian" "ubuntu" "raspbian"; then
|
||||||
DOKKU_DISTRO="ubuntu"
|
DOKKU_DISTRO="ubuntu"
|
||||||
OS_ID="bionic"
|
OS_ID="jammy"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
|
if [[ "$DOKKU_DISTRO" == "ubuntu" ]]; then
|
||||||
OS_IDS=("bionic" "focal" "jammy")
|
OS_IDS=("focal" "jammy")
|
||||||
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
if ! in-array "$OS_ID" "${OS_IDS[@]}"; then
|
||||||
OS_ID="bionic"
|
OS_ID="jammy"
|
||||||
fi
|
fi
|
||||||
elif [[ "$DOKKU_DISTRO" == "debian" ]]; then
|
elif [[ "$DOKKU_DISTRO" == "debian" ]]; then
|
||||||
OS_IDS=("stretch" "buster" "bullseye" "bookworm")
|
OS_IDS=("stretch" "buster" "bullseye" "bookworm")
|
||||||
|
|||||||
10
common.mk
10
common.mk
@@ -1,7 +1,7 @@
|
|||||||
GO_ARGS ?=
|
GO_ARGS ?=
|
||||||
GO_PLUGIN_MAKE_TARGET ?= build
|
GO_PLUGIN_MAKE_TARGET ?= build
|
||||||
GO_REPO_ROOT := /go/src/github.com/dokku/dokku
|
GO_REPO_ROOT := /go/src/github.com/dokku/dokku
|
||||||
BUILD_IMAGE := golang:1.19.6
|
BUILD_IMAGE := golang:1.21.6
|
||||||
GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache
|
GO_BUILD_CACHE ?= /tmp/dokku-go-build-cache
|
||||||
GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod
|
GO_MOD_CACHE ?= /tmp/dokku-go-mod-mod
|
||||||
GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT)
|
GO_ROOT_MOUNT ?= $$PWD/../..:$(GO_REPO_ROOT)
|
||||||
@@ -21,17 +21,17 @@ build-in-docker: clean
|
|||||||
-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)' CGO_ENABLED=0 GOOS=linux GOARCH=$(GOARCH) make -j4 $(GO_PLUGIN_MAKE_TARGET)" || exit $$?
|
bash -c "GO_ARGS='$(GO_ARGS)' CGO_ENABLED=0 GOOS=linux GOARCH=$(GOARCH) GOWORK=off make -j4 $(GO_PLUGIN_MAKE_TARGET)" || exit $$?
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BUILD)
|
rm -rf $(BUILD)
|
||||||
find . -xtype l -delete
|
find . -xtype l -delete
|
||||||
|
|
||||||
commands: **/**/commands.go
|
commands: **/**/commands.go
|
||||||
go build -ldflags="-s -w" $(GO_ARGS) -o commands src/commands/commands.go
|
GOARCH=$(GOARCH) go build -ldflags="-s -w" $(GO_ARGS) -o commands src/commands/commands.go
|
||||||
|
|
||||||
subcommands:
|
subcommands:
|
||||||
go build -ldflags="-s -w" $(GO_ARGS) -o subcommands/subcommands src/subcommands/subcommands.go
|
GOARCH=$(GOARCH) go build -ldflags="-s -w" $(GO_ARGS) -o subcommands/subcommands src/subcommands/subcommands.go
|
||||||
$(MAKE) $(SUBCOMMANDS)
|
$(MAKE) $(SUBCOMMANDS)
|
||||||
|
|
||||||
subcommands/%:
|
subcommands/%:
|
||||||
@@ -41,7 +41,7 @@ src-clean:
|
|||||||
rm -rf .gitignore src vendor Makefile *.go glide.* go.sum go.mod
|
rm -rf .gitignore src vendor Makefile *.go glide.* go.sum go.mod
|
||||||
|
|
||||||
triggers:
|
triggers:
|
||||||
go build -ldflags="-s -w" $(GO_ARGS) -o triggers src/triggers/triggers.go
|
GOARCH=$(GOARCH) go build -ldflags="-s -w" $(GO_ARGS) -o triggers src/triggers/triggers.go
|
||||||
$(MAKE) $(TRIGGERS)
|
$(MAKE) $(TRIGGERS)
|
||||||
|
|
||||||
triggers/%:
|
triggers/%:
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ FROM ubuntu:20.04
|
|||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
RUN apt-get update -qq && apt-get -qq -y --no-install-recommends install ca-certificates curl gcc git build-essential wget ruby-dev lintian rpm help2man man-db sudo
|
RUN apt-get update -qq && apt-get -qq -y --no-install-recommends install ca-certificates curl gcc git jq build-essential wget ruby-dev lintian python3 rpm help2man man-db sudo
|
||||||
RUN curl -sL -o /usr/local/share/ca-certificates/GlobalSignRootCA_R3.crt https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
|
RUN curl -sL -o /usr/local/share/ca-certificates/GlobalSignRootCA_R3.crt https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/GlobalSignRootCA_R3.pem
|
||||||
RUN update-ca-certificates
|
RUN update-ca-certificates
|
||||||
RUN command -v fpm || gem install fpm
|
RUN command -v fpm || gem install fpm
|
||||||
|
|||||||
@@ -1,25 +1,27 @@
|
|||||||
FROM dokku/build-base:0.0.1 AS builder
|
FROM dokku/build-base:0.1.2 AS builder
|
||||||
|
|
||||||
ENV DEBIAN_FRONTEND=noninteractive
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
ARG GOLANG_VERSION
|
ARG GOLANG_VERSION
|
||||||
|
|
||||||
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux.tar.gz "https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-$(dpkg --print-architecture).tar.gz" \
|
|
||||||
&& tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux.tar.gz \
|
|
||||||
&& cp /usr/local/go/bin/* /usr/local/bin
|
|
||||||
|
|
||||||
ARG WORKDIR=/go/src/github.com/dokku/dokku
|
ARG WORKDIR=/go/src/github.com/dokku/dokku
|
||||||
|
|
||||||
WORKDIR ${WORKDIR}
|
WORKDIR ${WORKDIR}
|
||||||
|
|
||||||
|
RUN wget -qO /tmp/go${GOLANG_VERSION}.linux.tar.gz "https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-$(dpkg --print-architecture).tar.gz" \
|
||||||
|
&& tar -C /usr/local -xzf /tmp/go${GOLANG_VERSION}.linux.tar.gz \
|
||||||
|
&& cp /usr/local/go/bin/* /usr/local/bin \
|
||||||
|
&& mkdir -p ${WORKDIR}/contrib
|
||||||
|
|
||||||
COPY Makefile ${WORKDIR}/
|
COPY Makefile ${WORKDIR}/
|
||||||
COPY *.mk ${WORKDIR}/
|
COPY *.mk ${WORKDIR}/
|
||||||
|
COPY contrib/dependencies.json ${WORKDIR}/contrib/dependencies.json
|
||||||
|
|
||||||
RUN make deb-setup sshcommand plugn
|
RUN make deb-setup sshcommand plugn
|
||||||
|
|
||||||
COPY . ${WORKDIR}
|
COPY . ${WORKDIR}
|
||||||
|
|
||||||
ENV GOPATH=/go
|
ENV GOPATH=/go
|
||||||
|
ENV GOROOT=/usr/local/go
|
||||||
|
|
||||||
FROM builder as amd64
|
FROM builder as amd64
|
||||||
|
|
||||||
@@ -36,29 +38,9 @@ RUN PLUGIN_MAKE_TARGET=${PLUGIN_MAKE_TARGET} \
|
|||||||
make version copyfiles \
|
make version copyfiles \
|
||||||
&& make deb-dokku
|
&& 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} \
|
|
||||||
DOKKU_VERSION=${DOKKU_VERSION} \
|
|
||||||
DOKKU_GIT_REV=${DOKKU_GIT_REV} \
|
|
||||||
IS_RELEASE=${IS_RELEASE} \
|
|
||||||
SKIP_GO_CLEAN=true \
|
|
||||||
GOARCH=arm make version copyfiles \
|
|
||||||
&& DOKKU_ARCHITECTURE=armhf GOARCH=arm make deb-dokku
|
|
||||||
|
|
||||||
FROM builder as arm64
|
FROM builder as arm64
|
||||||
|
|
||||||
COPY --from=armhf /tmp /tmp
|
COPY --from=amd64 /tmp /tmp
|
||||||
COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated
|
COPY --from=amd64 /usr/local/share/man/man1/dokku.1 /usr/local/share/man/man1/dokku.1-generated
|
||||||
|
|
||||||
RUN rm -rf /tmp/build-dokku
|
RUN rm -rf /tmp/build-dokku
|
||||||
|
|||||||
107
contrib/dependencies.json
Normal file
107
contrib/dependencies.json
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
{
|
||||||
|
"dependencies": [
|
||||||
|
{
|
||||||
|
"name": "docker-image-labeler",
|
||||||
|
"version": "0.6.1",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.6.1/docker-image-labeler_0.6.1_linux_amd64.tgz",
|
||||||
|
"arm64": "https://github.com/dokku/docker-image-labeler/releases/download/v0.6.1/docker-image-labeler_0.6.1_linux_arm64.tgz",
|
||||||
|
"arm": "https://github.com/dokku/docker-image-labeler/releases/download/v0.6.1/docker-image-labeler_0.6.1_linux_armhf.tgz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "docker-container-healthchecker",
|
||||||
|
"version": "0.7.2",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.2/docker-container-healthchecker_0.7.2_linux_amd64.tgz",
|
||||||
|
"arm64": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.2/docker-container-healthchecker_0.7.2_linux_arm64.tgz",
|
||||||
|
"arm": "https://github.com/dokku/docker-container-healthchecker/releases/download/v0.7.2/docker-container-healthchecker_0.7.2_linux_armhf.tgz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "lambda-builder",
|
||||||
|
"version": "0.5.0",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/dokku/lambda-builder/releases/download/v0.5.0/lambda-builder_0.5.0_linux_amd64.tgz",
|
||||||
|
"arm64": "https://github.com/dokku/lambda-builder/releases/download/v0.5.0/lambda-builder_0.5.0_linux_arm64.tgz",
|
||||||
|
"arm": "https://github.com/dokku/lambda-builder/releases/download/v0.5.0/lambda-builder_0.5.0_linux_armhf.tgz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "netrc",
|
||||||
|
"version": "0.7.1",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/dokku/netrc/releases/download/v0.7.1/netrc_0.7.1_linux_amd64.tgz",
|
||||||
|
"arm64": "https://github.com/dokku/netrc/releases/download/v0.7.1/netrc_0.7.1_linux_arm64.tgz",
|
||||||
|
"arm": "https://github.com/dokku/netrc/releases/download/v0.7.1/netrc_0.7.1_linux_armhf.tgz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "procfile-util",
|
||||||
|
"version": "0.16.0",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/dokku/procfile-util/releases/download/v0.16.0/procfile-util_0.16.0_linux_amd64.tgz",
|
||||||
|
"arm64": "https://github.com/dokku/procfile-util/releases/download/v0.16.0/procfile-util_0.16.0_linux_arm64.tgz",
|
||||||
|
"arm": "https://github.com/dokku/procfile-util/releases/download/v0.16.0/procfile-util_0.16.0_linux_armhf.tgz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sshcommand",
|
||||||
|
"version": "0.17.1",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/dokku/sshcommand/releases/download/v0.17.1/sshcommand_0.17.1_linux_x86_64.tgz",
|
||||||
|
"arm64": "https://github.com/dokku/sshcommand/releases/download/v0.17.1/sshcommand_0.17.1_linux_x86_64.tgz",
|
||||||
|
"arm": "https://github.com/dokku/sshcommand/releases/download/v0.17.1/sshcommand_0.17.1_linux_x86_64.tgz"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"predependencies": [
|
||||||
|
{
|
||||||
|
"name": "gliderlabs-sigil",
|
||||||
|
"version": "0.10.1",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/gliderlabs/sigil/releases/download/v0.10.1/gliderlabs-sigil_0.10.1_linux_amd64.tgz",
|
||||||
|
"arm64": "https://github.com/gliderlabs/sigil/releases/download/v0.10.1/gliderlabs-sigil_0.10.1_linux_arm64.tgz",
|
||||||
|
"arm": "https://github.com/gliderlabs/sigil/releases/download/v0.10.1/gliderlabs-sigil_0.10.1_linux_armhf.tgz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "plugn",
|
||||||
|
"version": "0.12.0",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/dokku/plugn/releases/download/v0.12.0/plugn_0.12.0_linux_amd64.tgz",
|
||||||
|
"arm64": "https://github.com/dokku/plugn/releases/download/v0.12.0/plugn_0.12.0_linux_arm64.tgz",
|
||||||
|
"arm": "https://github.com/dokku/plugn/releases/download/v0.12.0/plugn_0.12.0_linux_armhf.tgz"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"recommendations": [
|
||||||
|
{
|
||||||
|
"name": "dokku-event-listener",
|
||||||
|
"version": "0.15.0",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.15.0/dokku-event-listener_0.15.0_linux_amd64.tgz",
|
||||||
|
"arm64": "https://github.com/dokku/dokku-event-listener/releases/download/v0.15.0/dokku-event-listener_0.15.0_linux_arm64.tgz",
|
||||||
|
"arm": "https://github.com/dokku/dokku-event-listener/releases/download/v0.15.0/dokku-event-listener_0.15.0_linux_armhf.tgz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "dokku-update",
|
||||||
|
"version": "0.7.2",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/dokku/dokku-update/releases/download/v0.7.2/dokku-update_0.7.2_linux_x86_64.tgz",
|
||||||
|
"arm64": "https://github.com/dokku/dokku-update/releases/download/v0.7.2/dokku-update_0.7.2_linux_x86_64.tgz",
|
||||||
|
"arm": "https://github.com/dokku/dokku-update/releases/download/v0.7.2/dokku-update_0.7.2_linux_x86_64.tgz"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "herokuish",
|
||||||
|
"version": "0.7.1",
|
||||||
|
"urls": {
|
||||||
|
"amd64": "https://github.com/gliderlabs/herokuish/releases/download/v0.7.1/herokuish_0.7.1_linux_x86_64.tgz",
|
||||||
|
"arm64": "https://github.com/gliderlabs/herokuish/releases/download/v0.7.1/herokuish_0.7.1_linux_x86_64.tgz",
|
||||||
|
"arm": "https://github.com/gliderlabs/herokuish/releases/download/v0.7.1/herokuish_0.7.1_linux_x86_64.tgz"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -50,7 +50,7 @@ echo '--> Setting up dokku apt repository'
|
|||||||
curl -fsSL https://packagecloud.io/dokku/dokku/gpgkey -o /etc/apt/keyrings/dokku.asc
|
curl -fsSL https://packagecloud.io/dokku/dokku/gpgkey -o /etc/apt/keyrings/dokku.asc
|
||||||
|
|
||||||
cat >/etc/apt/sources.list.d/dokku.list <<EOM
|
cat >/etc/apt/sources.list.d/dokku.list <<EOM
|
||||||
deb [arch=amd64 signed-by=/etc/apt/keyrings/dokku.asc] https://packagecloud.io/dokku/dokku/ubuntu/ bionic main
|
deb [arch=amd64 signed-by=/etc/apt/keyrings/dokku.asc] https://packagecloud.io/dokku/dokku/ubuntu/ jammy main
|
||||||
EOM
|
EOM
|
||||||
|
|
||||||
echo '--> Install dependencies for dokku from new repository'
|
echo '--> Install dependencies for dokku from new repository'
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ fn-publish-package() {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
elif [[ "$DIST" == "ubuntu" ]]; then
|
elif [[ "$DIST" == "ubuntu" ]]; then
|
||||||
OS_IDS=("bionic" "focal" "jammy")
|
OS_IDS=("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"
|
||||||
@@ -387,14 +387,14 @@ fn-build-docker-image() {
|
|||||||
|
|
||||||
if [[ "$IS_RELEASE" == "true" ]]; then
|
if [[ "$IS_RELEASE" == "true" ]]; then
|
||||||
docker buildx build \
|
docker buildx build \
|
||||||
--platform linux/arm,linux/arm64,linux/amd64 \
|
--platform linux/arm64,linux/amd64 \
|
||||||
--progress plain \
|
--progress plain \
|
||||||
--push \
|
--push \
|
||||||
--tag "dokku/dokku:latest" \
|
--tag "dokku/dokku:latest" \
|
||||||
--tag "dokku/dokku:$VERSION" .
|
--tag "dokku/dokku:$VERSION" .
|
||||||
elif [[ "$SKIP_IMAGE_BUILD" != "true" ]]; then
|
elif [[ "$SKIP_IMAGE_BUILD" != "true" ]]; then
|
||||||
docker buildx build \
|
docker buildx build \
|
||||||
--platform linux/arm,linux/arm64,linux/amd64 \
|
--platform linux/arm64,linux/amd64 \
|
||||||
--progress plain \
|
--progress plain \
|
||||||
--tag "dokku/dokku:latest" \
|
--tag "dokku/dokku:latest" \
|
||||||
--tag "dokku/dokku:$(echo "$VERSION" | tr + -)" .
|
--tag "dokku/dokku:$(echo "$VERSION" | tr + -)" .
|
||||||
@@ -443,16 +443,13 @@ main() {
|
|||||||
|
|
||||||
fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION" "$IS_PATCH"
|
fn-repo-update "$IS_RELEASE" "$CURRENT_VERSION" "$NEXT_VERSION" "$IS_PATCH"
|
||||||
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}_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"
|
||||||
mkdir -p build/package
|
mkdir -p build/package
|
||||||
cp -f "build/dokku_${NEXT_VERSION}_amd64.deb" build/package/dokku-amd64.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}_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}_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-build-docker-image "$NEXT_VERSION" "$IS_RELEASE" || log-fail "Error building docker image"
|
fn-build-docker-image "$NEXT_VERSION" "$IS_RELEASE" || log-fail "Error building docker image"
|
||||||
|
|||||||
32
contrib/update-deb-dependencies
Executable file
32
contrib/update-deb-dependencies
Executable file
@@ -0,0 +1,32 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import json
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
"""
|
||||||
|
updates the control file with the tested debian dependencies
|
||||||
|
"""
|
||||||
|
deps = {}
|
||||||
|
with open("contrib/dependencies.json", encoding="utf-8") as handle:
|
||||||
|
deps = json.load(handle)
|
||||||
|
|
||||||
|
control_lines = []
|
||||||
|
with open("debian/control", encoding="utf-8") as handle:
|
||||||
|
control_lines = [line for line in handle.readlines()]
|
||||||
|
|
||||||
|
for key in ["dependencies", "predependencies", "recommendations"]:
|
||||||
|
for dependency in deps[key]:
|
||||||
|
name = dependency["name"]
|
||||||
|
version = dependency["version"]
|
||||||
|
for i, line in enumerate(control_lines):
|
||||||
|
if name in line:
|
||||||
|
control_lines[i] = control_lines[i].replace(
|
||||||
|
name, f"{name} (>= {version})"
|
||||||
|
)
|
||||||
|
|
||||||
|
with open("debian/control", mode="w", encoding="utf-8") as handle:
|
||||||
|
handle.writelines(control_lines)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
1
deb.mk
1
deb.mk
@@ -43,6 +43,7 @@ ifneq (,$(findstring false,$(IS_RELEASE)))
|
|||||||
sed -i.bak -e "s/^/`date +%s`:/" /tmp/build-dokku/var/lib/dokku/STABLE_VERSION && rm /tmp/build-dokku/var/lib/dokku/STABLE_VERSION.bak
|
sed -i.bak -e "s/^/`date +%s`:/" /tmp/build-dokku/var/lib/dokku/STABLE_VERSION && rm /tmp/build-dokku/var/lib/dokku/STABLE_VERSION.bak
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
contrib/update-deb-dependencies
|
||||||
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
|
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
|
||||||
|
|||||||
8
debian/control
vendored
8
debian/control
vendored
@@ -1,11 +1,11 @@
|
|||||||
Package: dokku
|
Package: dokku
|
||||||
Version: 0.31.2
|
Version: 0.33.2
|
||||||
Section: web
|
Section: web
|
||||||
Priority: optional
|
Priority: optional
|
||||||
Architecture: amd64
|
Architecture: amd64
|
||||||
Depends: apache2-utils, locales, git, cpio, curl, man-db, netcat, sshcommand (>= 0.17.1), docker-engine-cs (>= 17.05.0) | docker-engine (>= 17.05.0) | docker-io (>= 17.05.0) | docker.io (>= 17.05.0) | docker-ce (>= 17.05.0) | docker-ee (>= 17.05.0) | moby-engine, docker-compose-plugin | moby-compose, docker-container-healthchecker (>= 0.6.4), docker-image-labeler (>= 0.6.1), lambda-builder (>= 0.5.0), net-tools, netrc (>= 0.7.1), software-properties-common, parallel, procfile-util (>= 0.16.0), python-software-properties | python3-software-properties, rsync, rsyslog, dos2unix, jq, unzip
|
Depends: apache2-utils, acl, locales, git, cpio, curl, man-db, netcat, sshcommand, docker-engine-cs (>= 17.05.0) | docker-engine (>= 17.05.0) | docker-io (>= 17.05.0) | docker.io (>= 17.05.0) | docker-ce (>= 17.05.0) | docker-ee (>= 17.05.0) | moby-engine, docker-compose-plugin | moby-compose, docker-buildx-plugin | moby-buildx, docker-container-healthchecker, docker-image-labeler, lambda-builder, net-tools, netrc, software-properties-common, parallel, procfile-util, python-software-properties | python3-software-properties, rsync, rsyslog, dos2unix, jq, unzip, util-linux
|
||||||
Recommends: herokuish (>= 0.7.1), bash-completion, dokku-update, dokku-event-listener
|
Recommends: herokuish, bash-completion, dokku-update, dokku-event-listener
|
||||||
Pre-Depends: gliderlabs-sigil (>= 0.10.1), 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, 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
|
||||||
Dokku is an extensible, open source Platform as a Service
|
Dokku is an extensible, open source Platform as a Service
|
||||||
|
|||||||
3
debian/postinst
vendored
3
debian/postinst
vendored
@@ -84,7 +84,8 @@ setup-plugins() {
|
|||||||
PLUGIN_PATH="${DOKKU_LIB_ROOT}/plugins" plugn enable "$plugin"
|
PLUGIN_PATH="${DOKKU_LIB_ROOT}/plugins" plugn enable "$plugin"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
find -L "${DOKKU_LIB_ROOT}" -type l -delete
|
find -L "${DOKKU_LIB_ROOT}/core-plugins" -type l -delete
|
||||||
|
find -L "${DOKKU_LIB_ROOT}/plugins" -type l -delete
|
||||||
chown dokku:dokku -R "${DOKKU_LIB_ROOT}/plugins" "${DOKKU_LIB_ROOT}/core-plugins"
|
chown dokku:dokku -R "${DOKKU_LIB_ROOT}/plugins" "${DOKKU_LIB_ROOT}/core-plugins"
|
||||||
|
|
||||||
echo "Install all core plugins"
|
echo "Install all core plugins"
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
set -eo pipefail
|
|
||||||
[[ $TRACE ]] && set -x
|
|
||||||
|
|
||||||
main() {
|
|
||||||
declare desc="re-runs docker-container-healthchecker commands as sudo"
|
|
||||||
local DOCKER_CONTAINER_HEALTHCHECKER_BIN=""
|
|
||||||
if [[ -x "/usr/bin/docker-container-healthchecker" ]]; then
|
|
||||||
DOCKER_CONTAINER_HEALTHCHECKER_BIN="/usr/bin/docker-container-healthchecker"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -z "$DOCKER_CONTAINER_HEALTHCHECKER_BIN" ]]; then
|
|
||||||
echo "! No docker-container-healthchecker binary found" 1>&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
sudo -E "$DOCKER_CONTAINER_HEALTHCHECKER_BIN" "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
main "$@"
|
|
||||||
2
docs/_build/Dockerfile
vendored
2
docs/_build/Dockerfile
vendored
@@ -1,4 +1,4 @@
|
|||||||
FROM python:3.11.4-alpine
|
FROM python:3.12.1-alpine
|
||||||
|
|
||||||
WORKDIR /usr/src/app
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
|||||||
26
docs/_build/requirements.txt
vendored
26
docs/_build/requirements.txt
vendored
@@ -1,23 +1,23 @@
|
|||||||
beautifulsoup4==4.12.2
|
beautifulsoup4==4.12.3
|
||||||
click==8.1.7
|
click==8.1.7
|
||||||
ghp-import==2.1.0
|
ghp-import==2.1.0
|
||||||
importlib-metadata==6.8.0
|
importlib-metadata==7.0.1
|
||||||
Jinja2==3.1.2
|
Jinja2==3.1.3
|
||||||
Markdown>=3.2.1,<3.5
|
Markdown>=3.2.1,<3.6
|
||||||
MarkupSafe==2.1.3
|
MarkupSafe==2.1.4
|
||||||
mergedeep==1.3.4
|
mergedeep==1.3.4
|
||||||
mkdocs==1.5.2
|
mkdocs==1.5.3
|
||||||
mkdocs-exclude==1.0.2
|
mkdocs-exclude==1.0.2
|
||||||
mkdocs-material==9.2.3
|
mkdocs-material==9.5.6
|
||||||
mkdocs-material-extensions==1.1.1
|
mkdocs-material-extensions==1.3.1
|
||||||
packaging==23.1
|
packaging==23.2
|
||||||
Pygments==2.16.1
|
Pygments==2.17.2
|
||||||
pymdown-extensions==10.1
|
pymdown-extensions==10.7
|
||||||
pyparsing==3.1.1
|
pyparsing==3.1.1
|
||||||
python-dateutil==2.8.2
|
python-dateutil==2.8.2
|
||||||
PyYAML==6.0.1
|
PyYAML==6.0.1
|
||||||
pyyaml_env_tag==0.1
|
pyyaml_env_tag==0.1
|
||||||
six==1.16.0
|
six==1.16.0
|
||||||
soupsieve==2.4.1
|
soupsieve==2.5
|
||||||
watchdog==3.0.0
|
watchdog==3.0.0
|
||||||
zipp==3.16.2
|
zipp==3.17.0
|
||||||
|
|||||||
@@ -73,9 +73,11 @@ By default, permissions are set for usage with Herokuish buildpacks. These permi
|
|||||||
- `--chown herokuish` (default): Use `32767:32767` as the folder permissions.
|
- `--chown herokuish` (default): Use `32767:32767` as the folder permissions.
|
||||||
- This is used for apps deployed with Buildpacks via Herokuish.
|
- This is used for apps deployed with Buildpacks via Herokuish.
|
||||||
- `--chown heroku`: Use `1000:1000` as the folder permissions.
|
- `--chown heroku`: Use `1000:1000` as the folder permissions.
|
||||||
- This is used for apps deployed with Cloud Native Buildpacks using the `heroku/buildpacks` builder.
|
- This is used for apps deployed with Cloud Native Buildpacks using the `heroku/builder` builder.
|
||||||
- `--chown packeto`: Use `2000:2000` as the folder permissions.
|
- `--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.
|
- This is used for apps deployed with Cloud Native Buildpacks using the `cloudfoundry/cnb` or `packeto` builders.
|
||||||
|
- `--chown root`: Use `0:0` as the folder permissions.
|
||||||
|
- This is used for containers that run their processes as root, as is typical for most Dockerfile or Docker image deploys.
|
||||||
- `--chown false`: Skips the `chown` call.
|
- `--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.
|
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.
|
||||||
|
|||||||
@@ -36,35 +36,35 @@ dokku plugin:list
|
|||||||
|
|
||||||
```
|
```
|
||||||
plugn: dev
|
plugn: dev
|
||||||
00_dokku-standard 0.31.2 enabled dokku core standard plugin
|
00_dokku-standard 0.33.2 enabled dokku core standard plugin
|
||||||
20_events 0.31.2 enabled dokku core events logging plugin
|
20_events 0.33.2 enabled dokku core events logging plugin
|
||||||
app-json 0.31.2 enabled dokku core app-json plugin
|
app-json 0.33.2 enabled dokku core app-json plugin
|
||||||
apps 0.31.2 enabled dokku core apps plugin
|
apps 0.33.2 enabled dokku core apps plugin
|
||||||
build-env 0.31.2 enabled dokku core build-env plugin
|
build-env 0.33.2 enabled dokku core build-env plugin
|
||||||
buildpacks 0.31.2 enabled dokku core buildpacks plugin
|
buildpacks 0.33.2 enabled dokku core buildpacks plugin
|
||||||
certs 0.31.2 enabled dokku core certificate management plugin
|
certs 0.33.2 enabled dokku core certificate management plugin
|
||||||
checks 0.31.2 enabled dokku core checks plugin
|
checks 0.33.2 enabled dokku core checks plugin
|
||||||
common 0.31.2 enabled dokku core common plugin
|
common 0.33.2 enabled dokku core common plugin
|
||||||
config 0.31.2 enabled dokku core config plugin
|
config 0.33.2 enabled dokku core config plugin
|
||||||
docker-options 0.31.2 enabled dokku core docker-options plugin
|
docker-options 0.33.2 enabled dokku core docker-options plugin
|
||||||
domains 0.31.2 enabled dokku core domains plugin
|
domains 0.33.2 enabled dokku core domains plugin
|
||||||
enter 0.31.2 enabled dokku core enter plugin
|
enter 0.33.2 enabled dokku core enter plugin
|
||||||
git 0.31.2 enabled dokku core git plugin
|
git 0.33.2 enabled dokku core git plugin
|
||||||
logs 0.31.2 enabled dokku core logs plugin
|
logs 0.33.2 enabled dokku core logs plugin
|
||||||
network 0.31.2 enabled dokku core network plugin
|
network 0.33.2 enabled dokku core network plugin
|
||||||
nginx-vhosts 0.31.2 enabled dokku core nginx-vhosts plugin
|
nginx-vhosts 0.33.2 enabled dokku core nginx-vhosts plugin
|
||||||
plugin 0.31.2 enabled dokku core plugin plugin
|
plugin 0.33.2 enabled dokku core plugin plugin
|
||||||
proxy 0.31.2 enabled dokku core proxy plugin
|
proxy 0.33.2 enabled dokku core proxy plugin
|
||||||
ps 0.31.2 enabled dokku core ps plugin
|
ps 0.33.2 enabled dokku core ps plugin
|
||||||
repo 0.31.2 enabled dokku core repo plugin
|
repo 0.33.2 enabled dokku core repo plugin
|
||||||
resource 0.31.2 enabled dokku core resource plugin
|
resource 0.33.2 enabled dokku core resource plugin
|
||||||
scheduler-docker-local 0.31.2 enabled dokku core scheduler-docker-local plugin
|
scheduler-docker-local 0.33.2 enabled dokku core scheduler-docker-local plugin
|
||||||
shell 0.31.2 enabled dokku core shell plugin
|
shell 0.33.2 enabled dokku core shell plugin
|
||||||
ssh-keys 0.31.2 enabled dokku core ssh-keys plugin
|
ssh-keys 0.33.2 enabled dokku core ssh-keys plugin
|
||||||
storage 0.31.2 enabled dokku core storage plugin
|
storage 0.33.2 enabled dokku core storage plugin
|
||||||
tags 0.31.2 enabled dokku core tags plugin
|
tags 0.33.2 enabled dokku core tags plugin
|
||||||
tar 0.31.2 enabled dokku core tar plugin
|
tar 0.33.2 enabled dokku core tar plugin
|
||||||
trace 0.31.2 enabled dokku core trace plugin
|
trace 0.33.2 enabled dokku core trace plugin
|
||||||
```
|
```
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
|
|||||||
@@ -99,9 +99,19 @@ Setting the property value to an empty string will reset the value to the system
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
# per-app
|
# per-app
|
||||||
dokku registry:set node-js-app push-on-release
|
dokku registry:set node-js-app image-repo
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Templating the image repository name
|
||||||
|
|
||||||
|
Instead of setting the image repository name on a per-app basis, it can be set via a template globally with the `image-repo-template` property:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku registry:set --global image-repo-template "my-awesome-prefix/{{ .AppName }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Dokku uses a Golang template and has access to the `AppName` variable as shown above.
|
||||||
|
|
||||||
### Pushing images on build
|
### Pushing images on build
|
||||||
|
|
||||||
To push the image on release, set the `push-on-release` property to `true` via the `registry:set` command. The default value for this property is `false`. Setting the property to `true` will result in the image being tagged with an ID that is incremented with every release. This tag will be what is used for running app code.
|
To push the image on release, set the `push-on-release` property to `true` via the `registry:set` command. The default value for this property is `false`. Setting the property to `true` will result in the image being tagged with an ID that is incremented with every release. This tag will be what is used for running app code.
|
||||||
|
|||||||
30
docs/appendices/0.32.0-migration-guide.md
Normal file
30
docs/appendices/0.32.0-migration-guide.md
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
# 0.32.0 Migration Guide
|
||||||
|
|
||||||
|
## Deprecations
|
||||||
|
|
||||||
|
- The following `pre-build-*` plugin triggers have been deprecated and will be removed in the next release. Users should instead trigger the `pre-build` plugin trigger.
|
||||||
|
- pre-build-buildpack
|
||||||
|
- pre-build-dockerfile
|
||||||
|
- pre-build-lambda
|
||||||
|
- pre-build-pack
|
||||||
|
- The following `pre-release-*` plugin triggers have been deprecated and will be removed in the next release. Users should instead trigger the `pre-release-builder` plugin trigger.
|
||||||
|
- pre-release-buildpack
|
||||||
|
- pre-release-dockerfile
|
||||||
|
- pre-release-lambda
|
||||||
|
- pre-release-pack
|
||||||
|
- The following `post-build-*` plugin triggers have been deprecated and will be removed in the next release. Users should instead trigger the `post-build` plugin trigger.
|
||||||
|
- post-build-buildpack
|
||||||
|
- post-build-dockerfile
|
||||||
|
- post-build-lambda
|
||||||
|
- post-build-pack
|
||||||
|
- The `CHECKS` file was deprecated in the previous release in favor of defining healthchecks in the `app.json` file. It's support and auto-migration to healthchecks in the `app.json` file will be removed in the next release. See the [zero-downtime deploy documentation](/docs/deployment/zero-downtime-deploys.md) for more information on how the new zero downtime check format works.
|
||||||
|
|
||||||
|
## Removals
|
||||||
|
|
||||||
|
- ARM support has been removed. Users of ARM installations on platforms such as the Raspberry PI should consider migrating to ARM64. ARM64 will continue to be supported by Dokku, and there are no plans to remove support for ARM64.
|
||||||
|
- The following proxy-port related code has been removed. It is replaced by the `ports` plugin and it's related plugin triggers.
|
||||||
|
- `proxy:ports-*` commands
|
||||||
|
- `proxy-configure-ports` plugin trigger
|
||||||
|
- `common#get_available_port()`
|
||||||
|
- `common#get_dockerfile_exposed_ports()`
|
||||||
|
- `common#get_exposed_ports_from_image()`
|
||||||
@@ -2,10 +2,10 @@
|
|||||||
<browserconfig>
|
<browserconfig>
|
||||||
<msapplication>
|
<msapplication>
|
||||||
<tile>
|
<tile>
|
||||||
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/mstile-70x70.png"/>
|
<square70x70logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/mstile-70x70.png"/>
|
||||||
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/mstile-150x150.png"/>
|
<square150x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/mstile-150x150.png"/>
|
||||||
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/mstile-310x310.png"/>
|
<square310x310logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/mstile-310x310.png"/>
|
||||||
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/mstile-310x150.png"/>
|
<wide310x150logo src="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.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.31.2\/docs\/assets\/favicons\/android-chrome-36x36.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.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.31.2\/docs\/assets\/favicons\/android-chrome-48x48.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.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.31.2\/docs\/assets\/favicons\/android-chrome-72x72.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.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.31.2\/docs\/assets\/favicons\/android-chrome-96x96.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.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.31.2\/docs\/assets\/favicons\/android-chrome-144x144.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.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.31.2\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
"src": "https:\/\/cdn.jsdelivr.net\/dokku\/dokku@v0.33.2\/docs\/assets\/favicons\/android-chrome-192x192.png",
|
||||||
"sizes": "192x192",
|
"sizes": "192x192",
|
||||||
"type": "image\/png",
|
"type": "image\/png",
|
||||||
"density": "4.0"
|
"density": "4.0"
|
||||||
|
|||||||
@@ -28,6 +28,8 @@
|
|||||||
"0.28.4",
|
"0.28.4",
|
||||||
"0.29.4",
|
"0.29.4",
|
||||||
"0.30.11",
|
"0.30.11",
|
||||||
"0.31.2"
|
"0.31.5",
|
||||||
|
"0.32.4",
|
||||||
|
"0.33.2"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,25 +24,34 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
|
|
||||||
| Plugin | Author | Compatibility |
|
| Plugin | Author | Compatibility |
|
||||||
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
||||||
| [Cron Restart](https://github.com/dokku/dokku-cron-restart) | [dokku][] | 0.30.0+ |
|
| [Clickhouse](https://github.com/dokku/dokku-clickhouse) | [dokku][] | 0.4.0+ |
|
||||||
| [CouchDB](https://github.com/dokku/dokku-couchdb) | [dokku][] | 0.4.0+ |
|
|
||||||
| [Elasticsearch](https://github.com/dokku/dokku-elasticsearch-plugin) | [dokku][] | 0.4.0+ |
|
|
||||||
| [Grafana/Graphite/Statsd](https://github.com/dokku/dokku-graphite-grafana) | [dokku][] | 0.4.0+ |
|
|
||||||
| [MariaDB](https://github.com/dokku/dokku-mariadb-plugin) | [dokku][] | 0.4.0+ |
|
|
||||||
| [Memcached](https://github.com/dokku/dokku-memcached-plugin) | [dokku][] | 0.4.0+ |
|
|
||||||
| [Mongo](https://github.com/dokku/dokku-mongo-plugin) | [dokku][] | 0.4.0+ |
|
|
||||||
| [MySQL](https://github.com/dokku/dokku-mysql-plugin) | [dokku][] | 0.4.0+ |
|
|
||||||
| [Nats](https://github.com/dokku/dokku-nats) | [dokku][] | 0.4.0+ |
|
|
||||||
| [Postgres](https://github.com/dokku/dokku-postgres-plugin) | [dokku][] | 0.4.0+ |
|
|
||||||
| [RabbitMQ](https://github.com/dokku/dokku-rabbitmq-plugin) | [dokku][] | 0.4.0+ |
|
|
||||||
| [Redis](https://github.com/dokku/dokku-redis-plugin) | [dokku][] | 0.4.0+ |
|
|
||||||
| [RethinkDB](https://github.com/dokku/dokku-rethinkdb-plugin) | [dokku][] | 0.4.0+ |
|
|
||||||
| [Copy Files to Image](https://github.com/dokku/dokku-copyfiles-to-image) | [dokku][] | 0.4.0+ |
|
| [Copy Files to Image](https://github.com/dokku/dokku-copyfiles-to-image) | [dokku][] | 0.4.0+ |
|
||||||
|
| [CouchDB](https://github.com/dokku/dokku-couchdb) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Cron Restart](https://github.com/dokku/dokku-cron-restart) | [dokku][] | 0.30.0+ |
|
||||||
|
| [Elasticsearch](https://github.com/dokku/dokku-elasticsearch) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Grafana/Graphite/Statsd](https://github.com/dokku/dokku-graphite) | [dokku][] | 0.4.0+ |
|
||||||
| [HTTP Auth](https://github.com/dokku/dokku-http-auth) | [dokku][] | 0.4.0+ |
|
| [HTTP Auth](https://github.com/dokku/dokku-http-auth) | [dokku][] | 0.4.0+ |
|
||||||
| [Let's Encrypt](https://github.com/dokku/dokku-letsencrypt) | [dokku][] | 0.4.0+ |
|
| [Let's Encrypt](https://github.com/dokku/dokku-letsencrypt) | [dokku][] | 0.4.0+ |
|
||||||
| [Maintenance mode](https://github.com/dokku/dokku-maintenance) | [dokku][] | 0.4.0+ |
|
| [Maintenance mode](https://github.com/dokku/dokku-maintenance) | [dokku][] | 0.4.0+ |
|
||||||
|
| [MariaDB](https://github.com/dokku/dokku-mariadb) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Meilisearch](https://github.com/dokku/dokku-meilisearch) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Memcached](https://github.com/dokku/dokku-memcached) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Mongo](https://github.com/dokku/dokku-mongo) | [dokku][] | 0.4.0+ |
|
||||||
|
| [MySQL](https://github.com/dokku/dokku-mysql) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Nats](https://github.com/dokku/dokku-nats) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Omnisci](https://github.com/dokku/dokku-omnisci) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Postgres](https://github.com/dokku/dokku-postgres) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Pushpin](https://github.com/dokku/dokku-pushpin) | [dokku][] | 0.4.0+ |
|
||||||
|
| [RabbitMQ](https://github.com/dokku/dokku-rabbitmq) | [dokku][] | 0.4.0+ |
|
||||||
| [Redirect](https://github.com/dokku/dokku-redirect) | [dokku][] | 0.4.0+ |
|
| [Redirect](https://github.com/dokku/dokku-redirect) | [dokku][] | 0.4.0+ |
|
||||||
| [Registry](https://github.com/dokku/dokku-registry) | [dokku][] | 0.12.0+
|
| [Redis](https://github.com/dokku/dokku-redis) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Registry](https://github.com/dokku/dokku-registry) | [dokku][] | 0.12.0+ |
|
||||||
|
| [RethinkDB](https://github.com/dokku/dokku-rethinkdb) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Scheduler Kubernetes](https://github.com/dokku/dokku-scheduler-kubernetes) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Scheduler Nomad](https://github.com/dokku/dokku-scheduler-nomad) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Solr](https://github.com/dokku/dokku-solr) | [dokku][] | 0.4.0+ |
|
||||||
|
| [SSH Hostkeys](https://github.com/cedricziel/dokku-hostkeys-plugin) | [dokku][] | 0.4.0+ |
|
||||||
|
| [Typesense](https://github.com/dokku/dokku-typesense) | [dokku][] | 0.4.0+ |
|
||||||
|
|
||||||
## Community plugins
|
## Community plugins
|
||||||
|
|
||||||
@@ -101,76 +110,47 @@ The following plugins are available and provided by Dokku maintainers. Please f
|
|||||||
| Plugin | Author | Compatibility |
|
| Plugin | Author | Compatibility |
|
||||||
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
| ------------------------------------------------------------------------------------------------- | --------------------- | --------------------- |
|
||||||
| [App name as env](https://github.com/cjblomqvist/dokku-app-name-env) | [cjblomqvist][] | 0.3.x |
|
| [App name as env](https://github.com/cjblomqvist/dokku-app-name-env) | [cjblomqvist][] | 0.3.x |
|
||||||
| [Docker Direct](https://github.com/josegonzalez/dokku-docker-direct) | [josegonzalez][] | 0.4.0+ |
|
| [APT](https://github.com/dokku-community/dokku-apt) | [dokku-community][] | 0.18.x+ |
|
||||||
|
| [Auto Sync](https://github.com/IdeaSynthesis/dokku-autosync)<sup>1</sup> | [fomojola][] | 0.8.1+ |
|
||||||
|
| [Deploy Webhook](https://github.com/IdeaSynthesis/dokku-deploy-webhook)<sup>2</sup> | [fomojola][] | 0.8.1+ |
|
||||||
|
| [Docker auto persist volumes](https://github.com/Flink/dokku-docker-auto-volumes) | [flink][] | 0.4.0+ |
|
||||||
|
| [Docker Direct](https://github.com/dokku-community/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/dokku-community/dokku-supply-config) | [josegonzalez][] | 0.4.0+ |
|
||||||
| [Dockerfile custom path](https://github.com/mimischi/dokku-dockerfile) | [mimischi][] | 0.8.0+ |
|
| [Dokku Require](https://github.com/crisward/dokku-require)<sup>3</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+ |
|
| [Host post-build command hook](https://github.com/baikunz/dokku-post-deploy-script) | [baikunz][] | 0.4.0+ |
|
||||||
|
| [Host pre-build command hook](https://github.com/fteychene/dokku-build-hook) | [fteychene][] | 0.4.0+ |
|
||||||
|
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
|
||||||
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.0+ |
|
| [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+ |
|
| [Litestream](https://github.com/AxelTheGerman/dokku-litestream)<sup>4</sup> | [AxelTheGerman][] | 0.27.0+ |
|
||||||
| [Monit (Health Checks)](https://github.com/mbreit/dokku-monit) | [mbreit][] | 0.8.0+ |
|
| [Monit (Health Checks)](https://github.com/mbreit/dokku-monit) | [mbreit][] | 0.8.0+ |
|
||||||
| [Nuke Containers](https://github.com/josegonzalez/dokku-nuke) | [josegonzalez][] | 0.4.0+ |
|
| [Monit](https://github.com/cjblomqvist/dokku-monit) | [cjblomqvist][] | 0.3.x |
|
||||||
| [Open App Ports](https://github.com/josegonzalez/dokku-ports) | [josegonzalez][] | 0.3.x |
|
| [Nuke Containers](https://github.com/dokku-community/dokku-nuke) | [josegonzalez][] | 0.4.0+ |
|
||||||
| [Proctype Filter](https://github.com/michaelshobbs/dokku-proctype-filter) | [michaelshobbs][] | 0.4.0+ |
|
| [Proctype Filter](https://github.com/michaelshobbs/dokku-proctype-filter) | [michaelshobbs][] | 0.4.0+ |
|
||||||
| [robots.txt](https://notabug.org/candlewaster/dokku-robots.txt) | [candlewaster][] | 0.4.x |
|
| [robots.txt](https://notabug.org/candlewaster/dokku-robots.txt) | [candlewaster][] | 0.4.x |
|
||||||
| [SSH Deployment Keys](https://github.com/cedricziel/dokku-deployment-keys)<sup>3</sup> | [cedricziel][] | 0.4.0+ |
|
| [Tor](https://github.com/michaelshobbs/dokku-tor) | [michaelshobbs][] | 0.4.0+ |
|
||||||
| [SSH Hostkeys](https://github.com/cedricziel/dokku-hostkeys-plugin)<sup>4</sup> | [cedricziel][] | 0.3.x |
|
| [UFW](https://github.com/dokku-community/dokku-ufw) | [josegonzalez][] | 0.3.x |
|
||||||
| [Application build hook](https://github.com/fteychene/dokku-build-hook) | [fteychene][] | 0.4.0+ |
|
| [User Access](https://github.com/mainto/dokku-access) | [mainto][] | 0.4.0+ |
|
||||||
| [Post Deploy Script](https://github.com/baikunz/dokku-post-deploy-script) | [baikunz][] | 0.4.0+ |
|
| [User ACL](https://github.com/dokku-community/dokku-acl) | [maciej łebkowski][] | 0.4.0+ |
|
||||||
| [Auto Sync](https://github.com/IdeaSynthesis/dokku-autosync)<sup>5</sup> | [fomojola][] | 0.8.1+ |
|
|
||||||
| [Deploy Webhook](https://github.com/IdeaSynthesis/dokku-deploy-webhook)<sup>6</sup> | [fomojola][] | 0.8.1+ |
|
|
||||||
|
|
||||||
<sup>1</sup> Extends app.json support to include creating volumes and creating / linking databases on push
|
<sup>1</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>2</sup> Adds SQLite replication to external object storage via [Litestream](https://litestream.io)
|
<sup>2</sup> Adds the ability to invoke a post-deploy webhook with the IP, port and app name, all with a single config:set).
|
||||||
|
|
||||||
<sup>3</sup> Adds the possibility to add SSH deployment keys to receive private hosted packages
|
<sup>3</sup> Extends app.json support to include creating volumes and creating / linking databases on push
|
||||||
|
|
||||||
<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>4</sup> Adds SQLite replication to external object storage via [Litestream](https://litestream.io)
|
||||||
|
|
||||||
<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+ |
|
|
||||||
| [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/Grunt](https://github.com/thrashr888/dokku-bower-grunt-build-plugin) | [thrashr888][] | 0.3.x |
|
|
||||||
| [Bower/Gulp](https://github.com/gdi2290/dokku-bower-gulp-build-plugin) | [gdi2290][] | 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+ |
|
|
||||||
| [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+ |
|
|
||||||
| [Hostname](https://github.com/michaelshobbs/dokku-hostname) | [michaelshobbs][] | 0.4.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+ |
|
|
||||||
| [Syslog](https://github.com/michaelshobbs/dokku-syslog) | [michaelshobbs][] | 0.10.4+ |
|
|
||||||
| [Long Timeout](https://github.com/investtools/dokku-long-timeout-plugin) | [investtools][] | 0.4.0+ |
|
|
||||||
| [Monit](https://github.com/cjblomqvist/dokku-monit) | [cjblomqvist][] | 0.3.x |
|
|
||||||
| [Monorepo](https://github.com/iamale/dokku-monorepo) | [iamale][] | 0.4.0+ |
|
|
||||||
| [Multi Dockerfile](https://github.com/artofrawr/dokku-multi-dockerfile) | [artofrawr][] | 0.4.0+ |
|
|
||||||
| [Node](https://github.com/ademuk/dokku-nodejs) | [ademuk][] | 0.3.x |
|
|
||||||
| [Node](https://github.com/pnegahdar/dokku-node) | [pnegahdar][] | 0.3.x |
|
|
||||||
| [Rollbar](https://github.com/iloveitaly/dokku-rollbar) | [iloveitaly][] | 0.5.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+ |
|
|
||||||
| [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+ |
|
|
||||||
| [Webhooks](https://github.com/nickstenning/dokku-webhooks) | [nickstenning][] | 0.3.x |
|
|
||||||
| [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+ |
|
|
||||||
| [Access](https://github.com/mainto/dokku-access) | [mainto][] | 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+ |
|
|
||||||
| [Discourse](https://github.com/badsyntax/dokku-discourse) | [badsyntax][] | 0.21.4+ |
|
| [Discourse](https://github.com/badsyntax/dokku-discourse) | [badsyntax][] | 0.21.4+ |
|
||||||
|
| [Wordpress](https://github.com/dokku-community/dokku-wordpress) | [dokku-community][] | 0.4.0+ |
|
||||||
|
|
||||||
### Deprecated Plugins
|
### Deprecated Plugins
|
||||||
|
|
||||||
@@ -178,23 +158,41 @@ The following plugins have been removed as their functionality is now in Dokku C
|
|||||||
|
|
||||||
| Plugin | Author | In Dokku Since |
|
| Plugin | Author | In Dokku Since |
|
||||||
| ------------------------------------------------------------------------------------------------- | --------------------- | ----------------------------------------- |
|
| ------------------------------------------------------------------------------------------------- | --------------------- | ----------------------------------------- |
|
||||||
|
| [Airbrake deploy](https://github.com/Flink/dokku-airbrake-deploy) | [flink][] | v0.5.0 (deployment tasks) |
|
||||||
| [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) | [neam][] | v0.3.10 (domains plugin) |
|
| [Bower/Grunt](https://github.com/thrashr888/dokku-bower-grunt-build-plugin) | [thrashr888][] | v0.5.0 (deployment tasks and .buildpacks) |
|
||||||
|
| [Bower/Gulp](https://github.com/gdi2290/dokku-bower-gulp-build-plugin) | [gdi2290][] | v0.5.0 (deployment tasks and .buildpacks) |
|
||||||
|
| [Bower install](https://github.com/alexanderbeletsky/dokku-bower-install) | [alexanderbeletsky][] | v0.5.0 (deployment tasks and .buildpacks) |
|
||||||
|
| [Bower/Gulp](https://github.com/jagandecapri/dokku-bower-gulp-build-plugin) | [jagandecapri][] | v0.5.0 (deployment tasks and .buildpacks) |
|
||||||
|
| [Builders: bower, compass, gulp, grunt](https://github.com/ignlg/dokku-builders-plugin) | [ignlg][] | v0.5.0 (deployment tasks and .buildpacks) |
|
||||||
|
| [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) |
|
||||||
|
| [Dockerfile custom path](https://github.com/mimischi/dokku-dockerfile) | [mimischi][] | v0.25.0 (monorepo support) |
|
||||||
| [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) |
|
||||||
| [Events Logger](https://github.com/alessio/dokku-events) | [alessio][] | v0.3.21 (events plugin) |
|
| [Events Logger](https://github.com/alessio/dokku-events) | [alessio][] | v0.3.21 (events plugin) |
|
||||||
|
| [Fonts](https://github.com/ollej/dokku-fonts) | [ollej][] | v0.5.0 (deployment tasks) |
|
||||||
| [git rev-parse HEAD in env](https://github.com/dokku-community/dokku-git-rev) | [cjblomqvist][] | v0.12.0 (enhanced core git plugin) |
|
| [git rev-parse HEAD in env](https://github.com/dokku-community/dokku-git-rev) | [cjblomqvist][] | v0.12.0 (enhanced core git plugin) |
|
||||||
| [Host Port binding](https://github.com/stuartpb/dokku-bind-port) | [stuartpb][] | v0.3.17 (docker-options plugin) |
|
| [Host Port binding](https://github.com/stuartpb/dokku-bind-port) | [stuartpb][] | v0.3.17 (docker-options plugin) |
|
||||||
| [Link Containers](https://github.com/rlaneve/dokku-link) | [rlaneve][] | v0.3.17 (docker-options plugin) |
|
| [Link Containers](https://github.com/rlaneve/dokku-link) | [rlaneve][] | v0.3.17 (docker-options plugin) |
|
||||||
| [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) |
|
||||||
|
| [Logspout](https://github.com/michaelshobbs/dokku-logspout) | [michaelshobbs][] | v0.22.6 (vector log shipping) |
|
||||||
|
| [Long Timeout](https://github.com/investtools/dokku-long-timeout-plugin) | [investtools][] | v0.21.0 (proxy-read-timeout nginx setting)|
|
||||||
|
| [Monorepo](https://github.com/iamale/dokku-monorepo) | [iamale][] | v0.25.0 (monorepo builder support) |
|
||||||
| [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) |
|
||||||
|
| [Multi Dockerfile](https://github.com/artofrawr/dokku-multi-dockerfile) | [artofrawr][] | v0.25.0 (monorepo support) |
|
||||||
| [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 Trust Proxy](https://github.com/kingsquare/dokku-nginx-vhost-trustproxy) | [kingsquare][] | v0.23.0 (nginx x-forwarded-* properties) |
|
||||||
|
| [Node](https://github.com/ademuk/dokku-nodejs) | [ademuk][] | v0.5.0 (deployment tasks and .buildpacks) |
|
||||||
|
| [Node](https://github.com/pnegahdar/dokku-node) | [pnegahdar][] | v0.5.0 (deployment tasks and .buildpacks) |
|
||||||
| [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) |
|
||||||
|
| [Rollbar](https://github.com/iloveitaly/dokku-rollbar) | [iloveitaly][] | v0.5.0 (deployment tasks) |
|
||||||
|
| [Syslog](https://github.com/michaelshobbs/dokku-syslog) | [michaelshobbs][] | v0.22.6 (vector log shipping) |
|
||||||
|
| [Haproxy tcp load balancer](https://github.com/256dpi/dokku-haproxy) | [256dpi][] | v0.28.0 (haproxt plugin) |
|
||||||
| [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) |
|
||||||
@@ -203,10 +201,15 @@ The following plugins have been removed as their functionality is now in Dokku C
|
|||||||
| [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+ |
|
||||||
|
| [SSH Deployment Keys](https://github.com/cedricziel/dokku-deployment-keys) | [dokku][] | v0.33.0 (git 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) |
|
| [Supply env vars to buildpacks](https://github.com/cameron-martin/dokku-build-env)<sup>2</sup> | [cameron-martin][] | v0.3.9 (build-env plugin) |
|
||||||
|
| [Slack Notifications](https://github.com/ribot/dokku-slack) | [ribot][] | v0.5.0 (deployment tasks) |
|
||||||
|
| [Telegram Notifications](https://github.com/m0rth1um/dokku-telegram) | [m0rth1um][] | v0.5.0 (deployment tasks) |
|
||||||
| [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) |
|
||||||
| [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) |
|
||||||
|
| [Webhooks](https://github.com/nickstenning/dokku-webhooks) | [nickstenning][] | v0.5.0 (deployment tasks) |
|
||||||
|
| [Wkhtmltopdf](https://github.com/mbriskar/dokku-wkhtmltopdf) | [mbriskar][] | v0.5.0 (deployment tasks) |
|
||||||
|
|
||||||
<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](https://devcenter.heroku.com/articles/labs-user-env-compile)
|
<sup>2</sup> Similar to the [heroku-labs feature](https://devcenter.heroku.com/articles/labs-user-env-compile)
|
||||||
@@ -233,9 +236,9 @@ The following plugins are no longer maintained by their developers.
|
|||||||
| [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 |
|
|
||||||
| [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+ |
|
||||||
|
| [RiakCS (single container)](https://github.com/jeffutter/dokku-riakcs-plugin) | [jeffutter][] | Incompatible with 0.2.0 |
|
||||||
|
|
||||||
<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.
|
||||||
|
|
||||||
@@ -318,7 +321,6 @@ The following plugins are no longer maintained by their developers.
|
|||||||
[wmluke]: https://github.com/wmluke
|
[wmluke]: https://github.com/wmluke
|
||||||
[zenedith]: https://github.com/zenedith
|
[zenedith]: https://github.com/zenedith
|
||||||
[fteychene]: https://github.com/fteychene
|
[fteychene]: https://github.com/fteychene
|
||||||
[sarendsen]: https://github.com/sarendsen
|
|
||||||
[baikunz]: https://github.com/baikunz
|
[baikunz]: https://github.com/baikunz
|
||||||
[lazyatom]: https://github.com/lazyatom
|
[lazyatom]: https://github.com/lazyatom
|
||||||
[ollej]: https://github.com/ollej
|
[ollej]: https://github.com/ollej
|
||||||
|
|||||||
@@ -27,10 +27,10 @@ Dokku will only select the `dockerfile` builder if both the `herokuish` and `pac
|
|||||||
|
|
||||||
### Switching from buildpack deployments
|
### Switching from buildpack deployments
|
||||||
|
|
||||||
If an application was previously deployed via buildpacks, the following commands should be run before a Dockerfile deploy will succeed:
|
If an application was previously deployed via buildpacks and ports were customized, the following commands should be run prior to a deploy to ensure the Dockerfile ports are respected:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku proxy:clear node-js-app
|
dokku ports:clear node-js-app
|
||||||
```
|
```
|
||||||
|
|
||||||
### Changing the `Dockerfile` location
|
### Changing the `Dockerfile` location
|
||||||
|
|||||||
@@ -181,7 +181,7 @@ dokku buildpacks:set-property --global stack
|
|||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> New as of 0.29.0
|
> New as of 0.29.0
|
||||||
|
|
||||||
By default, the builder-herokuish plugin is not enabled for non-amd64 platforms, and attempting to use it is blocked. This is because the majority of buildpacks are not cross-platform compatible, and thus building apps will either be considerably slower - due to emulating the amd64 platform - or won't work - due to building amd64 packages on arm/arm64 platforms.
|
By default, the builder-herokuish plugin is not enabled for non-amd64 platforms, and attempting to use it is blocked. This is because the majority of buildpacks are not cross-platform compatible, and thus building apps will either be considerably slower - due to emulating the amd64 platform - or won't work - due to building amd64 packages on arm64 platforms.
|
||||||
|
|
||||||
To force-enable herokuish on non-amd64 platforms, the `allowed` property can be set via `builder-herokuish:set`. The default value depends on the host platform architecture (`true` on amd64, `false` otherwise).
|
To force-enable herokuish on non-amd64 platforms, the `allowed` property can be set via `builder-herokuish:set`. The default value depends on the host platform architecture (`true` on amd64, `false` otherwise).
|
||||||
|
|
||||||
|
|||||||
155
docs/deployment/builders/nixpacks.md
Normal file
155
docs/deployment/builders/nixpacks.md
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
# Nixpacks
|
||||||
|
|
||||||
|
> New as of 0.32.0
|
||||||
|
|
||||||
|
The `nixpacks` builder builds apps via [Nixpacks](https://nixpacks.com/), a buildpack alternative.
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Requirements
|
||||||
|
|
||||||
|
The `nixpacks` cli tool is not included by default with Dokku or as a dependency. It must also be installed as shown on [this page](https://nixpacks.com/docs/install#debian-(and-derivatives-like-ubuntu)).
|
||||||
|
|
||||||
|
Builds will proceed with the `nixpacks` cli for the app from then on.
|
||||||
|
|
||||||
|
### Detection
|
||||||
|
|
||||||
|
This builder will be auto-detected in the following case:
|
||||||
|
|
||||||
|
- A `nixpacks.toml` 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 nixpacks
|
||||||
|
```
|
||||||
|
|
||||||
|
### Supported languages
|
||||||
|
|
||||||
|
See the [upstream nixpacks documentation](https://nixpacks.com/docs) for further information on what languages and frameworks are supported.
|
||||||
|
|
||||||
|
### Build-time configuration variables
|
||||||
|
|
||||||
|
For security reasons - and as per [Docker recommendations](https://github.com/docker/docker/issues/13490) - nixpacks-based deploys have variables available only during runtime.
|
||||||
|
|
||||||
|
For users that require customization in the `build` phase, you may use build arguments via the [docker-options plugin](/docs/advanced-usage/docker-options.md). All environment variables set by the `config` plugin are automatically exported within the nixpacks build environment, and thus `--env` only requires setting a key without a value.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku docker-options:add node-js-app build '--env NODE_ENV'
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, a full value may be provided in the form of `--env KEY=VALUE`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku docker-options:add node-js-app build '--env NODE_ENV=production'
|
||||||
|
```
|
||||||
|
|
||||||
|
### Changing the `nixpacks.toml` location
|
||||||
|
|
||||||
|
When deploying a monorepo, it may be desirable to specify the specific path of the `nixpacks.toml` file to use for a given app. This can be done via the `builder-nixpacks:set` command. If a value is specified and that file does not exist in the app's build directory, then the build will fail.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:set node-js-app nixpackstoml-path nixpacks2.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:set node-js-app nixpackstoml-path
|
||||||
|
```
|
||||||
|
|
||||||
|
The `nixpackstoml-path` property can also be set globally. The global default is `nixpacks.toml`, and the global value is used when no app-specific value is set.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:set --global nixpackstoml-path nixpacks2.toml
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:set --global nixpackstoml-path
|
||||||
|
```
|
||||||
|
|
||||||
|
### Disabling cache
|
||||||
|
|
||||||
|
Cache is enabled by default, but can be disabled by setting the `no-cache` property to `true`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:set node-js-app no-cache true
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:set node-js-app no-cache
|
||||||
|
```
|
||||||
|
|
||||||
|
The `no-cache` property can also be set globally. The global default is `false`, and the global value is used when no app-specific value is set.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:set --global no-cache true
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:set --global no-cache
|
||||||
|
```
|
||||||
|
|
||||||
|
### Displaying builder-nixpacks reports for an app
|
||||||
|
|
||||||
|
You can get a report about the app's storage status using the `builder-nixpacks:report` command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:report
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app builder-nixpacks information
|
||||||
|
Builder-nixpacks computed nixpackstoml path: nixpacks2.toml
|
||||||
|
Builder-nixpacks global nixpackstoml path: nixpacks.toml
|
||||||
|
Builder-nixpacks nixpackstoml path: nixpacks2.toml
|
||||||
|
Builder-nixpacks computed no cache: true
|
||||||
|
Builder-nixpacks global no cache: false
|
||||||
|
Builder-nixpacks no cache: true
|
||||||
|
=====> python-sample builder-nixpacks information
|
||||||
|
Builder-nixpacks computed nixpackstoml path: nixpacks.toml
|
||||||
|
Builder-nixpacks global nixpackstoml path: nixpacks.toml
|
||||||
|
Builder-nixpacks nixpackstoml path:
|
||||||
|
Builder-nixpacks computed no cache: false
|
||||||
|
Builder-nixpacks global no cache: false
|
||||||
|
Builder-nixpacks no cache:
|
||||||
|
=====> ruby-sample builder-nixpacks information
|
||||||
|
Builder-nixpacks computed nixpackstoml path: nixpacks.toml
|
||||||
|
Builder-nixpacks global nixpackstoml path: nixpacks.toml
|
||||||
|
Builder-nixpacks nixpackstoml path:
|
||||||
|
Builder-nixpacks computed no cache: false
|
||||||
|
Builder-nixpacks global no cache: false
|
||||||
|
Builder-nixpacks no cache:
|
||||||
|
```
|
||||||
|
|
||||||
|
You can run the command for a specific app also.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:report node-js-app
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
=====> node-js-app builder-nixpacks information
|
||||||
|
Builder-nixpacks computed nixpackstoml path: nixpacks2.toml
|
||||||
|
Builder-nixpacks global nixpackstoml path: nixpacks.toml
|
||||||
|
Builder-nixpacks nixpackstoml path: nixpacks2.toml
|
||||||
|
Builder-nixpacks computed no cache: true
|
||||||
|
Builder-nixpacks global no cache: false
|
||||||
|
Builder-nixpacks no cache: true
|
||||||
|
```
|
||||||
|
|
||||||
|
You can pass flags which will output only the value of the specific information you want. For example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku builder-nixpacks:report node-js-app --builder-nixpacks-no-cache
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
true
|
||||||
|
```
|
||||||
@@ -13,7 +13,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-22.04
|
||||||
steps:
|
steps:
|
||||||
- name: Cloning repo
|
- name: Cloning repo
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
|
|||||||
@@ -155,6 +155,27 @@ 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
|
The above command will show logs continually from the vector container, with an initial history of 10 log lines
|
||||||
|
|
||||||
|
#### Changing the vector image
|
||||||
|
|
||||||
|
Dokku integrates with a Vector docker image version that is known to be compatible with the documentation. In some cases, it may be useful to specify an alternative image version. To do so, set the global `vector-image` property.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku logs:set --global vector-image timberio/vector:0.35.X-debian
|
||||||
|
```
|
||||||
|
|
||||||
|
Once set, the vector container will need to be stopped and then started. Note that specifying the `--vector-image` flag on the `logs:vector-start` will override the setting.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku logs:vector-stop
|
||||||
|
dokku logs:vector-start
|
||||||
|
```
|
||||||
|
|
||||||
|
Setting this to an empty string will reset the version to the version currently compatible with the Dokku installation.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku logs:set --global vector-image
|
||||||
|
```
|
||||||
|
|
||||||
#### 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.
|
||||||
@@ -211,4 +232,4 @@ For some sinks - such as the `http` sink - it may be useful to use special chara
|
|||||||
dokku logs:set test vector-sink "http://?uri=https%3A//loggerservice.com%3A1234/%3Ftoken%3Dabc1234%26type%3Dvector"
|
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/configuration/sinks/) for your sink of choice to configure the sink as desired.
|
||||||
|
|||||||
34
docs/deployment/methods/archive.md
Normal file
34
docs/deployment/methods/archive.md
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# Tar and Zip Archives
|
||||||
|
|
||||||
|
## Initializing an app repository from an archive file
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> New as of 0.24.0
|
||||||
|
|
||||||
|
A Dokku app repository can be initialized or updated from the contents of an archive file via the `git:from-archive` command. This is an excellent way of tracking changes when deploying pre-built binary archives, such as java jars or go binaries. This can also be useful when deploying directly from a GitHub repository at a specific commit.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku git:from-archive node-js-app https://github.com/dokku/smoke-test-app/releases/download/2.0.0/smoke-test-app.tar
|
||||||
|
```
|
||||||
|
|
||||||
|
In the above example, Dokku will build the app as if the repository contained the extracted contents of the specified archive file.
|
||||||
|
|
||||||
|
Triggering a build with the same archive file multiple times will result in Dokku exiting `0` early as there will be no changes detected.
|
||||||
|
|
||||||
|
The `git:from-archive` command can optionally take a git `user.name` and `user.email` argument (in that order) to customize the author. If the arguments are left empty, they will fallback to `Dokku` and `automated@dokku.sh`, respectively.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku git:from-archive node-js-app https://github.com/dokku/smoke-test-app/releases/download/2.0.0/smoke-test-app.tar "Camila" "camila@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
The default archive type is always set to `.tar`. To use a different archive type, specify the `--archive-type` flag. Failure to do so will result in a failure to extract the archive.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku git:from-archive --archive-type zip node-js-app https://github.com/dokku/smoke-test-app/archive/2.0.0.zip "Camila" "camila@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, if the archive url is specified as `--`, the archive will be fetched from stdin.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
curl -sSL https://github.com/dokku/smoke-test-app/releases/download/2.0.0/smoke-test-app.tar | dokku git:from-archive node-js-app --
|
||||||
|
```
|
||||||
@@ -8,6 +8,7 @@ git:allow-host <host> # Adds a host to known_hosts
|
|||||||
git:auth <host> [<username> <password>] # Configures netrc authentication for a given git server
|
git:auth <host> [<username> <password>] # Configures netrc authentication for a given git server
|
||||||
git:from-archive [--archive-type ARCHIVE_TYPE] <app> <archive-url> [<git-username> <git-email>] # Updates an app's git repository with a given archive file
|
git:from-archive [--archive-type ARCHIVE_TYPE] <app> <archive-url> [<git-username> <git-email>] # Updates an app's git repository with a given archive file
|
||||||
git:from-image [--build-dir DIRECTORY] <app> <docker-image> [<git-username> <git-email>] # Updates an app's git repository with a given docker image
|
git:from-image [--build-dir DIRECTORY] <app> <docker-image> [<git-username> <git-email>] # Updates an app's git repository with a given docker image
|
||||||
|
git:generate-deploy-key # Generates a deploy ssh key
|
||||||
git:load-image [--build-dir DIRECTORY] <app> <docker-image> [<git-username> <git-email>] # Updates an app's git repository with a docker image loaded from stdin
|
git:load-image [--build-dir DIRECTORY] <app> <docker-image> [<git-username> <git-email>] # Updates an app's git repository with a docker image loaded from stdin
|
||||||
git:sync [--build] <app> <repository> [<git-ref>] # Clone or fetch an app from remote git repo
|
git:sync [--build] <app> <repository> [<git-ref>] # Clone or fetch an app from remote git repo
|
||||||
git:initialize <app> # Initialize a git repository for an app
|
git:initialize <app> # Initialize a git repository for an app
|
||||||
@@ -125,131 +126,6 @@ dokku git:set node-js-app keep-git-dir ""
|
|||||||
|
|
||||||
Please keep in mind that setting `keep-git-dir` to `true` may result in unstaged changes shown within the built container due to the build process generating application changes within the built app directory.
|
Please keep in mind that setting `keep-git-dir` to `true` may result in unstaged changes shown within the built container due to the build process generating application changes within the built app directory.
|
||||||
|
|
||||||
### Initializing an app repository from a docker image
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> New as of 0.24.0
|
|
||||||
|
|
||||||
A Dokku app repository can be initialized or updated from a Docker image via the `git:from-image` command. This command will either initialize the app repository or update it to include the specified Docker image via a `FROM` stanza. This is an excellent way of tracking changes when deploying only a given docker image, especially if deploying an image from a remote CI/CD pipeline.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku git:from-image node-js-app dokku/node-js-getting-started:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
In the above example, Dokku will build the app as if the repository contained _only_ a `Dockerfile` with the following content:
|
|
||||||
|
|
||||||
```Dockerfile
|
|
||||||
FROM dokku/node-js-getting-started:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
If the specified image already exists on the Dokku host, it will not be pulled again, though this behavior may be changed using [build phase docker-options](/docs/advanced-usage/docker-options.md).
|
|
||||||
|
|
||||||
Triggering a build with the same arguments multiple times will result in Dokku exiting `0` early as there will be no changes detected. If the image tag is reused but the underlying image is different, it is recommended to use the image digest instead of the tag. This can be retrieved via the following command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE_NAME
|
|
||||||
```
|
|
||||||
|
|
||||||
The resulting `git:from-image` call would then be:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# where the image sha is: sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
|
||||||
dokku git:from-image node-js-app dokku/node-js-getting-started@sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
|
||||||
```
|
|
||||||
|
|
||||||
The `git:from-image` command can optionally take a git `user.name` and `user.email` argument (in that order) to customize the author. If the arguments are left empty, they will fallback to `Dokku` and `automated@dokku.sh`, respectively.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku git:from-image node-js-app dokku/node-js-getting-started:latest "Camila" "camila@example.com"
|
|
||||||
```
|
|
||||||
|
|
||||||
If the image is a private image that requires a docker login to access, the `registry:login` command should be used to log into the registry. See the [registry documentation](/docs/advanced-usage/registry-management.md#logging-into-a-registry) for more details on this process.
|
|
||||||
|
|
||||||
Finally, certain images may require a custom build context in order for `ONBUILD ADD` and `ONBUILD COPY` statements to succeed. A custom build context can be specified via the `--build-dir` flag. All files in the specified `build-dir` will be copied into the repository for use within the `docker build` process. The build context _must_ be specified on each deploy, and is not otherwise persisted between builds.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku git:from-image --build-dir path/to/build node-js-app dokku/node-js-getting-started:latest "Camila" "camila@example.com"
|
|
||||||
```
|
|
||||||
|
|
||||||
See the [dockerfile documentation](/docs/deployment/builders/dockerfiles.md) to learn about the different ways to configure Dockerfile-based deploys.
|
|
||||||
|
|
||||||
### Initializing an app repository from an archive file
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> New as of 0.24.0
|
|
||||||
|
|
||||||
A Dokku app repository can be initialized or updated from the contents of an archive file via the `git:from-archive` command. This is an excellent way of tracking changes when deploying pre-built binary archives, such as java jars or go binaries. This can also be useful when deploying directly from a GitHub repository at a specific commit.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku git:from-archive node-js-app https://github.com/dokku/smoke-test-app/releases/download/2.0.0/smoke-test-app.tar
|
|
||||||
```
|
|
||||||
|
|
||||||
In the above example, Dokku will build the app as if the repository contained the extracted contents of the specified archive file.
|
|
||||||
|
|
||||||
Triggering a build with the same archive file multiple times will result in Dokku exiting `0` early as there will be no changes detected.
|
|
||||||
|
|
||||||
The `git:from-archive` command can optionally take a git `user.name` and `user.email` argument (in that order) to customize the author. If the arguments are left empty, they will fallback to `Dokku` and `automated@dokku.sh`, respectively.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku git:from-archive node-js-app https://github.com/dokku/smoke-test-app/releases/download/2.0.0/smoke-test-app.tar "Camila" "camila@example.com"
|
|
||||||
```
|
|
||||||
|
|
||||||
The default archive type is always set to `.tar`. To use a different archive type, specify the `--archive-type` flag. Failure to do so will result in a failure to extract the archive.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
dokku git:from-archive --archive-type zip node-js-app https://github.com/dokku/smoke-test-app/archive/2.0.0.zip "Camila" "camila@example.com"
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, if the archive url is specified as `--`, the archive will be fetched from stdin.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
curl -sSL https://github.com/dokku/smoke-test-app/releases/download/2.0.0/smoke-test-app.tar | dokku git:from-archive node-js-app --
|
|
||||||
```
|
|
||||||
|
|
||||||
### Initializing an app repository from a remote image without a registry
|
|
||||||
|
|
||||||
> [!IMPORTANT]
|
|
||||||
> New as of 0.30.0
|
|
||||||
|
|
||||||
A Dokku app repository can be initialized or updated from the contents of an image archive tar file via the `git:load-image` command. This method can be used when a Docker Registry is unavailable to act as an intermediary for storing an image, such as when building an image in CI and deploying directly from that image.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker image save dokku/node-js-getting-started:latest | ssh dokku@dokku.me git:load-image node-js-app dokku/node-js-getting-started:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
In the above example, we are saving the image to a tar file via `docker image save`, streaming that to the Dokku host, and then running `git:load-image` on the incoming stream. Dokku will build the app as if the repository contained _only_ a `Dockerfile` with the following content:
|
|
||||||
|
|
||||||
```Dockerfile
|
|
||||||
FROM dokku/node-js-getting-started:latest
|
|
||||||
```
|
|
||||||
|
|
||||||
When deploying an app via `git:load-image`, it is highly recommended to use a unique image tag when building the image. Not doing so will result in Dokku exiting `0` early as there will be no changes detected. If the image tag is reused but the underlying image is different, it is recommended to use the image digest instead of the tag. This can be retrieved via the following command:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE_NAME
|
|
||||||
```
|
|
||||||
|
|
||||||
The resulting `git:load-image` call would then be:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
# where the image sha is: sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
|
||||||
docker image save dokku/node-js-getting-started:latest | ssh dokku@dokku.me git:load-image node-js-app dokku/node-js-getting-started@sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
|
||||||
```
|
|
||||||
|
|
||||||
The `git:load-image` command can optionally take a git `user.name` and `user.email` argument (in that order) to customize the author. If the arguments are left empty, they will fallback to `Dokku` and `automated@dokku.sh`, respectively.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker image save dokku/node-js-getting-started:latest | ssh dokku@dokku.me git:load-image node-js-app dokku/node-js-getting-started:latest "Camila" "camila@example.com"
|
|
||||||
```
|
|
||||||
|
|
||||||
Finally, certain images may require a custom build context in order for `ONBUILD ADD` and `ONBUILD COPY` statements to succeed. A custom build context can be specified via the `--build-dir` flag. All files in the specified `build-dir` will be copied into the repository for use within the `docker build` process. The build context _must_ be specified on each deploy, and is not otherwise persisted between builds.
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker image save dokku/node-js-getting-started:latest | ssh dokku@dokku.me git:load-image --build-dir path/to/build node-js-app dokku/node-js-getting-started:latest "Camila" "camila@example.com"
|
|
||||||
```
|
|
||||||
|
|
||||||
See the [dockerfile documentation](/docs/deployment/builders/dockerfiles.md) to learn about the different ways to configure Dockerfile-based deploys.
|
|
||||||
|
|
||||||
### Initializing an app repository from a remote repository
|
### Initializing an app repository from a remote repository
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
@@ -314,9 +190,40 @@ dokku git:allow-host github.com
|
|||||||
|
|
||||||
Note that this command is currently not idempotent and may add duplicate entries to the `~dokku/.ssh/known_hosts` file.
|
Note that this command is currently not idempotent and may add duplicate entries to the `~dokku/.ssh/known_hosts` file.
|
||||||
|
|
||||||
|
### Creating a cloning ssh key pair
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> New as of 0.33.0
|
||||||
|
|
||||||
|
While most repositories can be authenticated to via the `git:auth` command, some users may prefer to use an ssh key. This can be generated via the `git:generate-deploy-key` command, which generates a passwordless ed25519 key-pair.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku git:generate-deploy-key
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
Generating public/private ed25519 key pair.
|
||||||
|
Your identification has been saved in /home/dokku/.ssh/id_ed25519
|
||||||
|
Your public key has been saved in /home/dokku/.ssh/id_ed25519.pub
|
||||||
|
The key fingerprint is:
|
||||||
|
SHA256:PvlvVfbpYvkmA87rTfLUq07e3GarRN1BcLqDSjod+p8 dokku@ubuntu
|
||||||
|
The key's randomart image is:
|
||||||
|
+--[ED25519 256]--+
|
||||||
|
| ..o |
|
||||||
|
| + |
|
||||||
|
| . . |
|
||||||
|
| . o =|
|
||||||
|
| So . + ++|
|
||||||
|
| .=.o.. +..|
|
||||||
|
| ++oo..*o. |
|
||||||
|
| oo o%*oo=|
|
||||||
|
| .+E=BOOo|
|
||||||
|
+----[SHA256]-----+
|
||||||
|
```
|
||||||
|
|
||||||
### Verifying the cloning public key
|
### Verifying the cloning public key
|
||||||
|
|
||||||
In order to clone a remote repository, the remote server should have the Dokku host's public key configured. This plugin does not currently create this key, but if there is one available, it can be shown via the `git:public-key` command.
|
In order to clone a remote repository, the remote server should have the Dokku host's public key configured. This plugin does not currently create this key, but if can be shown via the `git:public-key` command.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku git:public-key
|
dokku git:public-key
|
||||||
|
|||||||
104
docs/deployment/methods/image.md
Normal file
104
docs/deployment/methods/image.md
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
# Docker Image Deployment
|
||||||
|
|
||||||
|
## Initializing an app repository from a docker image
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> New as of 0.24.0
|
||||||
|
|
||||||
|
A Dokku app repository can be initialized or updated from a Docker image via the `git:from-image` command. This command will either initialize the app repository or update it to include the specified Docker image via a `FROM` stanza. This is an excellent way of tracking changes when deploying only a given docker image, especially if deploying an image from a remote CI/CD pipeline.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku git:from-image node-js-app my-registry/node-js-getting-started:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
In the above example, Dokku will build the app as if the repository contained _only_ a `Dockerfile` with the following content:
|
||||||
|
|
||||||
|
```Dockerfile
|
||||||
|
FROM my-registry/node-js-getting-started:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
If the specified image already exists on the Dokku host, it will not be pulled again, though this behavior may be changed using [build phase docker-options](/docs/advanced-usage/docker-options.md).
|
||||||
|
|
||||||
|
Triggering a build with the same arguments multiple times will result in Dokku exiting `0` early as there will be no changes detected. If the image tag is reused but the underlying image is different, it is recommended to use the image digest instead of the tag. This can be retrieved via the following command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# for images pushed to a remote registry
|
||||||
|
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE_NAME
|
||||||
|
|
||||||
|
# for images built locally and not pushed to a registry
|
||||||
|
# use when the previous command output is empty
|
||||||
|
docker images --no-trunc --quiet $IMAGE_NAME
|
||||||
|
```
|
||||||
|
|
||||||
|
The resulting `git:from-image` call would then be:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# where the image sha is: sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
||||||
|
dokku git:from-image node-js-app my-registry/node-js-getting-started@sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
||||||
|
```
|
||||||
|
|
||||||
|
The `git:from-image` command can optionally take a git `user.name` and `user.email` argument (in that order) to customize the author. If the arguments are left empty, they will fallback to `Dokku` and `automated@dokku.sh`, respectively.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku git:from-image node-js-app my-registry/node-js-getting-started:latest "Camila" "camila@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
If the image is a private image that requires a docker login to access, the `registry:login` command should be used to log into the registry. See the [registry documentation](/docs/advanced-usage/registry-management.md#logging-into-a-registry) for more details on this process.
|
||||||
|
|
||||||
|
Finally, certain images may require a custom build context in order for `ONBUILD ADD` and `ONBUILD COPY` statements to succeed. A custom build context can be specified via the `--build-dir` flag. All files in the specified `build-dir` will be copied into the repository for use within the `docker build` process. The build context _must_ be specified on each deploy, and is not otherwise persisted between builds.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku git:from-image --build-dir path/to/build node-js-app domy-registrykku/node-js-getting-started:latest "Camila" "camila@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [dockerfile documentation](/docs/deployment/builders/dockerfiles.md) to learn about the different ways to configure Dockerfile-based deploys.
|
||||||
|
|
||||||
|
## Initializing an app repository from a remote image without a registry
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> New as of 0.30.0
|
||||||
|
|
||||||
|
A Dokku app repository can be initialized or updated from the contents of an image archive tar file via the `git:load-image` command. This method can be used when a Docker Registry is unavailable to act as an intermediary for storing an image, such as when building an image in CI and deploying directly from that image.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker image save my-registry/node-js-getting-started:latest | ssh dokku@dokku.me git:load-image node-js-app my-registry/node-js-getting-started:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
In the above example, we are saving the image to a tar file via `docker image save`, streaming that to the Dokku host, and then running `git:load-image` on the incoming stream. Dokku will build the app as if the repository contained _only_ a `Dockerfile` with the following content:
|
||||||
|
|
||||||
|
```Dockerfile
|
||||||
|
FROM my-registry/node-js-getting-started:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
When deploying an app via `git:load-image`, it is highly recommended to use a unique image tag when building the image. Not doing so will result in Dokku exiting `0` early as there will be no changes detected. If the image tag is reused but the underlying image is different, it is recommended to use the image digest instead of the tag. This can be retrieved via the following command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
|
||||||
|
# for images pushed to a remote registry
|
||||||
|
docker inspect --format='{{index .RepoDigests 0}}' $IMAGE_NAME
|
||||||
|
|
||||||
|
# for images built locally and not pushed to a registry
|
||||||
|
# use when the previous command output is empty
|
||||||
|
docker images --no-trunc --quiet $IMAGE_NAME
|
||||||
|
```
|
||||||
|
|
||||||
|
The resulting `git:load-image` call would then be:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# where the image sha is: sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
||||||
|
docker image save my-registry/node-js-getting-started:latest | ssh dokku@dokku.me git:load-image node-js-app my-registry/node-js-getting-started@sha256:9d187c3025d03c033dcc71e3a284fee53be88cc4c0356a19242758bc80cab673
|
||||||
|
```
|
||||||
|
|
||||||
|
The `git:load-image` command can optionally take a git `user.name` and `user.email` argument (in that order) to customize the author. If the arguments are left empty, they will fallback to `Dokku` and `automated@dokku.sh`, respectively.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker image save my-registry/node-js-getting-started:latest | ssh dokku@dokku.me git:load-image node-js-app my-registry/node-js-getting-started:latest "Camila" "camila@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
Finally, certain images may require a custom build context in order for `ONBUILD ADD` and `ONBUILD COPY` statements to succeed. A custom build context can be specified via the `--build-dir` flag. All files in the specified `build-dir` will be copied into the repository for use within the `docker build` process. The build context _must_ be specified on each deploy, and is not otherwise persisted between builds.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker image save my-registry/node-js-getting-started:latest | ssh dokku@dokku.me git:load-image --build-dir path/to/build node-js-app my-registry/node-js-getting-started:latest "Camila" "camila@example.com"
|
||||||
|
```
|
||||||
|
|
||||||
|
See the [dockerfile documentation](/docs/deployment/builders/dockerfiles.md) to learn about the different ways to configure Dockerfile-based deploys.
|
||||||
@@ -14,17 +14,23 @@ scheduler-docker-local:set <app> <key> (<value>) # Set or clear a sch
|
|||||||
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:
|
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
|
```shell
|
||||||
dokku config:set node-js-app DOCKER_SCHEDULER=docker-local
|
dokku scheduler:set node-js-app selected docker-local
|
||||||
```
|
```
|
||||||
|
|
||||||
As it is the default, unsetting the `DOCKER_SCHEDULER` config variable is also a valid way to reset the scheduler.
|
As it is the default, unsetting the `selected` scheduler property is also a valid way to reset the scheduler.
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
dokku config:unset node-js-app DOCKER_SCHEDULER
|
dokku scheduler:set node-js-app selected
|
||||||
```
|
```
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
### Deploying amd64 images on arm64
|
||||||
|
|
||||||
|
> New as of 0.33.0
|
||||||
|
|
||||||
|
Many builders only produce amd64-compatible images. The docker-local scheduler will automatically detect these and run them via the `--platform=linux/amd64` on arm64 deploy targets.
|
||||||
|
|
||||||
### Disabling chown of persistent storage
|
### 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:
|
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:
|
||||||
@@ -101,7 +107,7 @@ The `formation` key should be specified as follows in the `app.json` file:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Omitting or removing the entry will result in parallelism for that process type to return to 1 entry at a time. This can be combined with the `parallel-schedule-count` property to speed up deployments.
|
Omitting or removing the entry will result in parallelism for that process type to return to 1 entry at a time. This can be combined with the `parallel-schedule-count` property to speed up deployments.
|
||||||
|
|
||||||
Note that increasing the value of `max_parallel` may significantly impact CPU utilization on your host as your app containers - and their respective processes - start up. Setting a value higher than the number of available CPUs is discouraged. It is recommended that users carefully set this value so as not to overburden their server.
|
Note that increasing the value of `max_parallel` may significantly impact CPU utilization on your host as your app containers - and their respective processes - start up. Setting a value higher than the number of available CPUs is discouraged. It is recommended that users carefully set this value so as not to overburden their server.
|
||||||
|
|
||||||
|
|||||||
333
docs/deployment/schedulers/k3s.md
Normal file
333
docs/deployment/schedulers/k3s.md
Normal file
@@ -0,0 +1,333 @@
|
|||||||
|
# K3s Scheduler
|
||||||
|
|
||||||
|
> [!IMPORTANT]
|
||||||
|
> New as of 0.33.0
|
||||||
|
|
||||||
|
```
|
||||||
|
scheduler-k3s:cluster-add [ssh://user@host:port] # Adds a server node to a Dokku-managed cluster
|
||||||
|
scheduler-k3s:cluster-list # Lists all nodes in a Dokku-managed cluster
|
||||||
|
scheduler-k3s:cluster-remove [node-id] # Removes client node to a Dokku-managed cluster
|
||||||
|
scheduler-k3s:initialize # Initializes a cluster
|
||||||
|
scheduler-k3s:report [<app>] [<flag>] # Displays a scheduler-k3s report for one or more apps
|
||||||
|
scheduler-k3s:set [<app>|--global] <key> (<value>) # Set or clear a scheduler-k3s property for an app or the scheduler
|
||||||
|
scheduler-k3s:show-kubeconfig # Displays the kubeconfig for remote usage
|
||||||
|
scheduler-k3s:uninstall # Uninstalls k3s from the Dokku server
|
||||||
|
```
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> The k3s plugin replaces the external [scheduler-kubernetes](https://github.com/dokku/dokku-scheduler-kubernetes) plugin. Users can continue to use the external plugin as necessary, but all future development will occur on the official core k3s plugin.
|
||||||
|
|
||||||
|
For multi-server support, Dokku provides the ability for users to setup a K3s cluster. As with all schedulers, it is set on a per-app basis. The scheduler can currently be overridden by running the following command:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler:set node-js-app selected k3s
|
||||||
|
```
|
||||||
|
|
||||||
|
As it is the default, unsetting the `selected` scheduler property is also a valid way to reset the scheduler.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler:set node-js-app k3s
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
### Initializing a cluster
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> This command must be run as root
|
||||||
|
|
||||||
|
Clusters can be initialized via the `scheduler-k3s:initialize` command. This will start a k3s cluster on the Dokku node itself.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:initialize
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, the k3s installation can run both app and system workloads. For clusters where app workloads are run on distinct worker nodes, initialize the cluster with the `--taint-scheduling` flag, which will allow _only_ Critical cluster components on the k3s control-plane nodes.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:initialize --taint-scheduling
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, Dokku will attempt to auto-detect the IP address of the server. In cases where the auto-detected IP address is incorrect, an override may be specified via the `--server-ip` flag:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:initialize --server-ip 192.168.20.15
|
||||||
|
```
|
||||||
|
|
||||||
|
### Adding nodes to the cluster
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> The `dokku` user _must_ be able to ssh onto the server in order to connect nodes to the cluster. The remote user must be root or have sudo enabled, or the install will fail.
|
||||||
|
|
||||||
|
#### Adding a worker node
|
||||||
|
|
||||||
|
Nodes that run app workloads can be added via the `scheduler-k3s:cluster-add` command. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in worker mode. Workers are typically used to run app workloads.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:cluster-add ssh://root@worker-1.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
If the server isn't in the `known_hosts` file, the connection will fail. This can be bypassed by setting the `--insecure-allow-unknown-hosts` flag:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:cluster-add --insecure-allow-unknown-hosts ssh://root@worker-1.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, Dokku will attempt to auto-detect the IP address of the Dokku server for the remote server to connect to. In cases where the auto-detected IP address is incorrect, an override may be specified via the `--server-ip` flag:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:cluster-add --server-ip 192.168.20.15 ssh://root@worker-1.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Adding a server node
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Only the initial Dokku server will be properly configured for push deployment, and should be considered your git remote. Additional server nodes are for ensuring high-availability of the K3s etcd state. Ensure this server is properly backed up and restorable or deployments will not work.
|
||||||
|
|
||||||
|
Server nodes are typically used to replicate the cluster state, and it is recommended to have an odd number of nodes spread across several availability zones (datacenters in close proximity within a region). This allows for higher availability in the event of a cluster failure. Server nodes run control-plane services such as the traefik load balancer and the etcd backing store.
|
||||||
|
|
||||||
|
Server nodes can also be added with the `scheduler-k3s:cluster-add` command by specifying `--role server`. This will ssh onto the specified server, install k3s, and join it to the current Dokku node in server mode.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:cluster-add --role server ssh://root@server-1.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
Server nodes allow any workloads to be scheduled on them by default, in addition to the control-plane, etcd, and the scheduler itself. To avoid app workloads being scheduled on your control-plane, use the `--taint-scheduling` flag:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:cluster-add --role server --taint-scheduling ssh://root@server-1.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
If the server isn't in the `known_hosts` file, the connection will fail. This can be bypassed by setting the `--insecure-allow-unknown-hosts` flag:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:cluster-add --role server --insecure-allow-unknown-hosts ssh://root@server-1.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, Dokku will attempt to auto-detect the IP address of the Dokku server for the remote server to connect to. In cases where the auto-detected IP address is incorrect, an override may be specified via the `--server-ip` flag:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:cluster-add --role server --server-ip 192.168.20.15 ssh://root@server-1.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Changing the network interface
|
||||||
|
|
||||||
|
When attaching an worker or server node, the K3s plugin will look at the IP associated with the `eth0` interface and use that to connect the new node to the cluster. To change this, set the `network-interface` property to the appropriate value.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global network-interface eth1
|
||||||
|
```
|
||||||
|
|
||||||
|
### Changing deploy timeouts
|
||||||
|
|
||||||
|
By default, app deploys will timeout after 300s. To customize this value, set the `deploy-timeout` property via `scheduler-k3s:set`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app deploy-timeout 60s
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app deploy-timeout
|
||||||
|
```
|
||||||
|
|
||||||
|
The `deploy-timeout` property can also be set globally. The global default is `300s`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global deploy-timeout 60s
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global deploy-timeout
|
||||||
|
```
|
||||||
|
|
||||||
|
### Customizing the namespace
|
||||||
|
|
||||||
|
By default, app deploys will run against the `default` Kubernetes namespace. To customize this value, set the `namespace` property via `scheduler-k3s:set`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app namespace lollipop
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app namespace
|
||||||
|
```
|
||||||
|
|
||||||
|
The `namespace` property can also be set globally. The global default is `default`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global namespace 60s
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global namespace
|
||||||
|
```
|
||||||
|
|
||||||
|
### Enabling rollback on failure
|
||||||
|
|
||||||
|
By default, app deploys do not rollback on failure. To enable this functionality, set the `rollback-on-failure` property via `scheduler-k3s:set`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app rollback-on-failure true
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app rollback-on-failure
|
||||||
|
```
|
||||||
|
|
||||||
|
The `rollback-on-failure` property can also be set globally. The global default is `false`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global rollback-on-failure false
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global rollback-on-failure
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using image pull secrets
|
||||||
|
|
||||||
|
When authenticating against a registry via `registry:login`, the scheduler-k3s plugin will authenticate all servers in the cluster against the registry specified. If desired, an image pull secret can be used instead. To customize this value, set the `image-pull-secrets` property via `scheduler-k3s:set`:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app image-pull-secrets lollipop
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app image-pull-secrets
|
||||||
|
```
|
||||||
|
|
||||||
|
The `image-pull-secrets` property can also be set globally. The global default is empty string, and k3s will use the local `registries.yaml` for any private registry pulls.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global image-pull-secrets 60s
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global image-pull-secrets
|
||||||
|
```
|
||||||
|
|
||||||
|
### Enabling letsencrypt integration
|
||||||
|
|
||||||
|
By default, letsencrypt is disabled and https port mappings are ignored. To enable, set the `letsencrypt-email-prod` or `letsencrypt-email-stag` property with the `--global` flag:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
# set the value for prod
|
||||||
|
dokku scheduler-k3s:set --global letsencrypt-email-prod automated@dokku.sh
|
||||||
|
|
||||||
|
# set the value for stag
|
||||||
|
dokku scheduler-k3s:set --global letsencrypt-email-stag automated@dokku.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
After enabling and rebuilding, all apps with an `https` port mapping that utilize the related letsencrypt server will be automatically updated to enable ssl. All http requests will then be redirected to https.
|
||||||
|
|
||||||
|
### Customizing the letsencrypt server
|
||||||
|
|
||||||
|
The letsencrypt integration is set to the production letsencrypt server by default. This can be changed on an app-level by setting the `letsencrypt-server` property with the `scheduler-k3s:set` command
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app letsencrypt-server staging
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set node-js-app letsencrypt-server
|
||||||
|
```
|
||||||
|
|
||||||
|
The `image-pull-secrets` property can also be set globally. The global default is `production`.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global letsencrypt-server staging
|
||||||
|
```
|
||||||
|
|
||||||
|
The default value may be set by passing an empty value for the option.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:set --global letsencrypt-server staging
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using kubectl remotely
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Certain ports must be open for interacting with the remote kubernets api. Refer to the [K3s networking documentation](https://docs.k3s.io/installation/requirements?os=debian#networking) for the required open ports between servers prior to running the command.
|
||||||
|
|
||||||
|
By default, Dokku assumes that all it controls all actions on the cluster, and thus does not expose the `kubectl` binary for administrators. To interact with kubectl, you will need to retrieve the `kubeconfig` for the cluster and configure your client to use that configuration.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku scheduler-k3s:show-kubeconfig
|
||||||
|
```
|
||||||
|
|
||||||
|
## Scheduler Interface
|
||||||
|
|
||||||
|
The following sections describe implemented and unimplemented scheduler functionality for the `k3s` scheduler.
|
||||||
|
|
||||||
|
### Implemented Commands and Triggers
|
||||||
|
|
||||||
|
This plugin implements various functionality through `plugn` triggers to integrate with Docker for running apps on a single server. The following functionality is supported by the `scheduler-k3s` plugin.
|
||||||
|
|
||||||
|
- `apps:clone`
|
||||||
|
- `apps:destroy`
|
||||||
|
- `apps:rename`
|
||||||
|
- `cron`
|
||||||
|
- `enter`
|
||||||
|
- `deploy`
|
||||||
|
- healthchecks
|
||||||
|
- Due to Kubernetes limitations, only a single healthcheck is supported for each of the `liveness`, `readiness`, and `startup` healthchecks
|
||||||
|
- Due to Kubernetes limitations, content checks are not supported
|
||||||
|
- Ports specified in the `app.json` are ignored in favor of the container port on the port mapping detected
|
||||||
|
- `logs`
|
||||||
|
- `ps:stop`
|
||||||
|
- `run`
|
||||||
|
- The `scheduler-post-run` trigger is not always triggered
|
||||||
|
- `run:detached`
|
||||||
|
- `run:list`
|
||||||
|
|
||||||
|
### Unimplemented command functionality
|
||||||
|
|
||||||
|
- `run:logs`
|
||||||
|
- `ps:inspect`
|
||||||
|
|
||||||
|
The following Dokku functionality is not implemented at this time.
|
||||||
|
|
||||||
|
- `vector` log integration
|
||||||
|
- persistent storage
|
||||||
|
|
||||||
|
### Logging support
|
||||||
|
|
||||||
|
App logs for the `logs` command are fetched by Dokku from running containers via the `kubectl` cli. Persisting logs via Vector is not implemented at this time. Users may choose to configure the Vector Kubernetes integration directly by following [this guide](https://vector.dev/docs/setup/installation/platforms/kubernetes/).
|
||||||
|
|
||||||
|
### Supported Resource Management Properties
|
||||||
|
|
||||||
|
The `k3s` scheduler supports a minimal list of resource _limits_ and _reservations_. The following properties are supported:
|
||||||
|
|
||||||
|
#### Resource Limits
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Cron tasks retrieve resource limits based on the computed cron task ID. If unspecified, the default will be 1 CPU and 512m RAM.
|
||||||
|
|
||||||
|
- cpu: is specified in number of CPUs a process can access.
|
||||||
|
- memory: should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes). Default unit is `m` (megabytes).
|
||||||
|
|
||||||
|
#### Resource Reservations
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> Cron tasks retrieve resource reservations based on the computed cron task ID. If unspecified, the default will be 1 CPU and 512m RAM.
|
||||||
|
|
||||||
|
- cpu: is specified in number of CPUs a process can access.
|
||||||
|
- memory: should be specified with a suffix of `b` (bytes), `k` (kilobytes), `m` (megabytes), `g` (gigabytes). Default unit is `m` (megabytes).
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
# Kubernetes Scheduler
|
# Kubernetes Scheduler
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> This scheduler is not in Dokku core and thus functionality may change over time as the API stabilizes.
|
> Deprecation notice: This scheduler has been replaced with the [k3s scheduler plugin](/docs/deployment/schedulers/k3s.md) and is no longer under active development.
|
||||||
|
|
||||||
The [Kubernetes Scheduler Plugin](https://github.com/dokku/dokku-scheduler-kubernetes) is available free as an external plugin. Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-kubernetes/issues) for more information on the status of the plugin.
|
The [Kubernetes Scheduler Plugin](https://github.com/dokku/dokku-scheduler-kubernetes) is available free as an external plugin. Please see the plugin's [issue tracker](https://github.com/dokku/dokku-scheduler-kubernetes/issues) for more information on the status of the plugin.
|
||||||
|
|
||||||
|
|||||||
@@ -97,6 +97,8 @@ At this time, the following dokku commands are used to implement a complete sche
|
|||||||
- triggers: post-app-rename-setup
|
- triggers: post-app-rename-setup
|
||||||
- `apps:clone`: handles app cloning
|
- `apps:clone`: handles app cloning
|
||||||
- triggers: post-app-clone-setup
|
- triggers: post-app-clone-setup
|
||||||
|
- `cron`: generates cron tasks for the app
|
||||||
|
- triggers: cron-write
|
||||||
- `deploy`: deploys app proceses and checks the status of a deploy
|
- `deploy`: deploys app proceses and checks the status of a deploy
|
||||||
- triggers: scheduler-app-status, scheduler-deploy, scheduler-is-deployed, scheduler-logs-failed
|
- triggers: scheduler-app-status, scheduler-deploy, scheduler-is-deployed, scheduler-logs-failed
|
||||||
- `enter`: enters a running container
|
- `enter`: enters a running container
|
||||||
@@ -105,6 +107,10 @@ At this time, the following dokku commands are used to implement a complete sche
|
|||||||
- triggers: scheduler-logs
|
- triggers: scheduler-logs
|
||||||
- `run`: starts one-off run containers (detached and non-detached) as well as listing run processes
|
- `run`: starts one-off run containers (detached and non-detached) as well as listing run processes
|
||||||
- triggers: scheduler-run, scheduler-run-list
|
- triggers: scheduler-run, scheduler-run-list
|
||||||
|
- `run:list`: lists running containers
|
||||||
|
- triggers: scheduler-run-list
|
||||||
|
- `run:logs`: fetches running container logs
|
||||||
|
- triggers: scheduler-run-logs
|
||||||
- `ps:stop`: stops app processes
|
- `ps:stop`: stops app processes
|
||||||
- triggers: scheduler-stop
|
- triggers: scheduler-stop
|
||||||
- `ps:inspect`: outputs inspect output for processes in an app
|
- `ps:inspect`: outputs inspect output for processes in an app
|
||||||
|
|||||||
@@ -158,12 +158,13 @@ One or more healthchecks can be defined in the `app.json` file - see the [deploy
|
|||||||
"attempts": 3
|
"attempts": 3
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
A healthcheck entry takes the following properties:
|
A healthcheck entry takes the following properties:
|
||||||
|
|
||||||
- `attempts`: (default: `3` seconds) Number of retry attempts to perform on failure.
|
- `attempts`: (default: `3`) Number of retry attempts to perform on failure.
|
||||||
- `command`: (default `''` - empty string) Command to execute within container.
|
- `command`: (default `''` - empty string) Command to execute within container.
|
||||||
- `content`: (default: `''` - empty string) Content to search in http path check output.
|
- `content`: (default: `''` - empty string) Content to search in http path check output.
|
||||||
- `initialDelay`: (default: 0, unit: seconds) Number of seconds to wait after a container has started before triggering the healthcheck.
|
- `initialDelay`: (default: 0, unit: seconds) Number of seconds to wait after a container has started before triggering the healthcheck.
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
|
|
||||||
### `app-exists`
|
### `app-exists`
|
||||||
|
|
||||||
- Description: Creates an app
|
- Description: Checks if an app exists
|
||||||
- Invoked by:
|
- Invoked by:
|
||||||
- Arguments: `$APP`
|
- Arguments: `$APP`
|
||||||
- Example:
|
- Example:
|
||||||
@@ -549,18 +549,18 @@ echo "clock: some-command" >> Procfile
|
|||||||
popd &>/dev/null
|
popd &>/dev/null
|
||||||
```
|
```
|
||||||
|
|
||||||
### `cron-write`
|
### `cron-get-property`
|
||||||
|
|
||||||
- Description: Force triggers writing out cron entries
|
- Description: Return the value for an app's cron property
|
||||||
- Invoked by:
|
- Invoked by:
|
||||||
- Arguments:
|
- Arguments: `$APP $KEY`
|
||||||
- Example:
|
- Example:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
APP="$1"; PROPERTY="$2"
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
@@ -583,6 +583,22 @@ DOKKU_SCHEDULER="$1"
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `cron-write`
|
||||||
|
|
||||||
|
- Description: Force triggers writing out cron entries
|
||||||
|
- Invoked by:
|
||||||
|
- Arguments:
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `dependencies`
|
### `dependencies`
|
||||||
|
|
||||||
- Description: Used to install system-level dependencies.
|
- Description: Used to install system-level dependencies.
|
||||||
@@ -1355,7 +1371,7 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
|
|
||||||
- Description: Returns a list of port mappings, newline delimited
|
- Description: Returns a list of port mappings, newline delimited
|
||||||
- Invoked by: Various networking plugins
|
- Invoked by: Various networking plugins
|
||||||
- Arguments: `$APP`
|
- Arguments: `$APP $FORMAT`
|
||||||
- Example:
|
- Example:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
@@ -1473,8 +1489,26 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `post-build`
|
||||||
|
|
||||||
|
- Description: Allows you to run commands after the build image is create for a given app.
|
||||||
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
|
- Arguments: `$BUILDER_TYPE $APP $SOURCECODE_WORK_DIR`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `post-build-buildpack`
|
### `post-build-buildpack`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Deprecated, please use `post-build` instead
|
||||||
|
|
||||||
- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using buildpacks.
|
- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using buildpacks.
|
||||||
- Invoked by: `internal function dokku_build() (build phase)`
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
||||||
@@ -1488,26 +1522,10 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
### `post-build-pack`
|
### `post-build-dockerfile`
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> The pack plugin trigger apis are under development and may change
|
> Deprecated, please use `post-build` instead
|
||||||
> between minor releases until the 1.0 release.
|
|
||||||
|
|
||||||
- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using pack.
|
|
||||||
- Invoked by: `internal function dokku_build() (build phase)`
|
|
||||||
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
|
||||||
- Example:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
```
|
|
||||||
|
|
||||||
### `post-build-dockerfile`
|
|
||||||
|
|
||||||
- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using a dockerfile.
|
- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using a dockerfile.
|
||||||
- Invoked by: `internal function dokku_build() (build phase)`
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
@@ -1524,6 +1542,9 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
|
|
||||||
### `post-build-lambda`
|
### `post-build-lambda`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Deprecated, please use `post-build` instead
|
||||||
|
|
||||||
- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using lambda.
|
- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using lambda.
|
||||||
- Invoked by: `internal function dokku_build() (build phase)`
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
||||||
@@ -1537,6 +1558,24 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `post-build-pack`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Deprecated, please use `post-build` instead
|
||||||
|
|
||||||
|
- Description: Allows you to run commands after the build image is create for a given app. Only applies to apps using pack.
|
||||||
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
|
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `post-certs-remove`
|
### `post-certs-remove`
|
||||||
|
|
||||||
- Description: Allows you to run commands after a cert is removed
|
- Description: Allows you to run commands after a cert is removed
|
||||||
@@ -1718,6 +1757,20 @@ APP="$1"
|
|||||||
haproxy-build-config "$APP"
|
haproxy-build-config "$APP"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `post-registry-login`
|
||||||
|
|
||||||
|
- Description: Allows running a command after the a registry has been logged into
|
||||||
|
- Invoked by: `dokku registry:login`
|
||||||
|
- Arguments: `$DOCKER_REGISTRY_SERVER $DOCKER_REGISTRY_USER`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# the DOCKER_REGISTRY_PASS env var is also set
|
||||||
|
echo "$DOCKER_REGISTRY_PASS"
|
||||||
|
```
|
||||||
|
|
||||||
### `post-release-builder`
|
### `post-release-builder`
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
@@ -1771,8 +1824,26 @@ APP="$1";
|
|||||||
dokku config:set --no-restart $APP MANUALLY_STOPPED=1
|
dokku config:set --no-restart $APP MANUALLY_STOPPED=1
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `pre-build`
|
||||||
|
|
||||||
|
- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container.
|
||||||
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
|
- Arguments: `$BUILDER_TYPE $APP $SOURCECODE_WORK_DIR`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `pre-build-buildpack`
|
### `pre-build-buildpack`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Deprecated, please use `pre-build` instead
|
||||||
|
|
||||||
- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using buildpacks.
|
- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using buildpacks.
|
||||||
- Invoked by: `internal function dokku_build() (build phase)`
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
||||||
@@ -1786,8 +1857,29 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `pre-build-dockerfile`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Deprecated, please use `pre-build` instead
|
||||||
|
|
||||||
|
- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using a dockerfile.
|
||||||
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
|
- Arguments: `$APP`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `pre-build-lambda`
|
### `pre-build-lambda`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Deprecated, please use `pre-build` instead
|
||||||
|
|
||||||
- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using lambda.
|
- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using lambda.
|
||||||
- Invoked by: `internal function dokku_build() (build phase)`
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
- Arguments: `$APP` `$SOURCECODE_WORK_DIR`
|
||||||
@@ -1804,8 +1896,7 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
### `pre-build-pack`
|
### `pre-build-pack`
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> The pack plugin trigger apis are under development and may change
|
> Deprecated, please use `pre-build` instead
|
||||||
> between minor releases until the 1.0 release.
|
|
||||||
|
|
||||||
- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using pack.
|
- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using pack.
|
||||||
- Invoked by: `internal function dokku_build() (build phase)`
|
- Invoked by: `internal function dokku_build() (build phase)`
|
||||||
@@ -1820,21 +1911,6 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
### `pre-build-dockerfile`
|
|
||||||
|
|
||||||
- Description: Allows you to run commands before the build image is created for a given app. For instance, this can be useful to add env vars to your container. Only applies to apps using a dockerfile.
|
|
||||||
- Invoked by: `internal function dokku_build() (build phase)`
|
|
||||||
- Arguments: `$APP`
|
|
||||||
- Example:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
```
|
|
||||||
|
|
||||||
### `pre-delete`
|
### `pre-delete`
|
||||||
|
|
||||||
- Description: Can be used to run commands before an app is deleted.
|
- Description: Can be used to run commands before an app is deleted.
|
||||||
@@ -1931,8 +2007,28 @@ APP="$1"; IMAGE_SOURCE_TYPE="$2"; TMP_WORK_DIR="$3"; REV="$4"
|
|||||||
echo "$APP" > "$TMP_WORK_DIR/dokku-is-awesome"
|
echo "$APP" > "$TMP_WORK_DIR/dokku-is-awesome"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `pre-release-builder`
|
||||||
|
|
||||||
|
- Description: Allows you to run commands before environment variables are set for the release step of the deploy.
|
||||||
|
- Invoked by: `internal function dokku_release() (release phase)`
|
||||||
|
- Arguments: `$BUILDER_TYPE $APP $IMAGE`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
|
BUILDER_TYPE="$1"; APP="$2"; IMAGE_TAG="$3";
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
```
|
||||||
|
|
||||||
### `pre-release-buildpack`
|
### `pre-release-buildpack`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Deprecated, please use `pre-release-builder` instead
|
||||||
|
|
||||||
- Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using buildpacks.
|
- Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using buildpacks.
|
||||||
- Invoked by: `internal function dokku_release() (release phase)`
|
- Invoked by: `internal function dokku_release() (release phase)`
|
||||||
- Arguments: `$APP $IMAGE_TAG`
|
- Arguments: `$APP $IMAGE_TAG`
|
||||||
@@ -1960,6 +2056,9 @@ docker commit "${DOCKER_COMMIT_LABEL_ARGS[@]}" $CID $IMAGE >/dev/null
|
|||||||
|
|
||||||
### `pre-release-lambda`
|
### `pre-release-lambda`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Deprecated, please use `pre-release-builder` instead
|
||||||
|
|
||||||
- Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using lambda.
|
- Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using lambda.
|
||||||
- Invoked by: `internal function dokku_release() (release phase)`
|
- Invoked by: `internal function dokku_release() (release phase)`
|
||||||
- Arguments: `$APP $IMAGE_TAG`
|
- Arguments: `$APP $IMAGE_TAG`
|
||||||
@@ -1978,8 +2077,7 @@ APP="$1"; IMAGE_TAG="$2";
|
|||||||
### `pre-release-pack`
|
### `pre-release-pack`
|
||||||
|
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> The pack plugin trigger apis are under development and may change
|
> Deprecated, please use `pre-release-builder` instead
|
||||||
> between minor releases until the 1.0 release.
|
|
||||||
|
|
||||||
- Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using pack.
|
- Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using pack.
|
||||||
- Invoked by: `internal function dokku_release() (release phase)`
|
- Invoked by: `internal function dokku_release() (release phase)`
|
||||||
@@ -1998,6 +2096,9 @@ APP="$1"; IMAGE_TAG="$2";
|
|||||||
|
|
||||||
### `pre-release-dockerfile`
|
### `pre-release-dockerfile`
|
||||||
|
|
||||||
|
> [!WARNING]
|
||||||
|
> Deprecated, please use `pre-release-builder` instead
|
||||||
|
|
||||||
- Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using a dockerfile.
|
- Description: Allows you to run commands before environment variables are set for the release step of the deploy. Only applies to apps using a dockerfile.
|
||||||
- Invoked by: `internal function dokku_release() (release phase)`
|
- Invoked by: `internal function dokku_release() (release phase)`
|
||||||
- Arguments: `$APP $IMAGE_TAG`
|
- Arguments: `$APP $IMAGE_TAG`
|
||||||
@@ -2107,24 +2208,6 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
# TODO
|
# TODO
|
||||||
```
|
```
|
||||||
|
|
||||||
### `proxy-configure-ports`
|
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> Deprecated, please use `ports-configure` instead
|
|
||||||
|
|
||||||
- Description: Configures the port mapping
|
|
||||||
- Invoked by: `internally triggered by proxy plugins`
|
|
||||||
- Arguments: `$APP`
|
|
||||||
- Example:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|
||||||
|
|
||||||
# TODO
|
|
||||||
```
|
|
||||||
|
|
||||||
### `proxy-disable`
|
### `proxy-disable`
|
||||||
|
|
||||||
- Description: Disables the configured proxy implementation for an app
|
- Description: Disables the configured proxy implementation for an app
|
||||||
@@ -2439,7 +2522,8 @@ DOKKU_SCHEDULER="$1"; APP="$2";
|
|||||||
|
|
||||||
### `scheduler-is-deployed`
|
### `scheduler-is-deployed`
|
||||||
|
|
||||||
> Warning: The scheduler plugin trigger apis are under development and may change
|
> [!WARNING]
|
||||||
|
> The scheduler plugin trigger apis are under development and may change
|
||||||
> between minor releases until the 1.0 release.
|
> between minor releases until the 1.0 release.
|
||||||
|
|
||||||
- Description: Allows you to check if the scheduler has deployed the app
|
- Description: Allows you to check if the scheduler has deployed the app
|
||||||
@@ -2538,7 +2622,8 @@ DOKKU_SCHEDULER="$1"; APP="$2"; IMAGE_TAG="$3";
|
|||||||
|
|
||||||
### `scheduler-post-deploy-process`
|
### `scheduler-post-deploy-process`
|
||||||
|
|
||||||
> Warning: The scheduler plugin trigger apis are under development and may change
|
> [!WARNING]
|
||||||
|
> The scheduler plugin trigger apis are under development and may change
|
||||||
> between minor releases until the 1.0 release.
|
> between minor releases until the 1.0 release.
|
||||||
|
|
||||||
- Description: Allows you to run a command after a process has been started
|
- Description: Allows you to run a command after a process has been started
|
||||||
@@ -2678,7 +2763,8 @@ DOKKU_SCHEDULER="$1"; APP="$2"; CONTAINER="$3"; TAIL="$4"; PRETTY_PRINT="$5"; NU
|
|||||||
|
|
||||||
### `scheduler-run-stop`
|
### `scheduler-run-stop`
|
||||||
|
|
||||||
> Warning: The scheduler plugin trigger apis are under development and may change
|
> [!WARNING]
|
||||||
|
> The scheduler plugin trigger apis are under development and may change
|
||||||
> between minor releases until the 1.0 release.
|
> between minor releases until the 1.0 release.
|
||||||
|
|
||||||
- Description: Allows a scheduler to stop all "run" containers or a specified container
|
- Description: Allows a scheduler to stop all "run" containers or a specified container
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ The workflow looks like this:
|
|||||||
```shell
|
```shell
|
||||||
# having dokku-arch in ../dokku-arch
|
# having dokku-arch in ../dokku-arch
|
||||||
vagrant up build-arch
|
vagrant up build-arch
|
||||||
# wait for "==> build-arch: ==> Finished making: dokku 0.31.2-2 (Mon Feb 22 23:20:37 CET 2016)"
|
# wait for "==> build-arch: ==> Finished making: dokku 0.33.2-2 (Mon Feb 22 23:20:37 CET 2016)"
|
||||||
cd ../dokku-arch
|
cd ../dokku-arch
|
||||||
git add PKGBUILD .SRCINFO
|
git add PKGBUILD .SRCINFO
|
||||||
git commit -m 'Update to dokku 0.9.9'
|
git commit -m 'Update to dokku 0.9.9'
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
Pull the dokku/dokku image:
|
Pull the dokku/dokku image:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
docker pull dokku/dokku:0.31.2
|
docker pull dokku/dokku:0.33.2
|
||||||
```
|
```
|
||||||
|
|
||||||
Next, run the image.
|
Next, run the image.
|
||||||
@@ -19,7 +19,7 @@ docker container run \
|
|||||||
--publish 8443:443 \
|
--publish 8443:443 \
|
||||||
--volume /var/lib/dokku:/mnt/dokku \
|
--volume /var/lib/dokku:/mnt/dokku \
|
||||||
--volume /var/run/docker.sock:/var/run/docker.sock \
|
--volume /var/run/docker.sock:/var/run/docker.sock \
|
||||||
dokku/dokku:0.31.2
|
dokku/dokku:0.33.2
|
||||||
```
|
```
|
||||||
|
|
||||||
The above command will start a new docker container that is ready when a message similar to `Runit started as PID 12345` appears.
|
The above command will start a new docker container that is ready when a message similar to `Runit started as PID 12345` appears.
|
||||||
@@ -61,7 +61,7 @@ redis: https://github.com/dokku/dokku-redis.git
|
|||||||
The alternative is to build a custom docker image via a custom Dockerfile. This Dockerfile can run any `plugin:install` command. Note that the version installed at that time will be the one that persists. Below is an example Dockerfile showing this method.
|
The alternative is to build a custom docker image via a custom Dockerfile. This Dockerfile can run any `plugin:install` command. Note that the version installed at that time will be the one that persists. Below is an example Dockerfile showing this method.
|
||||||
|
|
||||||
```Dockerfile
|
```Dockerfile
|
||||||
FROM dokku/dokku:0.31.2
|
FROM dokku/dokku:0.33.2
|
||||||
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
|
RUN dokku plugin:install https://github.com/dokku/dokku-postgres.git postgres
|
||||||
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git redis
|
RUN dokku plugin:install https://github.com/dokku/dokku-redis.git redis
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ To start using Dokku, you'll need a system that meets the following minimum requ
|
|||||||
- [Debian 10+ x64](https://www.debian.org/distrib/)
|
- [Debian 10+ x64](https://www.debian.org/distrib/)
|
||||||
- A server with one of the following architectures
|
- A server with one of the following architectures
|
||||||
- AMD64 (alternatively known as `x86_64`), commonly used for Intel cloud servers
|
- AMD64 (alternatively known as `x86_64`), commonly used for Intel cloud servers
|
||||||
- ARMV7 (alternatively known as `armhf`), commonly used for Raspberry PI
|
|
||||||
- ARMV8 (alternatively known as `arm64`), commonly used for Raspberry PI and AWS Graviton
|
- ARMV8 (alternatively known as `arm64`), commonly used for Raspberry PI and AWS Graviton
|
||||||
|
|
||||||
To avoid memory pressure during builds or runtime of your applications, we suggest the following:
|
To avoid memory pressure during builds or runtime of your applications, we suggest the following:
|
||||||
@@ -38,8 +37,8 @@ To install the latest stable version of Dokku, you can run the following shell c
|
|||||||
|
|
||||||
```shell
|
```shell
|
||||||
# for debian systems, installs Dokku via apt-get
|
# for debian systems, installs Dokku via apt-get
|
||||||
wget -NP . https://dokku.com/install/v0.31.2/bootstrap.sh
|
wget -NP . https://dokku.com/install/v0.33.2/bootstrap.sh
|
||||||
sudo DOKKU_TAG=v0.31.2 bash bootstrap.sh
|
sudo DOKKU_TAG=v0.33.2 bash bootstrap.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
The installation process takes about 5-10 minutes, depending upon internet connection speed.
|
The installation process takes about 5-10 minutes, depending upon internet connection speed.
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ Docker releases updates periodically to their engine. We recommend reading their
|
|||||||
|
|
||||||
Before upgrading, check the migration guides to get comfortable with new features and prepare your deployment to be upgraded.
|
Before upgrading, check the migration guides to get comfortable with new features and prepare your deployment to be upgraded.
|
||||||
|
|
||||||
|
- [Upgrading to 0.32](/docs/appendices/0.32.0-migration-guide.md)
|
||||||
- [Upgrading to 0.31](/docs/appendices/0.31.0-migration-guide.md)
|
- [Upgrading to 0.31](/docs/appendices/0.31.0-migration-guide.md)
|
||||||
- [Upgrading to 0.30](/docs/appendices/0.30.0-migration-guide.md)
|
- [Upgrading to 0.30](/docs/appendices/0.30.0-migration-guide.md)
|
||||||
- [Upgrading to 0.29](/docs/appendices/0.29.0-migration-guide.md)
|
- [Upgrading to 0.29](/docs/appendices/0.29.0-migration-guide.md)
|
||||||
|
|||||||
@@ -10,26 +10,26 @@
|
|||||||
<meta name="author" content="">
|
<meta name="author" content="">
|
||||||
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
|
<title>Dokku - The smallest PaaS implementation you've ever seen</title>
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-57x57.png">
|
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-60x60.png">
|
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-72x72.png">
|
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-76x76.png">
|
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-114x114.png">
|
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-120x120.png">
|
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-144x144.png">
|
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-152x152.png">
|
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/manifest.json">
|
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/manifest.json">
|
||||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/favicon.ico">
|
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon.ico">
|
||||||
<meta name="apple-mobile-web-app-title" content="Dokku">
|
<meta name="apple-mobile-web-app-title" content="Dokku">
|
||||||
<meta name="application-name" content="Dokku">
|
<meta name="application-name" content="Dokku">
|
||||||
<meta name="msapplication-TileColor" content="#da532c">
|
<meta name="msapplication-TileColor" content="#da532c">
|
||||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/mstile-144x144.png">
|
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/mstile-144x144.png">
|
||||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/browserconfig.xml">
|
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/browserconfig.xml">
|
||||||
<meta name="theme-color" content="#ffffff">
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
|
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
|
||||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/style.css" rel="stylesheet">
|
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/style.css" rel="stylesheet">
|
||||||
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
|
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@
|
|||||||
<main class="container px-4 px-lg-5">
|
<main class="container px-4 px-lg-5">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-lg-7">
|
<div class="col-lg-7">
|
||||||
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.31.2</span></span></a>
|
<a class="badge-link" href="https://github.com/dokku/dokku/releases"><span class="badge py-2 d-flex fit-content"><div class="circle align-self-center me-2"></div>Latest release <span id="releaseVersion" class="ms-1">v0.33.2</span></span></a>
|
||||||
<h1 class="text-white hero-heading mt-5">An open source PAAS alternative to Heroku.</h1>
|
<h1 class="text-white hero-heading mt-5">An open source PAAS alternative to Heroku.</h1>
|
||||||
<h4 class="text-white mt-5">Dokku helps you build and manage the lifecycle of applications from building to scaling.</h4>
|
<h4 class="text-white mt-5">Dokku helps you build and manage the lifecycle of applications from building to scaling.</h4>
|
||||||
<div class="d-flex mt-5">
|
<div class="d-flex mt-5">
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
</p>
|
</p>
|
||||||
<p class="line">
|
<p class="line">
|
||||||
<span class="prompt">$</span>
|
<span class="prompt">$</span>
|
||||||
<span class="command">sudo DOKKU_TAG=v0.31.2 bash bootstrap.sh</span>
|
<span class="command">sudo DOKKU_TAG=v0.33.2 bash bootstrap.sh</span>
|
||||||
</p>
|
</p>
|
||||||
<br>
|
<br>
|
||||||
|
|
||||||
@@ -226,8 +226,8 @@
|
|||||||
</svg>
|
</svg>
|
||||||
Create</a>
|
Create</a>
|
||||||
<a class="nav-link" id="nav-deploy-tab" data-bs-toggle="tab" href="#nav-deploy" role="tab" aria-controls="nav-deploy" aria-selected="false">
|
<a class="nav-link" id="nav-deploy-tab" data-bs-toggle="tab" href="#nav-deploy" role="tab" aria-controls="nav-deploy" aria-selected="false">
|
||||||
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
<svg width="32" height="32" viewBox="0 0.33.22" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path d="M29.8709 1.40551C29.8591 1.34642 29.8311 1.29205 29.7903 1.24881C29.7495 1.20556 29.6976 1.17524 29.6407 1.16141C25.8466 0.20375 17.082 3.61605 12.3285 8.51812C11.4813 9.38524 10.7088 10.3268 10.0198 11.3321C8.55457 11.1953 7.08939 11.3105 5.84189 11.8721C2.31916 13.4706 1.29423 17.6454 1.00817 19.4376C0.992669 19.5358 0.999288 19.6364 1.02751 19.7315C1.05574 19.8267 1.10481 19.9138 1.17093 19.9862C1.23705 20.0586 1.31844 20.1144 1.40878 20.1491C1.49913 20.1838 1.59601 20.1966 1.69192 20.1865L7.34824 19.5456C7.35215 19.9859 7.37777 20.4257 7.42498 20.8633C7.4545 21.1658 7.58527 21.4482 7.79477 21.6618L9.98487 23.9221C10.1921 24.1384 10.466 24.2734 10.7593 24.3037C11.1808 24.3522 11.6044 24.3786 12.0285 24.3829L11.4082 30.2153C11.3985 30.31.2 11.411 30.414 11.4446 30.507C11.4783 30.6001 11.5323 30.684 11.6023 30.7521C11.6724 30.8202 11.7567 30.8708 11.8487 30.9C11.9408 30.9291 12.0381 30.936 12.1331 30.9202C13.8704 30.6322 17.9241 29.5744 19.4639 25.9396C20.0081 24.6508 20.1198 23.1466 19.9942 21.6417C20.9712 20.9312 21.8861 20.134 22.7285 19.2591C27.4994 14.3627 30.7849 5.51625 29.8709 1.40551ZM18.4878 12.9162C18.0711 12.4862 17.7873 11.9384 17.6723 11.3419C17.5573 10.7455 17.6162 10.1273 17.8417 9.56541C18.0672 9.00356 18.449 8.52333 18.939 8.18546C19.4289 7.84759 20.005 7.66725 20.5942 7.66725C21.1835 7.66725 21.7595 7.84759 22.2494 8.18546C22.7394 8.52333 23.1212 9.00356 23.3467 9.56541C23.5722 10.1273 23.6311 10.7455 23.5161 11.3419C23.4011 11.9384 23.1173 12.4862 22.7006 12.9162C22.4242 13.202 22.0959 13.4288 21.7344 13.5835C21.373 13.7383 20.9855 13.8179 20.5942 13.8179C20.2029 13.8179 19.8154 13.7383 19.454 13.5835C19.0926 13.4288 18.7642 13.202 18.4878 12.9162Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
<path d="M29.8709 1.40551C29.8591 1.34642 29.8311 1.29205 29.7903 1.24881C29.7495 1.20556 29.6976 1.17524 29.6407 1.16141C25.8466 0.20375 17.082 3.61605 12.3285 8.51812C11.4813 9.38524 10.7088 10.3268 10.0198 11.3321C8.55457 11.1953 7.08939 11.3105 5.84189 11.8721C2.31916 13.4706 1.29423 17.6454 1.00817 19.4376C0.992669 19.5358 0.999288 19.6364 1.02751 19.7315C1.05574 19.8267 1.10481 19.9138 1.17093 19.9862C1.23705 20.0586 1.31844 20.1144 1.40878 20.1491C1.49913 20.1838 1.59601 20.1966 1.69192 20.1865L7.34824 19.5456C7.35215 19.9859 7.37777 20.4257 7.42498 20.8633C7.4545 21.1658 7.58527 21.4482 7.79477 21.6618L9.98487 23.9221C10.1921 24.1384 10.466 24.2734 10.7593 24.3037C11.1808 24.3522 11.6044 24.3786 12.0285 24.3829L11.4082 30.2153C11.3985 30.33.2 11.411 30.414 11.4446 30.507C11.4783 30.6001 11.5323 30.684 11.6023 30.7521C11.6724 30.8202 11.7567 30.8708 11.8487 30.9C11.9408 30.9291 12.0381 30.936 12.1331 30.9202C13.8704 30.6322 17.9241 29.5744 19.4639 25.9396C20.0081 24.6508 20.1198 23.1466 19.9942 21.6417C20.9712 20.9312 21.8861 20.134 22.7285 19.2591C27.4994 14.3627 30.7849 5.51625 29.8709 1.40551ZM18.4878 12.9162C18.0711 12.4862 17.7873 11.9384 17.6723 11.3419C17.5573 10.7455 17.6162 10.1273 17.8417 9.56541C18.0672 9.00356 18.449 8.52333 18.939 8.18546C19.4289 7.84759 20.005 7.66725 20.5942 7.66725C21.1835 7.66725 21.7595 7.84759 22.2494 8.18546C22.7394 8.52333 23.1212 9.00356 23.3467 9.56541C23.5722 10.1273 23.6311 10.7455 23.5161 11.3419C23.4011 11.9384 23.1173 12.4862 22.7006 12.9162C22.4242 13.202 22.0959 13.4288 21.7344 13.5835C21.373 13.7383 20.9855 13.8179 20.5942 13.8179C20.2029 13.8179 19.8154 13.7383 19.454 13.5835C19.0926 13.4288 18.7642 13.202 18.4878 12.9162Z" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||||
<path d="M5.29982 22.8765C4.60428 22.9646 3.95721 23.29 3.46136 23.801C2.232 25.074 2.11548 29.7889 2.11548 29.7889C2.11548 29.7889 6.68686 29.6687 7.91692 28.3985C8.41409 27.8876 8.72993 27.2187 8.81347 26.4997" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
<path d="M5.29982 22.8765C4.60428 22.9646 3.95721 23.29 3.46136 23.801C2.232 25.074 2.11548 29.7889 2.11548 29.7889C2.11548 29.7889 6.68686 29.6687 7.91692 28.3985C8.41409 27.8876 8.72993 27.2187 8.81347 26.4997" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
||||||
</svg>
|
</svg>
|
||||||
Deploy</a>
|
Deploy</a>
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ While the default OpenResty image is hardcoded, users may specify an alternative
|
|||||||
dokku openresty:set --global image dokku/openresty-docker-proxy:0.5.6
|
dokku openresty:set --global image dokku/openresty-docker-proxy:0.5.6
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Checking the OpenResty container's logs
|
### Checking the OpenResty container's logs
|
||||||
|
|
||||||
It may be necessary to check the OpenResty container's logs to ensure that OpenResty is operating as expected. This can be performed with the `openresty:logs` command.
|
It may be necessary to check the OpenResty container's logs to ensure that OpenResty is operating as expected. This can be performed with the `openresty:logs` command.
|
||||||
|
|
||||||
@@ -103,6 +103,27 @@ dokku openresty:logs --tail --num 10
|
|||||||
|
|
||||||
The above command will show logs continually from the openresty container, with an initial history of 10 log lines
|
The above command will show logs continually from the openresty container, with an initial history of 10 log lines
|
||||||
|
|
||||||
|
### Customizing Openresty Settings for an app
|
||||||
|
|
||||||
|
#### OpenResty Properties
|
||||||
|
|
||||||
|
The OpenResty plugin supports all properties supported by the `nginx:set` command via `openresty:set`. At this time, please consult the nginx documentation for more information on what properties are available.
|
||||||
|
|
||||||
|
Please note that the oldest running container will be used for OpenResty configuration, and thus newer config may not apply until older app containers are retired during/after a deploy, depending on your zero-downtime settings.
|
||||||
|
|
||||||
|
#### Custom OpenResty Templates
|
||||||
|
|
||||||
|
At this time, the OpenResty plugin does not allow complete customization of the template used to manage an app's vhost. Apps will use a template provided by the OpenResty container to proxy requests. See the next section for documentation on how to configure portions of the template.
|
||||||
|
|
||||||
|
#### Injecting custom snippets into the OpenResty config
|
||||||
|
|
||||||
|
The OpenResty plugin allows users to specify templates in their repository for auto-injection into the OpenResty config. Please note that this configuration should be validated prior to deployment or may cause outages in your OpenResty proxy layer.
|
||||||
|
|
||||||
|
The following folders within an app repository may have `*.conf` files that will be automatically injected into the OpenResty config.
|
||||||
|
|
||||||
|
- `openresty/http-includes/`: Injected in the `server` block serving http(s) requests for the app.
|
||||||
|
- `openresty/http-location-includes/`: Injected in the `location` block that proxies to the app in the app's respective `server` block.
|
||||||
|
|
||||||
### SSL Configuration
|
### SSL Configuration
|
||||||
|
|
||||||
The OpenResty plugin only supports automatic ssl certificates from it's letsencrypt integration. Managed certificates provided by the `certs` plugin are ignored.
|
The OpenResty plugin only supports automatic ssl certificates from it's letsencrypt integration. Managed certificates provided by the `certs` plugin are ignored.
|
||||||
|
|||||||
@@ -9,13 +9,39 @@ proxy:clear-config [--all|<app>] # Clears config for given app
|
|||||||
proxy:disable [--parallel count] [--all|<app>] # Disable proxy for app
|
proxy:disable [--parallel count] [--all|<app>] # Disable proxy for app
|
||||||
proxy:enable [--parallel count] [--all|<app>] # Enable proxy for app
|
proxy:enable [--parallel count] [--all|<app>] # Enable proxy for app
|
||||||
proxy:report [<app>] [<flag>] # Displays a proxy report for one or more apps
|
proxy:report [<app>] [<flag>] # Displays a proxy report for one or more apps
|
||||||
proxy:set <app> <proxy-type> # Set proxy type for app
|
proxy:set [<app>|--global] <proxy-type> # Set proxy type for app
|
||||||
```
|
```
|
||||||
|
|
||||||
In Dokku 0.5.0, port proxying was decoupled from the `nginx-vhosts` plugin into the proxy plugin. Dokku 0.6.0 introduced the ability to map host ports to specific container ports. In the future this will allow other proxy software - such as HAProxy or Caddy - to be used in place of nginx.
|
In Dokku 0.5.0, port proxying was decoupled from the `nginx-vhosts` plugin into the proxy plugin. Dokku 0.6.0 introduced the ability to map host ports to specific container ports. In the future this will allow other proxy software - such as HAProxy or Caddy - to be used in place of nginx.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
### Changing the proxy
|
||||||
|
|
||||||
|
The default proxy shipped with Dokku is `nginx`. It can be changed via the `proxy:set` command.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku proxy:set node-js-app caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
-----> Setting config vars
|
||||||
|
DOKKU_APP_PROXY_TYPE: caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
The proxy may also be set on a global basis. This is usually preferred as running multiple proxy implementations may cause port collision issues.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku proxy:set --global caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
```
|
||||||
|
-----> Setting config vars
|
||||||
|
DOKKU_PROXY_TYPE: caddy
|
||||||
|
```
|
||||||
|
|
||||||
|
Changing the proxy does not stop or start any given proxy implementation. Please see the documentation for your proxy implementation for details on how to perform a change.
|
||||||
|
|
||||||
### Regenerating proxy config
|
### Regenerating proxy config
|
||||||
|
|
||||||
In certain cases, your app proxy configs may drift from the correct config for your app. You may regenerate the config at any point via the `proxy:build-config` command. This command will trigger a rebuild for the configured proxy implementation (default: nginx) for a given app. The command may fail if there are no current web listeners for your app.
|
In certain cases, your app proxy configs may drift from the correct config for your app. You may regenerate the config at any point via the `proxy:build-config` command. This command will trigger a rebuild for the configured proxy implementation (default: nginx) for a given app. The command may fail if there are no current web listeners for your app.
|
||||||
|
|||||||
@@ -46,10 +46,27 @@ When running scheduled cron tasks, there are a few items to be aware of:
|
|||||||
- Scheduled cron tasks are performed within the app environment available at runtime. If the app image does not exist, the command may fail to execute.
|
- Scheduled cron tasks are performed within the app environment available at runtime. If the app image does not exist, the command may fail to execute.
|
||||||
- Schedules are performed on the hosting server's timezone, which is typically UTC.
|
- Schedules are performed on the hosting server's timezone, which is typically UTC.
|
||||||
- At this time, only the `PATH` and `SHELL` environment variables are specified in the cron template.
|
- At this time, only the `PATH` and `SHELL` environment variables are specified in the cron template.
|
||||||
|
- A `MAILTO` value can be set via the `cron:set` command.
|
||||||
- Each scheduled task is executed within a one-off `run` container, and thus inherit any docker-options specified for `run` containers. Resources are never shared between scheduled tasks.
|
- Each scheduled task is executed within a one-off `run` container, and thus inherit any docker-options specified for `run` containers. Resources are never shared between scheduled tasks.
|
||||||
- Scheduled cron tasks are supported on a per-scheduler basis, and are currently only implemented by the `docker-local` scheduler.
|
- Scheduled cron tasks are supported on a per-scheduler basis, and are currently only implemented by the `docker-local` scheduler.
|
||||||
- Tasks for _all_ apps managed by the `docker-local` scheduler are written to a single crontab file owned by the `dokku` user. The `dokku` user's crontab should be considered reserved for this purpose.
|
- Tasks for _all_ apps managed by the `docker-local` scheduler are written to a single crontab file owned by the `dokku` user. The `dokku` user's crontab should be considered reserved for this purpose.
|
||||||
|
|
||||||
|
#### Specifying a MAILTO value
|
||||||
|
|
||||||
|
By default, cron tasks complete and do not perform any reporting. Users can specify a value for `MAILTO` via the global `mailto` cron property by using the `cron:set` command.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku cron:set --global mailto example@example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
All output for individual cron runs will be sent to the specified email.
|
||||||
|
|
||||||
|
Cron emails can be disabled by running the `cron:set` command for the global `mailto` property with no value.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
dokku cron:set --global mailto
|
||||||
|
```
|
||||||
|
|
||||||
#### Listing Cron tasks
|
#### Listing Cron tasks
|
||||||
|
|
||||||
Cron tasks for an app can be listed via the `cron:list` command. This command takes an `app` argument.
|
Cron tasks for an app can be listed via the `cron:list` command. This command takes an `app` argument.
|
||||||
|
|||||||
@@ -9,26 +9,26 @@
|
|||||||
<meta name="author" content="">
|
<meta name="author" content="">
|
||||||
<title>Dokku - {{DOC_TITLE}}</title>
|
<title>Dokku - {{DOC_TITLE}}</title>
|
||||||
|
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-57x57.png">
|
<link rel="apple-touch-icon" sizes="57x57" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-57x57.png">
|
||||||
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-60x60.png">
|
<link rel="apple-touch-icon" sizes="60x60" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-60x60.png">
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-72x72.png">
|
<link rel="apple-touch-icon" sizes="72x72" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-72x72.png">
|
||||||
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-76x76.png">
|
<link rel="apple-touch-icon" sizes="76x76" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-76x76.png">
|
||||||
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-114x114.png">
|
<link rel="apple-touch-icon" sizes="114x114" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-114x114.png">
|
||||||
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-120x120.png">
|
<link rel="apple-touch-icon" sizes="120x120" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-120x120.png">
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-144x144.png">
|
<link rel="apple-touch-icon" sizes="144x144" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-144x144.png">
|
||||||
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-152x152.png">
|
<link rel="apple-touch-icon" sizes="152x152" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-152x152.png">
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
<link rel="apple-touch-icon" sizes="180x180" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/apple-touch-icon-180x180.png">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-32x32.png" sizes="32x32">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/android-chrome-192x192.png" sizes="192x192">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-96x96.png" sizes="96x96">
|
||||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon-16x16.png" sizes="16x16">
|
||||||
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/manifest.json">
|
<link rel="manifest" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/manifest.json">
|
||||||
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/favicon.ico">
|
<link rel="shortcut icon" href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/favicon.ico">
|
||||||
<meta name="apple-mobile-web-app-title" content="Dokku">
|
<meta name="apple-mobile-web-app-title" content="Dokku">
|
||||||
<meta name="application-name" content="Dokku">
|
<meta name="application-name" content="Dokku">
|
||||||
<meta name="msapplication-TileColor" content="#da532c">
|
<meta name="msapplication-TileColor" content="#da532c">
|
||||||
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/mstile-144x144.png">
|
<meta name="msapplication-TileImage" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/mstile-144x144.png">
|
||||||
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/favicons/browserconfig.xml">
|
<meta name="msapplication-config" content="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/favicons/browserconfig.xml">
|
||||||
<meta name="theme-color" content="#ffffff">
|
<meta name="theme-color" content="#ffffff">
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
|
||||||
|
|
||||||
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.31.2/docs/assets/style.css" rel="stylesheet">
|
<link href="https://cdn.jsdelivr.net/gh/dokku/dokku@v0.33.2/docs/assets/style.css" rel="stylesheet">
|
||||||
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
|
<!-- <link href="./assets/style.css" rel="stylesheet"> -->
|
||||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
|
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css" rel="stylesheet">
|
||||||
</head>
|
</head>
|
||||||
@@ -148,10 +148,13 @@
|
|||||||
<a href="/{{NAME}}/deployment/builders/herokuish-buildpacks/" class="list-group-item">Herokuish Buildpacks</a>
|
<a href="/{{NAME}}/deployment/builders/herokuish-buildpacks/" class="list-group-item">Herokuish Buildpacks</a>
|
||||||
<a href="/{{NAME}}/deployment/builders/dockerfiles/" class="list-group-item">Dockerfile Deployment</a>
|
<a href="/{{NAME}}/deployment/builders/dockerfiles/" class="list-group-item">Dockerfile Deployment</a>
|
||||||
<a href="/{{NAME}}/deployment/builders/lambda/" class="list-group-item">Lambda Builder</a>
|
<a href="/{{NAME}}/deployment/builders/lambda/" class="list-group-item">Lambda Builder</a>
|
||||||
|
<a href="/{{NAME}}/deployment/builders/nixpacks/" class="list-group-item">Nixpacks Builder</a>
|
||||||
<a href="/{{NAME}}/deployment/builders/null/" class="list-group-item">Null Builder</a>
|
<a href="/{{NAME}}/deployment/builders/null/" class="list-group-item">Null Builder</a>
|
||||||
|
|
||||||
<a href="#" class="list-group-item disabled">Deployment Methods</a>
|
<a href="#" class="list-group-item disabled">Deployment Methods</a>
|
||||||
<a href="/{{NAME}}/deployment/methods/git/" class="list-group-item">Git Deployment</a>
|
<a href="/{{NAME}}/deployment/methods/git/" class="list-group-item">Git Deployment</a>
|
||||||
|
<a href="/{{NAME}}/deployment/methods/image/" class="list-group-item">Docker Image Deployment</a>
|
||||||
|
<a href="/{{NAME}}/deployment/methods/archive/" class="list-group-item">Archive Deployment</a>
|
||||||
|
|
||||||
<a href="#" class="list-group-item disabled">Configuration</a>
|
<a href="#" class="list-group-item disabled">Configuration</a>
|
||||||
|
|
||||||
@@ -197,7 +200,7 @@
|
|||||||
|
|
||||||
<a href="/{{NAME}}/deployment/schedulers/scheduler-management/" class="list-group-item">Scheduler Management</a>
|
<a href="/{{NAME}}/deployment/schedulers/scheduler-management/" class="list-group-item">Scheduler Management</a>
|
||||||
<a href="/{{NAME}}/deployment/schedulers/docker-local/" class="list-group-item">Docker Local</a>
|
<a href="/{{NAME}}/deployment/schedulers/docker-local/" class="list-group-item">Docker Local</a>
|
||||||
<a href="/{{NAME}}/deployment/schedulers/kubernetes/" class="list-group-item">Kubernetes</a>
|
<a href="/{{NAME}}/deployment/schedulers/k3s/" class="list-group-item">Kubernetes</a>
|
||||||
<a href="/{{NAME}}/deployment/schedulers/nomad/" class="list-group-item">Nomad</a>
|
<a href="/{{NAME}}/deployment/schedulers/nomad/" class="list-group-item">Nomad</a>
|
||||||
<a href="/{{NAME}}/deployment/schedulers/null/" class="list-group-item">Null Scheduler</a>
|
<a href="/{{NAME}}/deployment/schedulers/null/" class="list-group-item">Null Scheduler</a>
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,10 @@
|
|||||||
"deployment/methods/cloud-native-buildpacks": "deployment/builders/cloud-native-buildpacks/",
|
"deployment/methods/cloud-native-buildpacks": "deployment/builders/cloud-native-buildpacks/",
|
||||||
"deployment/methods/dockerfiles": "deployment/builders/dockerfiles/",
|
"deployment/methods/dockerfiles": "deployment/builders/dockerfiles/",
|
||||||
"deployment/methods/herokuish-buildpacks": "deployment/builders/herokuish-buildpacks/",
|
"deployment/methods/herokuish-buildpacks": "deployment/builders/herokuish-buildpacks/",
|
||||||
"deployment/images": "deployment/methods/git/#initializing-an-app-repository-from-a-docker-image",
|
"deployment/images": "deployment/methods/image/",
|
||||||
"deployment/tar": "deployment/methods/git/#initializing-an-app-repository-from-an-archive-file",
|
"deployment/tar": "deployment/methods/archive/",
|
||||||
"deployment/methods/images": "deployment/methods/git/#initializing-an-app-repository-from-a-docker-image",
|
"deployment/methods/images": "deployment/methods/image/",
|
||||||
"deployment/methods/tar": "deployment/methods/git/#initializing-an-app-repository-from-an-archive-file",
|
"deployment/methods/tar": "deployment/methods/archive/",
|
||||||
"configuration-management": "configuration/environment-variables/",
|
"configuration-management": "configuration/environment-variables/",
|
||||||
"deployment/ssl-configuration": "configuration/ssl/",
|
"deployment/ssl-configuration": "configuration/ssl/",
|
||||||
"configuration/nginx": "networking/proxies/nginx/",
|
"configuration/nginx": "networking/proxies/nginx/",
|
||||||
|
|||||||
4
dokku
4
dokku
@@ -89,14 +89,14 @@ fi
|
|||||||
|
|
||||||
if [[ $(id -un) != "dokku" ]]; then
|
if [[ $(id -un) != "dokku" ]]; then
|
||||||
unset TMP TMPDIR TEMP TEMPDIR
|
unset TMP TMPDIR TEMP TEMPDIR
|
||||||
if [[ ! $1 =~ plugin:* ]] && [[ $1 != "ssh-keys:add" ]] && [[ $1 != "ssh-keys:remove" ]]; then
|
if [[ ! $1 =~ plugin:* ]] && [[ $1 != "ssh-keys:add" ]] && [[ $1 != "ssh-keys:remove" ]] && [[ $1 != "scheduler-k3s:initialize" ]] && [[ $1 != "scheduler-k3s:uninstall" ]]; then
|
||||||
export SSH_USER=$(id -un)
|
export SSH_USER=$(id -un)
|
||||||
sudo -u dokku -E -H "$0" "$@"
|
sudo -u dokku -E -H "$0" "$@"
|
||||||
exit $?
|
exit $?
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $1 =~ ^plugin:.* && $1 != "plugin:help" && $1 != "plugin:list" ]] || [[ $1 == "ssh-keys:add" ]] || [[ $1 == "ssh-keys:remove" ]]; then
|
if [[ $1 =~ ^plugin:.* && $1 != "plugin:help" && $1 != "plugin:list" ]] || [[ $1 == "ssh-keys:add" ]] || [[ $1 == "ssh-keys:remove" ]] || [[ $1 == "scheduler-k3s:initialize" ]] || [[ $1 == "scheduler-k3s:uninstall" ]]; then
|
||||||
if [[ $(id -un) != "root" ]]; then
|
if [[ $(id -un) != "root" ]]; then
|
||||||
dokku_log_fail "This command must be run as root"
|
dokku_log_fail "This command must be run as root"
|
||||||
else
|
else
|
||||||
|
|||||||
24
go.work
Normal file
24
go.work
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
go 1.21
|
||||||
|
|
||||||
|
use (
|
||||||
|
./plugins/app-json
|
||||||
|
./plugins/apps
|
||||||
|
./plugins/builder
|
||||||
|
./plugins/buildpacks
|
||||||
|
./plugins/common
|
||||||
|
./plugins/config
|
||||||
|
./plugins/cron
|
||||||
|
./plugins/docker-options
|
||||||
|
./plugins/logs
|
||||||
|
./plugins/network
|
||||||
|
./plugins/nginx-vhosts
|
||||||
|
./plugins/ports
|
||||||
|
./plugins/proxy
|
||||||
|
./plugins/ps
|
||||||
|
./plugins/registry
|
||||||
|
./plugins/repo
|
||||||
|
./plugins/resource
|
||||||
|
./plugins/scheduler
|
||||||
|
./plugins/scheduler-docker-local
|
||||||
|
./plugins/scheduler-k3s
|
||||||
|
)
|
||||||
@@ -18,7 +18,7 @@ start on filesystem and started docker
|
|||||||
|
|
||||||
script
|
script
|
||||||
sleep 2 # give docker some time
|
sleep 2 # give docker some time
|
||||||
sudo -i -u dokku $dokku_path ps:restore
|
sudo -i -u dokku $dokku_path ps:restore --parallel -1
|
||||||
end script
|
end script
|
||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
@@ -33,7 +33,7 @@ After=docker.service
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
User=dokku
|
User=dokku
|
||||||
ExecStart=$dokku_path ps:restore
|
ExecStart=$dokku_path ps:restore --parallel -1
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=docker.service
|
WantedBy=docker.service
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core standard plugin"
|
description = "dokku core standard plugin"
|
||||||
version = "0.31.2"
|
version = "0.33.2"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -21,10 +21,8 @@ cmd-report() {
|
|||||||
"$DOCKER_BIN" version | sed "s/^/ /"
|
"$DOCKER_BIN" version | sed "s/^/ /"
|
||||||
dokku_log_info1 "docker daemon info: "
|
dokku_log_info1 "docker daemon info: "
|
||||||
"$DOCKER_BIN" -D system info | sed "s/^/ /"
|
"$DOCKER_BIN" -D system info | sed "s/^/ /"
|
||||||
dokku_log_info1 "git version: $(git --version)"
|
|
||||||
dokku_log_info1 "sigil version: $(sigil -v)"
|
|
||||||
dokku_log_info1 "herokuish version: "
|
dokku_log_info1 "herokuish version: "
|
||||||
if [[ "$ARCHITECTURE" == "armhf" ]] || [[ "$ARCHITECTURE" == "arm64" ]]; then
|
if [[ "$ARCHITECTURE" == "arm64" ]]; then
|
||||||
dokku_log_warn "herokuish not supported on $ARCHITECTURE architecture"
|
dokku_log_warn "herokuish not supported on $ARCHITECTURE architecture"
|
||||||
elif verify_image "$DOKKU_IMAGE"; then
|
elif verify_image "$DOKKU_IMAGE"; then
|
||||||
"$DOCKER_BIN" container run $DOKKU_GLOBAL_RUN_ARGS --rm "$DOKKU_IMAGE" herokuish version | sed "s/^/ /"
|
"$DOCKER_BIN" container run $DOKKU_GLOBAL_RUN_ARGS --rm "$DOKKU_IMAGE" herokuish version | sed "s/^/ /"
|
||||||
@@ -32,7 +30,29 @@ cmd-report() {
|
|||||||
dokku_log_warn "Herokuish image $DOKKU_IMAGE is not available"
|
dokku_log_warn "Herokuish image $DOKKU_IMAGE is not available"
|
||||||
fi
|
fi
|
||||||
dokku_log_info1 "dokku version: $(dokku_version)"
|
dokku_log_info1 "dokku version: $(dokku_version)"
|
||||||
|
if command -v "dokku-event-listener" &>/dev/null; then
|
||||||
|
dokku_log_info1 "dokku-event-listener version: $(dokku-event-listener version)"
|
||||||
|
else
|
||||||
|
dokku_log_warn "dokku-event-listener binary is not available"
|
||||||
|
fi
|
||||||
|
if command -v "dokku-update" &>/dev/null; then
|
||||||
|
dokku_log_info1 "dokku-update version: $(dokku-update version)"
|
||||||
|
else
|
||||||
|
dokku_log_warn "dokku-update binary is not available"
|
||||||
|
fi
|
||||||
|
dokku_log_info1 "docker-container-healthchecker version: $(docker-container-healthchecker version)"
|
||||||
|
dokku_log_info1 "docker-image-labeler version: $(docker-image-labeler version)"
|
||||||
|
dokku_log_info1 "git version: $(git --version)"
|
||||||
|
dokku_log_info1 "lambda-builder version: $(lambda-builder version)"
|
||||||
|
dokku_log_info1 "netrc version: $(netrc version)"
|
||||||
|
if command -v "pack" &>/dev/null; then
|
||||||
|
dokku_log_info1 "pack version: $(pack version)"
|
||||||
|
else
|
||||||
|
dokku_log_warn "pack binary is not available"
|
||||||
|
fi
|
||||||
dokku_log_info1 "plugn version: $(plugn version)"
|
dokku_log_info1 "plugn version: $(plugn version)"
|
||||||
|
dokku_log_info1 "sigil version: $(sigil -v)"
|
||||||
|
dokku_log_info1 "sshcommand version: $(sshcommand version)"
|
||||||
dokku_log_info1 "dokku plugins: "
|
dokku_log_info1 "dokku plugins: "
|
||||||
plugn list | sed "s/^/ /"
|
plugn list | sed "s/^/ /"
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core events logging plugin"
|
description = "dokku core events logging plugin"
|
||||||
version = "0.31.2"
|
version = "0.33.2"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
1
plugins/app-json/.gitignore
vendored
1
plugins/app-json/.gitignore
vendored
@@ -6,5 +6,6 @@
|
|||||||
/subcommands/*
|
/subcommands/*
|
||||||
/triggers
|
/triggers
|
||||||
/triggers/*
|
/triggers/*
|
||||||
|
/app-json-get-content
|
||||||
/app-json-process-deploy-parallelism
|
/app-json-process-deploy-parallelism
|
||||||
/core-*
|
/core-*
|
||||||
|
|||||||
@@ -1,16 +1,21 @@
|
|||||||
package appjson
|
package appjson
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/dokku/dokku/plugins/common"
|
"github.com/dokku/dokku/plugins/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// DefaultProperties is a map of all valid network properties with corresponding default property values
|
// DefaultProperties is a map of all valid app-json properties with corresponding default property values
|
||||||
DefaultProperties = map[string]string{
|
DefaultProperties = map[string]string{
|
||||||
"appjson-path": "",
|
"appjson-path": "",
|
||||||
}
|
}
|
||||||
|
|
||||||
// GlobalProperties is a map of all valid global network properties
|
// GlobalProperties is a map of all valid global app-json properties
|
||||||
GlobalProperties = map[string]bool{
|
GlobalProperties = map[string]bool{
|
||||||
"appjson-path": true,
|
"appjson-path": true,
|
||||||
}
|
}
|
||||||
@@ -18,29 +23,132 @@ var (
|
|||||||
|
|
||||||
// AppJSON is a struct that represents an app.json file as understood by Dokku
|
// AppJSON is a struct that represents an app.json file as understood by Dokku
|
||||||
type AppJSON struct {
|
type AppJSON struct {
|
||||||
Cron []CronCommand `json:"cron"`
|
// Cron is a list of cron commands to execute
|
||||||
|
Cron []CronCommand `json:"cron"`
|
||||||
|
|
||||||
|
// Formation is a map of process types to scale
|
||||||
Formation map[string]Formation `json:"formation"`
|
Formation map[string]Formation `json:"formation"`
|
||||||
Scripts struct {
|
|
||||||
|
// Healthchecks is a map of process types to healthchecks
|
||||||
|
Healthchecks map[string][]Healthcheck `json:"healthchecks"`
|
||||||
|
|
||||||
|
// Scripts is a map of scripts to execute
|
||||||
|
Scripts struct {
|
||||||
|
// Dokku is a map of scripts to execute for Dokku-specific events
|
||||||
Dokku struct {
|
Dokku struct {
|
||||||
Predeploy string `json:"predeploy"`
|
// Predeploy is a script to execute before a deploy
|
||||||
|
Predeploy string `json:"predeploy"`
|
||||||
|
|
||||||
|
// Postdeploy is a script to execute after a deploy
|
||||||
Postdeploy string `json:"postdeploy"`
|
Postdeploy string `json:"postdeploy"`
|
||||||
} `json:"dokku"`
|
} `json:"dokku"`
|
||||||
|
|
||||||
|
// Postdeploy is a script to execute after a deploy
|
||||||
Postdeploy string `json:"postdeploy"`
|
Postdeploy string `json:"postdeploy"`
|
||||||
} `json:"scripts"`
|
} `json:"scripts"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// CronCommand is a struct that represents a single cron command from an app.json file
|
// CronCommand is a struct that represents a single cron command from an app.json file
|
||||||
type CronCommand struct {
|
type CronCommand struct {
|
||||||
Command string `json:"command"`
|
// Command is the command to execute
|
||||||
|
Command string `json:"command"`
|
||||||
|
|
||||||
|
// Schedule is the cron schedule to execute the command on
|
||||||
Schedule string `json:"schedule"`
|
Schedule string `json:"schedule"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Formation is a struct that represents the scale for a process from an app.json file
|
// Formation is a struct that represents the scale for a process from an app.json file
|
||||||
type Formation struct {
|
type Formation struct {
|
||||||
Quantity *int `json:"quantity"`
|
// Quantity is the number of processes to run
|
||||||
|
Quantity *int `json:"quantity"`
|
||||||
|
|
||||||
|
// MaxParallel is the maximum number of processes to start in parallel
|
||||||
MaxParallel *int `json:"max_parallel"`
|
MaxParallel *int `json:"max_parallel"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Healthcheck is a struct that represents a single healthcheck from an app.json file
|
||||||
|
type Healthcheck struct {
|
||||||
|
// Attempts is the number of attempts to make before considering a healthcheck failed
|
||||||
|
Attempts int32 `json:"attempts,omitempty"`
|
||||||
|
|
||||||
|
// Command is the command to execute for the healthcheck
|
||||||
|
Command []string `json:"command,omitempty"`
|
||||||
|
|
||||||
|
// Content is the content to check for in the healthcheck response
|
||||||
|
Content string `json:"content,omitempty"`
|
||||||
|
|
||||||
|
// HTTPHeaders is a list of HTTP headers to send with the healthcheck request
|
||||||
|
HTTPHeaders []HTTPHeader `json:"httpHeaders,omitempty"`
|
||||||
|
|
||||||
|
// InitialDelay is the number of seconds to wait before starting healthchecks
|
||||||
|
InitialDelay int32 `json:"initialDelay,omitempty"`
|
||||||
|
|
||||||
|
// Listening is whether or not this is a listening check
|
||||||
|
Listening bool `json:"listening,omitempty"`
|
||||||
|
|
||||||
|
// Name is the name of the healthcheck
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
|
||||||
|
// Path is the path to check for in the healthcheck response
|
||||||
|
Path string `json:"path,omitempty"`
|
||||||
|
|
||||||
|
// Port is the port to check for in the healthcheck response
|
||||||
|
Port int `json:"port,omitempty"`
|
||||||
|
|
||||||
|
// Scheme is the scheme to use for the healthcheck request
|
||||||
|
Scheme string `json:"scheme,omitempty"`
|
||||||
|
|
||||||
|
// Timeout is the number of seconds to wait before considering a healthcheck failed
|
||||||
|
Timeout int32 `json:"timeout,omitempty"`
|
||||||
|
|
||||||
|
// Type is the type of healthcheck
|
||||||
|
Type HealthcheckType `json:"type,omitempty"`
|
||||||
|
|
||||||
|
// Uptime is the number of seconds to wait before considering a container running
|
||||||
|
Uptime int32 `json:"uptime,omitempty"`
|
||||||
|
|
||||||
|
// Wait is the number of seconds to wait between healthchecks
|
||||||
|
Wait int32 `json:"wait,omitempty"`
|
||||||
|
|
||||||
|
// Warn is whether or not to warn on a failed healthcheck instead of error out
|
||||||
|
Warn bool `json:"warn,omitempty"`
|
||||||
|
|
||||||
|
// OnFailure is the action to take on a failed healthcheck
|
||||||
|
OnFailure *OnFailure `json:"onFailure,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// HealthcheckType is a string that represents the type of a healthcheck from an app.json file
|
||||||
|
type HealthcheckType string
|
||||||
|
|
||||||
|
const (
|
||||||
|
// HealthcheckType_Liveness is a healthcheck type that represents a liveness check
|
||||||
|
HealthcheckType_Liveness HealthcheckType = "liveness"
|
||||||
|
|
||||||
|
// HealthcheckType_Readiness is a healthcheck type that represents a readiness check
|
||||||
|
HealthcheckType_Readiness HealthcheckType = "readiness"
|
||||||
|
|
||||||
|
// HealthcheckType_Startup is a healthcheck type that represents a startup check
|
||||||
|
HealthcheckType_Startup HealthcheckType = "startup"
|
||||||
|
)
|
||||||
|
|
||||||
|
// HTTPHeader is a struct that represents a single HTTP header associated with a healthcheck
|
||||||
|
type HTTPHeader struct {
|
||||||
|
// Name is the name of the HTTP header
|
||||||
|
Name string `json:"name,omitempty"`
|
||||||
|
|
||||||
|
// Value is the value of the HTTP header
|
||||||
|
Value string `json:"value,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// OnFailure is a struct that represents the on failure action for a healthcheck
|
||||||
|
type OnFailure struct {
|
||||||
|
// Command is the command to execute on failure
|
||||||
|
Command []string `json:"command,omitempty"`
|
||||||
|
|
||||||
|
// Url is the URL to call on failure
|
||||||
|
Url string `json:"url,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
// GetAppjsonDirectory returns the directory containing a given app's extracted app.json file
|
// GetAppjsonDirectory returns the directory containing a given app's extracted app.json file
|
||||||
func GetAppjsonDirectory(appName string) string {
|
func GetAppjsonDirectory(appName string) string {
|
||||||
return common.GetAppDataDirectory("app-json", appName)
|
return common.GetAppDataDirectory("app-json", appName)
|
||||||
@@ -50,3 +158,26 @@ func GetAppjsonDirectory(appName string) string {
|
|||||||
func GetAppjsonPath(appName string) string {
|
func GetAppjsonPath(appName string) string {
|
||||||
return getProcessSpecificAppJSONPath(appName)
|
return getProcessSpecificAppJSONPath(appName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetAppJSON returns the parsed app.json file for a given app
|
||||||
|
func GetAppJSON(appName string) (AppJSON, error) {
|
||||||
|
if !hasAppJSON(appName) {
|
||||||
|
return AppJSON{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := os.ReadFile(getProcessSpecificAppJSONPath(appName))
|
||||||
|
if err != nil {
|
||||||
|
return AppJSON{}, fmt.Errorf("Cannot read app.json file: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if strings.TrimSpace(string(b)) == "" {
|
||||||
|
return AppJSON{}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var appJSON AppJSON
|
||||||
|
if err = json.Unmarshal(b, &appJSON); err != nil {
|
||||||
|
return AppJSON{}, fmt.Errorf("Cannot parse app.json: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return appJSON, nil
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,7 +6,6 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
@@ -80,28 +79,6 @@ func constructScript(command string, shell string, isHerokuishImage bool, isCnbI
|
|||||||
return []string{shell, "-c", strings.Join(script, " ")}
|
return []string{shell, "-c", strings.Join(script, " ")}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getAppJSON(appName string) (AppJSON, error) {
|
|
||||||
if !hasAppJSON(appName) {
|
|
||||||
return AppJSON{}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
b, err := ioutil.ReadFile(getProcessSpecificAppJSONPath(appName))
|
|
||||||
if err != nil {
|
|
||||||
return AppJSON{}, fmt.Errorf("Cannot read app.json file: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if strings.TrimSpace(string(b)) == "" {
|
|
||||||
return AppJSON{}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
var appJSON AppJSON
|
|
||||||
if err = json.Unmarshal(b, &appJSON); err != nil {
|
|
||||||
return AppJSON{}, fmt.Errorf("Cannot parse app.json: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return appJSON, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func getAppJSONPath(appName string) string {
|
func getAppJSONPath(appName string) string {
|
||||||
directory := filepath.Join(common.MustGetEnv("DOKKU_LIB_ROOT"), "data", "app-json", appName)
|
directory := filepath.Join(common.MustGetEnv("DOKKU_LIB_ROOT"), "data", "app-json", appName)
|
||||||
return filepath.Join(directory, "app.json")
|
return filepath.Join(directory, "app.json")
|
||||||
@@ -119,7 +96,7 @@ func getProcessSpecificAppJSONPath(appName string) string {
|
|||||||
|
|
||||||
// getPhaseScript extracts app.json from app image and returns the appropriate json key/value
|
// getPhaseScript extracts app.json from app image and returns the appropriate json key/value
|
||||||
func getPhaseScript(appName string, phase string) (string, error) {
|
func getPhaseScript(appName string, phase string) (string, error) {
|
||||||
appJSON, err := getAppJSON(appName)
|
appJSON, err := GetAppJSON(appName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
}
|
}
|
||||||
@@ -483,7 +460,7 @@ func createdContainerID(appName string, dockerArgs []string, image string, comma
|
|||||||
}
|
}
|
||||||
|
|
||||||
func setScale(appName string, image string) error {
|
func setScale(appName string, image string) error {
|
||||||
appJSON, err := getAppJSON(appName)
|
appJSON, err := GetAppJSON(appName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,20 +1,31 @@
|
|||||||
module github.com/dokku/dokku/plugins/app-json
|
module github.com/dokku/dokku/plugins/app-json
|
||||||
|
|
||||||
go 1.19
|
go 1.21
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000
|
github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000
|
||||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
|
||||||
github.com/otiai10/copy v1.12.0
|
|
||||||
github.com/spf13/pflag v1.0.5
|
github.com/spf13/pflag v1.0.5
|
||||||
golang.org/x/sync v0.3.0
|
golang.org/x/sync v0.6.0
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/alexellis/go-execute/v2 v2.2.1 // indirect
|
||||||
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 // indirect
|
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 // indirect
|
||||||
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 // indirect
|
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 // indirect
|
||||||
|
github.com/fatih/color v1.16.0 // indirect
|
||||||
|
github.com/hashicorp/errwrap v1.0.0 // indirect
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||||
|
github.com/kr/fs v0.1.0 // indirect
|
||||||
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
|
github.com/melbahja/goph v1.4.0 // indirect
|
||||||
|
github.com/otiai10/copy v1.14.0 // indirect
|
||||||
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
github.com/pkg/sftp v1.13.5 // indirect
|
||||||
github.com/ryanuber/columnize v2.1.2+incompatible // indirect
|
github.com/ryanuber/columnize v2.1.2+incompatible // indirect
|
||||||
golang.org/x/sys v0.10.0 // indirect
|
golang.org/x/crypto v0.18.0 // indirect
|
||||||
|
golang.org/x/sys v0.16.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
replace github.com/dokku/dokku/plugins/common => ../common
|
replace github.com/dokku/dokku/plugins/common => ../common
|
||||||
|
|||||||
@@ -1,22 +1,97 @@
|
|||||||
|
github.com/alexellis/go-execute/v2 v2.2.1 h1:4Ye3jiCKQarstODOEmqDSRCqxMHLkC92Bhse743RdOI=
|
||||||
|
github.com/alexellis/go-execute/v2 v2.2.1/go.mod h1:FMdRnUTiFAmYXcv23txrp3VYZfLo24nMpiIneWgKHTQ=
|
||||||
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=
|
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=
|
||||||
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
|
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
|
||||||
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA=
|
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA=
|
||||||
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE=
|
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE=
|
||||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
|
||||||
|
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
|
||||||
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
||||||
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
||||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
||||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
|
||||||
github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
|
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
|
||||||
github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY=
|
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||||
github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww=
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
|
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
|
github.com/melbahja/goph v1.4.0 h1:z0PgDbBFe66lRYl3v5dGb9aFgPy0kotuQ37QOwSQFqs=
|
||||||
|
github.com/melbahja/goph v1.4.0/go.mod h1:uG+VfK2Dlhk+O32zFrRlc3kYKTlV6+BtvPWd/kK7U68=
|
||||||
|
github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo=
|
||||||
|
github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0=
|
||||||
|
github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU=
|
||||||
|
github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w=
|
||||||
github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks=
|
github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks=
|
||||||
|
github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM=
|
||||||
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pkg/sftp v1.13.5 h1:a3RLUqkyjYRtBTZJZ1VRrKbN3zhuPLlUc3sphVz81go=
|
||||||
|
github.com/pkg/sftp v1.13.5/go.mod h1:wHDZ0IZX6JcBYRK1TH9bcVq8G7TLpVHYIGJRFnmPfxg=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk=
|
github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk=
|
||||||
github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
|
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
|
||||||
|
golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
|
||||||
|
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
|
golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
|
||||||
|
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
|
||||||
|
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
|
||||||
|
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||||
|
golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
|
||||||
|
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||||
|
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core app-json plugin"
|
description = "dokku core app-json plugin"
|
||||||
version = "0.31.2"
|
version = "0.33.2"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -8,12 +8,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/dokku/dokku/plugins/common"
|
"github.com/dokku/dokku/plugins/common"
|
||||||
"github.com/otiai10/copy"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// TriggerAppJSONProcessDeployParallelism returns the max number of processes to deploy in parallel
|
// TriggerAppJSONProcessDeployParallelism returns the max number of processes to deploy in parallel
|
||||||
func TriggerAppJSONProcessDeployParallelism(appName string, processType string) error {
|
func TriggerAppJSONProcessDeployParallelism(appName string, processType string) error {
|
||||||
appJSON, err := getAppJSON(appName)
|
appJSON, err := GetAppJSON(appName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -120,12 +119,12 @@ func TriggerCorePostExtract(appName string, sourceWorkDir string) error {
|
|||||||
return common.TouchFile(fmt.Sprintf("%s.missing", processSpecificAppJSON))
|
return common.TouchFile(fmt.Sprintf("%s.missing", processSpecificAppJSON))
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := copy.Copy(repoAppJSONPath, processSpecificAppJSON); err != nil {
|
if err := common.Copy(repoAppJSONPath, processSpecificAppJSON); err != nil {
|
||||||
return fmt.Errorf("Unable to extract app.json: %v", err.Error())
|
return fmt.Errorf("Unable to extract app.json: %v", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
if appJSONPath != "app.json" {
|
if appJSONPath != "app.json" {
|
||||||
if err := copy.Copy(repoAppJSONPath, repoDefaultAppJSONPath); err != nil {
|
if err := common.Copy(repoAppJSONPath, repoDefaultAppJSONPath); err != nil {
|
||||||
return fmt.Errorf("Unable to move app.json into place: %v", err.Error())
|
return fmt.Errorf("Unable to move app.json into place: %v", err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
package apps
|
package apps
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// DefaultProperties is a map of all valid network properties with corresponding default property values
|
// DefaultProperties is a map of all valid apps properties with corresponding default property values
|
||||||
DefaultProperties = map[string]string{
|
DefaultProperties = map[string]string{
|
||||||
"deploy-source": "",
|
"deploy-source": "",
|
||||||
"deploy-source-metadata": "",
|
"deploy-source-metadata": "",
|
||||||
}
|
}
|
||||||
|
|
||||||
// GlobalProperties is a map of all valid global network properties
|
// GlobalProperties is a map of all valid global apps properties
|
||||||
GlobalProperties = map[string]bool{
|
GlobalProperties = map[string]bool{
|
||||||
"deploy-source": true,
|
"deploy-source": true,
|
||||||
"deploy-source-metadata": true,
|
"deploy-source-metadata": true,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
module github.com/dokku/dokku/plugins/apps
|
module github.com/dokku/dokku/plugins/apps
|
||||||
|
|
||||||
go 1.19
|
go 1.21
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000
|
github.com/dokku/dokku/plugins/common v0.0.0-00010101000000-000000000000
|
||||||
@@ -8,12 +8,23 @@ require (
|
|||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
github.com/alexellis/go-execute/v2 v2.2.1 // indirect
|
||||||
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 // indirect
|
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 // indirect
|
||||||
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 // indirect
|
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 // indirect
|
||||||
github.com/otiai10/copy v1.12.0 // indirect
|
github.com/fatih/color v1.16.0 // indirect
|
||||||
|
github.com/hashicorp/errwrap v1.0.0 // indirect
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||||
|
github.com/kr/fs v0.1.0 // indirect
|
||||||
|
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||||
|
github.com/melbahja/goph v1.4.0 // indirect
|
||||||
|
github.com/otiai10/copy v1.14.0 // indirect
|
||||||
|
github.com/pkg/errors v0.9.1 // indirect
|
||||||
|
github.com/pkg/sftp v1.13.5 // indirect
|
||||||
github.com/ryanuber/columnize v2.1.2+incompatible // indirect
|
github.com/ryanuber/columnize v2.1.2+incompatible // indirect
|
||||||
golang.org/x/sync v0.3.0 // indirect
|
golang.org/x/crypto v0.18.0 // indirect
|
||||||
golang.org/x/sys v0.10.0 // indirect
|
golang.org/x/sync v0.6.0 // indirect
|
||||||
|
golang.org/x/sys v0.16.0 // indirect
|
||||||
)
|
)
|
||||||
|
|
||||||
replace github.com/dokku/dokku/plugins/common => ../common
|
replace github.com/dokku/dokku/plugins/common => ../common
|
||||||
|
|||||||
@@ -1,20 +1,95 @@
|
|||||||
|
github.com/alexellis/go-execute/v2 v2.2.1 h1:4Ye3jiCKQarstODOEmqDSRCqxMHLkC92Bhse743RdOI=
|
||||||
|
github.com/alexellis/go-execute/v2 v2.2.1/go.mod h1:FMdRnUTiFAmYXcv23txrp3VYZfLo24nMpiIneWgKHTQ=
|
||||||
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=
|
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=
|
||||||
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
|
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
|
||||||
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA=
|
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27 h1:HHUr4P/aKh4quafGxDT9LDasjGdlGkzLbfmmrlng3kA=
|
||||||
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE=
|
github.com/codeskyblue/go-sh v0.0.0-20190412065543-76bd3d59ff27/go.mod h1:VQx0hjo2oUeQkQUET7wRwradO6f+fN5jzXgB/zROxxE=
|
||||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
|
||||||
github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY=
|
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
|
||||||
github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww=
|
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
|
||||||
|
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
|
||||||
|
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
|
||||||
|
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
|
||||||
|
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo=
|
||||||
|
github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM=
|
||||||
|
github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8=
|
||||||
|
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||||
|
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||||
|
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||||
|
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||||
|
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
|
||||||
|
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||||
|
github.com/melbahja/goph v1.4.0 h1:z0PgDbBFe66lRYl3v5dGb9aFgPy0kotuQ37QOwSQFqs=
|
||||||
|
github.com/melbahja/goph v1.4.0/go.mod h1:uG+VfK2Dlhk+O32zFrRlc3kYKTlV6+BtvPWd/kK7U68=
|
||||||
|
github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo=
|
||||||
|
github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0=
|
||||||
|
github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU=
|
||||||
|
github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w=
|
||||||
github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks=
|
github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks=
|
||||||
|
github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM=
|
||||||
|
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||||
|
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||||
|
github.com/pkg/sftp v1.13.5 h1:a3RLUqkyjYRtBTZJZ1VRrKbN3zhuPLlUc3sphVz81go=
|
||||||
|
github.com/pkg/sftp v1.13.5/go.mod h1:wHDZ0IZX6JcBYRK1TH9bcVq8G7TLpVHYIGJRFnmPfxg=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk=
|
github.com/ryanuber/columnize v2.1.2+incompatible h1:C89EOx/XBWwIXl8wm8OPJBd7kPF25UfsK2X7Ph/zCAk=
|
||||||
github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||||
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
|
||||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||||
golang.org/x/net v0.12.0 h1:cfawfvKITfUsFCeJIHJrbSxpeu/E81khclypR0GVT50=
|
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||||
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
|
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||||
golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA=
|
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||||
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||||
golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
|
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
|
golang.org/x/crypto v0.6.0/go.mod h1:OFC/31mSvZgRz0V1QTNCzfAI1aIRzbiufJtkMIlEp58=
|
||||||
|
golang.org/x/crypto v0.18.0 h1:PGVlW0xEltQnzFZ55hkuX5+KLyrMYhHld1YHO4AKcdc=
|
||||||
|
golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg=
|
||||||
|
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||||
|
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||||
|
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||||
|
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||||
|
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||||
|
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||||
|
golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c=
|
||||||
|
golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U=
|
||||||
|
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||||
|
golang.org/x/sync v0.6.0 h1:5BMeUDZ7vkXGfEr1x9B4bRcTH4lpkTkpdh0T/J+qjbQ=
|
||||||
|
golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
|
||||||
|
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||||
|
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||||
|
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
|
golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU=
|
||||||
|
golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||||
|
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||||
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||||
|
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||||
|
golang.org/x/term v0.16.0 h1:m+B6fahuftsE9qjo0VWp2FW0mB3MTJvR0BaMQrq0pmE=
|
||||||
|
golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY=
|
||||||
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||||
|
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||||
|
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
|
||||||
|
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||||
|
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||||
|
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||||
|
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||||
|
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||||
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core apps plugin"
|
description = "dokku core apps plugin"
|
||||||
version = "0.31.2"
|
version = "0.33.2"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -23,7 +23,11 @@ trigger-builder-dockerfile-builder-build() {
|
|||||||
|
|
||||||
pushd "$SOURCECODE_WORK_DIR" &>/dev/null
|
pushd "$SOURCECODE_WORK_DIR" &>/dev/null
|
||||||
|
|
||||||
plugn trigger pre-build-dockerfile "$APP"
|
if fn-plugn-trigger-exists "pre-build-dockerfile"; then
|
||||||
|
dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-build' plugin trigger instead of pre-build-dockerfile"
|
||||||
|
plugn trigger pre-build-dockerfile "$APP"
|
||||||
|
fi
|
||||||
|
plugn trigger pre-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
|
|
||||||
[[ "$DOKKU_DOCKERFILE_CACHE_BUILD" == "false" ]] && DOKKU_DOCKER_BUILD_OPTS="$DOKKU_DOCKER_BUILD_OPTS --no-cache"
|
[[ "$DOKKU_DOCKERFILE_CACHE_BUILD" == "false" ]] && DOKKU_DOCKER_BUILD_OPTS="$DOKKU_DOCKER_BUILD_OPTS --no-cache"
|
||||||
local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE")
|
local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE")
|
||||||
@@ -38,7 +42,11 @@ trigger-builder-dockerfile-builder-build() {
|
|||||||
"$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS "${ARG_ARRAY[@]}" ${DOKKU_DOCKER_BUILD_OPTS} -t $IMAGE .
|
"$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS "${ARG_ARRAY[@]}" ${DOKKU_DOCKER_BUILD_OPTS} -t $IMAGE .
|
||||||
|
|
||||||
plugn trigger ports-set-detected "$APP" "$(fn-builder-dockerfile-get-detect-port-map "$APP" "$IMAGE" "$SOURCECODE_WORK_DIR/Dockerfile")"
|
plugn trigger ports-set-detected "$APP" "$(fn-builder-dockerfile-get-detect-port-map "$APP" "$IMAGE" "$SOURCECODE_WORK_DIR/Dockerfile")"
|
||||||
plugn trigger post-build-dockerfile "$APP"
|
if fn-plugn-trigger-exists "post-build-dockerfile"; then
|
||||||
|
dokku_log_warn "Deprecated: please upgrade plugin to use 'post-build' plugin trigger instead of post-build-dockerfile"
|
||||||
|
plugn trigger post-build-dockerfile "$APP"
|
||||||
|
fi
|
||||||
|
plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
trigger-builder-dockerfile-builder-build "$@"
|
trigger-builder-dockerfile-builder-build "$@"
|
||||||
|
|||||||
@@ -13,13 +13,16 @@ trigger-builder-dockerfile-builder-release() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
||||||
local DOCKER_BUILD_LABEL_ARGS=("--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.image-stage=release" "--label=dokku")
|
if fn-plugn-trigger-exists "pre-release-dockerfile"; then
|
||||||
|
dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-release-builder' plugin trigger instead of pre-release-dockerfile"
|
||||||
plugn trigger pre-release-dockerfile "$APP" "$IMAGE_TAG"
|
plugn trigger pre-release-dockerfile "$APP" "$IMAGE_TAG"
|
||||||
|
fi
|
||||||
|
plugn trigger pre-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE"
|
||||||
|
|
||||||
TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")"
|
TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.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
|
||||||
|
|
||||||
|
local DOCKER_BUILD_LABEL_ARGS=("--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.image-stage=release" "--label=dokku")
|
||||||
if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-dockerfile/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then
|
if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-dockerfile/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then
|
||||||
dokku_log_warn "Failure injecting docker labels on image"
|
dokku_log_warn "Failure injecting docker labels on image"
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core builder-dockerfile plugin"
|
description = "dokku core builder-dockerfile plugin"
|
||||||
version = "0.31.2"
|
version = "0.33.2"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
|||||||
fn-builder-herokuish-ensure-cache() {
|
fn-builder-herokuish-ensure-cache() {
|
||||||
declare APP="$1"
|
declare APP="$1"
|
||||||
|
|
||||||
existing_cache="$("$DOCKER_BIN" volume ls --quiet --filter label=com.dokku.app-name=test --filter label=com.dokku.builder-type=herokuish)"
|
existing_cache="$("$DOCKER_BIN" volume ls --quiet --filter "label=com.dokku.app-name=$APP" --filter label=com.dokku.builder-type=herokuish)"
|
||||||
if [[ "$existing_cache" != "cache-$APP" ]]; then
|
if [[ "$existing_cache" != "cache-$APP" ]]; then
|
||||||
"$DOCKER_BIN" volume rm "cache-$APP" &>/dev/null || true
|
"$DOCKER_BIN" volume rm "cache-$APP" &>/dev/null || true
|
||||||
"$DOCKER_BIN" volume create "--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.builder-type=herokuish" "cache-$APP" >/dev/null
|
"$DOCKER_BIN" volume create "--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.builder-type=herokuish" "cache-$APP" >/dev/null
|
||||||
@@ -57,7 +57,11 @@ trigger-builder-herokuish-builder-build() {
|
|||||||
"$DOCKER_BIN" container commit "${DOCKER_COMMIT_LABEL_ARGS[@]}" "$TAR_CID" "$IMAGE" >/dev/null
|
"$DOCKER_BIN" container commit "${DOCKER_COMMIT_LABEL_ARGS[@]}" "$TAR_CID" "$IMAGE" >/dev/null
|
||||||
DOKKU_SKIP_IMAGE_CLEANUP_REGISTRATION=1 plugn trigger scheduler-register-retired "$APP" "$TAR_CID"
|
DOKKU_SKIP_IMAGE_CLEANUP_REGISTRATION=1 plugn trigger scheduler-register-retired "$APP" "$TAR_CID"
|
||||||
|
|
||||||
plugn trigger pre-build-buildpack "$APP" "$SOURCECODE_WORK_DIR"
|
if fn-plugn-trigger-exists "pre-build-buildpack"; then
|
||||||
|
dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-build' plugin trigger instead of pre-build-buildpack"
|
||||||
|
plugn trigger pre-build-buildpack "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
|
fi
|
||||||
|
plugn trigger pre-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
|
|
||||||
local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE")
|
local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE")
|
||||||
[[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" --env=TRACE=true "
|
[[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" --env=TRACE=true "
|
||||||
@@ -95,7 +99,11 @@ trigger-builder-herokuish-builder-build() {
|
|||||||
# ensure we have a port mapping
|
# ensure we have a port mapping
|
||||||
plugn trigger ports-configure "$APP"
|
plugn trigger ports-configure "$APP"
|
||||||
plugn trigger ports-set-detected "$APP" "http:$(plugn trigger ports-get-property "$APP" proxy-port):5000"
|
plugn trigger ports-set-detected "$APP" "http:$(plugn trigger ports-get-property "$APP" proxy-port):5000"
|
||||||
plugn trigger post-build-buildpack "$APP" "$SOURCECODE_WORK_DIR"
|
if fn-plugn-trigger-exists "post-build-buildpack"; then
|
||||||
|
dokku_log_warn "Deprecated: please upgrade plugin to use 'post-build' plugin trigger instead of post-build-buildpack"
|
||||||
|
plugn trigger post-build-buildpack "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
|
fi
|
||||||
|
plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
trigger-builder-herokuish-builder-build "$@"
|
trigger-builder-herokuish-builder-build "$@"
|
||||||
|
|||||||
@@ -10,10 +10,8 @@ trigger-builder-herokuish-builder-detect() {
|
|||||||
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
||||||
local ARCHITECTURE="$(dpkg --print-architecture 2>/dev/null || true)"
|
local ARCHITECTURE="$(dpkg --print-architecture 2>/dev/null || true)"
|
||||||
|
|
||||||
if [[ "$ARCHITECTURE" == "armhf" ]] || [[ "$ARCHITECTURE" == "arm64" ]]; then
|
if [[ "$ARCHITECTURE" == "arm64" ]] && [[ "$(fn-builder-herokuish-computed-allowed "$APP")" != "true" ]]; then
|
||||||
if [[ "$(fn-builder-herokuish-computed-allowed "$APP")" != "true" ]]; then
|
return
|
||||||
return
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if fn-has-buildpacks-file "$SOURCECODE_WORK_DIR"; then
|
if fn-has-buildpacks-file "$SOURCECODE_WORK_DIR"; then
|
||||||
|
|||||||
@@ -14,9 +14,11 @@ trigger-builder-herokuish-builder-release() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
||||||
local DOCKER_BUILD_LABEL_ARGS=("--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.image-stage=release" "--label=dokku")
|
if fn-plugn-trigger-exists "pre-release-buildpack"; then
|
||||||
|
dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-release-builder' plugin trigger instead of pre-release-buildpack"
|
||||||
plugn trigger pre-release-buildpack "$APP" "$IMAGE_TAG"
|
plugn trigger pre-release-buildpack "$APP" "$IMAGE_TAG"
|
||||||
|
fi
|
||||||
|
plugn trigger pre-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE"
|
||||||
|
|
||||||
TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")"
|
TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.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
|
||||||
@@ -24,6 +26,7 @@ trigger-builder-herokuish-builder-release() {
|
|||||||
config_export global >"$TMP_WORK_DIR/00-global-env.sh"
|
config_export global >"$TMP_WORK_DIR/00-global-env.sh"
|
||||||
config_export app "$APP" >"$TMP_WORK_DIR/01-app-env.sh"
|
config_export app "$APP" >"$TMP_WORK_DIR/01-app-env.sh"
|
||||||
|
|
||||||
|
local DOCKER_BUILD_LABEL_ARGS=("--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.app-name=$APP" "--label=com.dokku.image-stage=release" "--label=dokku")
|
||||||
if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-herokuish/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then
|
if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-herokuish/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then
|
||||||
dokku_log_warn "Failure injecting environment variables"
|
dokku_log_warn "Failure injecting environment variables"
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core builder-herokuish plugin"
|
description = "dokku core builder-herokuish plugin"
|
||||||
version = "0.31.2"
|
version = "0.33.2"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -7,9 +7,13 @@ source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
|||||||
trigger-builder-herokuish-pre-build-buildpack() {
|
trigger-builder-herokuish-pre-build-buildpack() {
|
||||||
declare desc="builder-herokuish pre-build-buildpack plugin trigger"
|
declare desc="builder-herokuish pre-build-buildpack plugin trigger"
|
||||||
declare trigger="pre-build-buildpack"
|
declare trigger="pre-build-buildpack"
|
||||||
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
declare BUILDER_TYPE="$1" APP="$2" SOURCECODE_WORK_DIR="$3"
|
||||||
local IMAGE TMP_WORK_DIR
|
local IMAGE TMP_WORK_DIR
|
||||||
|
|
||||||
|
if [[ "$BUILDER_TYPE" != "herokuish" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
local DOCKER_BUILD_LABEL_ARGS="--label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.app-name=$APP"
|
local DOCKER_BUILD_LABEL_ARGS="--label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.app-name=$APP"
|
||||||
|
|
||||||
IMAGE=$(get_app_image_name "$APP")
|
IMAGE=$(get_app_image_name "$APP")
|
||||||
@@ -18,7 +18,11 @@ trigger-builder-lambda-builder-build() {
|
|||||||
|
|
||||||
pushd "$SOURCECODE_WORK_DIR" &>/dev/null
|
pushd "$SOURCECODE_WORK_DIR" &>/dev/null
|
||||||
|
|
||||||
plugn trigger pre-build-lambda "$APP"
|
if fn-plugn-trigger-exists "pre-build-lambda"; then
|
||||||
|
dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-build' plugin trigger instead of pre-build-lambda"
|
||||||
|
plugn trigger pre-build-lambda "$APP"
|
||||||
|
fi
|
||||||
|
plugn trigger pre-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
|
|
||||||
lambda-builder build --generate-image --write-procfile --image-env=DOCKER_LAMBDA_STAY_OPEN=1 --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.image-stage=build --label=com.dokku.builder-type=lambda "--label=com.dokku.app-name=$APP" $DOKKU_GLOBAL_BUILD_ARGS --port 5000 --tag "$IMAGE" --working-directory "$SOURCECODE_WORK_DIR"
|
lambda-builder build --generate-image --write-procfile --image-env=DOCKER_LAMBDA_STAY_OPEN=1 --label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.image-stage=build --label=com.dokku.builder-type=lambda "--label=com.dokku.app-name=$APP" $DOKKU_GLOBAL_BUILD_ARGS --port 5000 --tag "$IMAGE" --working-directory "$SOURCECODE_WORK_DIR"
|
||||||
if [[ ! -f "$SOURCECODE_WORK_DIR/lambda.zip" ]]; then
|
if [[ ! -f "$SOURCECODE_WORK_DIR/lambda.zip" ]]; then
|
||||||
@@ -39,7 +43,11 @@ trigger-builder-lambda-builder-build() {
|
|||||||
# ensure we have a port mapping
|
# ensure we have a port mapping
|
||||||
plugn trigger ports-configure "$APP"
|
plugn trigger ports-configure "$APP"
|
||||||
plugn trigger ports-set-detected "$APP" "http:$(plugn trigger ports-get-property "$APP" proxy-port):5000"
|
plugn trigger ports-set-detected "$APP" "http:$(plugn trigger ports-get-property "$APP" proxy-port):5000"
|
||||||
plugn trigger post-build-lambda "$APP"
|
if fn-plugn-trigger-exists "post-build-lambda"; then
|
||||||
|
dokku_log_warn "Deprecated: please upgrade plugin to use 'post-build' plugin trigger instead of post-build-lambda"
|
||||||
|
plugn trigger post-build-lambda "$APP"
|
||||||
|
fi
|
||||||
|
plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
trigger-builder-lambda-builder-build "$@"
|
trigger-builder-lambda-builder-build "$@"
|
||||||
|
|||||||
@@ -9,10 +9,6 @@ trigger-builder-lambda-builder-detect() {
|
|||||||
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
||||||
local ARCHITECTURE="$(dpkg --print-architecture 2>/dev/null || true)"
|
local ARCHITECTURE="$(dpkg --print-architecture 2>/dev/null || true)"
|
||||||
|
|
||||||
if [[ "$ARCHITECTURE" == "armhf" ]]; then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ -f "$SOURCECODE_WORK_DIR/lambda.yml" ]]; then
|
if [[ -f "$SOURCECODE_WORK_DIR/lambda.yml" ]]; then
|
||||||
echo "lambda"
|
echo "lambda"
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -12,14 +12,17 @@ trigger-builder-lambda-builder-release() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local DOCKER_BUILD_LABEL_ARGS="--label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.app-name=$APP --label=com.dokku.image-stage=release --label=dokku"
|
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
||||||
|
if fn-plugn-trigger-exists "pre-release-lambda"; then
|
||||||
plugn trigger pre-release-lambda "$APP" "$IMAGE_TAG"
|
dokku_log_warn "Deprecated: please upgrade plugin to use 'pre-release-builder' plugin trigger instead of pre-release-lambda"
|
||||||
|
plugn trigger pre-release-lambda "$APP" "$IMAGE_TAG"
|
||||||
|
fi
|
||||||
|
plugn trigger pre-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE"
|
||||||
|
|
||||||
TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")"
|
TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.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
|
||||||
|
|
||||||
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
local DOCKER_BUILD_LABEL_ARGS="--label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.app-name=$APP --label=com.dokku.image-stage=release --label=dokku"
|
||||||
if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-lambda/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then
|
if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-lambda/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then
|
||||||
dokku_log_warn "Failure injecting docker labels on image"
|
dokku_log_warn "Failure injecting docker labels on image"
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku core builder-lambda plugin"
|
description = "dokku core builder-lambda plugin"
|
||||||
version = "0.31.2"
|
version = "0.33.2"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
67
plugins/builder-nixpacks/builder-build
Executable file
67
plugins/builder-nixpacks/builder-build
Executable file
@@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
|
source "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/internal-functions"
|
||||||
|
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||||
|
set -eo pipefail
|
||||||
|
[[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
trigger-builder-nixpacks-builder-build() {
|
||||||
|
declare desc="builder-nixpacks builder-build plugin trigger"
|
||||||
|
declare trigger="builder-build"
|
||||||
|
declare BUILDER_TYPE="$1" APP="$2" SOURCECODE_WORK_DIR="$3"
|
||||||
|
|
||||||
|
if [[ "$BUILDER_TYPE" != "nixpacks" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
dokku_log_info1 "Building $APP from nixpacks"
|
||||||
|
|
||||||
|
if ! command -v "nixpacks" &>/dev/null; then
|
||||||
|
dokku_log_fail "Missing nixpacks, install it"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local IMAGE=$(get_app_image_name "$APP")
|
||||||
|
local DOCKER_BUILD_LABEL_ARGS=("--label=dokku" "--label=org.label-schema.schema-version=1.0" "--label=org.label-schema.vendor=dokku" "--label=com.dokku.image-stage=build" "--label=com.dokku.builder-type=dockerfile" "--label=com.dokku.app-name=$APP")
|
||||||
|
|
||||||
|
pushd "$SOURCECODE_WORK_DIR" &>/dev/null
|
||||||
|
|
||||||
|
plugn trigger pre-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
|
|
||||||
|
no_cache="$(fn-builder-nixpacks-computed-no-cache "$APP")"
|
||||||
|
NIXPACKS_ARGS=""
|
||||||
|
if [[ "$no_cache" == "true" ]]; then
|
||||||
|
NIXPACKS_ARGS="$NIXPACKS_ARGS --no-cache"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local DOCKER_ARGS=$(: | plugn trigger docker-args-build "$APP" "$BUILDER_TYPE")
|
||||||
|
DOCKER_ARGS+=$(: | plugn trigger docker-args-process-build "$APP" "$BUILDER_TYPE")
|
||||||
|
|
||||||
|
# strip --link, --volume and -v args from DOCKER_ARGS
|
||||||
|
local DOCKER_ARGS=$(sed -e "s/^--link=[[:graph:]]\+[[:blank:]]\?//g" -e "s/^--link[[:blank:]]\?[[:graph:]]\+[[:blank:]]\?//g" -e "s/^--volume=[[:graph:]]\+[[:blank:]]\?//g" -e "s/^--volume[[:blank:]]\?[[:graph:]]\+[[:blank:]]\?//g" -e "s/^-v[[:blank:]]\?[[:graph:]]\+[[:blank:]]\?//g" <<<"$DOCKER_ARGS")
|
||||||
|
declare -a ARG_ARRAY
|
||||||
|
eval "ARG_ARRAY=($DOCKER_ARGS)"
|
||||||
|
|
||||||
|
eval "$(config_export app "$APP" --merged)"
|
||||||
|
|
||||||
|
if [[ -f "$SOURCECODE_WORK_DIR/Procfile" ]]; then
|
||||||
|
if procfile-util exists --process-type release; then
|
||||||
|
procfile-util delete --process-type release
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shellcheck disable=SC2086
|
||||||
|
if ! nixpacks build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS "${ARG_ARRAY[@]}" $NIXPACKS_ARGS --name "$IMAGE" "$SOURCECODE_WORK_DIR"; then
|
||||||
|
dokku_log_warn "Failure building image"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! suppress_output "$DOCKER_BIN" image build -f "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/dockerfiles/builder-build.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$SOURCECODE_WORK_DIR"; then
|
||||||
|
dokku_log_warn "Failure injecting docker labels and custom entrypoint on image"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
plugn trigger post-build "$BUILDER_TYPE" "$APP" "$SOURCECODE_WORK_DIR"
|
||||||
|
popd &>/dev/null || pushd "/tmp" >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger-builder-nixpacks-builder-build "$@"
|
||||||
17
plugins/builder-nixpacks/builder-detect
Executable file
17
plugins/builder-nixpacks/builder-detect
Executable file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||||
|
set -eo pipefail
|
||||||
|
[[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
trigger-builder-nixpacks-builder-detect() {
|
||||||
|
declare desc="builder-nixpacks builder-detect plugin trigger"
|
||||||
|
declare trigger="builder-detect"
|
||||||
|
declare APP="$1" SOURCECODE_WORK_DIR="$2"
|
||||||
|
|
||||||
|
if [[ -f "$SOURCECODE_WORK_DIR/nixpacks.toml" ]]; then
|
||||||
|
echo "nixpacks"
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger-builder-nixpacks-builder-detect "$@"
|
||||||
31
plugins/builder-nixpacks/builder-release
Executable file
31
plugins/builder-nixpacks/builder-release
Executable file
@@ -0,0 +1,31 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
|
set -eo pipefail
|
||||||
|
[[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
trigger-builder-nixpacks-builder-release() {
|
||||||
|
declare desc="builder-nixpacks builder-release plugin trigger"
|
||||||
|
declare trigger="builder-release"
|
||||||
|
declare BUILDER_TYPE="$1" APP="$2" IMAGE_TAG="$3"
|
||||||
|
|
||||||
|
if [[ "$BUILDER_TYPE" != "nixpacks" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
local DOCKER_BUILD_LABEL_ARGS="--label=org.label-schema.schema-version=1.0 --label=org.label-schema.vendor=dokku --label=com.dokku.app-name=$APP --label=com.dokku.image-stage=release --label=dokku"
|
||||||
|
|
||||||
|
plugn trigger pre-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE"
|
||||||
|
|
||||||
|
TMP_WORK_DIR="$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXXXX")"
|
||||||
|
trap "rm -rf '$TMP_WORK_DIR' >/dev/null" RETURN INT TERM EXIT
|
||||||
|
|
||||||
|
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
||||||
|
if ! suppress_output "$DOCKER_BIN" image build "${DOCKER_BUILD_LABEL_ARGS[@]}" $DOKKU_GLOBAL_BUILD_ARGS -f "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/dockerfiles/builder-release.Dockerfile" --build-arg APP_IMAGE="$IMAGE" -t "$IMAGE" "$TMP_WORK_DIR"; then
|
||||||
|
dokku_log_warn "Failure injecting docker labels on image"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
plugn trigger post-release-builder "$BUILDER_TYPE" "$APP" "$IMAGE"
|
||||||
|
}
|
||||||
|
|
||||||
|
trigger-builder-nixpacks-builder-release "$@"
|
||||||
15
plugins/builder-nixpacks/commands
Executable file
15
plugins/builder-nixpacks/commands
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail
|
||||||
|
[[ $DOKKU_TRACE ]] && set -x
|
||||||
|
source "$PLUGIN_AVAILABLE_PATH/builder-nixpacks/help-functions"
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
help | builder-nixpacks:help)
|
||||||
|
cmd-builder-nixpacks-help "$@"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
|
||||||
|
;;
|
||||||
|
|
||||||
|
esac
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user