diff --git a/packages/server/src/utils/cluster/upload.ts b/packages/server/src/utils/cluster/upload.ts index 22c9881c6..0ecbda4ff 100644 --- a/packages/server/src/utils/cluster/upload.ts +++ b/packages/server/src/utils/cluster/upload.ts @@ -19,21 +19,25 @@ export const uploadImage = async ( const finalURL = registryUrl; - const registryTag = join(imagePrefix || "", imageName); + const registryTag = + `${registryUrl}/${join(imagePrefix || "", imageName)}`.replace(/\/+/g, "/"); try { writeStream.write( - `📦 [Enabled Registry] Uploading image to ${registry.registryType} | ${registryTag} | ${finalURL}\n`, + `📦 [Enabled Registry] Uploading image to ${registry.registryType} | ${imageName} | ${finalURL}\n`, ); - await spawnAsync( + const loginCommand = spawnAsync( "docker", - ["login", finalURL, "-u", registry.username, "-p", registry.password], + ["login", finalURL, "-u", registry.username, "--password-stdin"], (data) => { if (writeStream.writable) { writeStream.write(data); } }, ); + loginCommand.child?.stdin?.write(registry.password); + loginCommand.child?.stdin?.end(); + await loginCommand; await spawnAsync("docker", ["tag", imageName, registryTag], (data) => { if (writeStream.writable) { @@ -73,17 +77,16 @@ export const uploadImageRemoteCommand = ( try { const command = ` echo "📦 [Enabled Registry] Uploading image to '${registry.registryType}' | '${registryTag}'" >> ${logPath}; - docker login ${finalURL} -u ${registry.username} -p ${registry.password} >> ${logPath} 2>> ${logPath} || { + echo "${registry.password}" | docker login ${finalURL} -u ${registry.username} --password-stdin >> ${logPath} 2>> ${logPath} || { echo "❌ DockerHub Failed" >> ${logPath}; exit 1; } - echo "✅ DockerHub Login Success" >> ${logPath}; + echo "✅ Registry Login Success" >> ${logPath}; docker tag ${imageName} ${registryTag} >> ${logPath} 2>> ${logPath} || { echo "❌ Error tagging image" >> ${logPath}; exit 1; } - echo "✅ Image Tagged" >> ${logPath}; - + echo "✅ Image Tagged" >> ${logPath}; docker push ${registryTag} 2>> ${logPath} || { echo "❌ Error pushing image" >> ${logPath}; exit 1; diff --git a/packages/server/src/utils/providers/docker.ts b/packages/server/src/utils/providers/docker.ts index 7245dc511..88c457767 100644 --- a/packages/server/src/utils/providers/docker.ts +++ b/packages/server/src/utils/providers/docker.ts @@ -53,7 +53,7 @@ export const buildRemoteDocker = async ( application: ApplicationNested, logPath: string, ) => { - const { sourceType, dockerImage, username, password } = application; + const { registryUrl, dockerImage, username, password } = application; try { if (!dockerImage) { @@ -65,7 +65,7 @@ echo "Pulling ${dockerImage}" >> ${logPath}; if (username && password) { command += ` -if ! docker login --username ${username} --password ${password} https://index.docker.io/v1/ >> ${logPath} 2>&1; then +if ! echo "${password}" | docker login --username "${username}" --password-stdin "${registryUrl || ""}" >> ${logPath} 2>&1; then echo "❌ Login failed" >> ${logPath}; exit 1; fi