一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

背景

简单记录下服务开发完的部署流程笔记,仅为个人笔记无实际参考意义。

流程

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.提交代码,等待代码编译打包等完成后生成镜像

一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

4.查看镜像地址并且复制

例:registry.test.com.cn/backend/demo

一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

 5.接下来则是去Portainer/Kubord根据镜像启动不同环境地容器

通过Portainer进行部署

1.新增容器一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

 2.填写相关信息,到此步就可以启动容器了

一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

 3.后续如果考虑挂载等,即可进行编辑容器,再重新启动

如果需要开启远程调试,需要开放5005端口,且在启动命令配置

java,-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n,-jar,-Duser.timezone=GMT+8,demo.jar

一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord) 

通过Kubord进行部署

1.新建工作负载

一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

 2.添加工作容器

这些配置都是提前维护好,具体配置再说

一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

 3.添加数据卷一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

 4.高级设置一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

 5.服务/应用路由

一个没什么意义的个人部署笔记(Dockerfile+GitLab+CICD+Portainer/Kubord)

 6.保存启动

至此一个基本的流程就这样,本文只是个人地记录,没什么意义

 

上一篇:使用git将修改的文件上传到gitlab


下一篇:【Jenkins学习】gitlab自动化触发jenkins任务