运行 "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 不喜欢它的原因。
我有一个仅用于学习目的的 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 不喜欢它的原因。