Skip to content
Advertisement

Unable to add PPA ondrejPHP in Dockerfile

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

Advertisement

Answer

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

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement