2
CICD 프로세스의 일환으로 PHP 스크립트에서 Docker 이미지를 로그인하고 푸시하려고합니다.PHP 스크립트에서 Docker 허브에 로그인
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
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);
}
?>
이
다음 반환 : 여기에 코드입니다 성공했습니다.내가 뭘 잘못하고 있니? 이렇게 PHP로 Docker Hub에 로그인 할 수 있습니까? 아니면 기술이 다른가?
EDIT : PHP 스크립트는 AJAX를 통해 호출되어 브라우저에서 실행되는 것처럼 효과적으로 실행됩니다. 테스트 목적으로 브라우저에서 실행하고 있습니다.
보십시오'echo "password"| sudo docker login --username $ duser --password-stdin', 작동 할 수 있습니다 .. –
문서보기 https://docs.docker.com/engine/reference/commandline/login/#login-to-a-self -hosted-registry STDIN 부분을 사용하여 암호를 제공하십시오. –
'global'을 없애지 말고, 더 잘 알고 있어야합니다 ... –