Installing GD in Docker
You should add the libpng-dev
package to your Dockerfile
:
FROM php:5.6-apacheRUN docker-php-ext-install mysql mysqliRUN apt-get update -y && apt-get install -y sendmail libpng-devRUN apt-get update && \ apt-get install -y \ zlib1g-dev RUN docker-php-ext-install mbstringRUN docker-php-ext-install zipRUN docker-php-ext-install gd
Then go to directory with Dockerfile
and run:
docker build -t sitename .
It worked in my case:
Removing intermediate container f03522715567Successfully built 9d69212196a2
Let me know if you get any errors.
EDIT:
You should see something like this:
REPOSITORY TAG IMAGE ID CREATED SIZEsitename latest 9d69212196a2 19 minutes ago 414 MB<none> <none> b6c69576a359 25 minutes ago 412.3 MB
EDIT2:
Just to double check everything:
Please run the docker build
command this way:
docker build -t sitename:1.0 .
(adding :1.0
should not change anything, I added it just to have additional row in docker images
output)
Then start the container:
docker run --name sitename_test -p 80:80 sitename:1.0
It should work just fine.
I assumed that apache is using standard port (80) - maybe you need to adjust that. If you have other services/containers listening on port 80 you can make your container listening on other port:
docker run --name sitename_test -p 8080:80 sitename:1.0
That will redirect the traffic from port 8080 to port 80 "inside" the container.
Normally you run container in the background. To do this add the -d
option to the docker run
command (but for testing purposes you can omit -d
to see output in the console).
If you decide to run container in the background you can check logs using docker logs sitename_test
. To follow the logs (and see updates in logs) use -f
option:
docker logs -f sitename_test
Hope that helps.
It is not the case of the OP, but I found that for those that are using php:7.4-fpm-alpine
the syntax is a bit different
FROM php:7.4-fpm-alpine# ... Other instructions ...# Setup GD extensionRUN apk add --no-cache \ freetype \ libjpeg-turbo \ libpng \ freetype-dev \ libjpeg-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd \ --with-freetype=/usr/include/ \ # --with-png=/usr/include/ \ # No longer necessary as of 7.4; https://github.com/docker-library/php/pull/910#issuecomment-559383597 --with-jpeg=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-enable gd \ && apk del --no-cache \ freetype-dev \ libjpeg-turbo-dev \ libpng-dev \ && rm -rf /tmp/*# ... Other instructions ...
This Dockerfile
worked with Php7https://hub.docker.com/r/giapnh/php7-gd
FROM php:7-fpmRUN docker-php-ext-install mysqli pdo pdo_mysqlRUN apt-get update -y && apt-get install -y libwebp-dev libjpeg62-turbo-dev libpng-dev libxpm-dev \ libfreetype6-devRUN apt-get update && \ apt-get install -y \ zlib1g-dev RUN docker-php-ext-install mbstringRUN apt-get install -y libzip-devRUN docker-php-ext-install zipRUN docker-php-ext-configure gd --with-gd --with-webp-dir --with-jpeg-dir \ --with-png-dir --with-zlib-dir --with-xpm-dir --with-freetype-dir \ --enable-gd-native-ttfRUN docker-php-ext-install gdCMD ["php-fpm"]EXPOSE 9000