从PHP脚本登录到Docker Hub

我试图从PHP脚本登录并推送Docker图像作为我们的CICD过程的一部分。下面是代码:从PHP脚本登录到Docker Hub

<?php 

include '../php/database.php';

$duser = 'username';

$dpass = 'password';

$dmail = 'email';

$tag = 'from system';

function tagImage($tag) {

$getImageID = "SELECT `imageID` FROM `docker_images` WHERE `tag` = :tag ";

$params = array(':tag' => $tag);

$results = dataQuery($getImageID, $params);

if(!empty($results)) {

$image = $results[0]['imageID'];

global $repo = $results[0]['repo']; // I know this is a bad idea, will change it when all else is working

$last = system("sudo docker tag -f $image $repo 2>&1", $retval);

}

return $retval;

}

$tagStatus = tagImage($tag);

if(0 == $tagStatus) {

echo '<pre>';

$login = system("sudo docker login --username=$duser", $retval);

var_dump($login);

var_dump($retval);

// push it real good

$last = system("sudo docker push $repo 2>&1", $retval1);

var_dump($last);

var_dump($retval1);

}

?>

这将返回以下:

string(0) "" 

int(1)

The push refers to a repository [app/ap-name] (len: 1)

21d623eb89a9: Image push failed

Please login prior to push:

Username: EOF

string(13) "Username: EOF"

int(1)

,推失败,因为登录不从PHP脚本工作,但是当我在命令行登录登录是成功的。

我在做什么错?我可以使用PHP登录Docker Hub吗?或者这种技术应该不同?

编辑: PHP脚本将通过AJAX调用,有效地使它运行,就像它从浏览器运行一样。我正在从浏览器运行它来进行测试。

回答:

登录要求所有与码头工人枢纽回购相关的凭据,包括密码和电子邮件地址:

$login = system("sudo docker login --username $duser --password $dpass --email $dmail 2>&1", $retval); 

var_dump($login);

var_dump($retval);

使用此语法返回以下(预计):

WARNING: login credentials saved in /root/.dockercfg. 

Login Succeeded

string(15) "Login Succeeded"

int(0)

过去的那点push正常工作并且不返回错误。

以上是 从PHP脚本登录到Docker Hub 的全部内容, 来源链接: utcz.com/qa/267285.html

回到顶部