From 7b46d2a4fc4f15ec7c6dbf400d9e7504083d78cf Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 23 Sep 2019 00:37:18 -0400 Subject: [PATCH] fix: use companion agent for docker upgrade --- client/components/admin/admin-system.vue | 2 +- package.json | 1 - server/graph/resolvers/system.js | 27 +++++++++-------------- yarn.lock | Bin 607563 -> 603250 bytes 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/client/components/admin/admin-system.vue b/client/components/admin/admin-system.vue index e00d4ca5..78ac3af0 100644 --- a/client/components/admin/admin-system.vue +++ b/client/components/admin/admin-system.vue @@ -27,7 +27,7 @@ v-list-item-subtitle {{ info.latestVersion }} v-list-item-action v-list-item-action-text {{ $t('admin:system.published') }} {{ info.latestVersionReleaseDate | moment('from') }} - v-card-actions(v-if='upgradeCapable && !isLatestVersion && info.platform === `docker`', :class='$vuetify.theme.dark ? `grey darken-3-d5` : `indigo lighten-5`') + v-card-actions(v-if='info.upgradeCapable && !isLatestVersion && info.platform === `docker`', :class='$vuetify.theme.dark ? `grey darken-3-d5` : `indigo lighten-5`') .caption.indigo--text.pl-3(:class='$vuetify.theme.dark ? `text--lighten-4` : ``') Wiki.js can perform the upgrade to the latest version for you. v-spacer v-btn.px-3( diff --git a/package.json b/package.json index c11074dc..502076d6 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,6 @@ "dependency-graph": "0.8.0", "diff": "4.0.1", "diff2html": "2.11.3", - "dockerode": "2.5.8", "dotize": "0.3.0", "elasticsearch6": "npm:@elastic/elasticsearch@6", "elasticsearch7": "npm:@elastic/elasticsearch@7", diff --git a/server/graph/resolvers/system.js b/server/graph/resolvers/system.js index 14d85ed6..c3356075 100644 --- a/server/graph/resolvers/system.js +++ b/server/graph/resolvers/system.js @@ -7,7 +7,7 @@ const path = require('path') const fs = require('fs-extra') const moment = require('moment') const graphHelper = require('../../helpers/graph') -const Docker = require('dockerode') +const request = require('request-promise') /* global WIKI */ @@ -70,21 +70,16 @@ module.exports = { }, async performUpgrade (obj, args, context) { try { - const dockerEngine = new Docker({ socketPath: '/var/run/docker.sock' }) - await dockerEngine.run('containrrr/watchtower', ['--cleanup', '--run-once', 'wiki'], process.stdout, { - HostConfig: { - AutoRemove: true, - Mounts: [ - { - Target: '/var/run/docker.sock', - Source: '/var/run/docker.sock', - Type: 'bind' - } - ] + if (process.env.UPGRADE_COMPANION) { + await request({ + method: 'POST', + uri: 'http://wiki-update-companion/upgrade' + }) + return { + responseResult: graphHelper.generateSuccess('Upgrade has started.') } - }) - return { - responseResult: graphHelper.generateSuccess('Upgrade has started.') + } else { + throw new Error('You must run the wiki-update-companion container and pass the UPGRADE_COMPANION env var in order to use this feature.') } } catch (err) { return graphHelper.generateError(err) @@ -169,7 +164,7 @@ module.exports = { return WIKI.config.telemetry.clientId }, async upgradeCapable () { - return fs.pathExists('/var/run/docker.sock') + return !_.isNil(process.env.UPGRADE_COMPANION) }, workingDirectory () { return process.cwd() diff --git a/yarn.lock b/yarn.lock index 5c15b0942a948a0e29487c94e0fe8c5eb716ec10..8e785f50549d4df070abbc412eb66266c840eeab 100644 GIT binary patch delta 167 zcmV;Y09gOaiY4;sB!IL5URVTSVqs#Jk*Nb1m!OCOEVr&%0rs_*@{0!)mp*m^E|*Xe z0tmMw5dvTymj@ID6PFJ%0_L~DGXiusmu77U6qm3L2rRdRYXaFfm$tzO50|}A2rjp< zqXHd*ho>k5x2GrsDCLKh4h4sm4hFZC4hO?Mw~9>%JtDW?ZwCVfw=i}GJC(OC3(+#OJly~Q delta 2855 zcmZ8jON=8&8P?b{WA8v7yE~bg?2^bCf`a6=T~+-K88jY0#vZ@N?@N2`m3tD zzW@LJ@Bjb)=cj-9>K9)A(aMXJN00KEbbi<;xV;bkf*-L*a?ZW@18cw+crftUOZ>yy z+2;)ikf1Br!l957 zR;83q*jdpz6kxu4|X>^{5P!ktx>J++5Pe!;#S4;oUl88zOu6a zF8j@$l}+~Re>wf^_YXVVaIp#52g6VX8iWeJfM5VcguozF76_G~E@+AYkc6qmUVn3a zt4P#guG%@V%r?=h;qqZjNu-X)!?Q#MAH}A^f!=8KYbPN(o+XP_Gto`Jp_I*M+udeo z7Rc8cg?y-UN|R+}EcIKNbfpw+<{~U;Id<4r{^Qmy1@-*?f<9S{A$#;2Q#X&@OBq$$V*#KcGvbOK~( z>R8i|AZiBG81^`}X(5tAjZ{36Gmp^hG<#&_T}nvY*{^ERjU*GygvX zJD~R2RSlRXzxgS#st5$A1Og&aQ-WAhh@>lqK>%6CCKMgSa<$W885Tozvr^M%M~A~s z+nWiDk~wl>4)w65wrR0et%PFv6r9xhrD>%t>-kx~IEwTmx>p=jONXJeVE*9P8Y*YA zzQuxjj>j4Jr)%AR(Z4qBxQCatyAO^wS}l75@QL}J&*4~caua+1&dL&QXtCk}+Qoh2sj5n-piu-Q!;}Su$|_L+f(YsCy>}dsUH4{5((E*s(c3c;SG;bw z{qp?ITaM?y{%DgEsco60z0dOs_*M4d_uP9)(=yH{`1vmmZ2;Q+OrlUA5+E|By3A8t z6rhewi6|HwlB$`yjIqw%zU$mBwo0eHP(Bn77Q-jm;7Od!QV>b83QdnQ?P@jNF&f=^ zx}WUNTE$^vR+i;937+P&m9kM!l+LVp^<*k*g={BCx}|)+N$|vqzwx$b=gI^1@$B02 zv&%mI&e{%(?yp`Ba-_hIWS_VU+@RZP41ESZkJ`q@5*zoxKJrU`^;xbfW6~cqtd3`w zTUhrEhc9xz=-e56gU{YzdxFcH42d8UNJOg2fFOxVG65#RI?<@AP-p@c{O;OL(W^8v z#p(eG7xG3s)6Vs}#cB>ml&Cl!$A_}F7C%YH%Jp6_7m0H<95%Ai11&SI!~?OjT(w7w z>G7zUN_e&QELoNXt8kP(>9X9nR<5xR-duY~TEy0mmT)h|?LK7nzHs8cj}AP$d^ME) z!Ydw+bMEo1`v0`LP+9iVdyZ}P$rqje=;^@f*uu+^pFi6&4{hWE6-`V;tU-zm0ZNps zs*I>AA!rzgQyL1gj2Qft>*|xxmj!5)@5bcGv?4?flVY)c7Rt~Fs#?LlS7K{x{9d2O z)?B~XTj=-JtuyzH=enbImw$ZmXLC=mzbl!Pr~-tBAm}=ksR30aL#lBS^29NCsR1h1 z*vD5^w~J~M9F4l=HjyN+HVl;_-e_JbCJRDB4(hdD{}4-Rt56WNJN zA~F$07-PzdglHfQ%7h5WfRe)Af5)+TJ<_VxL@fGHJZ4N)xf+~xE(OsFXY zNJKLU|GKO}1{=<+Pe7j@&x}>n9CzzSWibU#Xsyx}>Lt{~)%iC*aeXedN(cKdF|g$d zvu_67k8-RF9@nia zgLbB_p2aiS0MQR6>FlIEO-2A2((CBopg`!s|0H&8CJm-fsYE8m1&^JedT^kRo1O z{j)r%lSZ1Vm5vf{`ls&9eTM5M8-dKD5=?A6DZlx|3Y#Y&{$zqoub8oXpB6jo7aR-%iz%REqC4b0A%lNxwo9$3GB7m+7s;dL+k!IM^7(r?%waz_AfSSse=32 zOY6&5ENj*$e_ZoN&tJ=lc>c_pxVRRbrKkzIDXLUPrecT!HB4d(P{2Si4Q%R&K*UE2 z$=NQqrrLqj7%T0;C|ZpO=4@E-CL+=hcfI{|b>dBkr=_N@9S86rsC&Em0q+x()8VKS l>$d6#L_R(~GEb&Lwu6qkbtGm4)XtP@d-Jco;Qrfh{|m9ee_8+l