从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