Docker composer命令在安装composer依赖期间失败

时间:2019-03-29 09:44:52

标签: php amazon-web-services docker jenkins docker-compose

我正在设置部署服务器。我安装了docker,并使用phpdocker.io生成的docker-composer.yaml运行docker容器。而且我还安装了詹金斯。所有设置都在EC2实例上。一切正常。

在推动GitHub掌握期间,jenkins需要作出拉动并在EC2实例中运行一些命令。当我尝试安装composer依赖项时,出现以下错误:

docker-compose exec php-fpm composer install
Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.
Build step 'Execute shell' marked build as failure
Finished: FAILURE

我尝试寻找许多解决方案,但是jenkins似乎无法找到docker,或者无法与docker通信。

其中提到的一种解决方案是docker没有运行。我已登录到EC2实例,并且确定它正在运行。我也将docker添加到sudo中。 只是为了确认这里是$ id -nG

的输出
$ id -nG
ubuntu adm dialout cdrom floppy sudo audio dip video plugdev lxd netdev docker

如评论中所述,我尝试添加sudo

$ sudo docker-compose exec php-fpm composer install
sudo: no tty present and no askpass program specified
Build step 'Execute shell' marked build as failure
Finished: FAILURE

任何想法如何解决此错误?如果您需要更多信息,请随时询问。

谢谢

1 个答案:

答案 0 :(得分:2)

运行的jenkins中包含sudo命令的shell脚本可能无法按预期运行。要解决此问题,请遵循 简单步骤: 1.在基于ubuntu的系统上,运行“ $ sudo visudo” 2.这将打开/ etc / sudoers文件。 3.如果您的jenkins用户已经在该文件中,则进行修改,如下所示:

jenkins ALL =(全部)NOPASSWD:全部 4.通过执行Ctrl + O保存文件(不要保存在tmp文件中。保存在/ etc / sudoers中,确认覆盖) 5.通过执行Ctrl + X退出 6.重新启动詹金斯的工作 7.您不应再看到该错误消息:)