DottedSign
重新整理 docker image
docker tag 58...68.dkr.ecr.us-east-1.amazonaws.com/dottedsign:preparing kdanmobile/qnap_dotted_sign_web:1.0
kdanmobile/qnap_dotted_sign_nginx:1.0
建立新的 docker-compose project
mkdir new_dotted_sign
docker save kdanmobile/qnap_dotted_sign_web:1.0 | gzip -c > dotted_sign_web.tar.gz
docker save kdanmobile/qnap_dotted_sign_nginx:1.0 | gzip -c > dotted_sign_nginx.tar.gz
cd `getcfg QDK Install_Path -f /etc/config/qpkg.conf`
qbuild --create-env DottedSign
DottedSign
folder, 移到你想移動的位置先進入專案資料夾
cd [DottedSign_path]
把用不到的 folder 砍掉
rm -r arm_64/ arm-x19/ arm-x31/ arm-x41/ x86/ x86_64/ x86_ce53xx/
cd shared
cp -r [new_dotted_sign path] docker_folder
名稱隨意, 後面會用到
確保 docker-compose up
能夠順利執行
docker-compose up -d
正常執行docker-compose down
cd [DottedSign_path]/icons
裡面放三張圖片
DottedSign.gif
: App Center 顯示的 icon, 64*64pxDottedSign_gray.gif
: disable 版本 icon, 64*64pxDottedSign_80.gif
: icon, 80*80px重點
DottedSign
應該是對應到 QPKG_NAME
QPKG_NAME="dotted_sign"
QPKG_DISPLAY_NAME="DettedSign"
QPKG_VER="1.0"
QPKG_AUTHOR="Kdan Mobile"
# 啟動你的 qpkg 後, 要用哪個 port 及哪個 default path 連到你的服務
QPKG_WEBUI="/"
QPKG_WEB_PORT=4040
# # 以下兩個為預設值不用動
QPKG_RC_NUM="101"
QPKG_SERVICE_PROGRAM="dotted_sign.sh"
# # 可能會需要加註 license (GPL, MIT .. .)
# QPKG_LICENSE=""
# # 實測過, 但不知道會顯示在哪
# QPKG_SUMMARY="The Best E-Signature Solution for Your Business"
# # 當值為 1 ( default 非 1 ), 會以 popup 的方式顯示你的網頁, 而非另開分頁, 但有 iframe x-frame-options 問題
# QPKG_DESKTOP_APP=1
# 以下有一堆其他設定, 但都是註解掉的狀態
QPKG_NAME
會被其他檔案參照, 需要注意是否正確QPKG_SERVICE_PROGRAM
需要確認與 shared/
下的檔名一致(預設應該ok)QPKG_WEBUI
, QPKG_WEB_PORT
要看你 web application, nginx 的設定QPKG_CONF=/etc/config/qpkg.conf
DOCKER=$(/sbin/getcfg container-station Install_Path -f ${QPKG_CONF})/bin/system-docker
image_id_from_docker_load() {
# docker load will return one of:
# 1. "Loaded image: nginx:1.17.0"
# 2. "Loaded image ID: sha256:719cd2e...cb50105"
IMAGE_ID=$(echo "$1" | sed 's/Loaded image: //g' | sed 's/Loaded image ID: sha256://g')
echo $IMAGE_ID
}
load_docker_image() {
LOAD_RESULT=$($DOCKER load < "$SYS_QPKG_DIR/docker_folder/$1")
IMAGE_ID=$(image_id_from_docker_load "$LOAD_RESULT")
echo $IMAGE_ID
}
# callback-function
pkg_post_install(){
IMAGES_ID_1=$(load_docker_image "dotted_sign_nginx.tar.gz")
IMAGES_ID_2=$(load_docker_image "dotted_sign_web.tar.gz")
echo "$IMAGES_ID_1 $IMAGES_ID_2" > $SYS_QPKG_DIR/loaded_docker_images
}
# callback-pseudo-functions
PKG_PRE_REMOVE="{
IMAGE_ID=\$(/bin/cat $SYS_QPKG_DIR/loaded_docker_images)
$DOCKER image rm \$IMAGE_ID
}"
pkg_post_install
PKG_PRE_REMOVE
是個字串#!/bin/sh
CONF=/etc/config/qpkg.conf
QPKG_NAME="dotted_sign"
DOCKER_COMPOSE=$(/sbin/getcfg container-station Install_Path -f ${CONF})/bin/system-docker-compose
SYS_QPKG_DIR=$(/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF})
DOCKER_COMPOSE_FILE="$SYS_QPKG_DIR/docker_folder/docker-compose.yml"
# # 不知道用途, 實測砍掉沒差 先保留
# export QNAP_QPKG=$QPKG_NAME
case "$1" in
start)
ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
if [ "$ENABLED" != "TRUE" ]; then
echo "$QPKG_NAME is disabled."
exit 1
fi
: ADD START ACTIONS HERE
$DOCKER_COMPOSE -f $DOCKER_COMPOSE_FILE -p $QPKG_NAME up -d
;;
stop)
: ADD STOP ACTIONS HERE
$DOCKER_COMPOSE -f $DOCKER_COMPOSE_FILE -p $QPKG_NAME down
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
esac
exit 0
QPKG_NAME
會變動, 要參考你的 qpkg.cfg
cd [DottedSign_path]
qbuild
cd [DottedSign_path]/build
chmod 755 dotted_sign_0.2.qpkg
./dotted_sign_0.2.qpkg