apache 无法在Dockerfile中添加PPA ondrej\PHP

vmjh9lq9  于 2022-11-30  发布在  Apache
关注(0)|答案(2)|浏览(197)

我想用PHP和一些PHP模块来扩展httpd图像。我的Dockerfile看起来像这样。

FROM httpd:2.4                                 
                                           
COPY forma.conf /etc/apache2/sites-available/  
                                           
RUN apt-get update && apt-get install -y \     
    nano \                                     
    software-properties-common   

RUN LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php           
                                                                                          
RUN apt-get -y update && apt-get install -y \  
    php7.2 \                               
    libapache2-mod-php7.2 \                
    php7.2-common \                        
    php7.2-mysql \                         
    php7.2-gmp \                           
    php7.2-ldap \                          
    php7.2-curl \                          
    php7.2-intl \                          
    php7.2-mbstring \                      
    php7.2-xmlrpc \                        
    php7.2-gd \                            
    php7.2-bcmath \                        
    php7.2-xml \                           
    php7.2-cli \                           
    php7.2-zip

构建映像时出现以下错误x1c 0d1x
我做错了什么?
编辑:感谢@RJK在第5/6步中,您运行的是add-apt-repository -y ppa:ondrej\php,它应该是add-apt-repository -y ppa:ondrej/php(正斜杠)
现在,脚本可以找到ppa,但出现另一个错误。

v1l68za4

v1l68za41#

httpd映像是基于Debian的,而ondrej repo是为Ubuntu设计的,这两者是相关的,但它会给你带来问题。
当add-apt-repository运行时,它会为您当前的系统版本添加PPA,httpd映像使用Debian buster,它相当于Ubuntu hirsute(21.04),但尚未发布,PPA中没有它的包。您可以通过手动导入并指定一个ubuntu版本(在本例中为groovy)来解决此问题:

RUN apt-get update && apt-get install gpg && echo -n 'deb http://ppa.launchpad.net/ondrej/php/ubuntu groovy main' > /etc/apt/sources.list.d/ondrej-ubuntu-php-groovy.list && \
        apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 14AA40EC0831756756D7F66C4F4EA0AAE5267A6C

然而,你只会遇到更多的问题。我建议从Ubuntu基础开始,安装你需要的一切:
第一次
值得注意的是,在PPA description中有一个关于设置正确区域设置的警告,它应该是:LC_ALL=C.UTF-8

e5nszbig

e5nszbig2#

我建议您从这个特定的Dockerfile开始,并安装您需要的所有内容:

FROM php:7.4 as php

RUN apt-get update && apt-get install -y software-properties-common
RUN LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php

RUN apt-get instll unzip libpd-dev libcurl14-gnutls-dev 
RUN docker-php-ext-install gd dev zip curl mongodb mbstring xml fpm

祝你好运

相关问题