( dockerImage: string, serverId: string, onData?: (data: any) => void, authConfig?: Partial<RegistryAuth>, )
| 54 | }; |
| 55 | |
| 56 | export const pullRemoteImage = async ( |
| 57 | dockerImage: string, |
| 58 | serverId: string, |
| 59 | onData?: (data: any) => void, |
| 60 | authConfig?: Partial<RegistryAuth>, |
| 61 | ): Promise<void> => { |
| 62 | try { |
| 63 | if (!dockerImage) { |
| 64 | throw new Error("Docker image not found"); |
| 65 | } |
| 66 | |
| 67 | const remoteDocker = await getRemoteDocker(serverId); |
| 68 | |
| 69 | await new Promise((resolve, reject) => { |
| 70 | remoteDocker.pull( |
| 71 | dockerImage, |
| 72 | { authconfig: authConfig }, |
| 73 | (err, stream) => { |
| 74 | if (err) { |
| 75 | reject(err); |
| 76 | return; |
| 77 | } |
| 78 | |
| 79 | remoteDocker.modem.followProgress( |
| 80 | stream as Readable, |
| 81 | (err: Error | null, res) => { |
| 82 | if (!err) { |
| 83 | resolve(res); |
| 84 | } |
| 85 | if (err) { |
| 86 | reject(err); |
| 87 | } |
| 88 | }, |
| 89 | (event) => { |
| 90 | onData?.(event); |
| 91 | }, |
| 92 | ); |
| 93 | }, |
| 94 | ); |
| 95 | }); |
| 96 | } catch (error) { |
| 97 | throw error; |
| 98 | } |
| 99 | }; |
| 100 | |
| 101 | export const containerExists = async (containerName: string) => { |
| 102 | const container = docker.getContainer(containerName); |
no test coverage detected