CreateArtTechnology
/ Blog
Login
最新文章
Java
语言相关
库相关
虚拟机相关
CreateArtTechnology
项目搭建
使用的工具
自研的工具
开源工具
ELK
ElasticSearch
Jenkins
Markdown
GraphQL
Arthas
生产工具
Linux
Nginx
VersionControl
Subversion
Git
Redis
Archiva
Maven
Zookeeper
Spring
SpringBoot
MySql
HBase
Cassandra
容器化
Docker
Kubernetes
服务容器化从零开始
未分类笔记
算法相关
概念相关
豆知识
机器学习
机器学习从零开始
自动化构建流程Hello World
7
2019-02-18 19:58:41
容器化
服务容器化从零开始
## 背景 本文使用的构建流程和工具: 1. 代码提交到GitHub进行版本控制 2. Jenkins从GitHub拉取代码 3. Jenkins调用Maven进行构建、打包 4. Jenkins调用Docker构建镜像 5. Jenkins将镜像推到DockerHub 6. Jenkins调用Kubectl创建Pod进行服务部署 7. k8s在创建时从DockerHub拉取镜像,创建并运行Docker容器 ## 流程 #### 准备好代码并提交GitHub,Jenkins拉取代码 具体过程参考以前的博文。 #### Jenkins调用Maven打包 Jenkins配置中,在“构建-调用顶层Maven目标”部分: ```shell clean # maven打包 package ``` #### 构建镜像,推送镜像、部署Pod Jenkins配置中,在“构建-执行shell”部分: ```shell # 要将war包放到单独的 ~/docker-test/ 目录下作为Docker构建的上下文,因此将原本存在的war包删除 rm ~/docker-test/agent.war # 将打包好的war包复制到上下文目录中 cp ~/.jenkins/workspace/docker-test/target/agent.war ~/docker-test/ cd ~/docker-test/ # 以防万一,修改权限 chmod 777 agent.war # 构建镜像 docker build -t xxx/agent:0.1 . # 推送镜像到DockerHub docker push xxx/agent:0.1 # 调用kubectl创建pod,期间会从DockerHub拉取镜像 kubectl create -f ~/k8s_demo/agent.yaml ``` ## 构建镜像使用的Dockerfile 使用的基础镜像是官方提供的高质量镜像,这是其Dockerfile: https://github.com/docker-library/tomcat/blob/ffde17a33a1930496bb43c75bc7a826c977d3807/7/jre8-slim/Dockerfile ```shell # tomcat版本:7 # jre版本:8 # slim:精简版,去除一切不必要的内容 FROM tomcat:7.0-jre8-slim # 将上下文目录中的war包复制到tomcat webapps目录下 COPY ./agent.war /usr/local/tomcat/webapps/ ``` 非常简单,利用现有的高质量tomcat基础镜像,整个Dockerfile只做了一件事:把war包复制到对应的目录。 原镜像已经安装好了精简版本的openjdk、tomcat,并通知Docker暴露tomcat所使用的8080端口,最后使用`CMD`命令定义了容器的启动命令,也就是使用catalina脚本启动tomcat。这些工作已经由基础镜像完成,我们不用关心。 ## 创建Pod使用的.yaml配置文件 就是之前.yaml博文介绍的简单的配置文件。 ```shell apiVersion: v1 kind: Pod # 资源类型为Pod metadata: name: agent spec: restartPolicy: Never # 禁用重启策略 containers: - name: agent80 image: "xxx/agent:0.1" # 使用的镜像 ports: - containerPort: 8080 # 容器暴露的端口,Dockerfile已定义 hostPort: 8686 # 宿主暴露的端口,映射到容器的containerPort ``` 最后,`curl localhost:8686`即可访问容器上的服务。 **注:宿主机是虚拟机,因此通过VMware的虚拟机网络配置,设置为NAT模式将Win7的8686端口映射到虚拟机8686端口,从我的Win7机器浏览器访问`http://localhost:8686`即可访问到容器中启动的服务。** **即Win7工作机——>CentOS虚拟机——>Pod中的容器——>tomcat**
发布文章 101
文章被阅读 1817
最近修改
什么是“丝滑”的曲线
2021-12-08 15:19:20
高效空间数据索引R树及其批量加载方法STR简介
2021-09-29 20:33:37
关于分库分表的一些事儿
2021-06-25 11:51:25
获得诺奖的稳定匹配理论之TTC算法与GS算法
2021-03-14 23:04:48
算法小白的机器学习入门实践,从零到上线
2021-01-13 14:28:27
分站宗旨
一站式资料平台,减少重复检索,减少重复采坑。