公司移动端的网站模板下载,网站设计目前和将来的就业前景,网络营销战略模式,商丘网站建设公司Day119 dockerjenkins
1.Dockerfile Dockerfile 可以用于项目部署。通过编写 Dockerfile#xff0c;可以将整个项目及其所需的依赖项打包到一个 Docker 镜像中#xff0c;然后在任何支持 Docker 的环境中部署和运行该镜像 Dockerfile 是用于构建 Docker 镜像的文本文件。它包…Day119 dockerjenkins
1.Dockerfile Dockerfile 可以用于项目部署。通过编写 Dockerfile可以将整个项目及其所需的依赖项打包到一个 Docker 镜像中然后在任何支持 Docker 的环境中部署和运行该镜像 Dockerfile 是用于构建 Docker 镜像的文本文件。它包含一系列的指令用于描述如何从一个基础镜像构建一个新的镜像并在其中安装和配置软件环境 1.1 编写Dockerfile
1.1.1 准备工作 1.idea中对springboot项目打包生产一个jar文件 注意先clean再package 2.jar文件上传到Linux 1.1.2 创建Dockerfile文件
vim dockerfile编写dockerfile 保存 FROM openjdk:8
MAINTAINER pcb
ADD FrameworkLearn-0.0.1-SNAPSHOT.jar /FrameworkLearn.jar #前一个是打包之后的名字后面一个是重命名的名字
EXPOSE 1002 #要和后端项目的一致
ENTRYPOINT [java,-jar,/FrameworkLearn.jar] #重命名的jar名字1.1.3 构建镜像 images
docker build -t demo1234:latest -f Dockerfile .如果没有安装docker就看Day95 docker安装 1.1.4 查看创建的镜像
docker images1.1.5 创建容器
docker run -id --name demo1234 -p 1002:1002 demo:latest #:1002要和项目的端口一致前面那个无所谓
docker ps
docker logs -f demo12341.2 文件详解
1.2.1 Dockerfile 文件
FROM openjdk:8
MAINTAINER pcb
ADD FrameworkLearn-0.0.1-SNAPSHOT.jar /FrameworkLearn.jar #前一个是打包之后的名字后面一个是重命名的名字
EXPOSE 1002 #要和后端项目的一致
ENTRYPOINT [java,-jar,/FrameworkLearn.jar] #重命名的jar名字1.FROM openjdk:8 指定基础镜像为 openjdk:8 表示该镜像将以 OpenJDK 1.8 作为基础环境 2.MAINTAINER pcb 设置镜像的作者 3.ADD FrameworkLearn-0.0.1-SNAPSHOT.jar /FrameworkLearn.jar 将主机上的 FrameworkLearn-0.0.1-SNAPSHOT.jar 文件添加到镜像中并指定目标路径为 FrameworkLearn.jar 4.EXPOSE 9999 声明容器将监听的端口号为 9999要和后端项目的一致 5.ENTRYPOINT [“java”,“-jar”,“/FrameworkLearn.jar”]设置容器的入口点指定在容器启动时要运行的命令。这里的配置表示以 Java 命令执行 /FrameworkLearn.jar 文件即运行主类为 /FrameworkLearn.jar 的 Java 应用程序 1.2.2 构建镜像
docker build -t demo1234:latest -f Dockerfile .-t 选项 用于指定构建镜像后的镜像名称和标签格式为 -t 镜像名称:标签 可以自定义镜像名称和标签 -f 选项 用于指定要使用的 Dockerfile 文件 默认情况下 docker build 命令会在构建上下文中寻找名为 Dockerfile 的文件进行构建 使用 -f 选项可以指定其他名称的 Dockerfile 文件以便构建时使用不同的 Dockerfile . 选项 表示 Dockerfile 文件所在的路径是当前路径 2.Docker Compose Docker Compose 是一个用于定义和管理多个 Docker 容器的工具。Docker Compose 提供了一种声明性的方式来定义和管理多个 Docker 容器从而实现服务编排。通过一个单独的 YAML 文件您可以定义各个服务的配置、依赖关系、网络连接和卷挂载等信息 2.1 安装 第一种docker-compose离线安装文件docker-compose-linux-x86_64 下载地址https://github.com/docker/compose/releases/download/v2.15.1/docker-compose-linux-x86_64 进入/usr/local/bin目录上传文件对文件重命名然后赋予执行权限 cd /usr/local/bin
mv docker-compose-linux-aarch64 docker-compose
sudo chmod x docker-compose查看docker-compose版本号 docker-compose --version第二种sudo curl -L “https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-(uname−s)−(uname -s)-(uname−s)−(uname -m)” -o /usr/local/bin/docker-compose 安装 设置权限 sudo chmod x /usr/local/bin/docker-compose 2.2 创建MySQL与Redis服务 目标通过docker-compose创建MySQL与Redis容器 它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML格式)来定义一组相关联的应用容器为一个项目(project) 1.先创建文件docker-compose.yml vim docker-compose.yml2.编写文件(注意格式缩进问题yaml格式) version: 3.0services:mysqldb:image: mysql:8.0container_name: mysqlports:- 3306:3306volumes:- /root/mysql/conf:/etc/mysql/conf.d- /root/mysql/logs:/logs- /root/mysql/data:/var/lib/mysqlenvironment:MYSQL_ROOT_PASSWORD: rootdepends_on:- redisredis:image: redis:6.2.7container_name: redis ports:- 6379:6379volumes:- /root/redis/data:/datacommand: redis-server3.运行文件 # 默认运行当前目录下的 docker-compose.yml 文件
# 如果 docker-compose.yml 文件不在当前目录可以使用 -f 选项指定文件路径
docker-compose up
# -d 将容器设置为在后台运行
docker-compose up -d
# -f 指定文件名
docker-compose -f /path/to/docker-compose.yml up -d2.3 测试项目 1.创建一个 init.sql 文件放在项目目录下 2.创建文件vim docker-compose-project.yml version: 3.0
services:mysql:image: mysql:8.0restart: alwayscontainer_name: mysql8.0command: --default-authentication-pluginmysql_native_password # 解决外部无法访问volumes:- ./data:/var/lib/mysql #挂载目录持久化存储- ./init.sql:/docker-entrypoint-initdb.d/init.sqlports:- 3306:3306 # 容器端口映射到宿主机的端口environment:MYSQL_ROOT_PASSWORD: root #设置密码是root账号是rootMYSQL_ALLOW_EMPTY_PASSWORD: noMYSQL_DATABASE: securityrabcmydemo: # 自己单独的springboot项目container_name: demohostname: jetbuild: ./ # 需要构建的Dockerfile文件ports:- 8080:8080depends_on:- mysqlframeworklearn:image: openjdk:8-jdk-alpine # 使用Alpine版本的OpenJDK镜像container_name: frameworklearnworking_dir: /root/pcb volumes:- ./FrameworkLearn-0.0.1-SNAPSHOT.jar:/root/pcb/FrameworkLearn-0.0.1-SNAPSHOT.jar command: [java, -jar, /root/pcb/FrameworkLearn-0.0.1-SNAPSHOT.jar] # 启动命令ports:- 1002:1002 # 容器端口映射到宿主机的端口depends_on: # web服务依赖mysql服务要等mysql服务先启动- mysql 3.运行 docker-compose -f docker-compose-project.yml up -d打印日志 docker-compose -f docker-compose-project.yml logs frameworklearn注意 服务器要开放1002端口 代码里面的yaml文件 server:# 服务端口port: 1002# 应用上下文路径servlet:context-path: /FrameworkLearntomcat:uri-encoding: UTF-8spring:# 数据源配置Druiddatasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverdruid:url: jdbc:mysql://mysql:3306/securityrabc?characterEncodingutf-8 #修改为mysql:3306username: rootpassword: root运行 http://47.108.146.63:1002/FrameworkLearn/test1 3.CICD
3.1 概念 CICD持续集成/持续发布—开发(git) -- git主库 – jenkins(gitjdktomcatmaven打包测试– 发布到tomcat服务器 Jenkins是一个功能强大的应用程序允许持续集成和持续交付项目无论用的是什么平台。这是一个免费的源代码可以处理任何类型的构建或持续集成。集成Jenkins可以用于一些测试和部署技术Jenkins是一种软件 3.2 CI / CD 方法简介 软件开发的连续方法基于自动执行脚本以最大限度地减少在开发应用程序时引入错误的可能性。从新代码的开发到部署它们需要较少的人为干预甚至根本不需要干预 它涉及在每次小迭代中不断构建测试和部署代码更改从而减少基于有缺陷或失败的先前版本开发新代码的机会 这种方法有三种主要方法每种方法都根据最适合您的策略进行应用。 持续集成( CI)代码合并构建部署测试都在一起不断地执行这个过程并对结果反馈 持续部署(CD)部署到测试环境、预生产环境/灰度环境、生产环境 持续交付(CD)将最终产品发布到生产环境、给用户使用 4.Jenkins 姐肯死 概述 Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布 我们通过配置将以前编译、打包、上传、部署到Tomcat中的过程交由JenkinsJenkins通过给定的代码地址URL(代码仓库地址)将代码拉取到其“宿主服务器”Jenkins的安装位置进行编译、打包和发布到Tomcat容器中 Jenkins目标 1.持续、自动地构建/测试软件项目 2.监控软件开放流程快速问题定位及处理提高开发效率 Jenkins特性 1.开源的java语言开发持续集成工具支持CICD 2.易于安装部署配置可通过yum安装或下载war包以及通过docker容器等快速实现安装部署可方便web界面配置管理 3.消息通知及测试报告集成RSS/E-mail通过RSS发布构建结果或当构建完成时通过e-mail通知生成JUnit测试报告 4.分布式构建支持Jenkins能够让多台计算机一起构建/测试 工作流程 1.首先开发人员将代码提交到 Git 仓库 2.然后 Jenkins 使用 Git 插件来拉取 Git 仓库的代码然后配合 JDK、Maven 等软件完成代码编译 测试、审查、测试和打包等工作 3.最后 Jenkins 将生成的 jar/war 推送到 测试/生产 服务器 供用户访问 4.整套步骤下来作为开发人员我们只需要提交下代码剩下的工作都交给了 Jenkins 4.1 环境准备 安装jdk、maven、git、docker、docker-compose 4.1.1 安装jdk
yum install java-1.8.0-openjdk.x86_64
java -version4.1.2 安装maven 下载 maven linux版本 https://maven.apache.org/download.cgi 上传到linux 下面的opt下面的soft 解压到/usr/local/ tar -xvf apache-maven-3.9.11-bin.tar.gz -C /usr/local配置maven仓库设置阿里镜像仓库 cd /usr/local
cd apache-maven-3.9.11
mkdir ck #创建ck仓库存储目录进入cd conf目录编辑 vi settings.xml文件 配置maven的仓库位置
cd conf # 进入conf目录
vi settings.xml # settings.xm文件localRepository/usr/local/apache-maven-3.9.11/ck/localRepositorymirroridalimaven/idnamealiyun maven/nameurlhttp://maven.aliyun.com/nexus/content/groups/public//urlmirrorOfcentral/mirrorOf
/mirror配置maven环境变量 vi /etc/profileexport MAVEN_HOME/usr/local/apache-maven-3.6.3
export PATH$PATH:$MAVEN_HOME/binsource /etc/profile #重新加载,使新增配置生效mvn -v4.1.3 安装git
yum -y install git # 安装
git version # 安装是否成功4.2 安装Jenkins 1.下载rpm文件Index of jenkins-local/redhat选择合适的版本。这里我选择了jenkins-2.344-1.1.noarch.rpm因为低版本很多插件不支持要更新版本 2.新建目录存放安装包 cd /optmkdir jenkins # 新建目录rpm -ivh jenkins-2.344-1.1.noarch.rpm # 上传.rpm文件之后,安装3.查看Jenkins的相关目录rpm -ql jenkins 4.修改配置文件 vim /usr/lib/systemd/system/jenkins.service # 修改用户和权限
Userroot
Grouproot# 修改JDK路径
Environment/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.462.b08-2.0.1.1.al8.x86_64/jre # 修改启动端口
EnvironmentJENKINS_PORT360805.刷新配置文件 systemctl daemon-reload 6.开启防火墙和指定端口 # 开启防火墙
systemctl start firewalld
# 开放指定端口
firewall-cmd --zonepublic --add-port36080/tcp --permanent
# 重启防火墙
firewall-cmd --reload
# 查看所有端口使用情况
netstat -ntlp 7.服务器开放63080端口 8.启动Jenkins访问 # 启动
systemctl start jenkins
# 停止
systemctl stop jenkins9.启动完成后输入服务器ip端口访问初次访问会有一个初始密码 cat /var/lib/jenkins/secrets/initialAdminPassword #查看初始密码注意记得下载中文插件及设置密码