Docker 自动化部署

Docker 自动化部署Docker 自动化部署 yum yinstalldock reload amp amp systemctlres 查看 docker 版本 dockerversio 安装 GitLabRunner 在具有 gitlab 的机子上安装 GitLabRunner 可以 Shell 方式也可以以 Docker 容器方式运行 Shell 比较简单 问题会比较少 用 DockerContai 方式一台机器可以装多

Docker 自动化部署

yum -y install docker systemctl daemon-reload && systemctl restart docker 

查看docker版本

docker version 

安装 GitLab Runner

在具有gitlab的机子上安装 GitLab Runner

Runner 可以 Shell 方式也可以以 Docker 容器方式运行。Shell 比较简单,问题会比较少。 用 Docker Container 方式一台机器可以装多个 Runner。本文中 GitLab Runner 和 GitLab 安 装在同一台机器,装容器方式装多个会有性能问题,所以用简单的 Shell 方式。 官方参考文档:

https://docs.GitLab.com/runner/install/linux-repository.html
https://docs.gitlab.com/runner/

获取 Runner Token
打开 GitLab 网页,按下图指示,找到注册 token。
在这里插入图片描述




注册 Runner

官方文档参考:https://docs.GitLab.com/runner/register/index.html

注册成功显示:

Registering runner... succeeded runner=KZi5yDuK Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded! 

本文使用 socket binding 方式运行 docker,需修改/etc/gitlab-runner/config.toml 为 socket binding 方式,并添加 maven 库目录的本地映射,这样每次打包时不需要重下依赖包。另 外末尾加上 pull_policy = “if-not-present”,这样不会每次都拉镜像。

在这里插入图片描述

在这里插入图片描述
创建 kubectl 镜像
需要一个 kubectl 镜像在 Gitlab 服务器上运行,并能远程连接 K8S 服务器的镜像。 kubectl的版本根据你安装的k8s而定。




Dockerfile:

FROM lachlanevenson/k8s-kubectl:v1.18.5 LABEL maintainer="" ENV KUBE_LATEST_VERSION="v1.18.5" ADD admin.conf /root/.kube/config WORKDIR /root 

编译上传

docker build -t kubectl:1.18.5 . docker push kubectl:1.18.5 

部署
#新建.gitlab-ci.yml


内容为:

variables: MAVEN_OPTS: "-Dmaven.repo.local=/root/.m2/repository" # 指定maven本地库路径 DOCKER_DRIVER: overlay2 # 用overlay2优化性能 PROJECT_NAME: $CI_PROJECT_NAME # 用Gitlab工程名环境变量做后面打包的名字 PROJECT_VERSION: "2.0.0" stages: - build - deploy maven-build: stage: build script: - mvn package -B -DskipTests # 跳过测试节省时间 - mv target/$CI_PROJECT_NAME*.jar target/app.jar # 打好的包重命名为app.jar - docker build -t docker镜像 . # 生成docker镜像 - docker push docker镜像 # 提交到镜像库 artifacts: paths: - ./*.yaml k8s-deploy: stage: deploy only: - master # 只不是master节点 image: name: k8s-kubectl:1.18.5 # 根据自己推送的地址改动 entrypoint: [""] script: #- /usr/bin/kubectl delete -f Deployment.yaml # 如果第一次部署请注释掉 - /usr/bin/kubectl create -f Deployment.yaml - /usr/bin/kubectl set env deploy/$PROJECT_NAME DEPLOY_DATE="$(date)" # 让k8s强制更新镜像 

Deployment.yaml

--- apiVersion: apps/v1 kind: Deployment metadata: name: 自定义名称 labels: app: 自定义名称 version: 自定义版本号 spec: selector: matchLabels: app: 自定义名称 replicas: 1 template: metadata: labels: app: 自定义名称 spec: containers: - name: 自定义名称 image: 镜像地址 imagePullPolicy: Always env: - 启动参数 --- apiVersion: v1 kind: Service metadata: name: torch-gen labels: app: 自定义名称 version: 自定义版本 spec: selector: app: 自定义名称 type: LoadBalancer 

完成,当提交master节点代码时候 就会自己部署到k8s docker中

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/217770.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 上午8:48
下一篇 2026年3月18日 上午8:49


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号