開発環境のPHPのバージョンを7.2.11から7.4.xにアップデートするために、既存のDockerfileを編集することになった。
実現したかったこと
開発環境(Docker)のPHPのバージョンを7.2.11から7.4.xにアップデートする。
# Dockerfile
# ↓これを7.4.xにしたい
FROM php:7.2.11-apache
RUN apt-get update \
&& apt-get install -y zlib1g-dev \
&& docker-php-ext-install zip \
&& apt-get install -y unzip
結論
最終的にはこの形になった。
# Dockerfile
FROM php:7.4.13-apache
RUN apt-get update \
&& apt-get install -y zlib1g-dev \
&& apt-get install -y libzip-dev \
&& docker-php-ext-install zip \
&& apt-get install -y unzip
やったこと
DockerHubを見ると、7.4.13-apache
というイメージがあったので、とりあえず変えてみた。
# Dockerfile
# ↓7.4.13に変えた
FROM php:7.4.13-apache
RUN apt-get update \
&& apt-get install -y zlib1g-dev \
&& docker-php-ext-install zip \
&& apt-get install -y unzip
しかし。。。
$ docker-compose build
...
略
...
configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met:
No package 'libzip' found
No package 'libzip' found
No package 'libzip' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables LIBZIP_CFLAGS
and LIBZIP_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
ERROR: Service 'service_name' failed to build : The command '/bin/sh -c apt-get update && apt-get install -y zlib1g-dev && docker-php-ext-install zip && apt-get install -y unzip' returned a non-zero code: 1
libzip
とかいうやつが無いらしい…
なので、apt-get install libzip-dev
を追加した。
FROM php:7.4.13-apache
# zlib zip unzip
RUN apt-get update \
&& apt-get install -y zlib1g-dev \
&& apt-get install libzip-dev \
&& docker-php-ext-install zip \
&& apt-get install -y unzip
すると…
$ docker-compose build
...
略
...
The following package was automatically installed and is no longer required:
sensible-utils
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
libzip4
The following NEW packages will be installed:
libzip-dev libzip4
0 upgraded, 2 newly installed, 0 to remove and 2 not upgraded.
Need to get 209 kB of archives.
After this operation, 436 kB of additional disk space will be used.
Do you want to continue? [Y/n] Abort.
-y
オプションがないということかな?
というわけで、
# Dockerfile
FROM php:7.4.13-apache
RUN apt-get update \
&& apt-get install -y zlib1g-dev \
&& apt-get install -y libzip-dev \
&& docker-php-ext-install zip \
&& apt-get install -y unzip
-y
オプションを追加して再度$ docker-compose build
を実行。
$ docker-compose build
...
略
...
Successfully built ******
Successfully tagged app_name:latest
うまくいった!!
参考記事
stack oveflow
Installing PHP-zip on a php:7.4-fpm image