!67 增加了重启停止容器、dockerfile方式创建保存容器功能

* change initializeScript path
* Merge branch 'add-dockerfile-method-and-start-stop-container' of https…
* 更新了容器镜像方式的构建、安装和使用方法,但是devcontainer功能还有问题
* fix run postCreateCommand bug
* sh文件方式管理启动脚本
* add restart command and fix bug
* add dockerfile method to create container and save container .restart …
This commit is contained in:
xinitx
2025-05-07 11:10:30 +00:00
repo.diff.committed_by 孟宁
repo.diff.parent fbd405af67
repo.diff.commit 02baa3b7af
repo.diff.stats_desc%!(EXTRA int=16, int=844, int=285)

repo.diff.view_file

@@ -8,7 +8,8 @@ IMAGE_NAME=devstar-studio
VERSION=latest # DevStar Studio的默认版本为最新版本
PORT=8080 # 设置端口默认值为 8080
SSH_PORT=2222 # 设置ssh默认端口号2222
DATA_DIR=~/devstar_data
DATA_DIR=${HOME}/devstar_data
APP_INI=${DATA_DIR}/app.ini
# 错误处理函数
error_handler() {
@@ -89,17 +90,35 @@ function install {
# Function to start
function start {
install
if [[ -z "$IMAGE_STR" ]]; then
install
fi
# 创建devstar_data目录用于持久化存储DevStar相关的配置和用户数据
mkdir -p $DATA_DIR
sudo chown 1000:1000 $DATA_DIR
sudo chmod 666 /var/run/docker.sock
if [ ! -f "$APP_INI" ]; then
DOMAIN_NAME=$(hostname -I | awk '{print $1}')
echo "DOMAIN_NAME=$DOMAIN_NAME"
else
# 读取 DOMAIN 值
DOMAIN_NAME=$(grep -E '^\s*DOMAIN\s*=' "$APP_INI" | cut -d'=' -f2 | xargs)
# 检查是否成功读取到值
if [[ -z "$DOMAIN_NAME" ]]; then
DOMAIN_NAME="localhost"
fi
echo "DOMAIN_NAME=$DOMAIN_NAME"
fi
# 启动devstar-studio容器
stop
sudo docker run --restart=always --name $NAME -d -p $PORT:3000 -p $SSH_PORT:$SSH_PORT -v /var/run/docker.sock:/var/run/docker.sock -v ~/devstar_data:/var/lib/gitea -v ~/devstar_data:/etc/gitea $IMAGE_REGISTRY_USER/$IMAGE_NAME:$VERSION
if [[ -z "$IMAGE_STR" ]]; then
IMAGE_STR="$IMAGE_REGISTRY_USER/$IMAGE_NAME:$VERSION"
fi
echo "image=$IMAGE_STR"
sudo docker run --restart=always --name $NAME -d -p $PORT:3000 -p $SSH_PORT:$SSH_PORT -v /var/run/docker.sock:/var/run/docker.sock -v ~/devstar_data:/var/lib/gitea -v ~/devstar_data:/etc/gitea $IMAGE_STR
# 打开 `http://localhost:8080` 完成安装。
success "-------------------------------------------------------"
success "DevStar started in http://localhost:$PORT successfully!"
success "DevStar started in http://$DOMAIN_NAME:$PORT successfully!"
success "-------------------------------------------------------"
exit 0
}
@@ -109,7 +128,9 @@ function stop {
if [ $(docker ps -a --filter "name=^/${NAME}$" -q | wc -l) -gt 0 ]; then
sudo docker stop $NAME && sudo docker rm -f $NAME
fi
if [ $(docker ps -a --filter "name=^/devstar-studio$" -q | wc -l) -gt 0 ]; then
sudo docker stop devstar-studio && sudo docker rm -f devstar-studio
fi
}
# Function to logs
@@ -133,6 +154,7 @@ function usage {
success " --port=<arg> Specify the port number (default port is 8080)"
success " --ssh-port=<arg> Specify the ssh-port number (default ssh-port is 2222)"
success " --version=<arg> Specify the DevStar Studio Image Version (default verson is latest)"
success " --image=<arg> Specify the DevStar Studio Image example: devstar-studio:latest "
success " stop Stop the running DevStar Studio"
success " logs View the logs of the devstar-studio container"
failure " clean Clean up the running DevStar Studio, including deleting user data. Please use with caution."
@@ -146,7 +168,7 @@ case "$1" in
usage
;;
start)
ARGS=$(getopt --long port::,ssh-port::,version:: -- "$@")
ARGS=$(getopt --long port::,ssh-port::,version::,image:: -- "$@")
if [ $? -ne 0 ]; then
failure "ARGS ERROR!"
exit 1
@@ -166,7 +188,11 @@ case "$1" in
--version)
VERSION="$2"
echo "The DevStar Studio Image Version is: $VERSION"
shift 2 ;;
shift 2 ;;
--image)
IMAGE_STR="$2"
echo "The DevStar Studio Image: $IMAGE_STR"
shift 2 ;;
--)
shift
break ;;