外贸网站搭建推广,网站logo图怎么做的,flash网站代码,自己公司做公益网站怎么弄文章目录 前言准备实操1、打开docker的远程访问2、编写dockerfile文件3、指定nexus环境4、配置jenkins5、使用jenkins构建 总结 前言 Docker部署项目是指使用Docker容器化技术将应用程序及其依赖项打包成一个独立的、可移植的运行环境#xff0c;并在各种操作系统和平台上进行… 文章目录 前言准备实操1、打开docker的远程访问2、编写dockerfile文件3、指定nexus环境4、配置jenkins5、使用jenkins构建 总结 前言 Docker部署项目是指使用Docker容器化技术将应用程序及其依赖项打包成一个独立的、可移植的运行环境并在各种操作系统和平台上进行部署和运行。 使用Docker的主要原因是解决了应用程序在不同环境中部署和运行的问题。传统上应用程序在部署时需要考虑操作系统、软件版本、依赖项等因素不同环境之间存在差异导致部署和运维变得复杂。 Docker可以将应用程序及其所有依赖项打包成一个独立的容器该容器包含了应用程序运行所需的所有组件如操作系统、库、运行时环境等。这样无论在哪个环境中部署只需要安装Docker并运行容器就可以保证应用程序在各个环境中的一致性和可移植性。 准备
maven项目javanexus镜像仓库gitLab代码仓库jenkins构建工具安装了docker的服务器 实操
1、打开docker的远程访问 Docker 安装成功之后首先需要修改 Docker 配置来开启允许远程访问 Docker 的功能。 文件位置/lib/systemd/system/docker.service 修改内容: 加入如下内容
DOCKER_OPTS-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock服务器开放2375端口
firewall-cmd --zonepublic --add-port2375/tcp --permanent
systemctl restart firewalld重启docker
systemctl daemon-reload
systemctl restart docker2、编写dockerfile文件 dockerfile文件用来生成docker镜像镜像就像安装包可以运行为一个个的容器。 将dockerfile文件放到resource文件夹下。
FROM openjdk:11
# 将jar包添加到容器中并命名为 demo.jar
COPY merit-excitation-*.jar /home/admin/merit-backend/merit-excitation-*.jar
#COPY agent /home/admin/agent
# 设置环境变量
ENV SPRING_NACOS_SERVERADDRESSnacos.tfjy.tech:8848
ENV SPRING_NACOS_NAMESPACEmerit-test
# 设置时区
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo Asia/Shanghai /etc/timezone
# 启动jar包命令
#CMD java -javaagent:/home/admin/agent/skywalking-agent.jar -DSW_AGENT_NAMEmerit-excitation -DSW_AGENT_COLLECTOR_BACKEND_SERVICESskywalking.tfjy.tech:11800 -Xms228m -Xmx228m -Dspring.cloud.nacos.config.server-addr${SPRING_NACOS_SERVERADDRESS} -Dspring.cloud.nacos.config.namespace${SPRING_NACOS_NAMESPACE} -Dspring.cloud.nacos.config.usernamemerit -Dspring.cloud.nacos.config.passwordmerit -Dspring.cloud.nacos.discovery.server-addr${SPRING_NACOS_SERVERADDRESS} -Dspring.cloud.nacos.discovery.namespace${SPRING_NACOS_NAMESPACE} -Dspring.cloud.nacos.discovery.usernamemerit -Dspring.cloud.nacos.discovery.passwordmerit -jar /home/admin/merit-backend/merit-excitation-*.jar
CMD java -Xms228m -Xmx228m -Dspring.cloud.nacos.config.server-addr${SPRING_NACOS_SERVERADDRESS} -Dspring.cloud.nacos.config.namespace${SPRING_NACOS_NAMESPACE} -Dspring.cloud.nacos.config.usernamemerit -Dspring.cloud.nacos.config.passwordmerit -Dspring.cloud.nacos.discovery.server-addr${SPRING_NACOS_SERVERADDRESS} -Dspring.cloud.nacos.discovery.namespace${SPRING_NACOS_NAMESPACE} -Dspring.cloud.nacos.discovery.usernamemerit -Dspring.cloud.nacos.discovery.passwordmerit -jar /home/admin/merit-backend/merit-excitation-*.jar
# SpringBoot项目配置的端口号为9001需要将9001暴露出去
EXPOSE 9071 3、指定nexus环境 父pom profilesprofile!--不同环境Profile的唯一id--iddev/idproperties!--profiles.active是自定义的字段名字随便起自定义字段可以有多个--profiles.activedev/profiles.active/properties/profileprofileidprod/idpropertiesprofiles.activeprod/profiles.activedocker-urlhttp://192.168.0.100:2375/docker-url/properties/profileprofileidtest/idpropertiesprofiles.activetest/profiles.activedocker-urlhttp://192.168.0.200:2375/docker-url/propertiesactivationactiveByDefaulttrue/activeByDefault/activation/profile/profiles子pom parentartifactIdmerit-backend/artifactIdgroupIdcom.xxx/groupIdversion1.0.15/version/parentmodelVersion4.0.0/modelVersionartifactIdmerit-template/artifactIdpropertiesmaven.compiler.source11/maven.compiler.sourcemaven.compiler.target11/maven.compiler.targetregistry-url192.168.0.xxx:8083/registry-urlskipTeststrue/skipTests!--编译打包跳过测试类--/propertiesbuildfinalName${project.artifactId}-${project.parent.version}/finalNamepluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/pluginplugingroupIdcom.spotify/groupIdartifactIddocker-maven-plugin/artifactIdversion1.2.2/versionconfigurationserverIddocker-local/serverIddockerHost${docker-url}/dockerHostimageName${registry-url}/${project.artifactId}-${profiles.active}:${project.parent.version}/imageName!--nexus3 hosted 仓库地址--registryUrl${registry-url}/registryUrl!-- 在生成图像后将其推入的标志。默认为false --pushImagetrue/pushImageimageTags!-- 指定镜像标签,可以排至多个标签 --imageTag${project.version}/imageTag/imageTags!--是否强制覆盖已有镜像--forceTagstrue/forceTags!--方式一1、指定Dockerfile文件所在目录通过文件执行打包上传nexus私服--dockerDirectorysrc/main/resources/dockerDirectory!-- 指定docker镜像打包参数即dockerfile中使用的参数通过${参数名}取值 --buildArgsJAR_FILE${project.build.finalName}.jar/JAR_FILE/buildArgsresourcesresourcetargetPath//targetPath!--指定需要复制的根目录${project.build.directory}表示target目录--directory${project.build.directory}/directory!--用于指定需要复制的文件${project.build.finalName}.jar表示打包后的jar包文件--include${project.build.finalName}.jar/include/resource/resources/configuration/plugin/plugins/build4、配置jenkins 新建一个maven项目的任务 旧版本管理 设置参数 设置git指定代码分支 打包镜像的命令
#!/bin/bashecho admin | sudo -S docker stop merit-excitation
# 删除旧的容器
echo admin | sudo -S docker rm -f merit-excitation
# 删除旧版镜像
echo admin | sudo -S docker rmi 192.168.0.xxx:8083/merit-excitation-prod:${old_version}
#删除所有悬空镜像
echo admin | sudo -S docker rmi $(echo admin | sudo -S docker images -f danglingtrue -q)
# 启动镜像
echo admin | sudo -S docker run --nethost --restartalways -d --name merit-excitation -p 9071:9071 -e SPRING_NACOS_NAMESPACEmerit-prod -v /home/admin/logs:/logs 192.168.0.xxx:8083/merit-excitation-prod:${new_version}exit5、使用jenkins构建 构建时要删除旧版镜像根据版本号删除镜像防止占用服务器空间。 总结 配置好以后把镜像推到服务器上运行就很简单了。