运行 "docker-compose run --rm composer update" 在 Jenkins 管道中不工作

Running "docker-compose run --rm composer update" not working in Jenkins pipeline

我有一个仅用于学习目的的 Jenkins 管道,它应该通过 docker-compose 构建一个 Laravel 应用程序。 “docker-compose --build”步骤工作正常,但接下来是 运行ning“docker-compose 运行 --rm composer update”,然后停止,没有错误或输出。 当我通过 SSH 访问服务器后手动 运行 命令时,命令 运行s 没有问题。

docker-compose 文件中的 Composer 服务:

composer:
build:
  context: .
  dockerfile: composer.dockerfile
container_name: composer
volumes:
  - ./src:/var/www/html
working_dir: /var/www/html
depends_on:
  - php
user: laravel
entrypoint: ['composer', '--ignore-platform-reqs']
networks:
  - laravel

jenkinsfile 中的构建步骤:

stage('Build') {
     steps {
         echo 'Building..'
         sh 'chmod +x scripts/jenkins-build.sh'
         sh './scripts/jenkins-build.sh'
     }
 }

shell 脚本中的命令:

print "Building docker app"
sudo docker-compose up -d --build site # works fine
sudo chown jenkins -R ./

print "Running composer"
sudo docker-compose run --rm composer update # hangs in jenkins but works in cmd?

在 Jenkins 中查看:

相同的命令在同一台服务器上运行,通过 cmd:

我知道这里有一些不好的做法,但这只是为了学习目的。 Jenkins 服务器在 AWS EC2 实例上 运行ning Ubuntu 20.04。

最后我求助于将 composer 直接安装到我的 PHP docker 图像中。因此,我现在使用 docker exec php composer update 而不是 运行 作曲家服务。 据我所知,通过 docker-compose run 使用的任何服务在 Jenkins 管道中都不起作用。就我而言,这些都是在执行某些操作时仅 运行 的所有服务(例如 composer update),所以也许这就是 Jenkins 不喜欢它的原因。