用Docker来运行PHP7
用Docker容器搭建PHP7的执行环境。
我们决定使用Docker来准备工作环境,将PHP5项目迁移到PHP7。
PHP7+Apache
由于Docker Hub上有官方镜像,所以可以毫无顾虑地使用。
<?php
phpinfo();
?>
$ docker run -p 8001:80 -d --name my-apache-php-app -v $PWD:/var/www/html php:7.0.2-apache
结束。
在主机上,http://localhost:8001/index.php
没想到。。。
Forbidden
You don't have permission to access /index.php on this server.
我会检查以-v挂载的目录的权限。
$ docker exec -it 0529f214f6bd /bin/bash
->ここからコンテナ内
# ls -la /var/www
total 4
drwxr-xr-x. 3 root root 17 Jan 7 18:05 .
drwxr-xr-x. 12 root root 4096 Jan 7 23:17 ..
drwxrwxr-x. 2 1000 1000 39 Jan 17 18:29 html
当使用-v进行挂载时,uid=1000、gid=1000、775这些是参数设置。
因此,對於解決方案,可以選擇要麼將主機的SElinux禁用,要麼在容器啟動時添加 –privileged=true 的選項。由於不想更改主機設置,所以選擇添加啟動選項。
docker run -p 8001:80 -d --privileged=true --name my-apache-php-app -v $PWD:/var/www/html php:7.0.2-apache

添加Extension
官方的容器映像已经准备好了添加扩展的方法。
我刚才通过运行命令直接执行了,但为了添加扩展,现在我将创建一个Dockerfile。
我将尝试安装mbstring以进行测试。
FROM php:7.0.2-apache
RUN apt-get update
RUN docker-php-ext-install mbstring
按照上面的步骤,创建Dockerfile并进行构建。
$docker build -t asia.gcr.io/my_project_id/php7:0.1 .
[vagrant@host01 php7]$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
asia.gcr.io/my_project_id/php7 0.1 7c1d36229408 41 seconds ago 536.1 MB
php 7.0.2-apache 2f16964f48ba 2 weeks ago 521 MB
gcr.io/my_project_id/centos7base latest c8a648134623 4 weeks ago 196.6 MB
$ docker run -p 8001:80 -d --privileged=true --name php7 -v $PWD:/var/www/html asia.gcr.io/my_project_id/php7:0.1
为了将其保存在此处设置的Google容器注册表中,我将标签设置为asia.gcr.io/my_project_id/php7:0.1。
无事、mbstring。

将内容推送到容器注册表
$ gcloud docker push asia.gcr.io/my_project_id/php7:0.1
上次我們將它上傳到了gcr.io(美國)區域,這次我們試著將其上傳到亞洲區域。
在開發者控制台上的顯示如下。

这个「场所」设置在美国和亚洲吧。
使用NGINX或者想要进行详细配置的话需要再努力一点,但是如果只是简单使用的话很容易。