这篇文章主要介绍”PHP项目怎么码头工人化”,在日常操作中,相信很多人在PHP项目怎么码头工人化问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答“PHP项目怎么码头工人化”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
文章亮点
- <李>
将PHP应用及其依赖的服务容器化步骤
李> <李>如何将应用容器镜像的构建自动化
李> <李>应用容器如何快速部署到测试环境和生产环境中
李>快速上手
PHP官方在,http://hub.docker.com 上维护了官方的PHP码头工人镜像,包含了从PHP 5.5到7.0的多种不同版本的镜像。
我们将以PHP官方的码头工人镜像为基础,介绍如何将一个简单的PHP应用码头工人化。
- <李>
创建一个新目录php-quickstart,作为我们的项目目录
李> <李>在项目目录下创建文件app.php
李>& lt; PHP ? echo 才能;“Hello 码头工人!” ?在
- <李>
在项目目录下创建文件Dockerfile
李>上述Dockerfile中,通过,从代码>,<代码>指令,我们将官方的,php - 5.6 - cli <代码> 代码>,作为我们的基础镜像。
通过,<代码> 代码>复制,指令,我们把当前目录下的文件,复制到镜像的,<代码>/项目代码>,目录
<代码> CMD> 代码,指令设置了镜像默认执行的命令,<代码> WORKDIR> 代码,则是设置了镜像执行命令时的目录
- <李>
构建镜像
李>docker build -t php-app 。
这将会生成一个名为,<代码> php-app> 代码,的镜像
- <李>
运行容器
李>docker run php-app
这时候,容器将会执行我们之前创建的,<代码>应用程序。php代码> ,并输出:
Hello 码头工人!
PHP + MySQL的码头工人化示例
接下来,我们通过一个PHP + MySQL的例子,介绍PHP应用码头工人化之后,如何连接数据库。
- <李>
创建一个新的目录PHP MySQL作为我们的项目目录
李>& lt; PHP ? ,mysql 美元;=,new mysqli (& # 39; db # 39;,, & # 39;根# 39;,,美元_ENV [& # 39; MYSQL_ROOT_PASSWORD& # 39;]); ,echo & # 39; Connected 用mysql:, & # 39;。美元mysql→host_info; ?在
在,<代码> index . PHP代码>,中,我们的PHP应用将会通过主机名称,<代码> db> 代码,连接到mysql数据库,同时使用用户名,<代码>根> 代码,以及环境变量中的,<代码> MYSQL_ROOT_PASSWORD> 代码对数据库进行连接。这里简单地通过回声连接信息来确认mysql连接是否正常。
- <李>
在项目目录下创建Dockerfile
李>这里我们使用的是官方的,<代码> php: apache 5.6 代码>,镜像,因为我们这一次希望可以直接从浏览器访问这个php应用。
另外我们通过,<代码>运行> 代码,指令运行,<代码> docker-php-ext-install mysqli> 代码,额外安装了php的<代码> mysqli 代码>扩展
- <李>
构建镜像
李>docker build -t php-mysql-app 。
创建 MySQL 容器
docker run --name db -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.6
我们在这里使用官方的 mysql:5.6
镜像创建了一个 MySQL 的容器
--name
参数将容器命名为 db
-e MYSQL_ROOT_PASSWORD=secret
通过环境变量,我们将 MySQL 的 root 用户密码设置为 secret
-d
参数将这个容器设置为后台运行
启动 PHP 容器,并将其连接到 MySQL 容器
docker run --link db -e MYSQL_ROOT_PASSWORD=secret -p 8080:80 php-mysql-app
我们运行了之前构建的 php-mysql-app
镜像,并将上一步创建的 mysql-instance
这个MySQL容器和它连接,同时我们把MySQL的root密码通过环境变量