diff --git a/deploy.sh b/deploy.sh new file mode 100644 index 0000000..6e5ce1f --- /dev/null +++ b/deploy.sh @@ -0,0 +1,47 @@ +#!/bin/bash + +set -e + +# 项目目录名 +APP_DIR="record-app" +IMAGE_NAME="recorder-app" +CONTAINER_NAME="recorder-app" +PORT=25200 + +# 1. 检查 Docker +if ! command -v docker &> /dev/null; then + echo "Docker 未安装,正在安装..." + sudo apt update + sudo apt install -y docker.io + sudo systemctl enable --now docker +fi + +# 2. 检查 Docker Compose(可选) +if ! command -v docker-compose &> /dev/null; then + echo "Docker Compose 未安装,正在安装..." + sudo apt install -y docker-compose +fi + +# 3. 构建镜像 +echo "正在构建 Docker 镜像..." +cd $APP_DIR +docker build -t $IMAGE_NAME . + +# 4. 停止并删除旧容器 +if docker ps -a | grep -q $CONTAINER_NAME; then + echo "停止并删除旧容器..." + docker stop $CONTAINER_NAME || true + docker rm $CONTAINER_NAME || true +fi + +# 5. 启动新容器 +echo "启动新容器..." +docker run -d \ + --name $CONTAINER_NAME \ + --restart always \ + -p $PORT:3000 \ + --env-file .env.production \ + -v $(pwd)/prisma:/app/prisma \ + $IMAGE_NAME + +echo "部署完成!请访问 http://<你的服务器IP或域名>:$PORT" \ No newline at end of file