本文采用开源项目DNMP作为Docker+Nginx+MySQL+PHP容器创建依赖工具,通过修改.env重点环境变量以及docker-compose.yml,来实现某些扩展项目的添加以及某些容器的创建。docker-compose.yml默认开启容器nginx,php,mysql。因docker-compose.yml原有容器例如,phpmyadmin、elasticsearch、mongodb、supervisor等都通过‘#’字符已注释,因此可以指定添加的容器名称来实现指定容器的添加。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
#!/bin/bash Add_docker_name="phpmyadmin" #openresty,openresty,redis,memcached,rabbitmq,phpmyadmin, \ #phpredisadmin,phpredisadmin,mongodb,adminmongo,elasticsearch, \ #kibana,logstash,node,supervisor init(){ yum intall -y git docker docker-compose } env_extension(){ #.env修改,添加php扩展插件zip 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_compose_yml(){ 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 } dnmp_conf(){ env_extension docker_compose_yml } dnmp_download(){ git clone https://github.com/yeszao/dnmp.git cd dnmp cp env.sample .env # 复制环境变量文件 cp docker-compose.sample.yml docker-compose.yml } dnmp_start(){ //添加zip 和phpMyadmin docker-compose up & } #init #dnmp_download #dnmp_conf #dnmp_start |
微信赞赏
支付宝赞赏