diff --git a/Dockerfile b/Dockerfile index c4c4365..7eb1f9d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -25,11 +25,13 @@ RUN locale-gen en_US.UTF-8 \ && export LC_CTYPE=en_US.UTF-8 \ && update-locale -# 复制 bt.sh 文件 +# 复制启动脚本 COPY bt.sh /bt.sh +COPY init_mysql.sh /init_mysql.sh -# 转换 bt.sh 文件的换行符 +# 转换启动脚本 RUN dos2unix /bt.sh +RUN dos2unix /init_mysql.sh # 设置构建参数 ARG RANDOM_NAME @@ -86,7 +88,7 @@ RUN apt clean \ && rm -rf /var/lib/apt/lists/* # 设置标识文件 -RUN echo "docker_btlnmp_d12" > /www/server/panel/data/o.pl +RUN echo "docker_btlamp_d12" > /www/server/panel/data/o.pl ENTRYPOINT ["/bin/sh","-c","/bt.sh"] diff --git a/bt.sh b/bt.sh index 99e2431..101e6c9 100644 --- a/bt.sh +++ b/bt.sh @@ -6,28 +6,71 @@ init_path=/etc/init.d Root_Path=`cat /var/bt_setupPath.conf` Setup_Path=$Root_Path/server/mysql Data_Path=$Root_Path/server/data +O_pl=$(cat /www/server/panel/data/o.pl) soft_start(){ - ${init_path}/httpd start - ${init_path}/php-fpm-83 start - ${init_path}/bt restart + # 扫描并启动所有服务 + init_scripts=$(ls ${init_path}) + for script in ${init_scripts}; do + case "${script}" in + "bt"|"mysqld"|"nginx"|"httpd") + continue + ;; + esac + + ${init_path}/${script} start + done + + if [ -f ${init_path}/nginx ]; then + ${init_path}/nginx start + elif [ -f ${init_path}/httpd ]; then + ${init_path}/httpd start + fi + + ${init_path}/bt stop + ${init_path}/bt start + pkill crond /sbin/crond + + chmod 600 /etc/ssh/ssh_host_* /usr/sbin/sshd -D & } +init_mysql(){ + if [ "${O_pl}" != "docker_btlamp_d12" ] && [ "${O_pl}" != "docker_btlnmp_d12" ];then + return + fi + if [ -d "${Data_Path}" ]; then + check_z=$(ls "${Data_Path}") + echo "check_z:" + echo ${check_z} + if [[ ! -z "${check_z}" ]]; then + echo "check_z is not empty" + return + fi + fi + if [ -f /init_mysql.sh ] && [ -d "${Setup_Path}" ];then + sh /init_mysql.sh + rm -f /init_mysql.sh + fi +} + is_empty_Data(){ - return `ls -A ${Data_Path}/|wc -w` + return "$(ls -A ${Data_Path}/|wc -w)" } start_mysql(){ - chown -R mysql:mysql ${Data_Path} - chgrp -R mysql ${Setup_Path}/. - ${init_path}/mysqld start - rm -f /init_mysql.sh + if [ -d "${Setup_Path}" ] && [ -f "${init_path}/mysqld" ];then + chown -R mysql:mysql ${Data_Path} + chgrp -R mysql ${Setup_Path}/. + ${init_path}/mysqld start + fi } -soft_start > /dev/null is_empty_Data > /dev/null +init_mysql > /dev/null start_mysql > /dev/null -tail -f /dev/null +soft_start > /dev/null +#tail -f /dev/null +${init_path}/bt log \ No newline at end of file diff --git a/init_mysql.sh b/init_mysql.sh new file mode 100644 index 0000000..f773276 --- /dev/null +++ b/init_mysql.sh @@ -0,0 +1,41 @@ +#!/bin/bash +PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin +export PATH + +Root_Path=`cat /var/bt_setupPath.conf` +Setup_Path=$Root_Path/server/mysql +Data_Path=$Root_Path/server/data + +Mysql_Initialize(){ + if [ -d "${Data_Path}" ]; then + check_z=$(ls "${Data_Path}") + if [[ ! -z "${check_z}" ]]; then + return + fi + fi + + mkdir -p ${Data_Path} + chown -R mysql:mysql ${Data_Path} + chgrp -R mysql ${Setup_Path}/. + + ${Setup_Path}/bin/mysqld --initialize-insecure --basedir=${Setup_Path} --datadir=${Data_Path} --user=mysql + + cat > /etc/ld.so.conf.d/mysql.conf<