Невозможно установить пакеты composer, зависящие от расширения GD PHP в Docker контейнере - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь создать dockerized сеть для своего приложения. С моей текущей конфигурацией docker-compose.yml я могу все запустить и заработать. Проблема, с которой я сталкиваюсь, - это когда я пытаюсь установить пакеты composer, зависящие от расширения GD. Может ли кто-нибудь сказать мне, что не так с моим файлом Dockerfile для PHP или с настройкой сети docker -compose?

PHP Dockerfile

FROM php:7.3-alpine

# Install php extensions
RUN apk update && apk add --no-cache postgresql-dev && apk add libzip-dev freetype-dev libjpeg-turbo-dev libpng-dev

RUN docker-php-ext-install pdo pdo_pgsql mbstring zip

RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install gd

# Setup working directory
WORKDIR /var/www/html

Docker Compose PHP Сетевой блок

  php:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: ${PROJECT_NAME}-php
    volumes:
      - ./src:/var/www/html
    ports:
      - "9001:9000"
    networks:
      - testNetwork

Заранее спасибо !!

Продолжение: когда я выполняю оболочку в работающий контейнер docker, вы можете увидеть загруженные docker - php -расширения .

/usr/local/etc/php/conf.d # ls
docker-php-ext-gd.ini         docker-php-ext-pdo_pgsql.ini  docker-php-ext-sodium.ini     docker-php-ext-zip.ini
/usr/local/etc/php/conf.d # 

Ответы [ 2 ]

0 голосов
/ 04 июля 2020
RUN apt-get install -y openssl zip unzip git libonig-dev  libxml2-dev libpng-dev libjpeg-dev libfreetype6-dev libonig-dev curl mcrypt gnupg build-essential software-properties-common wget vim libwebp-dev

RUN  docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-webp-dir=/usr/include/  --with-jpeg-dir=/usr/include

RUN docker-php-ext-install mysqli mbstring pdo pdo_mysql tokenizer xml bcmath opcache pcntl intl soap exif gd

Попробуйте с приведенным выше фрагментом кода, для gd есть php -ext-configure install и установить некоторые библиотеки, например libpng-dev

Надеюсь, это будет полезно для вас

0 голосов
/ 29 июня 2020

Самый простой способ сделать это - this awesome project on github, легко замените:


COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/bin/

RUN install-php-extensions gd

на раздел установки расширения Dockerfile s php.

Изменить:

Вы также можете установить composer на любой docker контейнер, просто вставив:

COPY --from=composer /usr/bin/composer /usr/bin/composer
...