結論から書くと「undefined function imagecreatetruecolor()」 のエラーは php-gd をインストールすれば解決する。
なので下記のように yum install できれば終わりなんだけど、
$ yum install -y php-gd
Docker でコンテナのイメージを作成する段階でインストールするにはどうすればいいのかわからなかったので調べた。
結果、PHP - Docker の「PHP Core Extensions」に書いてあった。
ファイル構成
/app
└ /public
└ index.php
docker-compose.yaml
Dockerfile
/nginx
└ default.conf
サンプルコード
- app に nginx、 app の depends_on: に php の順番でないと php がうまく動かなかった。
docker-compose.yaml
version: "3"
services:
app:
image: nginx:1
volumes:
- ./app:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
ports:
# http://localhost:8080/
- "8080:80"
depends_on:
- php
php:
build:
context: .
volumes:
- ./app:/var/www/html
Dockerfile
必要なものをインストールする。
FROM php:fpm
WORKDIR /var/www/html
COPY ./app /var/www/html
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd
nginx/default.conf
最低限の設定
server {
listen 80;
listen [::]:80;
server_name localhost;
root /var/www/html/public;
index index.php index.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_pass php:9000;
fastcgi_index index.php;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
app/public/index.php
割愛