阿里云效自动化部署 Docker镜像
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