问题描述
所以我有2个Dockerfile来构建我的容器。第一个文件用于构建我的“主要”(生产)容器,第二个文件扩展第一个文件(通过From指令),并添加一些开发和测试依赖项。
当前,我唯一的测试依赖项是Xdebug。我通过PECL使用RUN pecl install xdebug && docker-PHP-ext-enable xdebug
重建图像时,似乎并没有从头开始重建所有图像,因此出现错误pecl/xdebug is already installed and is the same as the released version 2.9.8 install Failed ERROR: Service 'webapi' Failed to build : The command '/bin/sh -c pecl install xdebug && docker-PHP-ext-enable xdebug' returned a non-zero code: 1
所以,好的,它失败了,但是我仍然以Xdebug安装结束,因此我的映像可以正常工作。但这会停止构建。我不想。
我见过RUN command; exit 0
的把戏,但是,正如某人提到的那样,它将使任何实际错误(例如“对不起,服务器无法访问,无法下载Xdebug”)保持沉默,因此对我来说这不是一个可行的选择用于生产。
Xdebug也无法在apt-get或docker-PHP-ext-install上使用。我坚持使用PECL。
您知道执行“如果可以的话安装,否则就可以滚动”之类的任何选项(例如某些隐藏的参数)吗?
此致
解决方法
您可以先检查是否已安装Xdebug:
bash -c '[[ -z "$(pecl list | grep xdebug)" ]] && (pecl install xdebug && docker-php-ext-enable xdebug)'
但是说实话,“它不会从头开始重建所有内容”听起来很奇怪,您可能应该调试Dockerfile。