流媒体网站建设方案建网站为什么每年都要续费
- 作者: 五速梦信息网
- 时间: 2026年03月21日 10:28
当前位置: 首页 > 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的目录下这时你就不需要担心构建时不在同一目录的问题了。
- 上一篇: 流量型网站昆明建设网站的公司
- 下一篇: 柳市网站托管山东省住房和城乡建设厅网站定额站
相关文章
-
流量型网站昆明建设网站的公司
流量型网站昆明建设网站的公司
- 技术栈
- 2026年03月21日
-
流量网站制作网站备案有什么风险
流量网站制作网站备案有什么风险
- 技术栈
- 2026年03月21日
-
流量统计网站推广法国外用的网站
流量统计网站推广法国外用的网站
- 技术栈
- 2026年03月21日
-
柳市网站托管山东省住房和城乡建设厅网站定额站
柳市网站托管山东省住房和城乡建设厅网站定额站
- 技术栈
- 2026年03月21日
-
柳州城乡建设部网站首页平面设计接单赚钱平台
柳州城乡建设部网站首页平面设计接单赚钱平台
- 技术栈
- 2026年03月21日
-
柳州关键词优化网站军事新闻今天
柳州关键词优化网站军事新闻今天
- 技术栈
- 2026年03月21日
