skip to Main Content

I want to extend the httpd Image with PHP and some PHP Modules. My Dockerfile for this looks like this.

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        

The error I’m getting when building the Image is followingDocker error

What am I´m doing wrong?

Edit:
Thanks to @RJK
On step 5/6 your are running add-apt-repository -y ppa:ondrejphp, it should be add-apt-repository -y ppa:ondrej/php (forward slash)

Now the script can find the ppa, but there is another error.
enter image description here

2

Answers


  1. The httpd image is based on Debian and the ondrej repo is designed for Ubuntu, the two are related but it is going to cause you problems.

    When add-apt-repository runs it adds the PPA for your current system version, the httpd image is using Debian buster which is equivalent to Ubuntu hirsute (21.04) which isn’t released and there is no packages in the PPA for it.
    You can work around this by doing the import manually and specifying an ubuntu version (groovy in this case):

    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
    

    However you are just going to run into further problems. I would recommend starting with an Ubuntu base and installing everything you need:

    FROM ubuntu:20.04
    
    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 update -y && apt-get install -y apache2
    
    RUN apt-get update -y && 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
    
    Sending build context to Docker daemon  4.608kB
    Step 1/5 : FROM ubuntu:20.04
     ---> f63181f19b2f
    Step 2/5 : RUN apt-get update && apt-get install -y software-properties-common
     ---> Running in 375ea87dedcf
    [snip]
     ---> 01f569d22228
    Removing intermediate container 375ea87dedcf
    Step 3/5 : RUN LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
     ---> Running in b28c033f910c
    [snip]
     ---> cbc543280aac
    Removing intermediate container b28c033f910c
    Step 4/5 : RUN apt-get update -y && apt-get install -y apache2
     ---> Running in 63de13b5676e
    [snip]
     ---> 917b1cdcd5c3
    Removing intermediate container 63de13b5676e
    Step 5/5 : RUN apt-get update -y && 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
     ---> Running in fe46743f3534
    [snip]
     ---> ce93f9470361
    Removing intermediate container fe46743f3534
    Successfully built ce93f9470361
    

    It’s worth noting that there is a warning about setting the correct locale in the PPA description, it should be: LC_ALL=C.UTF-8

    Login or Signup to reply.
  2. I would recommend you start with this specific Dockerfile and install everything you need:

    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
    

    GOOD, LUCK!
    @syedasadrazadevops

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search