背景
简单记录下服务开发完的部署流程笔记,仅为个人笔记无实际参考意义。
流程
1.服务中配置dockerfile文件
FROM 基于某个镜像
COPY target/*.jar demo-0.0.1.jar(jar包的位置)
EXPOSE 8000(开放的端口)
ENTRYPOINT ["java","-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n","-jar", "-Duser.timezone=GMT+8","demo-0.0.1.jar"](此处5005端口用于远程调试)
Dockerfile官方文档参考Dockerfile reference | Docker Documentation
2. 编写gitlab-ci文件
stages:
- build
- package
- restart
variables:
#gitlab中项目的路径
PROJECT_NAME: "backend/demo"
VERSION: "0.0.1"
MODULE_CMS: "demo"
build:
#gitlab中maven镜像地址
image: registry.test.com.cn/test/maven:3.6.3
stage: build
#指定某个分支
only:
- dev
tags:
- share
script:
- echo $CI_COMMIT_REF_NAME-$CI_COMMIT_SHA
- mvn clean install package -Dmaven.test.skip=true
#传递文件到下个阶段
artifacts:
name: $MODULE_CMS
expire_in: 10 min
paths:
- target/*.jar
#推送镜像到镜像仓库
package:
image: docker:stable
stage: package
only:
- dev
tags:
- share
script:
- docker login --username $CI_REGISTRY_USER --password $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $CI_REGISTRY/$PROJECT_NAME:$MODULE_CMS-$VERSION -f Dockerfile .
- docker push $CI_REGISTRY/$PROJECT_NAME:$MODULE_CMS-$VERSION
restart:
stage: restart
image: yauritux/busybox-curl
only:
- dev
script:
#出发K8S部署
- curl -X PUT -H "Content-Type:application/yaml" -H "Cookie:KuboardUsername=XXXX; KuboardAccessKey=XXX" -d '{"kind":"deployments","namespace":"default","name":"demo"}' "http://xxx.xx.x.xx:30080/kuboard-api/cluster/default/kind/CICDApi/admin/resource/restartWorkload"
when: on_success
gitlab-ci配置文件详解参考5:GitLab之gitlab-ci.yml配置文件详解 - Wesley·zk - 博客园
3.提交代码,等待代码编译打包等完成后生成镜像
4.查看镜像地址并且复制
例:registry.test.com.cn/backend/demo
5.接下来则是去Portainer/Kubord根据镜像启动不同环境地容器
通过Portainer进行部署
1.新增容器
2.填写相关信息,到此步就可以启动容器了
3.后续如果考虑挂载等,即可进行编辑容器,再重新启动
如果需要开启远程调试,需要开放5005端口,且在启动命令配置
java,-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n,-jar,-Duser.timezone=GMT+8,demo.jar
通过Kubord进行部署
1.新建工作负载
2.添加工作容器
这些配置都是提前维护好,具体配置再说
3.添加数据卷
4.高级设置
5.服务/应用路由
6.保存启动
至此一个基本的流程就这样,本文只是个人地记录,没什么意义