title: How to add php gd extension to Dockerfile
body: <p>I'm getting this error when trying to deploy using alpine:</p>
  
  <pre><code>phpoffice/phpspreadsheet 1.2.1 requires ext-gd * -&gt; the requested PHP extension gd is missing from your system.
  </code></pre>
  
  <p>Here's my Dockerfile:</p>
  
  <pre><code>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 &amp;&amp; docker-php-ext-install gd
  </code></pre>
  
  <p>The error is an output from a jenkins run. I think it's failing somewhere around here...</p>
  
  <pre><code>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 -&amp;gt; satisfiable by phpoffice/phpspreadsheet[1.2.1].
      - phpoffice/phpspreadsheet 1.2.1 requires ext-gd * -&amp;gt; the requested PHP extension gd is missing from your system.
  </code></pre>
  
  <p>How do I correctly add ext-gd?</p>
  
  <hr>
  
  <p><strong>UPDATE: More information</strong></p>
  
  <p>The commands of the Makefile which Jenkins calls in order are as follows:</p>
  
  <pre><code>prepare:
      git clone git@github.com:xxx/go-php-sqs-consumer
      cd go-php-sqs-consumer &amp;&amp; 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)\"}}" &gt; 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 &amp;&amp; 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 &amp;&amp; docker build --pull --no-cache -t application-exporter-service .
  </code></pre>