linux(ubuntu)拉取源码进行docker容器部署

系统环境

  • ubuntu, 腾讯云
  • 磁盘剩余21G
  • 已安装docker , 使用docker compose运行项目

使用git方式拉取

  • 建立服务器信任
text 复制代码
# 生成公钥
ssh-keygen -t ed25519 -C "gitee-deploy"

# 获取公钥复制到gitee上的ssh公钥配置中```
 cat ~/.ssh/id_ed25519.pub

# 拉取代码
git clone git@gitee.com:**/**.git

部署脚本

bash 复制代码
#!/bin/bash
set -e

echo "======================================"
echo " 🚀 开始部署 neurocontrol"
echo "======================================"

# ===== 基本配置 =====
PROJECT_DIR="/mnt/data/gitee/neurocontrol"
BRANCH="master"

BACKEND_DIR="$PROJECT_DIR/backend"
FRONTEND_DIR="$PROJECT_DIR/frontend"
DOCKER_DIR="$PROJECT_DIR/docker"

BACKEND_JAR_DIR="$DOCKER_DIR/volumes/backend/jar"
FRONTEND_DIST_DIR="$DOCKER_DIR/volumes/frontend"

COMPOSE_CMD="docker compose"

# ===== 基础校验 =====
command -v git >/dev/null || { echo "❌ git 未安装"; exit 1; }
command -v mvn >/dev/null || { echo "❌ maven 未安装"; exit 1; }
command -v npm >/dev/null || { echo "❌ npm 未安装"; exit 1; }
command -v docker >/dev/null || { echo "❌ docker 未安装"; exit 1; }

# ===== 拉取最新代码 =====
echo "🔄 更新源码"
cd "$PROJECT_DIR"
git fetch origin
git checkout "$BRANCH"
git pull origin "$BRANCH"

# ===== 构建后端 =====
echo "⚙️ 构建后端(Maven)"
cd "$BACKEND_DIR"

mvn clean package -DskipTests

echo "📦 拷贝后端 jar"
mkdir -p "$BACKEND_JAR_DIR"
cp target/*.jar "$BACKEND_JAR_DIR"/

# ===== 构建前端 =====
echo "🎨 构建前端(npm)"
cd "$FRONTEND_DIR"

npm install
npm run build

echo "📦 发布前端静态文件"
rm -rf "$FRONTEND_DIST_DIR"/*
cp -r dist/* "$FRONTEND_DIST_DIR"/

# ===== Docker Compose 启动 =====
echo "🐳 启动 Docker Compose"
cd "$DOCKER_DIR"

$COMPOSE_CMD up -d

echo "======================================"
echo " ✅ 部署完成"
echo "======================================"

程序层级图

text 复制代码
/mnt/data/gitee/neurocontrol/
├── backend/                          # 后端源码(Java / Spring Boot)
│   ├── pom.xml
│   └── src/
│
├── frontend/                         # 前端源码(Vue / React / Vite 等)
│   ├── package.json
│   ├── package-lock.json
│   └── src/
│
├── docker/                           # 🚀 Docker 部署核心目录
│   ├── docker-compose.yml            # Docker Compose 编排文件(启动入口)
│   │
│   ├── volumes/                      # 所有容器挂载的数据卷
│   │   ├── backend/
│   │   │   └── jar/
│   │   │       └── neurocontrol.jar  # ← mvn package 输出产物
│   │   │
│   │   ├── frontend/
│   │   │   ├── index.html
│   │   │   ├── assets/
│   │   │   └── static/               # ← npm run build 输出产物
│   │   │
│   │   ├── mysql/
│   │   │   └── data/                 # MySQL 持久化数据
│   │   │
│   │   └── redis/
│   │       └── data/                 # Redis 持久化数据
│   │
│   ├── mysql/
│   │   └── my.cnf                    # MySQL 配置(可选)
│   │
│   └── nginx/
│       └── nginx.conf                # 前端反向代理 / 静态资源
│
├── .git/
├── .gitignore
└── README.md

安装nvm

  • apt install -y git
  • apt install -y maven
  • 使用镜像安装nvm
bash 复制代码
export NVM_SOURCE="https://gitee.com/mirrors/nvm.git"
curl -fsSL https://gitee.com/mirrors/nvm/raw/v0.39.7/install.sh | bash
  • 安装node
    此时检测node版本node --version
相关推荐
无奈笑天下5 小时前
银河麒麟上nproc命令教程详解
linux·运维·服务器
Rabitebla8 小时前
【Linux】进程控制(十二) 自定义 Shell(二):内建命令与进程工作目录管理
linux·c++·笔记·学习·bash
java_logo10 小时前
Docker 部署 DeepSeek Harness(moelin):轻松搭建带登录的本地 AI Agent 平台
运维·docker·容器·ai agent·deepseek·harness·轩辕镜像
xbzb11 小时前
容器 IP 每次重建都变?docker network 五种模式与自定义网桥固定地址
网络·docker·容器·ip·network·固定
坤坤子吖12 小时前
Linux网络编程:TCP 粘包与半包问题,如何正确处理 TCP 流式数据?
linux·服务器·网络·笔记·网络协议·学习
AI_Gump13 小时前
Harness篇|DeepSeek Harness 上手机:五条安卓移植路线与 App 内 Linux 拆解
android·linux·人工智能·智能手机·deepseek
星恒随风14 小时前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
少司府14 小时前
嵌入式入门篇(二):初识STM32F103ZET6
linux·python·stm32·单片机·嵌入式硬件·mcu·嵌入式软件
无足鸟ICT15 小时前
【RHCA+】IO调度算法
linux·服务器
打工仔折腾 AI15 小时前
Changedetection.io 网页变动监控:Docker 部署、通知配置与公网暴露实践
运维·人工智能·后端·python·docker·容器·性能优化