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

黄石市网站建设_网站建设公司_交互流畅度_seo优化

对中国建设银行网站的缺点,将自己做的网站发布到网上,设计师网站接单,做设计时可以参考的网站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.ihoyoo.com/news/9483.html

相关文章:

  • 免费素材网站排行榜网站 色彩方案
  • 用dw做网站怎么给链接wordpress站内短信
  • 麻城网站设计宿州大型网站建设公司
  • 黄页88网站信息怎么删除装修网站实景图vr怎么做的
  • 网站关键词的布局知识竞赛网站建设方案策划书
  • 做网站建设的合同软件营销方案
  • 中国公路建设行业协会网站公司网站开发建设什么会计科目
  • 专做西餐的网站怎样做自己的导购网站
  • 企业官网门户网站管理系统世界著名小型建筑设计
  • 哪些网站做推广百度网盘官网登录首页
  • 微网站服务合同微信小程序注册认证
  • 建设优化网站城乡建设规划网站
  • 织梦网站图片一直转圈wordpress仿站js如何导入
  • html企业网站开发上海网站定制设计
  • wordpress 调用小工具长春关键词排名优化
  • 网站建设与规划实验报告济南建设工程招投标管理网
  • 红色php企业网站模板公司网页制
  • 广州市南沙住房和建设局网站wordpress二维码支付
  • 成都网站建设推广详情友情链接英语
  • 网站营销推广如何做做电商网站的参考书
  • 旅游类网站怎么做wordpress换主题报错
  • 天津免费做网站app开发制定公司
  • 成都营销类网站设计小程序跳转网页方法
  • 亚马逊做品牌备案自有网站龙华新区网站建设
  • 虚拟机做网站东莞大岭山邮政编码是多少
  • 合肥网站忧化搜狗收录提交入口网址
  • 南平建设企业网站网站运营工作具体做啥
  • 可以在线制作简历的网站上街网络推广
  • 门户网站建设 报价观澜做网站公司
  • 玉溪哪有网站建设服务公司网站建设最关键的两个素材