【发布时间】:2021-06-09 22:42:44
【问题描述】:
我有一个仅用于学习目的的 Jenkins 管道,它应该通过 docker-compose 构建一个 Laravel 应用程序。 “docker-compose --build”步骤工作正常,但接下来它正在运行“docker-compose run --rm composer update”,然后停止,没有错误或输出。 当我通过 SSH 访问服务器后手动运行命令时,命令运行没有问题。
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 中查看:
我知道这里有一些不好的做法,但这只是为了学习目的。 Jenkins 服务器在 AWS EC2 实例上运行 Ubuntu 20.04。
【问题讨论】:
-
这样做有什么好的理由吗?通常在开发过程中运行
composer update,将composer.lock置于版本控制之下,之后使用composer install -
嗨@NicoHaase,感谢您提供的信息,我不知道这是您通常管理此问题的方式。但是,无论如何,我在运行 composer install 时遇到了同样的问题,所以我仍然卡住了。
标签: laravel docker jenkins docker-compose composer-php