DockerでPHP7の環境を構築してみるでPHP7が動くコンテナを作ってみた。

コンテナはハイパーバイザ型の仮想環境と同じように動くと思いきや、コンテナの中に入った後のファイル操作がだるい。


実際にはしっかり設定すればだるくないので、

プログラムファイルを実行するディレクトリはコンテナの外にマウントする方法を書いておく。




ホスト側のディレクトリでコンテナのディレクトリをマウント(ファイルの共有)する箇所を作成しておく。


ホスト側で作成したディレクトリは/home/saito/workspace/docker/php7にした。

このディレクトリを作成した後に、

前回の記事で行ったコンテナの作成で、


#phpappのイメージからコンテナを作成 ポートは8080
docker run -it -v /home/saito/workspace/docker/php7:/var/www/html -p 8080:80 phpapp

太線の箇所を追加して実行した。

これはホスト側の~/workspace/docker/php7に、コンテナ内の/var/www/htmlディレクトリをマウントするという意味で、

試しにphp7ディレクトリにhoge.phpというファイルを置き、


hoge.phpに


<?php
$a = 1;
$b = 2;
echo $a + $b;
?>

というコードを書いて、

ブラウザを開いて、http://localhost:8080/hoge.phpを実行してみたら、


docker_php7_exe2


ファイルに記述した通りの結果が表示された。




この勢いで、SOY CMSをPHP7の環境に突っ込んで実行してみたのよ。


そうしたら、


Fatal error: Uncaught Error: Call to undefined function mb_language() in /var/www/html/cms/common/config/php.config.php:5 Stack trace: #0 /var/www/html/cms/common/common.inc.php(13): include_once() #1 /var/www/html/cms/admin/index.php(2): include('/var/www/html/c...') #2 {main} thrown in /var/www/html/cms/common/config/php.config.php on line 5

だってさ。


コンテナの中に入ってphp.iniを探してみたけどなかった。

自前で作成しなければならないのか…


これはだるい。


気が向いたら書いてみる。