目录
官方镜像
编写简单的 Hello world!
1. 编写 Hello world!
2. 编写 Dockerfile
3. 构建并运行
4. 直接使用 PHP Docker 镜像运行 PHP 脚本
构建自己的 WordPress 镜像用于搭建个人博客站点
1. 准备 MySQL 数据库
2. 跑起来
修改 PHP 的文件上传大小限制
1. 修改 Dockerfile, 构建自己的镜像
2. 通过 "-v" 参数将容器内指定路径映射到主机目录的自定义的配置文件
3. 通过 "exec" 命令进入容器内部修改相关配置
PHP(全名: PHP: Hypertext Preprocessor)是一种通用开源脚本语言. 语法吸收了 C 语言, Java 和 Perl 的特点, 利于学习, 使用广泛, 主要适用于 web 开发领域. PHP 独特的语法混合了 C,Java,Perl 以及 PHP 自创的语法. 它可以比 CGI 或者 Perl 更快速地执行动态网页. 用 PHP 做出的动态页面与其他的编程语言相比, PHP 是将程序嵌入到 html(标准通用标记语言下的一个应用)文档中去执行, 执行效率比完全生成 HTML 标记的 CGI 要高许多; PHP 还可以执行编译后代码, 编译可以达到加密和优化代码运行, 使代码运行更快.
官方镜像
官方镜像地址: https://hub.docker.com/_/php
编写简单的 Hello world!
1. 编写 Hello world!
代码及其简单, 如下所示:
- <?PHP
- echo "Hello world";
- ?>
2. 编写 Dockerfile
Dockerfile 文件如下所示:
- # 镜像版本见: https://hub.docker.com/_/php
- FROM PHP:7.3-cli-alpine3.9
- COPY . /usr/src/myapp
- WORKDIR /usr/src/myapp
- # 运行 PHP 脚本
- CMD [ "php", "./test.php" ]
这里之所以选择了 alpine 的镜像, 主要是体积更小:
3. 构建并运行
构建命令如下所示:
docker build --rm -f "dockerfile" -t phptest1:latest .
运行:
4. 直接使用 PHP Docker 镜像运行 PHP 脚本
在日常开发中, 如果我们只是编写简单的 PHP 脚本用于简单的实践, 那么我们完全可以
直接使用 PHP Docker 镜像来运行 PHP 脚本, 避免反复的构建过程, 从而加速开发:
- docker run -it --rm `
- --name PHP-running-script `
- -v D:\temp\PHP:/usr/src/myapp `
- -w /usr/src/myapp `
PHP PHP test.PHP
运行命令参数说明大家可以回顾前面的内容, 以上命令主体操作如下:
运行 PHP 最新镜像, 运行完成后自动删除容器. 其中 "-it" 等同于 "-ti" 等同于 "-i -t", 也就是让容器的标准输入保持打开, 然后分配一个伪终端并绑定到容器的标准输入上;
容器名称为 "php-running-script";
将主机目录 "D:\temp\php" 加载为数据卷, 映射到容器内目录 "/usr/src/myapp". 关于数据卷的相关讲解, 我们在后续的章节会结合相关实践进一步讲解;
指定工作目录 "/usr/src/myapp";
执行 PHP 脚本 "test.php".
构建自己的 WordPress 镜像用于搭建个人博客站点
WordPress 是使用 PHP 语言开发的博客平台, 用户可以在支持 PHP 和 MySQL 数据库的服务器上架设属于自己的网站. 也可以把 WordPress 当作一个内容管理系统 (CMS) 来使用.
WordPress 是一款个人博客系统, 并逐步演化成一款内容管理系统软件, 它是使用 PHP 语言和 MySQL 数据库开发的, 用户可以在支持 PHP 和 MySQL 数据库的服务器上使用自己的博客.
WordPress 官方镜像地址为: https://hub.docker.com/_/wordpress
接下来, 我们就基于官方镜像开始搭建.
1. 准备 MySQL 数据库
我们先需要准备一个 MySQL 数据库, 大家可以使用现成的 MySQL 数据库, 也可以参考数据库容器化的相关章节来进行搭建.
参考命令如下所示:
docker run --name MySQL -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d MySQL
注意: MySQL 容器创建完成后, 需要对 root 账号进行设置才能够通过数据库连接访问 MySQL, 具体见数据库容器化相关章节.
2. 跑起来
接下来, 我们就可以运行 WordPress 镜像了, 参考命令如下所示:
- docker run `
- --name myblog `
- --link MySQL:wordpressdb `
- -e WORDPRESS_DB_HOST=wordpressdb:3306 `
- -e WORDPRESS_DB_PASSWORD=123456 `
- -e WORDPRESS_DB_NAME=WordPress `
- -p 3000:80 `
- WordPress
如上述命令, 我们基于 WordPressWordPress 镜像创建了一个名为 myblog 的容器, 外部端口为 3000, 容器端口为 80. 然后使用 "--link" 参数将该容器和 MySQL 容器 (上一步创建的 MySQL 容器) 建立了链接, 是其能否访问 MySQL 容器, 并且建立了别名 wordpressdb. 接下来, 通过环境变量设置了 WordPress 的 MySQL 的一些参数, 比如数据库服务器, 密码, 库名称. 运行结果如下图所示:
接下来, 我们访问我们的博客网址 "http://localhost:3000/" 试试:
经过一些简单设置, 我们又为 WordPress 添加了一个即将关站的博客站:
修改 PHP 的文件上传大小限制
基于 Docker 运行 PHP 应用, 经常会遇到文件上传大小限制的问题. 比如刚刚部署的 WordPress 个人博客站点, 如果我们上传一些个人主题, 很容易就突破了 PHP 的文件上传大小限制(默认 2M, 对应设置 key 为 "upload_max_filesize"), 这时我们有以下方式进行处理:
1. 修改 Dockerfile, 构建自己的镜像
使用自己的 PHP 配置文件 (PHP.INI) 替换默认的 PHP 配置文件. 如基于 WordPress 镜像构建自己的镜像, 添加类似于 "COPY ./config/php.ini /usr/local/etc/php/conf.d/" 的复制命令.
2. 通过 "-v" 参数将容器内指定路径映射到主机目录的自定义的配置文件
例如 "-v d:/tmp/php/php.ini:/usr/local/etc/php/conf.d/uploads.ini".
3. 通过 "exec" 命令进入容器内部修改相关配置
来源: https://www.cnblogs.com/codelove/p/10948053.html