接Dockerfile部署文章,有多种部署方式,我这只是整理一个简单的思路,Dockerfile文件用于mvn打包并上传到harbor仓库,docker-compose用于快速的部署项目,缩短部署步骤
一、针对代码部分的修改 1、修改mvn的settings.xml文件,ID会被代码下的pom.xml调用vim /usr/share/maven/conf/settings.xml
2、pom.xml文件添加maven插件docker-harbor admin Song2022
vim pom.xml ####代码当前目录下pom
3、编辑Dockerfile文件envirment com.spotify docker-maven-plugin1.0.0 192.168.2.251/song/${artifactId} src/main/docker / ${project.build.directory} ${artifactId}.jar docker-harbor true
vim src/main/docker/Dockerfile
一行:加载java镜像
二行:copyjar包到服务器
三行:项目运行命令
四行:项目暴露端口
FROM java COPY *.jar envirment.jar ENTRYPOINT ["java","-jar","envirment.jar"] EXPOSE 80984、vim docker-compose.yaml文件
这里是最简单的docker-compose文件实例,主要分两部分
第一部分:docker-compose版本这个是根据docker版本来的,19以下都兼容
第二部分:“定义容器名”,“镜像地址”,“总是启动”,“端口映射”,“DNS映射”
我们生产环境还有很多像“挂载卷”,“加载其他镜像”,“数据库连接”,“命令挂载”等等之类的,这里就不多写了,这个需要看官网了解
version: '3.8' services: java_app: container_name: CONTAINER_NAME image: 192.168.2.251/song/CONTAINER_NAME:GIT_COMMIT restart: always ports: - "PORT:PORT" extra_hosts: - master.mysql:192.168.2.251二、Jenkins配置信息 1、 build界面,可以配置发布、回滚、重启,选择分支,
这里的回滚是git版本号,到harbor仓库自动拉取
2、配置参数化构建过程 3、代码库地址 4、环境变量配置,方便调用5、shell构建IMAGE_NAME:song 平台项目分类 environment以具体项目名区分(容器名)
PORT: 项目启动端口
CONTAINER_NAME:容器名
分为两部分:
第一部分:如果build为deploy发版则先判断git版本号是否变化,如没变化则没有发版必要,停止
第二部分:打包jar包推送到harbor
# *** 作校验 if [ ${deploy_env} = "deploy" ];then echo -e "33[34mstart ${deploy_env}33[0m" echo ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} echo ${GIT_COMMIT} [ ${GIT_PREVIOUS_SUCCESSFUL_COMMIT} != ${GIT_COMMIT} ] && echo -e "33[34mstart maven package33[0m" || { #版本未更新,停止发版 echo -e "33[31m代码没有更新,停止发版33[0m" # exit 1 } #######打包镜像并推送到本地仓库 cp /root/pom.xml-dockerfile ./pom.xml mkdir -p src/main/docker cp /root/Dockerfile src/main/docker/ # mvn clean package docker:build -DdockerImageTags=${GIT_COMMIT} -DpushImageTag [ $? -eq 0 ] && echo -e "33[32mmaven打包成功033[0m" || { echo -e "33[31mmaven 打包失败33[0m" exit 1 } fi6、远程服务器进行docker部署
#!/bin/bash /usr/bin/cp /root/java/docker-compose.yaml ./docker-compose.yaml #定义docker-compose变量,注意第一步清空env,后续追加env INIT_VAR() { /usr/bin/sed -i 's/CONTAINER_NAME/$CONTAINER_NAME/g' docker-compose.yaml /usr/bin/sed -i 's/PORT/$PORT/g ' docker-compose.yaml } #登录harbor LOGIN_HARBOR() { echo -e "33[34m登录harbor33[0m" docker login 192.168.2.251 [ $? -eq 0 ] && echo -e "33[32m登录harbor成功33[0m" || { echo -e "33[31m登录harbor失败33[0m" exit 1 } } case ${deploy_env} in deploy) LOGIN_HARBOR INIT_VAR /usr/bin/sed -i 's/GIT_COMMIT/$GIT_COMMIT/g ' docker-compose.yaml docker-compose up -d --build ;; rollback) LOGIN_HARBOR INIT_VAR /usr/bin/sed -i 's/GIT_COMMIT/$version/g ' docker-compose.yaml docker-compose up -d --build ;; restart) docker-compose restart ;; *) exit 1 ;; esac
发版步骤:
1、登录harbor仓库
2、初始化docker-compose
3、替换harbor仓库镜像地址,单独放出来方便回滚
4、运行docker-compose
回滚步骤:
1、登录harbor仓库
2、初始化docker-compose
3、替换harbor仓库镜像地址,参数化界面输入git版本通过harbor拉取指定版本
4、运行docker-compose
回滚步骤:
1、直接重启compose
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)