首页 > 解决方案 > 安装作曲家依赖项期间 Docker 作曲家命令失败

问题描述

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

在 github 中推送到 master 期间,jenkins 需要在 EC2 实例中拉取并运行一些命令。当我尝试安装作曲家依赖项时,出现以下错误:

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

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

谢谢

标签: phpamazon-web-servicesdockerjenkinsdocker-compose

解决方案


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

jenkins ALL=(ALL) NOPASSWD: ALL 4. 通过 Ctrl+O 保存文件(不要保存在 tmp 文件中。保存在 /etc/sudoers 中,确认覆盖) 5. 通过 Ctrl+X 退出 6. 重新启动您的 jenkins 作业7. 你应该不会再看到那个错误信息了 :)


推荐阅读