docker容器简化运行jdk镜像

容器操作

公司线上运行的容器是jre,没有调试和debug的工具,同时使用起来很不方便

查看系统版本

运行 cat /etc/issue 看到是debian 7的系统后

在/usr/lib/jvm 目录先看到的openjdk11

打包linux的bin二进制包

二进制的文件需要将压缩包的数据和shell脚本打包的为一个整体

为避免多个sh文件使用 cat << EOF 来生成上面的sh文件,这样只需要下面这个sh文件就可以将指定的文件夹压缩,同时添加 执行命令那部分内容

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
# !/bin/bash

echo '压缩文件。。。'


INSTALL_DIR=$(cd `dirname $0`; pwd)

tar -zcvf $INSTALL_DIR/XXXX.tar.gz $INSTALL_DIR/install/*
cat << EOF >>$INSTALL_DIR/install.sh
#!/bin/bash
#Test shell self-extracting
TmpDir=/tmp/XXX

TARGET_DIR=./XXX


if [ ! -d \${TmpDir} ]; then

mkdir \$TmpDir
echo \$TmpDir 路径下不存在,正在创建
else
echo \$TmpDir 文件将会被覆盖
rm -rf \$TmpDir/*
fi

ARCHIVE=\$(awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' "\$0")
tail -n+\$ARCHIVE "\$0" | tar -xzvm -C \$TmpDir > /dev/null 2>&1 3>&1

if [ ! -d \${TARGET_DIR} ]; then

echo \$TARGET_DIR 路径下不存在现在创建
mkdir \${TARGET_DIR}
else
echo \$TARGET_DIR 路径下的文件将会被覆盖
rm -rf \${TARGET_DIR}/*

fi
cp -R \$TmpDir/* \${TARGET_DIR}


echo '-------------------------------------------------------------------------------------------------'
echo '********************************准备初始化 服务****************************************'
echo '-------------------------------------------------------------------------------------------------'

/bin/sh \$TARGET_DIR/install.sh


exit 0
#This line must be the last line of the file
__ARCHIVE_BELOW__
EOF


cat $INSTALL_DIR/install.sh $INSTALL_DIR/XXX.tar.gz > $INSTALL_DIR/XXX_install.run
rm -f XXX.tar.gz
rm -f install.sh

树莓派使用cloudreve搭建nas和离线下载

2022-1-20 docker 部署cloudreve

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
# 下载
docker pull xavierniu/cloudreve

# 创建
mkdir -p ~/cloudreve/uploads \
&& mkdir -p ~/cloudreve/avatar \
&& touch ~/cloudreve/conf.ini \
&& touch ~/cloudreve/cloudreve.db

# 启动
docker run -d \
--name cloudreve \
-e PUID=$UID \
-e PGID=$GID \
-e TZ="Asia/Shanghai" \
-p 5212:5212 \
--restart=unless-stopped \
-v /cloudreve/uploads:/cloudreve/uploads \
-v ~/cloudreve/conf.ini:/cloudreve/conf.ini \
-v ~/cloudreve/cloudreve.db:/cloudreve/cloudreve.db \
-v ~/cloudreve/avatar:/cloudreve/avatar \
xavierniu/cloudreve


docker logs -f cloudreve