| #!/bin/bash |
|
|
| |
| CONTAINER_NAME="ais2api" |
| IMAGE_NAME="ghcr.io/jjf1126/build2api:latest" |
| HOST_PORT="7861" |
| ENV_FILE="app.env" |
|
|
| |
| PROXY_URL="" |
|
|
| |
|
|
| |
| if [ ! -f "$ENV_FILE" ]; then |
| echo "错误: 环境文件 '$ENV_FILE' 不存在!" |
| exit 1 |
| fi |
|
|
| echo "===== 开始部署: $CONTAINER_NAME =====" |
|
|
| |
| echo "--> 正在拉取最新镜像: $IMAGE_NAME..." |
| docker pull $IMAGE_NAME |
|
|
| |
| echo "--> 正在停止并删除旧容器..." |
| docker stop $CONTAINER_NAME > /dev/null 2>&1 |
| docker rm $CONTAINER_NAME > /dev/null 2>&1 |
|
|
| |
| echo "--> 正在启动新容器..." |
|
|
| |
| declare -a DOCKER_OPTS |
| DOCKER_OPTS=( |
| -d |
| --name "$CONTAINER_NAME" |
| -p "${HOST_PORT}:7860" |
| --env-file "$ENV_FILE" |
| -e "TZ=Asia/Shanghai" |
| --restart unless-stopped |
| ) |
|
|
| |
| if [ -d "./auth" ]; then |
| echo "--> 检测到 'auth' 目录..." |
| |
| |
| echo "--> 正在为 'auth' 目录设置权限..." |
| sudo chown -R 1000:1000 ./auth |
| |
| echo "--> 正在将 'auth' 目录挂载到容器中..." |
| DOCKER_OPTS+=(-v "$(pwd)/auth:/app/auth") |
| else |
| echo "--> 未检测到 'auth' 目录,跳过挂载。" |
| fi |
|
|
| |
| if [ -n "$PROXY_URL" ]; then |
| echo "--> 检测到代理配置,将为容器启用代理: $PROXY_URL" |
| DOCKER_OPTS+=(-e "HTTP_PROXY=${PROXY_URL}") |
| DOCKER_OPTS+=(-e "HTTPS_PROXY=${PROXY_URL}") |
| else |
| echo "--> 未配置代理。" |
| fi |
|
|
| |
| docker run "${DOCKER_OPTS[@]}" "$IMAGE_NAME" |
|
|
|
|
| |
| echo "" |
| echo "--> 检查容器状态 (等待几秒钟让容器启动):" |
| sleep 5 |
| docker ps | grep $CONTAINER_NAME |
|
|
| echo "" |
| echo "===== 部署完成!=====" |
| echo "服务应该正在运行在 http://<你的服务器IP>:${HOST_PORT}" |
| echo "您可以通过 'docker logs -f $CONTAINER_NAME' 查看实时日志。" |