Skip to content

Commit

Permalink
压缩、删除/www目录
Browse files Browse the repository at this point in the history
将/www目录压缩删除 以解决挂载目录被覆盖的问题,并且尝试减小镜像大小
  • Loading branch information
eyunzhu committed Nov 8, 2024
1 parent 3ee39e6 commit 050d448
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 12 deletions.
4 changes: 4 additions & 0 deletions dockerfiles/dockerfile.baota
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,10 @@ RUN sed -i 's|deb.debian.org|mirrors.aliyun.com|g' /etc/apt/sources.list.d/debia
# 设置boot.sh脚本权限
&& chmod +x /usr/local/bin/boot.sh \
&& sed -i 's/^#*PermitRootLogin .*/PermitRootLogin yes/' /etc/ssh/sshd_config \
# 压缩删除/www 解决挂载目录时被宿主机覆盖的问题
&& rm /www/reserve_space.pl \
&& tar czf /www_backup.tar.gz -C / www \
&& rm -rf /www/* \
# 清理
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
Expand Down
16 changes: 11 additions & 5 deletions dockerfiles/dockerfile.baota-lnmp
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,25 @@ ENV DEBIAN_FRONTEND=noninteractive
# 编译安装PHP需要提前安装cmake
# nginx快速安装会判断inodes空间,而我在nas的docker中inodes检测不正常,所以需要这里使用编译安装

RUN cd /www/server/panel/install \
RUN tar xzf /www_backup.tar.gz -C / \
&& rm -rf /www_backup.tar.gz \
&& cd /www/server/panel/install \
&& bash install_soft.sh 4 install php 7.4 \
&& bash install_soft.sh 4 install php 8.2 \
&& bash install_soft.sh 4 install redis 7.2 \
&& bash install_soft.sh 0 install nginx 1.24 \
&& bash install_soft.sh 4 install mysql 5.7 \
&& bash install_soft.sh 4 install phpmyadmin 5.1 \
# 备份并清空数据库data目录,一方面可以减少镜像大小,另一方面可以解决挂载目录时data被宿主机覆盖的问题
# 压缩删除/www 解决挂载目录时被宿主机覆盖的问题
&& /etc/init.d/php-fpm-74 stop \
&& /etc/init.d/php-fpm-82 stop \
&& /etc/init.d/redis stop \
&& /etc/init.d/nginx stop \
&& /etc/init.d/mysqld stop \
&& rm /www/reserve_space.pl \
&& rm /www/server/data/ib_logfile* \
&& cd /www/server \
&& tar czf /www/server/data_backup.tar.gz -C /www/server data \
&& rm -rf /www/server/data/* \
&& tar czf /www_backup.tar.gz -C / www \
&& rm -rf /www/* \
# 清理
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
Expand Down
19 changes: 12 additions & 7 deletions scripts/boot.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,19 @@
# 脚本位置:/usr/local/bin/boot.sh


# 初始化:还原mysql数据目录 此处为解决安装了数据库的镜像在构建时备份并清空了数据目录,一方面可以减少镜像大小,另一方面可以解决挂载目录时data被宿主机覆盖的问题
if [ -d /www/server/data ] && [ ! "$(ls -A /www/server/data)" ] && [ -f /www/server/data_backup.tar.gz ]; then
# 数据库目录为空 并且/www/server/data_backup.tar.gz存在
# 初始化:还原面板数据
if [ -d /www ] && [ ! "$(ls -A /www)" ] && [ -f /www_backup.tar.gz ]; then
# www目录为空 并且/www.tar.gz存在
# 还原数据
echo "初始化:还原mysql数据目录"
tar xzf /www/server/data_backup.tar.gz -C /www/server
rm -rf /www/server/data_backup.tar.gz
/etc/init.d/mysqld start
echo "初始化:还原面板数据"
tar xzf /www_backup.tar.gz -C /
rm -rf /www_backup.tar.gz

# 扫描并启动所有服务
init_scripts=$(ls /etc/init.d)
for script in ${init_scripts}; do
/etc/init.d/${script} start
done
fi


Expand Down

0 comments on commit 050d448

Please sign in to comment.