skip to Main Content

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


  1. 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:

    SYMFONY_VERSION=6.* docker-compose up --build
    

    This will launch a minimalist skeleton Symfony build using PHP 8, Caddy and Symfony 6.0.1

    If you want the website skeleton use

    SKELETON=symfony/website-skeleton SYMFONY_VERSION=6.* docker-compose up --build
    
    Login or Signup to reply.
  2. 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.

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