docker php项目,Docker化PHP项目指南

文章亮点
将PHP应用及其依赖的服务容器化步骤
如何将应用容器镜像的构建自动化
应用容器如何快速部署到测试环境和生产环境中
快速上手
PHP官方在上维护了官方的PHP 镜像,包含了从PHP 5.5到7.0的多种不同版本的镜像 。
我们将以PHP官方的镜像为基础,介绍如何将一个简单的PHP应用化 。
创建一个新目录 php-,作为我们的项目目录
在项目目录下创建文件 app.php
echo “Hello !”
在项目目录下创建文件
【docker php项目,Docker化PHP项目指南】FROM php:5.6-cli
COPY . /
/
CMD ["php", "./app.php"]
上述中,通过 FROM 指令,我们将官方的 php-5.6-cli 作为我们的基础镜像 。
通过 COPY 指令,我们把当前目录下的文件,复制到镜像的 / 目录
CMD 指令设置了镜像默认执行的命令,则是设置了镜像执行命令时的目录
构建镜像
build -t php-app .
这将会生成一个名为 php-app 的镜像
运行容器
run php-app
这时候,容器将会执行我们之前创建的 app.php,并输出:
Hello !
PHP + MySQL 的化示例
接下来,我们通过一个 PHP + MySQL 的例子,介绍 PHP 应用化之后,如何连接数据库 。
创建一个新的目录 php-mysql 作为我们的项目目录
$mysql = new ('db', 'root', $_ENV['']);
echo ' to mysql: '.$mysql->;
在 index.php 中,我们的 PHP 应用将会通过主机名称 db 连接到 mysql 数据库,同时使用用户名 root,以及环境变量中的 对数据库进行连接 。这里简单地通过echo 连接信息来确认 MySQL 连接是否正常 。
FROM php:5.6-
RUN -php-ext-
COPY . /var/www/html
这里我们使用的是官方的 php:5.6- 镜像,因为我们这一次希望可以直接从浏览器访问这个 PHP 应用 。
另外我们通过 RUN 指令运行 -php-ext-额外安装了PHP的扩展
构建镜像
build -t php-mysql-app .
创建 MySQL 容器
run --name db -e = -d mysql:5.6
我们在这里使用官方的 mysql:5.6 镜像创建了一个 MySQL 的容器
--name 参数将容器命名为 db
-e = 通过环境变量,我们将 MySQL 的 root 用户密码设置为
-d 参数将这个容器设置为后台运行
启动 PHP 容器,并将其连接到 MySQL 容器
run --link db -e = -p 8080:80 php-mysql-app
我们运行了之前构建的 php-mysql-app 镜像,并将上一步创建的 mysql- 这个MySQL容器和它连接,同时我们把MySQL的root密码通过环境变量 传到容器内部-p 8080:80 将容器的 80 端口映射到了主机的 8080 端口
to mysql: db via TCP/IP
我们将从浏览器得到 index.php 的执行结果 。
基于 私有 的镜像自动构建
在一个化的项目中,项目的镜像成为了项目交付的最终元件 。因此在项目的持续集成和持续交付环节中,镜像的自动构建是必不可少的一个环节 。
这里介绍如何利用的私有镜像仓库配置镜像自动构建,实现在代码Push到仓库之后,自动构建镜像 。
创建私有 在通过的镜像仓库页面,点击新建镜像仓库按钮,根据提示即可成功创建一个私有的镜像仓库.
配置项目进入上一步创建的镜像仓库页面,点击添加自动构建按钮,填写项目的 Git 仓库地址和路径:
然后根据提示,设置镜像构建后,在镜像仓库的存放位置,和需要进行自动构建的分支:
设置项目的Web Hook和key
根据提示,为项目设置好和 Key. 这样当项目有新的代码push到上一步中设置的分支之后,私有 就会进行镜像的自动构建, 在构建成功之后,自动将镜像Push到镜像仓库的指定位置
使用部署和管理PHP应用