JENKINS管道部署容器化初探

目标服务器安装docker参考官方文档

https://docs.docker.com/install/linux/docker-ce/centos/

(可选)在目标服务器上安装docker私服

https://docs.docker.com/registry/

目标服务器启动jenkinsdocker镜像容器

https://hub.docker.com/r/jenkinsci/blueocean/

创建dockerfile进行后端编译环境的镜像搭建

参考官方教程:https://jenkins.io/doc/tutorials/build-a-java-app-with-maven/

docker hub上的maven官方镜像仓库docker hub maven official

使用jdk8对应的apline最小化镜像:

https://github.com/carlossg/docker-maven/blob/05f4802aa5c253dcf75fe967c6f45b3fb1e2f26e/jdk-8-alpine/Dockerfile

在Dockerfile的同级目录,将私服的settings.xml(自行准备好的),添加脚本放置到容器中

# 拷贝settings.xml到docker容器中的目录/usr/share/maven/ref/
COPY settings.xml /usr/share/maven/ref/

创建dockerfile进行前端编译环境的镜像搭建

参考官方教程:https://jenkins.io/doc/tutorials/build-a-node-js-and-react-app-with-npm/

由于前端项目搭建的比较老,需要的东西很复杂,复杂点:

  1. 编译环境最初为nodeV6.9.5
  2. 编译需要先安装babel-cli
  3. package.json中指定的两个依赖phontomjs的依赖会自己下载安装
  4. node-gyp的依赖
  5. node-sass的依赖
  6. 前端打包需要python环境???我想哭
  7. 前端打包需要的资源异常的多,4g内存加上4核心cpu

心路历程:

首先我使用apline-node镜像进行编译,发现跑起来需要python环境

使用apline-python的镜像编译,发现无法进行node环境的安装

使用解压方式基于apline-python的方式安装node,发现node跑步起来,操作系统不相同,依赖的环境也不相同

使用centos7-python的镜像发现Dockerfile编写的脚本没有权限

使用centos7的镜像,发现自带python的环境(欣喜若狂)制作node镜像很开心

制作完成之后,通过容器后台运行,将包拷贝到容器中编译没有问题,但是jenkins上run跑的是cat命令,执行就出现问题

最后最后我奔溃了......我觉得再这么搞下去没有价值,所以我决定放弃,因为现在我们项目决定前端使用antd-pro的脚手架了,所以老项目这么搞的参考价值不大了。

综合上述所述我决定放弃前端编译环境的搭建和学习!!!

配置后端启动环境

使用编译完成之后的构建物(就是部署包)在一个自己定义的容器中运行

配置前端启动环境镜像

同上,不过需要进行环境变量的设定,因为配置的获取需要自己定义

自动化运维部署

上平台:我所知道的平台K8s、容器化管理工具:RancherMaven触发构建后能够直接推送到仓库,然后仓库直接启动即可。可以通过jenkins直接启动

参考内容:

在这些操作中,我学会了最有用的几个命令:

  1. docker所有的容器后台启动命令
docker run -d <image-name> tail -f /dev/null
  1. docker 删除未运行的容器
docker container prune
  1. docker 删除镜像
docker rmi <imageId> <imageId> <imageId> <imageId> 
  1. 进入docker容器
docker exec -it <containerId> /bin/bash
  1. 通过Dockerfile编译镜像
docker build -t mynode:1.0 .

原文地址:https://www.cnblogs.com/fly-piglet/p/9934676.html

时间: 2024-09-30 19:03:13

JENKINS管道部署容器化初探的相关文章

持续集成与持续部署宝典Part 1:将构建环境容器化

介   绍 随着Docker项目及其相关生态系统逐渐成熟,容器已经开始被更多企业用在了更大规模的项目中.因此,我们需要一套连贯的工作流程和流水线来简化大规模项目的部署.在本指南中,我们将从代码开发.持续集成.持续部署以及零停机更新几个方面进行介绍.在大型组织中,这已是相当标准的工作流:但在本系列文章中,我们会更着重于探讨在容器时代,如何在基于Docker的环境中复制这些工作流.另外,我们还将详细介绍如何利用Docker和Rancher自动化处理这些工作流.在本指南中,我们提供了每个步骤的详细示例

.NET Core容器化之多容器应用部署-使用Docker-Compose

