Improve docker pull behaviour
Hey! Thank you so much for this library. I really enjoyed working with it and will keep doing so! :pray:
I had some issues about docker pull and async/await race conditions Following #357, I had to implement that
console.log('Pulling images... ⏳')
await new Promise((resolve, reject): any => docker.pull(SERVER_IMAGE, (err, stream) => {
// https://github.com/apocas/dockerode/issues/357
docker.modem.followProgress(stream, onFinished)
function onFinished(err, output) {
if (!err) {
resolve(true)
return
}
reject(err)
}
}))
console.log(`└─ Done`)
Unfortunately, I think we could largely improve from the current behaviour. The code I would like to see would be the following:
console.log('Pulling images... ⏳')
await docker.pull(SERVER_IMAGE)
console.log(`└─ Done`)
Could you explain the reasoning behind this implementation @apocas ? :)
Error details
```js Error: (HTTP code 404) no such container - No such image: ghcr.io/nextcloud/continuous-integration-shallow-server:latest at /home/runner/work/viewer/viewer/node_modules/docker-modem/lib/modem.js:336:17 at getCause (/home/runner/work/viewer/viewer/node_modules/docker-modem/lib/modem.js:366:7) at Modem.buildPayload (/home/runner/work/viewer/viewer/node_modules/docker-modem/lib/modem.js:335:5) at IncomingMessage.
any update on this issue @apocas
+1, would love to see an update on this. Ideally, callbacks wouldn't be required at all.
+1. I see
await docker.pull(image)
is supported, but it actually doesn't work properly. Function completes, but the image is still not there, and after some time it appears.