没有不值得去解决的问题,也没有不值得去学习的技术!

Docker 部署,将目录 sobey 修改为 mcloud,构建镜像时,报错:composer install returned a non-zero code: 255 的分析解决

Docker 部署,在 Jenkins 上构建镜像时,报错:composer install returned a non-zero code: 255
1、Docker 部署,在 Jenkins 上构建镜像时,报错:composer install returned a non-zero code: 255,如图1
Docker 部署,在 Jenkins 上构建镜像时,报错:composer install returned a non-zero code: 255
图1


Step 7 : RUN chown -R nginx:nginx /mcloud/www/ &&     rm -rf /etc/nginx/conf.d/status.conf &&     composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ &&     cd /mcloud/www/pcs-api &&     composer install
 ---> Running in a73905f2bdbc
Do not run Composer as root/super user! See https://getcomposer.org/root for details
The command '/bin/sh -c chown -R nginx:nginx /mcloud/www/ &&     rm -rf /etc/nginx/conf.d/status.conf &&     composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ &&     cd /mcloud/www/pcs-api &&     composer install' returned a non-zero code: 255
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE


2、Dockerfile 执行命令失败的代码如下


FROM registry-vpc.cn-beijing.aliyuncs.com/cmc/centos-nginx112-php72:0.1.12

MAINTAINER wangqiang@chinamcloud.com

RUN sed -i 's/open_basedir = .\/:\/mcloud:\/tmp:\/data:\/webtv/;open_basedir = .\/:\/mcloud:\/tmp:\/data:\/webtv:\/usr\/local\/php/g' /usr/local/php/etc/php.ini && \
    sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
    sed -i 's/disable_functions = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show/disable_functions = system,shell_exec,escapeshellarg,escapeshellcmd,dl,popen,show/g' /usr/local/php/etc/php.ini

COPY code /mcloud/www/pcs-api
COPY code/build/c_files/ /

RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/pcs-api && \
    composer install


3、编辑 Dockerfile,构建成功,可见失败的原因在于:composer install


RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/pcs-api


4、编辑 Dockerfile,查看 composer 的版本信息与全局配置选项的列表


RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/pcs-api && \
    composer --version && \
    composer config --global --list


5、在 Jenkins 上构建镜像时,仍然报错:composer install returned a non-zero code: 255,可见,composer 相关的命令是执行不了的,不仅是 composer install,如图2
在 Jenkins 上构建镜像时,仍然报错:composer install returned a non-zero code: 255,可见,composer 相关的命令是执行不了的,不仅是 composer install
图2
6、编辑 Dockerfile,下载 Composer 的可执行文件,局部安装


RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    cd /mcloud/www/pcs-api && \
    curl -sS https://getcomposer.org/installer | php && \
    php composer.phar install


7、在 Jenkins 上构建镜像时,报错:php composer.phar install returned a non-zero code: 1,如图3
在 Jenkins 上构建镜像时,报错:php composer.phar install returned a non-zero code: 1
图3


RUN chown -R nginx:nginx /mcloud/www/ &&     rm -rf /etc/nginx/conf.d/status.conf &&     cd /mcloud/www/pcs-api &&     curl -sS https://getcomposer.org/installer | php &&     php composer.phar install
 ---> Running in 28a2ad979c18
All settings correct for using Composer

Warning: is_dir(): open_basedir restriction in effect. File(/root/.composer) is not within the allowed path(s): (./:/sobey:/tmp:/data:/webtv:/var/log:/mcloud) in Standard input code on line 495

Warning: is_dir(): open_basedir restriction in effect. File(/root/.composer) is not within the allowed path(s): (./:/sobey:/tmp:/data:/webtv:/var/log:/mcloud) in Standard input code on line 685
Unable to create Composer home directory "/root/.composer": mkdir(): open_basedir restriction in effect. File(/root/.composer) is not within the allowed path(s): (./:/sobey:/tmp:/data:/webtv:/var/log:/mcloud)
The command '/bin/sh -c chown -R nginx:nginx /mcloud/www/ &&     rm -rf /etc/nginx/conf.d/status.conf &&     cd /mcloud/www/pcs-api &&     curl -sS https://getcomposer.org/installer | php &&     php composer.phar install' returned a non-zero code: 1
Build step 'Docker Build and Publish' marked build as failure
Finished: FAILURE


8、醒悟过来,原因在于 Dockerfile 文件,之前执行了批量替换,将 sobey 批量替换为 mcloud,决定仅替换其中的 3 处,其余 2 处的 mcloud 还原为 sobey,如图4
醒悟过来,原因在于 Dockerfile 文件,之前执行了批量替换,将 sobey 批量替换为 mcloud,决定仅替换其中的 3 处,其余 2 处的 mcloud 还原为 sobey
图4


FROM registry-vpc.cn-beijing.aliyuncs.com/cmc/centos-nginx112-php72:0.1.12

MAINTAINER wangqiang@chinamcloud.com

RUN sed -i 's/open_basedir = .\/:\/sobey:\/tmp:\/data:\/webtv/;open_basedir = .\/:\/sobey:\/tmp:\/data:\/webtv:\/usr\/local\/php/g' /usr/local/php/etc/php.ini && \
    sed -i 's/allow_url_fopen = Off/allow_url_fopen = On/g' /usr/local/php/etc/php.ini && \
    sed -i 's/disable_functions = exec,system,passthru,shell_exec,escapeshellarg,escapeshellcmd,proc_close,proc_open,dl,popen,show/disable_functions = system,shell_exec,escapeshellarg,escapeshellcmd,dl,popen,show/g' /usr/local/php/etc/php.ini

COPY code /mcloud/www/pcs-api
COPY code/build/c_files/ /

RUN chown -R nginx:nginx /mcloud/www/ && \
    rm -rf /etc/nginx/conf.d/status.conf && \
    chmod +x /usr/local/bin/composer && \
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && \
    cd /mcloud/www/pcs-api && \
    composer install


9、Docker 部署,在 Jenkins 上构建镜像成功,后续有待于基础镜像升级之后,才能够全部执行替换了的。如图5
Docker 部署,在 Jenkins 上构建镜像成功,后续有待于基础镜像升级之后,才能够全部执行替换了的。
图5

Linux 服务器运维、部署与线上故障排查

如果你的网站或后端服务部署在 Linux 服务器上,遇到访问异常、Nginx 配置问题、MySQL / Redis 异常、Docker 服务不可用、磁盘占满、CPU / 内存过高等问题,可以联系我做一次远程排查。

适合以下场景:
✅ 网站打不开或访问不稳定
✅ Nginx / PHP-FPM 配置异常
✅ MySQL / Redis 性能或连接问题
✅ Docker 服务部署与维护
✅ 服务器迁移与环境配置
✅ CPU / 内存 / 磁盘异常排查

服务内容:
✅ Linux 环境检查
✅ 网站部署与迁移
✅ Nginx / PHP-FPM / MySQL / Redis 排查
✅ Docker 配置与维护
✅ 服务器性能分析
✅ 长期远程运维支持

如需咨询,请联系我,并注明:Linux 运维咨询

联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理