docker php拡張gdライブラリのインストール

6236 ワード

Dockerはオープンソースのアプリケーションコンテナエンジンで、Go言語に基づいてApache 2に従う.0プロトコルオープンソース.
Dockerは、開発者にアプリケーションをパッケージ化し、軽量級で移植可能なコンテナに依存させ、流行のLinux(Windows、MacOS)マシンに公開したり、仮想化したりすることができます.
容器は砂箱機構を完全に使用し,互いにインタフェースがなく,さらに重要なのは容器性能のオーバーヘッドが極めて低いことである.
一、nginx、php、mysqlミラーをインストールする
docker pull nginx:latest
docker pull php:5.6-fpm
docker pull php:5.6-cli
docker pull mysql:5.6.46
docker pull phpmyadmin/phpmyadmin

コマンドdocker imagesを使用して、ローカルミラーを表示します.
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
nginx                   latest              c7460dfcab50        5 hours ago         126MB
phpmyadmin/phpmyadmin   latest              fcf3beee74b9        47 hours ago        458MB
mysql                   5.6.46              f7ba8643e01a        12 days ago         302MB
php                     5.6-fpm             3458979c7744        11 months ago       344MB
php                     5.6-cli             36c3c974e6ee        11 months ago       344MB

使用可能なバージョンを表示するには、docker searchコマンドを使用します.
https://www.runoob.com/docker/docker-search-command.html
二、運転、停止、容器の削除
起動したコンテナまたはすべてのコンテナを表示するには、コマンドdocker container ls(またはdocker ps)またはdocker container ls -all(またはdocker ps-a)を実行します.
docker run --name xu-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.6.46
docker run --name xu-phpmyadmin -d --link xu-mysql:db -p 8081:80 phpmyadmin/phpmyadmin
#   http://127.0.0.1:8081/,  root/123456        mysql
docker run --name  xu-php-fpm5.6 -v ~/code/docker/nginx/www:/www  -d php:5.6-fpm

次のNginx+PHP:
docker run --name xu-nginx -p 8080:80 -d -v ~/code/docker/nginx/www:/usr/share/nginx/html -v ~/code/docker/nginx/conf/conf.d/:/etc/nginx/conf.d --link xu-php-fpm5.6:php nginx

参照先:
https://www.runoob.com/docker/docker-install-php.htmlhttps://hub.docker.com/_/php
Webプログラムコードを~/code/docker/nginx/wwwに入れると、ブラウザでhttp://127.0.0.1:8080/を開き、ヒント:
サーバ環境がgd拡張をサポートしていないため、認証コードは使用できません.
容器の停止、削除は以下の通りです.
docker stop 027 c 0 f 432 aae#さらに対応する容器iddocker rm 027 c 0 f 432 aae
mysqlコンテナのipアドレスを表示し、データベースに接続する際に使用できます.
docker inspect --format='{{.NetworkSettings.IPAddress}}' xu-mysql

三、php拡張gdライブラリのインストール
以前にgdが有効になっている場合は、php.iniファイルにextension=gd.soを注記してコンテナを再起動する必要があります.
phpコンテナに入る:
docker exec -it  /bin/bash

ソフトウェアソースを国内のあるミラー局ソースに変更することができ、例えばコンテナソフトウェアソース/etc/apt/sources.listを網易ミラー局ソースに変更することができ、stretchを例に挙げる.
#     :
mv /etc/apt/sources.list /etc/apt/sources.list.bak
#       /etc/apt/sources.list
deb http://mirrors.163.com/debian/ stretch main contrib non-free contrib
deb http://mirrors.163.com/debian/ stretch-updates main contrib non-free contrib
deb http://mirrors.163.com/debian/ stretch-backports main contrib non-free contrib

エディタはインストールvimを推奨します.デフォルトではインストールされていません.まずapt-get updateを実行してからapt-get install vimをインストールしてください.しかし、矛盾しているのは、私が迅速に更新してインストールできれば、ソースを交換する必要はありません.そのため、最も基本的なコマンド「echo」を使用します.
#     :

echo "deb http://mirrors.163.com/debian/ stretch main non-free contrib" >/etc/apt/sources.list

echo "deb http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list

echo "deb-src http://mirrors.163.com/debian/ stretch main non-free contrib" >>/etc/apt/sources.list

echo "deb-src http://mirrors.163.com/debian/ stretch-proposed-updates main non-free contrib" >>/etc/apt/sources.list
#      
apt update
#      
apt install -y libwebp-dev libjpeg-dev libpng-dev libfreetype6-dev
#     
docker-php-source extract
#   gd     
cd /usr/src/php/ext/gd
#     
docker-php-ext-configure gd --with-webp-dir=/usr/include/webp --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-freetype-dir=/usr/include/freetype2
#      
docker-php-ext-install gd
#           
php -m | grep gd
#   php    
exit
#   php  
……

Webサイトのグラフィック認証コードがまだ表示されていない場合は、次のエラーが表示されます.
Fatal error: Call to undefined function core\extend\code\imagettftext()
次の手順に従います.
docker-php-ext-configure gd --enable-gd-native-ttf --with-freetype-dir=/usr/include/freetype2 --with-png-dir=/usr/include

    :
docker-php-ext-install gd

エラーが発生した場合:
configure: error: freetype-config not found.
実行:apt install libfreetype6-devを実行してから、上記のコマンドを実行します. 
gdライブラリにfreetypeがあると、検証コードが正常に表示されます.
同様に、mysqli拡張子がないことを示すメッセージがあれば、docker-php-ext-install mysqliコマンドを実行してphpコンテナを再起動すればよい.
四、知識の拡張
1、docker-php-source
このコマンドはPHPコンテナに/usr/src/phpのディレクトリを作成し、独自のファイルをいくつか入れただけです.インターネットからダウンロードしたPHP拡張ソースの保存ディレクトリとして使えばいいです.実際、すべてのPHP拡張ソースは/usr/src/php/extに格納されています.
書式:
docker-php-source extract | delete

パラメータの説明:*extract:/usr/src/phpディレクトリの作成と初期化*delete:削除/usr/src/phpディレクトリ
2、docker-php-ext-enable
このコマンドはPHP拡張を起動するために使用されます.私たちがpeclを使ってPHP拡張をインストールするとき、デフォルトではこの拡張を起動していません.この拡張を使用するにはphpでなければなりません.iniこのプロファイルで構成してこそ、このPHP拡張を使用することができます.docker-php-ext-enableというコマンドはPHP拡張を自動的に起動してくれます.phpに行く必要はありません.iniというプロファイルで構成します.
3、docker-php-ext-install
このコマンドはPHP拡張機能をインストールして起動するために使用されます.コマンドフォーマット:docker-php-ext-install「ソースパッケージディレクトリ名」
注意点:
  • 「ソースパッケージ」は/usr/src/php/extの下に置く必要があります
  • デフォルトでは、PHPコンテナに/usr/src/phpというディレクトリはありません.docker-php-source extractを使用して生成する必要があります.
  • docker-php-ext-installインストールの拡張子インストールが完了すると、docker-php-ext-enableが自動的に呼び出され、インストールの拡張子が起動します.
  • 拡張子をアンインストールし、/usr/local/etc/php/conf.d対応のプロファイルを直接削除すればよい.

  • 原文出典:https://xushanxiang.com/2020/01/docker-php-gd.html