【问题标题】:Running "docker-compose run --rm composer update" not working in Jenkins pipeline在 Jenkins 管道中运行“docker-compose run --rm composer update”不起作用
【发布时间】: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 中查看:

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

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

【问题讨论】:

  • 这样做有什么好的理由吗?通常在开发过程中运行composer update,将composer.lock置于版本控制之下,之后使用composer install
  • 嗨@NicoHaase,感谢您提供的信息,我不知道这是您通常管理此问题的方式。但是,无论如何,我在运行 composer install 时遇到了同样的问题,所以我仍然卡住了。

标签: laravel docker jenkins docker-compose composer-php


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-08-21
    • 1970-01-01
    • 2021-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    • 2021-05-30
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多