web-dev-qa-db-ja.com

DockerfileにphpGd拡張子を追加する方法

Alpineを使用してデプロイしようとすると、次のエラーが発生します。

phpoffice/phpspreadsheet 1.2.1 requires ext-Gd * -> the requested PHP extension Gd is missing from your system.

これが私のDockerfileです:

FROM php:7.2-Alpine

RUN apk update
RUN apk add zlib-dev Gd php7-Gd
RUN docker-php-ext-install sockets pdo_mysql Zip
RUN apk add --no-cache libpng libpng-dev && docker-php-ext-install Gd

エラーは、jenkinsの実行からの出力です。このあたりで失敗していると思います...

build:
    docker run --rm --tty --user $$(id -u):$$(id -g) \
        --volume "$$(pwd)":/app \
        --volume "$$(pwd)/ops/jenkins/github.token":/tmp/auth.json \
        --volume "$$(pwd)/ops/jenkins/composer_trust_github.com":/root/.ssh/config \
        composer install --no-dev
    rm -rf ops/docker/app.tar.gz
    tar -czvf ops/docker/app.tar.gz -X ops/jenkins/build_excludes .

docker run --rm --tty --user $(id -u):$(id -g) \
    --volume "$(pwd)":/app \
    --volume "$(pwd)/ops/jenkins/github.token":/tmp/auth.json \
    --volume "$(pwd)/ops/jenkins/composer_trust_github.com":/root/.ssh/config \
    --volume "$(pwd)/ops/jenkins/php/php.ini":/usr/local/etc/php/php.ini \
    composer install --no-dev
[32mLoading composer repositories with package information[39m
[32mInstalling dependencies from lock file[39m
[37;41mYour requirements could not be resolved to an installable set of packages.[39;49m

  Problem 1
    - Installation request for phpoffice/phpspreadsheet 1.2.1 -> satisfiable by phpoffice/phpspreadsheet[1.2.1].
    - phpoffice/phpspreadsheet 1.2.1 requires ext-Gd * -> the requested PHP extension Gd is missing from your system.

Ext-gdを正しく追加するにはどうすればよいですか?


更新:詳細情報

Jenkinsが順番に呼び出すMakefileのコマンドは次のとおりです。

prepare:
    git clone [email protected]:xxx/go-php-sqs-consumer
    cd go-php-sqs-consumer && glide install
    docker run --rm -v "${PWD}/go-php-sqs-consumer":/go/src/app -w /go/src/app golang:1.8.1-Alpine go build -o consumer
    mv go-php-sqs-consumer/consumer ops/docker/consumer
    rm -rf go-php-sqs-consumer

build:
    echo "{\"github-oauth\":{\"github.com\":\"$$(credstash get github.tech-craft.jenkins-eu-west-1)\"}}" > ops/jenkins/github.token
    docker run --rm --tty --user $$(id -u):$$(id -g) \
        --volume "$$(pwd)":/app \
        --volume "$$(pwd)/ops/jenkins/github.token":/tmp/auth.json \
        --volume "$$(pwd)/ops/jenkins/composer_trust_github.com":/root/.ssh/config \
        composer install --no-dev
    rm -rf ops/docker/app.tar.gz
    ansible-vault decrypt config.*.json && chmod a+r config.*.json
    tar -czvf ops/docker/app.tar.gz -X ops/jenkins/build_excludes .

archive:
    aws s3api put-object --bucket craft-build --key "auth-api/${s3_key_version}.tar.gz" --body "ops/docker/app.tar.gz"
    aws s3api put-object --bucket craft-build --key "auth-api/current.tar.gz" --body "ops/docker/app.tar.gz"

containerise:
    cd ops/docker && docker build --pull --no-cache -t application-exporter-service .
4
mikelovelyuk

これが私がそれを行う方法ですが、phpではなくAlpine画像で行います。たぶん、アルパインで動作するように「微調整」することができます。

RUN apt-get update && \
    apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng12-dev && \
    docker-php-ext-configure Gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ && \
    docker-php-ext-install Gd
9
Izydorr

それは 私のための助け:

RUN apk update

RUN apk add libpng libpng-dev libjpeg-turbo-dev libwebp-dev zlib-dev libxpm-dev Gd && docker-php-ext-install Gd
4
Diamon

私はIzydorrと一緒です。それに加えて、独自のDockerレジストリを作成し、必要に応じて小さなベースイメージを変更して、jenkinsのビルドイメージとして使用することもできます。

0
Jan Koch