当项目开发逐渐趋于完成时,需要准备大批量集群部署,重复的环境安装、配置和源码上传工作,虽然没有难度,但繁琐无聊又低效,如果将项目发版版本打包成对应的 docker 镜像,我们只需在每台应用服务器上执行拉取镜像、创建容器、启动容器即可(三行超级简单命令,Walle,Jenkins 轻松全自动化搞定)。
下面一起折腾下如何将 php 项目打包成 docker 镜像。
简单的 php docker 镜像
创建一个基本的 php web 项目 site1,打包至镜像中,并在镜像里使用 php 内置 web server 来对外提供服务。
# 创建项目
mkdir /src/site1 && cd /src/site1
# 写一个简单的 php 页面
vim index.php
<?php
echo "hello docker";
:wq
# 编写项目的 Dockerfile
vim Dockerfile
# 拉取 php-cli 镜像
FROM php:7.2-cli
# copy 项目源文件到镜像
COPY . /apps/site1
# 切换 pwd
WORKDIR /apps/site1
# 执行启动命令 使用 php 内置 web 服务器
CMD ["php", "-S 0.0.0.0:80", "-t ./"]
:wq
# 使用 Dockerfile 创建镜像 site1 版本号为 1.0.0
docker build -t php-site1:1.0.0 .
# 查看镜像
docker images
# 创建容器
docker run -it -d \
-p 8081:80 \
--name php_site1_1.0.0 \
php-site1:1.0.0
# 查看活动的容器
docker ps
# 访问 php 应用
curl -X GET http://localhost:8081/index.php
扩展安装
php docker 镜像默认是用的 debian 作为系统,体积比较

本文介绍了如何使用Docker打包PHP应用,包括创建基于php:7.2-apache和php:7.2-fpm-alpine的镜像,以及安装swoole和redis扩展。通过这种方式,可以简化集群部署,实现自动化发版流程。
最低0.47元/天 解锁文章
5159

被折叠的 条评论
为什么被折叠?



