当前位置: 首页 > news >正文

郑州建设公司网站中国东盟建设集团有限公司网站

郑州建设公司网站,中国东盟建设集团有限公司网站,直播平台有哪些,响水建设局网站Docker部署运行 ​ 上一篇内容中使用Jenkins(运行服务器)Gitlab(代码存储库)Webhook(网络钩子)的方式部署运行我们的项目。需要我们在服务器上做好很多相关的环境配置及依赖。 ​ 那么假如有这样一个场景#xff1a;需要把不同技术栈的项目部署到同一台服务器上运行。比如PH…Docker部署运行 ​ 上一篇内容中使用Jenkins(运行服务器)Gitlab(代码存储库)Webhook(网络钩子)的方式部署运行我们的项目。需要我们在服务器上做好很多相关的环境配置及依赖。 ​ 那么假如有这样一个场景需要把不同技术栈的项目部署到同一台服务器上运行。比如PHP、.NET、Java、Python的程序都部署到同一台服务器那么可能由于各自依赖包及环境有冲突或依赖软件版本不同造成无法兼容的问题。 ​ 再假如企业需要搭建一套新的服务8台服务器每台都需要Java运行环境、Tomcat都需要去执行安装JDK、配置环境变量、Tomcat配置等相同的流程重复劳动。 ​ 那么要避免这些问题我们可以使用容器虚拟化技术如Docker。Docker能使环境隔离完美规避软件无法兼容的问题。只需要配置好一台服务器可以把镜像上传到仓库其他服务器直接拉取下来即可一键使用。 Docker介绍 ​ Docker是一个开源项目非常优秀的开源容器引擎基于Google公司推出的Go语言实现。Docker能将应用程序间环境隔离帮助用户更快交付部署高效利用宿主机资源。Docker很适合微服务架构单个容器运行单个程序。 ​ Docker有3个基本概念 镜像镜像定义了运行容器的资源用户可以使用Dockerfile自定义镜像可以看作它是由一条条指令构成容器镜像运行起来就是容器麻雀虽小五脏俱全它有自己的文件系统、网络、以及各种软件相当于是一个微型的操作系统仓库仓库主要用于存储存储镜像的地址。可将镜像上传至仓库也能从仓库上pull下来镜像(类似gitlab代码存储) Docker安装 安装Docker的官方文档地址https://docs.docker.com/engine/install/Docker支持安装在多种操作系统上Windows、Mac、Centos、Ubuntu等笔者这里选择Centos。一般安装一个CE版本的就可以了。 使用yum安装yum-utils软件包和设置稳定的存储库 yum -y install yum-utils # 安装yum-utils yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 设置存储库安装Docker CE和containerd yum -y install docker-ce coker-ce-cli containerd.io # 安装最新版上面那条命令是安装最新版若要安装指定版本先列出可用的版本列表 yum list docker-ce --showduplicates | sort -r选择一个版本安装 yum install docker-ce-VERSION_STRING docker-ce-cli-VERSION_STRING containerd.io # 安装指定版本用版本号替换掉VERSION_STRING即可安装完成后可以启动docker了 systemctl start docker # 启动 systemctl restart docker # 重启 systemctl stop docker # 关闭使用docker version看下docker是否安装完毕及版本号 Client: Docker Engine - CommunityVersion: 24.0.6API version: 1.43Go version: go1.20.7Git commit: ed223bcBuilt: Mon Sep 4 12:35:25 2023OS/Arch: linux/amd64Context: defaultServer: Docker Engine - CommunityEngine:Version: 24.0.6 ...Docker镜像加速器 Docker的镜像默认是在Docker Hub上下载的但是国内下载很慢下载大镜像时问题尤为突出甚至还会断开。我们可以使用其他的镜像源如阿里云只需要注册一个账号进入镜像服务点击镜像加速器可以免费获取一个镜像加速的地址。 命令贴到这里 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF {registry-mirrors: [https://6yqx5sih.mirror.aliyuncs.com] } EOF sudo systemctl daemon-reload sudo systemctl restart docker由于本文针对Docker部署运行项目的需要点Docker的基础一些常用的Docker命令就不再赘述了可以到网上查看一些资料。 Dockerfile常用指令 介绍下Dockerfile的常用指令 命令含义FROM image_name:tag依赖的基础镜像MAINTAINER name镜像作者维护者ENV key value设置环境变量RUN command编译镜像时运行的命令CMD启动容器时运行的命令ENTRYPOINT设置容器的入口程序ADD source target复制文件若是压缩包复制后会自动解压路径只能是构建时的上下文内COPY source target与ADD指令类似但压缩文件不会被解压路径只能是构建时的上下文内WORKDIR path指定工作目录ARG设置编译镜像时加入的参数VOLUME指定挂载的目录EXPOSE声明暴露的端口LABEL添加元数据到镜像USER设置运行镜像时的用户或UID后续的RUN也会使用指定的用户 Docker部署运行项目 现在可以编写Dockerfile文件构建出镜像然后通过镜像创建容器启动。 还以上篇文章的三个jar包为例(一个消费者两个生产者)为它们创建Dockerfile文件。 消费者Dockerfile FROM java:8 COPY consumer-1.0-SNAPSHOT.jar consumer-1.0-SNAPSHOT.jar # 复制jar包 EXPOSE 9001 ENTRYPOINT [java,-jar,consumer-1.0-SNAPSHOT.jar] # 启动jar包TIPS:文件名称最好命名为Dockerfile构建镜像的命令可以省事儿且jar包需要在构建的上下文内。 生产者1 FROM java:8 COPY provider-8001-1.0-SNAPSHOT.jar provider-8001-1.0-SNAPSHOT.jar # 复制jar包 EXPOSE 8001 ENTRYPOINT [java,-jar,provider-8001-1.0-SNAPSHOT.jar] # 启动jar包生产者2 FROM java:8 COPY provider-8002-1.0-SNAPSHOT.jar provider-8002-1.0-SNAPSHOT.jar # 复制jar包 EXPOSE 8002 ENTRYPOINT [java,-jar,provider-8002-1.0-SNAPSHOT.jar] # 启动jar包分别到三个Dockerfile所在目录下执行构建命令 docker build -t consumer:0.0.1-SNAPSHOT . docker build -t provider1:0.0.1-SNAPSHOT . docker build -t provider2:0.0.1-SNAPSHOT .后面有个.代表Dockerfile文件的相对位置表示当前路径 运行完毕后docker images查看镜像 3个镜像就已经构建完毕了分别创建它们的启动容器启动即可。 docker run --name consumer -d -p 9001:9001 consumer:0.0.1-SNAPSHOT docker run --name provider1 -d -p 8001:8001 provider1:0.0.1-SNAPSHOT docker run --name provider2 -d -p 8002:8002 provider2:0.0.1-SNAPSHOTdocker ps查看下运行的容器 JenkinsGitlabDocker普通部署运行 上面介绍的是简单的Docker部署运行那么完整的一整套流程采用JenkinsGitlabDocker的方式部署运行。 在消费者和提供者项目的pom.xml文件中增加插件docker-maven-plugin plugingroupIdcom.spotify/groupIdartifactIddocker-maven-plugin/artifactIdversion0.4.13/versionconfigurationimageName${artifactId}:${version}/imageName!--镜像名称--baseImagejava:8/baseImage!--依赖的基础镜像--entryPoint[java,-jar,${project.build.finalName}.jar]/entryPointresourcesresourcetargetPath//targetPathdirectory${project.build.directory}/directory!--表示target目录--include${project.build.finalName}.jar/include!--表示要复制的文件--/resource/resources/configuration /plugin定位到服务器Maven安装目录下修改conf/settings.xml文件在pluginGroups标签下新增docker插件的配置 pluginGroupcom.spotify/pluginGroup若无此配置打包将会报错No plugin found for prefix ‘docker’ in the current project and in the plugin groups. 到Jenkins项目主界面点击配置修改之前的配置定位到构建(Build)一栏 第一步先执行脚本因为镜像和容器名称都不能重复所以这段脚本会停止正在运行的容器删除以前的镜像和容器 array(consumer provider-8001 provider-8002) for item in ${array[]}; doinstance$(docker ps -a | grep $item | head -1);#查找这个容器image$(docker images | grep $item | awk {print $1} | head -1);#查找镜像if [ $instancex ! x ] ; thendocker stop $item # 停止容器docker rm $item # 删除容器fiif [ $imagex ! x ] ; thendocker rmi $item:1.0-SNAPSHOT # 删除镜像fi done第二步执行打包构建镜像 clean package docker:build第三步创建并执行容器 docker run --name consumer -d -p 9001:9001 consumer:1.0-SNAPSHOT docker run --name provider-8001 -d -p 8001:8001 provider-8001:1.0-SNAPSHOT docker run --name provider-8002 -d -p 8002:8002 provider-8002:1.0-SNAPSHOT完事儿后提交下代码到gitlab然后webhook或手动触发一下构建即可。执行完毕后看到images和容器都已经创建好并且容器已经启动。 JenkinsGitlabDockerfile部署运行 当遇到比较复杂的场景时我们可以使用Dockerfile的方式。具体如下 首先修改项目的pom.xml文件 plugingroupIdcom.spotify/groupIdartifactIddocker-maven-plugin/artifactIdversion0.4.13/versionconfigurationimageName${artifactId}:${version}/imageName!--镜像名称--dockerDirectory${project.basedir}/src/main/docker/dockerDirectory!--Dockerfile的文件位置--resourcesresourcetargetPath//targetPathdirectory${project.build.directory}/directory!--表示target目录--include${project.build.finalName}.jar/include!--表示要复制的文件--/resource/resources/configuration /plugin那么就需要在项目(各个子工程)的根目录/src/main下创建一个docker的目录再创建一个Dockerfile文件 消费者Dockerfile FROM java:8 COPY consumer-1.0-SNAPSHOT.jar consumer-1.0-SNAPSHOT.jar # 复制jar包 EXPOSE 9001 ENTRYPOINT [java,-jar,consumer-1.0-SNAPSHOT.jar] # 启动jar包其他两个生产者 FROM java:8 COPY provider-8001-1.0-SNAPSHOT.jar provider-8001-1.0-SNAPSHOT.jar # 复制jar包 EXPOSE 8001 ENTRYPOINT [java,-jar,provider-8001-1.0-SNAPSHOT.jar] # 启动jar包FROM java:8 COPY provider-8002-1.0-SNAPSHOT.jar provider-8002-1.0-SNAPSHOT.jar # 复制jar包 EXPOSE 8002 ENTRYPOINT [java,-jar,provider-8002-1.0-SNAPSHOT.jar] # 启动jar包完事儿后在Jenkins重新构建项目即可。 看到这里可能会有读者比较迷茫Dockerfile中的COPY指令执行时打包后的jar包是否和Dockerfile文件在同一上下文中呢 其实在项目的pom.xml中引入的docker打包插件已经考虑到这种情况了它会将你的打包后的jar包和Dockerfile文件拷贝到target/docker的目录下这时你就不需要担心构建时不在同一目录的问题了。
http://www.hkea.cn/news/14527885/

