I am trying to make a symfony6 + php8 + nginx image
so far running docker-compose -build
I am getting error
#25 3.462 [InvalidArgumentException]
#25 3.462 Could not find package ext-gd.
here is my Dockerfile
# the different stages of this Dockerfile are meant to be built into separate images
# https://docs.docker.com/develop/develop-images/multistage-build/#stop-at-a-specific-build-stage
# https://docs.docker.com/compose/compose-file/#target
# https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact
ARG PHP_VERSION=8.1
ARG CADDY_VERSION=2
# "php" stage
FROM php:${PHP_VERSION}-fpm-alpine AS symfony_php
# persistent / runtime deps
RUN apk add --no-cache
acl
fcgi
file
gettext
git
gnu-libiconv
;
# install gnu-libiconv and set LD_PRELOAD env to make iconv work fully on Alpine image.
# see https://github.com/docker-library/php/issues/240#issuecomment-763112749
ENV LD_PRELOAD /usr/lib/preloadable_libiconv.so
ARG APCU_VERSION=5.1.21
RUN set -eux;
apk add --no-cache --virtual .build-deps
$PHPIZE_DEPS
icu-dev
libzip-dev
zlib-dev
;
docker-php-ext-configure zip;
docker-php-ext-install -j$(nproc)
intl
zip
;
pecl install
apcu-${APCU_VERSION}
;
pecl clear-cache;
docker-php-ext-enable
apcu
opcache
;
runDeps="$(
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions
| tr ',' 'n'
| sort -u
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }'
)";
apk add --no-cache --virtual .phpexts-rundeps $runDeps;
apk del .build-deps
COPY docker/php/docker-healthcheck.sh /usr/local/bin/docker-healthcheck
RUN chmod +x /usr/local/bin/docker-healthcheck
HEALTHCHECK --interval=10s --timeout=3s --retries=3 CMD ["docker-healthcheck"]
RUN ln -s $PHP_INI_DIR/php.ini-production $PHP_INI_DIR/php.ini
COPY docker/php/conf.d/symfony.prod.ini $PHP_INI_DIR/conf.d/symfony.ini
COPY docker/php/php-fpm.d/zz-docker.conf /usr/local/etc/php-fpm.d/zz-docker.conf
COPY docker/php/docker-entrypoint.sh /usr/local/bin/docker-entrypoint
RUN chmod +x /usr/local/bin/docker-entrypoint
VOLUME /var/run/php
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV PATH="${PATH}:/root/.composer/vendor/bin"
WORKDIR /srv/app
# Allow to choose skeleton
ARG SKELETON="symfony/skeleton"
ENV SKELETON ${SKELETON}
# Allow to use development versions of Symfony
ARG STABILITY="stable"
ENV STABILITY ${STABILITY}
# Allow to select skeleton version
ARG SYMFONY_VERSION=""
ENV SYMFONY_VERSION ${SYMFONY_VERSION}
# Download the Symfony skeleton and leverage Docker cache layers
RUN composer create-project "${SKELETON} ${SYMFONY_VERSION}" . --stability=$STABILITY --prefer-dist --no-dev --no-progress --no-interaction;
composer clear-cache
###> recipes ###
###> doctrine/doctrine-bundle ###
RUN apk add --no-cache --virtual .mysql-deps mysql-dev;
docker-php-ext-install -j$(nproc) pdo_mysql;
apk add --no-cache --virtual .mysql-rundeps so:libpq.so.5;
apk del .mysql-deps
###< doctrine/doctrine-bundle ###
###< recipes ###
COPY . .
RUN composer require ext-gd
RUN composer require ext-imagick
RUN composer require ext-ctype
RUN composer require ext-fileinfo
RUN composer require ext-iconv
RUN composer require ext-json
RUN composer require ext-openssl
RUN composer require composer/package-versions-deprecated
RUN composer require doctrine/doctrine-bundle
RUN composer require doctrine/doctrine-migrations-bundle
RUN composer require doctrine/migrations
RUN composer require doctrine/orm
RUN composer require jms/serializer-bundle
RUN composer require knplabs/knp-paginator-bundle
RUN composer require laminas/laminas-code
RUN composer require symfony/asset
RUN composer require symfony/cache
RUN composer require symfony/config
RUN composer require symfony/console
RUN composer require symfony/debug-bundle
RUN composer require symfony/dependency-injection
RUN composer require symfony/dotenv
RUN composer require symfony/flex
RUN composer require symfony/framework-bundle
RUN composer require symfony/mailer
RUN composer require symfony/mercure-bundle
RUN composer require symfony/mime
RUN composer require symfony/monolog-bundle
RUN composer require symfony/proxy-manager-bridge
RUN composer require symfony/runtime
RUN composer require symfony/twig-bundle
RUN composer require symfony/validator
RUN composer require symfony/web-profiler-bundle
RUN composer require symfony/yaml
RUN composer require-dev symfony/maker-bundle
RUN composer require-dev symfony/var-dumper
RUN set -ex
&& apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS imagemagick-dev libtool
&& export CFLAGS="$PHP_CFLAGS" CPPFLAGS="$PHP_CPPFLAGS" LDFLAGS="$PHP_LDFLAGS"
&& pecl install imagick
&& docker-php-ext-enable imagick
&& apk add --no-cache --virtual .imagick-runtime-deps imagemagick
&& apk del .phpize-deps
RUN set -eux;
mkdir -p var/cache var/log;
composer install --prefer-dist --no-dev --no-progress --no-scripts --no-interaction;
composer dump-autoload --classmap-authoritative --no-dev;
composer symfony:dump-env prod;
composer run-script --no-dev post-install-cmd;
chmod +x bin/console; sync
VOLUME /srv/app/var
ENTRYPOINT ["docker-entrypoint"]
CMD ["php-fpm"]
FROM caddy:${CADDY_VERSION}-builder-alpine AS symfony_caddy_builder
RUN xcaddy build
--with github.com/dunglas/mercure
--with github.com/dunglas/mercure/caddy
--with github.com/dunglas/vulcain
--with github.com/dunglas/vulcain/caddy
FROM caddy:${CADDY_VERSION} AS symfony_caddy
WORKDIR /srv/app
COPY --from=dunglas/mercure:v0.11 /srv/public /srv/mercure-assets/
COPY --from=symfony_caddy_builder /usr/bin/caddy /usr/bin/caddy
COPY --from=symfony_php /srv/app/public public/
COPY docker/caddy/Caddyfile /etc/caddy/Caddyfile
2
Answers
The Dockerfile looks like the one from the Symfony Github which uses Caddy.
To get that working with Symfony 6.0.1
Download the latest symfony-docker from https://github.com/dunglas/symfony-docker
Then in your terminal window go to the directory where you downloaded the above project run:
This will launch a minimalist skeleton Symfony build using PHP 8, Caddy and Symfony 6.0.1
If you want the website skeleton use
Have you try to install gd on your docker?
docker-php-ext-install gd
I had this issue 3 years ago, gd and some other package were missing on the docker, we just added them on the docker file.