阿里云效流水线部署springboot项目-2026

1.新建流水线,选择部署到阿里云ecs

2.添加流水线源,我的代码在码云,其他默认即可

3.删除Java 代码扫描和Maven 单元测试,删完后测试这一步就没了

4.java构建上传,jdk版本根据自己项目选择,maven尽量选择最新

执行命令如下,多模块打包一定要install

复制代码
mvn clean install -Dmaven.test.skip=true

上传方式选择公共空间,打包路径根据自己的项目结构修改

项目结构如下

5.主机部署,制品和主机组跟着提示选择或新建

部署脚本如下

复制代码
cd /home/admin/app && tar zxvf ./package.tgz
cat > Dockerfile << 'EOF'
FROM bellsoft/liberica-openjdk-rocky:17.0.16-cds
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ENV APP_PATH=/apps
WORKDIR $APP_PATH
ADD *.jar $APP_PATH/app.jar
ENV PARAMS="--spring.profiles.active=prod"
EXPOSE 8090
SHELL ["/bin/bash", "-c"]
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC -jar app.jar ${PARAMS}
EOF
image_name=ez-im-server
id=$(docker ps -a | grep ${image_name} | awk '{print $1}')
if [ -n "$id" ]; then
  docker rm -f $id
fi
id=$(docker images | grep ${image_name} | awk '{print $3}')
if [ -n "$id" ]; then
  docker rmi -f $id
fi
docker build -t ${image_name} .
docker run -d -p 8090:8090 --name ${image_name}  --link redis:redis --network docker_default ${image_name}

这样流水线就搭建好了


因为是用docker部署的,项目的配置文件还有几点要注意的

1.docker compose不要用net host模式

2.基础容器是用docker compose一起启动的,会创建一个默认的网络docker_default

3.在编写docker run命令的时候要加入这个网络,否则不能访问基础容器,然后就是--link需要的容器

4.springboot配置文件中的数据库地址替换成容器名称即可

成果展示

docker-compose.yml如下

复制代码
services:
  mysql:
    image: mysql:8.0.42
    container_name: mysql
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      # root 密码
      MYSQL_ROOT_PASSWORD: root
      # 初始化数据库(后续的初始化sql会在这个库执行)
      MYSQL_DATABASE: ry-vue
    ports:
      - "3306:3306"
    volumes:
      # 数据挂载
      - /docker/mysql/data/:/var/lib/mysql/
      # 配置挂载
      - /docker/mysql/conf/:/etc/mysql/conf.d/
    command:
      # 将mysql8.0默认密码策略 修改为 原先 策略 (mysql8.0对其默认策略做了更改 会导致密码无法匹配)
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_general_ci
      --explicit_defaults_for_timestamp=true
      --lower_case_table_names=1
    privileged: true

  nginx-web:
    image: nginx:1.23.4
    container_name: nginx-web
    environment:
      # 时区上海
      TZ: Asia/Shanghai
    ports:
      - "80:80"
      - "443:443"
    volumes:
      # 证书映射
      - /docker/nginx/cert:/etc/nginx/cert
      # 配置文件映射
      - /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      # 页面目录
      - /docker/nginx/html:/usr/share/nginx/html
      # 日志目录
      - /docker/nginx/log:/var/log/nginx
    privileged: true

  redis:
    image: redis:7.2.8
    container_name: redis
    ports:
      - "6379:6379"
    environment:
      # 时区上海
      TZ: Asia/Shanghai
    volumes:
      # 配置文件
      - /docker/redis/conf:/redis/config:rw
      # 数据文件
      - /docker/redis/data/:/redis/data/:rw
    command: "redis-server /redis/config/redis.conf"
    privileged: true

  minio:
    image: minio/minio:RELEASE.2025-04-22T22-12-26Z
    container_name: minio
    ports:
      # api 端口
      - "9000:9000"
      # 控制台端口
      - "9001:9001"
    environment:
      # 时区上海
      TZ: Asia/Shanghai
      # 管理后台用户名
      MINIO_ROOT_USER: ruoyi
      # 管理后台密码,最小8个字符
      MINIO_ROOT_PASSWORD: ruoyi123
      # https需要指定域名
      #MINIO_SERVER_URL: "https://xxx.com:9000"
      #MINIO_BROWSER_REDIRECT_URL: "https://xxx.com:9001"
      # 开启压缩 on 开启 off 关闭
      MINIO_COMPRESS: "off"
      # 扩展名 .pdf,.doc 为空 所有类型均压缩
      MINIO_COMPRESS_EXTENSIONS: ""
      # mime 类型 application/pdf 为空 所有类型均压缩
      MINIO_COMPRESS_MIME_TYPES: ""
    volumes:
      # 映射当前目录下的data目录至容器内/data目录
      - /docker/minio/data:/data
      # 映射配置目录
      - /docker/minio/config:/root/.minio/
    command: server --address ':9000' --console-address ':9001' /data  # 指定容器中的目录 /data
    privileged: true

欢迎留言讨论

相关推荐
闲云野鹤在人间11 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
钟祥哎眼19 小时前
镜片膜层都是什么:加硬、减反射、疏水一次说清?/钟祥极博视科普
阿里云
honsor20 小时前
以太网温湿度传感器:RJ45直连机房的环境监控新方案
运维·网络·数据库·物联网·安全·云计算·github
yuezhilangniao1 天前
阿里云 CentOS 7 升级 Redis 到 7.2 实录-centos7安装redis7
redis·阿里云·centos
QYR-分析1 天前
算力下沉,低空新支点:全球无人机机载计算盒市场竞争与发展研判
云计算·无人机
A-刘晨阳1 天前
GitLab + ArgoCD 实现 Kubernetes GitOps 自动化部署
运维·人工智能·git·kubernetes·自动化·云计算·argocd
sunoo-2292 天前
【嵌入式Linux驱动学习】Day1-Day2 全流程梳理:环境搭建→U-Boot→内核→根文件系统→驱动基础
linux·运维·驱动开发·笔记·学习·阿里云·恩智浦
范桂飓2 天前
AWS Strands Agents 技术解析
人工智能·云计算·aws
workflower2 天前
AI 产业链带动效应加速,催生AI 原生企业
人工智能·机器学习·机器人·云计算·无人机