相关文章:

  • 麻涌镇网站仿做网站营销建设策划案
  • logo成品效果图网站汽车 营销 网站建设
  • 精美网站模板下载液体硅胶 技术支持 东莞网站建设
  • 网站信息架构宁波网站建设有限公司
  • 网站平台建设方案的难点重点修改wordpress时区
  • 网站不备案做电影网站界面设计优秀的网站有哪些
  • 手机网站开发方式中小型网站建设咨询
  • 虚拟主机怎么搭建网站wordpress 全站404
  • 太原网站制作定制开发扬州市住房建设局网站
  • 跨境电商建站好的品牌设计网站有哪些
  • 海北营销网站建设公司怎么做像天猫类似的网站
  • 网站大部分都是jsp做的咸阳 网站建设
  • 网站规划和建设方案申请个人企业邮箱
  • 做电气设计有哪些好的网站织梦网站怎么加入引导页
  • 网站建设结构方案中英文外贸网站源码
  • 广州网站程序开发希爱力
  • 计算机网站建设体会巴中市建设局网站
  • 西安监控系统网站开发谷歌搜索引擎免费入口镜像
  • 外贸联系网站精品课程网站开发关键技术
  • 建设部网站监理工程师报名wordpress欢迎主题
  • 建设银行北京分行招聘网站网站建设佰首选金手指五
  • 专门做超市dm网站鲜花网站怎么做
  • 盐城整站优化邢台网约车
  • 无锡网站建设培训学校wordpress搭建微信小程序
  • 个人网站首页公司网站建设费用
  • 成都网络推广网站营销型网站与展示型网站
  • 招聘网站怎么做seo摄影网站规划设计书
  • 烟台网站搭建wordpress自建表格
  • 建大网站首页商派商城网站建设
  • 手机怎么上wap网站ui设计通常是指