1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题. 2. Why Need Nginx .NET Core中默认的Web Server为Kestrel. Kestrel is great for serving dynamic content from ASP.NET, however the web serving parts aren’t as feature rich as

Flask容器化部署原理与实现

本文将介绍Flask的部署方案:Flask + Nginx + uWSGI,并使用docker进行容器化部署,部署的实例来源 Flask开发初探,操作系统为ubuntu. Flask系列文章: Flask开发初探 WSGI到底是什么 Flask源码分析一:服务启动 Flask路由内部实现原理 部署方案 在开发时,我们使用flask run命令启动的开发服务器是werkzeug提供的,但是这种方式目的是为了开发,不能很好的扩展,不适合生产部署.生产部署,我们需要一个更强健,性能更高的WSGI服务器

研发环境容器化实施过程(docker + docker-compose + jenkins)

目录 背景介绍 改造思路 容器构建 基础准备 中间件容器 外部依赖容器 业务应用容器 容器整合 自动构建容器 Maven相关 非Maven项目 总结 背景介绍 目前公司内部系统(代号GMS)研发团队,项目整体微服务规模大概是4+9+3的规模,4个内部业务微服务,9个是外部平台或者基础服务(文件资源/用户中心/网关/加密等),3个中间件服务(数据库/Redis/Nacos). 分为2个组,迭代周期为2周.需求和排期都是会有交叉,会保证每周都有迭代内容交付,另外技术部门也在进行性能优化以及代码规约的

Kubernetes 集群的两种部署过程(daemon部署和容器化部署)以及glusterfs的应用!

ClusterIp:通过VIP来访问, NodePort: 需要自己搭建负载据衡器 LoadBalancer:仅仅用于特定的云提供商 和 Google Container Engine https://www.nginx.com/blog/load-balancing-kubernetes-services-nginx-plus/ port:相当于服务端口(对及集群内客户访问) targetPort: 相当于pods端口 nodePort: 宿主机端口(也是服务端口,只不过是对集群外客户访问)

openstack 之 Kolla部署指南(容器化方式)

现在Openstack社区的安装部署方式已经开始推荐使用kolla进行部署,kolla项目现在包括两个子项目:kolla-ansible和kolla-kubernetes,其中kolla-ansible应用于生产环境案例多些并且使用广泛一些,本文档kolla是指kolla-ansible. kolla-ansible项目是基于ansible playbook的部署方式,原来openstack ansible的部署方式支持baremetel和lxc容器两种方式进行部署,kolla的部署方式是完全基

Spring Boot Tomcat 容器化部署实践与总结

在平时的工作和学习中经常会构建简单的web应用程序.如果只是HelloWorld级别的程序,使用传统的Spring+SpringMVC框架搭建得话会将大部分的时间花费在搭建框架本身上面,比如引入SpringMVC,配置DispatcheherServlet等.并且这些配置文件都差不多,重复这些劳动似乎意义不大.所以使用Springboot框架来搭建简单的应用程序显得十分的便捷和高效. 前两天在工作中需要一个用于测试文件下载的简单web程序,条件是使用Tomcat Docker Image作为载体

极简容器化交付 | 部署组件分析

之前给大家讲了构建镜像的原理,那么有了镜像之后,我们怎么样能将它快速的部署到kuberentes集群上呢? 早期,大家都习惯于使用kubernetes接口,或者cli命令行来完成这些操作,但是yaml文件语法的复杂性.大量容器和kuernetes的概念,让人难以理解,无疑成为容器化交付路上的又不障碍. 为了解决这些问题,华为云容器服务推出了向导式镜像部署,通过一步步引导.对复杂概念的屏蔽或抽象,在一定程度上降低了用户首次部署镜像的难度,但是灵活度相对较差,对于经常变更版本的场景,还是需要使用原生

Kolla 容器化部署Openstack

1.集群架构  其中e1,e2,e3 表示网卡. e1 所在网络为管理网. e2 为vm对外通信网卡,无需配置网络协议和ip地址: BOOTPROTO=none DEVICE=eth1 HWADDR=fa:16:3e:38:20:88 ONBOOT=yes TYPE=Ethernet USERCTL=no .... e3所在网络为osd集群通信网络 备注:操作系统为centos7.4 最小化安装 2. kolla容器化部署openstack及ceph集群 2.1 基础环境 以下操作在部署机执行