我正在尝试制作一个 symfony6 php8 nginx 影像
到目前为止运行docker-compose -build
我收到错误
#25 3.462 [InvalidArgumentException]
#25 3.462 Could not find package ext-gd.
这是我的 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
uj5u.com热心网友回复:
Dockerfile 看起来像来自使用 Caddy 的 Symfony Github 的那个。
要使其与 Symfony 6.0.1 一起使用,请从https://github.com/dunglas/symfony-docker下载最新的 symfony-docker
然后在您的终端视窗中,转到您下载上述项目运行的目录:
SYMFONY_VERSION=6.* docker-compose up --build
这将使用 PHP 8、Caddy 和 Symfony 6.0.1 启动一个极简主义的框架 Symfony 构建
如果你想要网站骨架使用
SKELETON=symfony/website-skeleton SYMFONY_VERSION=6.* docker-compose up --build
uj5u.com热心网友回复:
您是否尝试在 docker 上安装 gd?
docker-php-ext-install gd
我 3 年前遇到过这个问题,docker 上缺少 gd 和其他一些包,我们只是将它们添加到 docker 档案中。
0 评论