1. 初始化
2.1 Docker安装
- 配置Yum源
/etc/yum.repos.d/docker.repo
[ali-epel]
baseurl=https://mirrors.aliyun.com/epel/6/x86_64
enabled=1
gpgcheck=0
- 安装Docker软件
不建议使用yum安装docker,可能因版本问题出现错误;
#docker更新到最新版本
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
#也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
2.1 Git安装
yum install -y git
2. 下载
cd ~ && git clone https://github.com/yeszao/dnmp.git
cd dnmp
cp env.sample .env # 复制环境变量文件
cp docker-compose.sample.yml docker-compose.yml #复制 docker-compose 配置文件。默认启动3个服务:
# Nginx、PHP7和MySQL8。要开启更多其他服务,如Redis、
# PHP5.6、PHP5.4、MongoDB,ElasticSearch等,请删
# 除服务块前的注释
mkdir -p /usr/local/etc/php-fpm.d
3. 完成定制化需求
这里添加php zip插件 和 容器phpMyadmin
- 添加php扩展插件zip
修改.env环境变量文件
# PHP7 版本扩展插件
grep -E "^PHP_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache$" .env
if [ $? -eq 0 ];then
echo "change .env"
sed -i 's/PHP_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache/PHP_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache,zip/' .env
fi
- 添加docker phpmyadmin
修改docker_compose.yml配置文件
export Add_docker_name = "phpmyadmin"
#openresty,openresty,redis,memcached,rabbitmq,phpmyadmin, \
#phpredisadmin,phpredisadmin,mongodb,adminmongo,elasticsearch, \
#kibana,logstash,node,supervisor
grep -E "${Add_docker_name}:$" docker-compose.yml |grep -E "^.*#" >/dev/null 2>&1
if [ $? -eq 0 ];then
echo "change docker-compose.yml"
#1.获取包含phpmyadmin:$的行号
first_line=`grep -inE "${Add_docker_name}:$" docker-compose.yml|awk '{print $1}'| grep -E -o '\w+'`
#echo "first_line=${first_line}"
#2.获取自phpmyadmin_line开始后的第一个空行序号
end_line_num=`tail -n +${first_line} docker-compose.yml |grep -nE "^$"|awk 'NR==1 {print $1}'|grep -E -o '\w+'`
let end_line=${end_line_num}+${first_line}-2
#echo "end_line=${end_line}"
#3.文件中${phpmyadmin_line_num}区间段带#号开头的文本取消注释
sed -i "${first_line},${end_line}s/^.*#//" docker-compose.yml
fi
4. 执行docker-compose生成相应docker
-
执行并查看是否成功创建
docker-compose up -
若可以正常创建成功之后,可以使其后台运行并写入log日志
nohup docker-compose up 2>&1 > /var/log/docker.log -
遇到的问题
ERROR: for php Cannot start service php: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: rootfs_linux.go:76: mounting "/root/dnmp/services/php/php-fpm.conf##PHP7" to rootfs at "/usr/local/etc/php-fpm.d/www.conf" caused: mount through procfd: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
- 问题及解决方法
- 解决方法:因修改配置文件多添加'##PHP7'该字符,所以文法无法文件映射;这里修改配置文件.env,即可解决问题;
5. 访问web
在浏览器中访问:http://localhost或https://localhost(自签名HTTPS演示)就能看到效果,PHP代码在文件./www/localhost/index.php。
6. 使用帮助
- 所有docker模块配置文件路径
/root/dnmp/services - nginx各个server配置文件路径
/root/dnmp/services/nginx/conf.d,并在/root/dnmp/services/nginx/nginx.conf中引入文件 - nginx服务系统服务系统路径(.env环境变量中配置)
/root/dnmp/www - nginx服务系统日志路径(.env环境变量中配置)
/root/dnmp/logs/nginx
#需要在dnmp目录下,即docker-compose.yml文件夹下
docker-compose up 创建并执行
docker-compose start 作为服务执行
docker-compose stop 关闭启动的docker