阿里云效自动化部署 Docker镜像

发布于:2025-02-10 ⋅ 阅读:(125) ⋅ 点赞:(0)

1.登录阿里云效,将代码上传到云效当中,我这边选择的是将gitee拉进来,自行选择

 2.新建流水线, 选择可视化编排

 进去之后会有两个任务, 一个java构建测试上传, 一个主机部署,需要编写相应脚本

java构建测试上传

这里的配置看自己需求选择相应的,我用得是Linux

看自己所对应的版本选择

 

# maven build default command
# maven build default command
mvn clean package -P dev

# gradle build default command
# ./gradlew build

# ant build default command
# ant

这个就是脚本命令 -P dev 是选择动态配置的

打包路径是你对应的微服务的jar包的相对路径,不是绝对路径  这是我对应的

smart-health-modules/smart-health-search/target/smart-health-search.jar

主机部署

这便就选择对应的主机,也就是你的服务器,下载路径是打的包到服务器的位置我这里就是

/home/admin/app/package.tgz 

部署脚本 

# 部署脚本会在部署组的每台机器上执行。一个典型脚本逻辑如下:先将制品包(在下载路径中配置的下载路径)解压缩到指定目录中,再执行启动脚本(通常在代码中维护,如示例中deploy.sh)。关于这个例子的详细解释见 https://help.aliyun.com/document_detail/153848.html 

tar zxvf /home/admin/app/package.tgz -C /package/smart-health-manager

cd /package/smart-health-manager

chmod +x start.sh

./start.sh
# 如果你是php之类的无需制品包的制品方式,可以使用git clone 或者 git pull将源代码更新到服务器,再执行其他命令 
# git clone ***@***.git

 

这个是将打的jar包放到这个目录下

这样流水线大致就完成了保存即可

服务器:

需要安装 docker-compose 自行搜索

在跟目录创建 /package/smart-health-manager 这个路径 跟上边一致即可

 新建一个文件 docker-compose.yml

version: '3.3'  # 使用 3.3 或 2.2,确保版本兼容

services:
  smart-health-file:
    container_name: smart-health-file
    image: smart-health-file
    build:
      context: /package/smart-health-manager/smart-health-modules/smart-health-file/target  # 构建上下文
      dockerfile: Dockerfile  # Dockerfile 文件
    ports:
      - "2008:2008"
    networks:
      - frontend
      - backend  # 将服务连接到 frontend 和 backend 网络
    volumes:
      - db-data:/data/db  # 将 db-data 卷挂载到容器的 /data/db 目录

networks:
  frontend:
  backend:

# 定义卷
volumes:
  db-data:

 start.sh文件 

# 停止并移除旧容器及相关网络和卷
docker-compose down

docker rmi smart-health-search
docker rmi smart-health-file
docker rmi smart-health-rests
docker rmi smart-health-test
docker rmi smart-health-wordmate


# 重新构建并启动容器
docker-compose up -d --build  # 使用 --build 选项确保重新构建镜像

 jar目录下要编写一个Dockerfile文件 

Dockerfile 

# 指定基础镜像
FROM openjdk:17
#WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。
WORKDIR /opt/docker/images/metabase/
#将当前spring.jar 复制到容器根目录下
ADD smart-health-file.jar smart-health-file.jar
#将依赖包 复制到容器根目录/libs下,spring.jar已不再需要添加其它jar包
#ADD libs /libs
#暴露容器端口为8080 Docker镜像告知Docker宿主机应用监听了8080端口
EXPOSE 2008
#容器启动时执行的命令
CMD java -jar smart-health-file.jar