Files
aiotagro-new/script/deploy-remote.sh

79 lines
2.0 KiB
Bash
Raw Normal View History

#!/bin/bash
# 远程服务器配置
REMOTE_HOST="192.168.0.95"
REMOTE_USER="root"
REMOTE_PASSWORD="aiotagro"
REMOTE_DIR="/data/java/aiotagro-mini"
# 本地项目配置
PROJECT_DIR=$(pwd)
SERVER_MODULE="aagro-server"
TARGET_JAR="${SERVER_MODULE}/target/${SERVER_MODULE}.jar"
echo "开始部署项目到远程服务器..."
# 1. 清理并构建项目
echo "正在清理并构建项目..."
mvn clean package -Dmaven.test.skip=true
if [ $? -ne 0 ]; then
echo "项目构建失败,退出部署"
exit 1
fi
echo "项目构建成功"
# 2. 检查目标jar文件是否存在
if [ ! -f "${TARGET_JAR}" ]; then
echo "目标jar文件不存在: ${TARGET_JAR}"
exit 1
fi
# 3. 在远程服务器上创建目录
echo "正在远程服务器上创建目录..."
sshpass -p "${REMOTE_PASSWORD}" ssh ${REMOTE_USER}@${REMOTE_HOST} "mkdir -p ${REMOTE_DIR}"
# 4. 上传到远程服务器
echo "正在上传文件到远程服务器..."
sshpass -p "${REMOTE_PASSWORD}" scp ${TARGET_JAR} ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/
if [ $? -ne 0 ]; then
echo "文件上传失败"
exit 1
fi
echo "文件上传成功"
# 5. 上传Dockerfile到远程服务器
echo "正在上传Dockerfile到远程服务器..."
sshpass -p "${REMOTE_PASSWORD}" scp ${SERVER_MODULE}/Dockerfile ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_DIR}/
if [ $? -ne 0 ]; then
echo "Dockerfile上传失败"
exit 1
fi
echo "Dockerfile上传成功"
# 6. 在远程服务器上构建Docker镜像并运行容器
echo "正在远程服务器上构建Docker镜像并运行容器..."
sshpass -p "${REMOTE_PASSWORD}" ssh ${REMOTE_USER}@${REMOTE_HOST} "
cd ${REMOTE_DIR} && \
docker build -t aagro-server . && \
docker stop aagro-server-container 2>/dev/null && \
docker rm aagro-server-container 2>/dev/null && \
docker run -d \
--name aagro-server-container \
--restart always \
-p 48080:48080 \
aagro-server
"
if [ $? -ne 0 ]; then
echo "远程Docker操作失败"
exit 1
fi
echo "项目部署成功!"
echo "访问地址: http://${REMOTE_HOST}:48080"