Docker+Gitlab+Jenkins+Springboot

news2025/2/21 23:27:02

安装Gitlab

开放防火墙端口80和配置映射文件夹

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload
mkdir -p /docker_data/gitlab/{data,logs,config}

启动Gitlab容器(启动容器之前确保80,443端口没用被占用,被占用就改成其它的。这个启动比较费时,我差点认为它没跑起来!

docker run -d --hostname 192.168.1.11 -p 80:80 -p 443:443 --privileged=true --restart=always -v /docker_data/gitlab/config:/etc/gitlab -v /docker_data/gitlab/data:/var/opt/gitlab -v /docker_data/gitlab/logs:/var/log/gitlab --shm-size 256m --name gitlab-ce-15.6.2 gitlab/gitlab-ce:15.6.2-ce.0

获取Gitlab密码(gitlab-ce-15.6.2是容器名称,我个人习惯用容器名称 - 版本号命名

docker exec -it gitlab-ce-15.6.2 grep 'Password:' /etc/gitlab/initial_root_password

ip:80访问,账号:root,密码就是上面那行命令输出的。
太长了分开写《docker安装Gitlab》

安装jenkins(建议和Gitlab服务器分开

宿主机安装jdk

《Linux之Centos7安装JDK17》
警告:想装jdk8就下载jdk8,但是jenkins也要相应的下载jdk8版本的。否则项目有可能无法启动!!!

宿主机安装maven

wget -P /usr/local/ https://archive.apache.org/dist/maven/maven-3/3.8.1/binaries/apache-maven-3.8.1-bin.tar.gz

解压到指定文件夹然后改成和jenkins容器内一致的路径,以及创建依赖存储文件夹

tar -zxvf /usr/local/apache-maven-3.8.1-bin.tar.gz -C /usr/local/
mv /usr/local/apache-maven-3.8.1 /usr/local/maven
mkdir -p /usr/local/maven/repository

设置环境变量

vim /etc/profile

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL追加内容

# maven
export MAVEN_HOME=/usr/local/maven
export PATH=$PATH:$MAVEN_HOME/bin

保存,使配置文件生效并查看maven是否配置成功

source /etc/profile
mvn -version

配置镜像

vim /usr/local/maven/conf/settings.xml

设置依赖仓库和替换掉整个mirrors

<localRepository>/usr/local/maven/repository</localRepository>
<mirrors>
    <mirror>
            <id>aliyunmaven</id>
            <mirrorOf>*</mirrorOf>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/public</url>
        </mirror>
        <!--        spring-->
        <mirror>
            <id>aliyunmaven</id>
            <mirrorOf>*</mirrorOf>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/spring</url>
        </mirror>
        <!--        spring-plugin-->
        <mirror>
            <id>aliyunmaven</id>
            <mirrorOf>*</mirrorOf>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/spring-plugin</url>
        </mirror>
        <!--        google-->
        <mirror>
            <id>aliyunmaven</id>
            <mirrorOf>*</mirrorOf>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/google</url>
        </mirror>
        <!--        grails-core-->
        <mirror>
            <id>aliyunmaven</id>
            <mirrorOf>*</mirrorOf>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/grails-core</url>
        </mirror>
        <!--        apache snapshots-->
        <mirror>
            <id>aliyunmaven</id>
            <mirrorOf>*</mirrorOf>
            <name>阿里云公共仓库</name>
            <url>https://maven.aliyun.com/repository/apache-snapshots</url>
        </mirror>
  </mirrors>

宿主机安装git

《Git压缩包tar.gz下载》
在这里插入图片描述
git相关依赖

yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum -y install gcc-c++ perl-ExtUtils-MakeMaker

上传到linux服务器的usr/loacl/目录下解压

tar -zxvf /usr/local/v2.39.0.tar.gz -C /usr/local/

安装git

cd /usr/local/git-2.39.0/
make prefix=/usr/local/git-2.39 all
make prefix=/usr/local/git-2.39 install

配置环境变量

vim /etc/profile

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL追加内容

# git
export GIT_HOME=/usr/local/git-2.39
export PATH=$GIT_HOME/bin:$PATH

保存,使配置文件生效并查看git是否安装成功

source /etc/profile
git -v

安装jenkins

开放防护墙端口和创建宿主机文件夹

firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
mkdir -p /docker_data/jenkins/home

-u 0表示使用超级管理员启动
jdk17(版本17.0.4)

docker run -u root -d -p 8080:8080 -p 50000:50000 --privileged=true --restart=always -v /usr/local/java/jdk-17.0.4:/usr/local/jdk -v /usr/local/apache-maven-3.8.1:/usr/local/maven -v /usr/local/git-2.39:/usr/local/git -v /docker_data/jenkins/home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /var/run/docker.sock:/var/run/docker.sock -e JAVA_OPTS="-server -Xms2048m -Xmx2048m" --name jenkins-jdk17 jenkins/jenkins:jdk17

jdk8(版本1.8.0_341)

docker run -u root -d -p 8080:8080 -p 50000:50000 --privileged=true --restart=always -v /usr/local/java/jdk1.8.0_341:/usr/local/jdk -v /usr/local/maven:/usr/local/maven -v /usr/local/git-2.39:/usr/local/git -v /docker_data/jenkins/home:/var/jenkins_home -v /etc/localtime:/etc/localtime -v /var/run/docker.sock:/var/run/docker.sock -e JAVA_OPTS="-server -Xms2048m -Xmx2048m" --name jenkins-jdk8 jenkins/jenkins:lts-jdk8

查看jenkins初始密码

docker exec -it jenkins-jdk17 cat /var/jenkins_home/secrets/initialAdminPassword

控制台会输出如下所示内容:e7944399aba54dcdb43488fc2feb5ad2
ip:8080访问jenkins可视化界面,输入密码登录,选择安装推荐的插件。
账号:root
密码:123456
在这里插入图片描述
Jenkins URL:http://192.168.1.11:8080/(默认即可,一般jenkins会专门用一台服务器
在这里插入图片描述

全局工具配置

配置jdk
在这里插入图片描述
配置Git
在这里插入图片描述

配置Maven
在这里插入图片描述

管理插件

在这里插入图片描述
安装Localization: Chinese (Simplified)、Maven Integration plugin、Publish Over SSH三个插件
在这里插入图片描述

系统配置

在这里插入图片描述
在这里插入图片描述
拉到最底下的 Publish over SSH配置部署服务器,就是运行项目的服务器
在这里插入图片描述

构建一个maven项目

在这里插入图片描述
在这里插入图片描述
去Gitlab拷贝代码地址
在这里插入图片描述
回到jenkins粘贴复制的地址
在这里插入图片描述
解决 remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token instead of a password. 错误
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
查看Gitlab的主分支名称,有的是master有的是main
在这里插入图片描述

最后保存。
在这里插入图片描述
报错就看控制台输出的错误信息去百度
在这里插入图片描述

部署服务器手动启动jar包(防火墙记得开放相应端口,避免无法访问

[root@node2 /]# cd /docker_data/jenkins/home/workspace/first/target/
[root@node2 target]# java -jar gitlabdemo-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.6)

2022-12-14 08:12:22.723  INFO 41645 --- [           main] com.fu.gitlabdemo.GitlabdemoApplication  : Starting GitlabdemoApplication v0.0.1-SNAPSHOT using Java 1.8.0_341 on node2 with PID 41645 (/docker_data/jenkins/home/workspace/first/target/gitlabdemo-0.0.1-SNAPSHOT.jar started by root in /docker_data/jenkins/home/workspace/first/target)
2022-12-14 08:12:22.726  INFO 41645 --- [           main] com.fu.gitlabdemo.GitlabdemoApplication  : No active profile set, falling back to 1 default profile: "default"
2022-12-14 08:12:23.926  INFO 41645 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 9090 (http)
2022-12-14 08:12:23.951  INFO 41645 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2022-12-14 08:12:23.951  INFO 41645 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.69]
2022-12-14 08:12:24.239  INFO 41645 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2022-12-14 08:12:24.239  INFO 41645 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1448 ms
2022-12-14 08:12:24.772  INFO 41645 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 9090 (http) with context path ''
2022-12-14 08:12:24.786  INFO 41645 --- [           main] com.fu.gitlabdemo.GitlabdemoApplication  : Started GitlabdemoApplication in 2.517 seconds (JVM running for 2.991)

springboot测试代码
启动类

@RestController
@SpringBootApplication
public class GitlabdemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(GitlabdemoApplication.class, args);
    }

    @GetMapping("hello")
    public String hello(){
        return "hello world!";
    }
}

yml配置server.port: 9090
pom.xml

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

浏览器访问192.168.56.12:9090/hello
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/100224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

H3C双点双向路由引入,以及使用路由策略进行路由控制,路由学习的配置

如下拓扑中&#xff0c;存在两个路由域&#xff0c;左边为isis区域&#xff0c;所有设备均为level-1-2角色。右边为ospf区域&#xff0c;所有使能ospf的接口均在area0区域中&#xff1a; 组网中需要在R1和R3上&#xff0c;分别将各自的isis路由引入到ospf进程中&#xff0c;同时…

Go C 编程 第9课 放飞汽球(魔法学院的奇幻之旅 Go C编程绘图)

Goc编程第八课 Goc编程第八课_哔哩哔哩_bilibili Goc编程第九课 Goc编程第九课_哔哩哔哩_bilibili 59.实心椭圆 (魔法学院第9课) 难度&#xff1a;1 登录 60.双色椭圆 (魔法学院第9课) 难度&#xff1a;1 登录 61.气球串 (魔法学院第9课) 登录 62.同心圆环 (魔法学院第9课…

C++类与对象的应用—日期计算器

目录 一、前言 二、日期类的实现 检查日期的合法性 < 运算符重载 运算符重载 <运算符重载 >运算符重载 >运算符重载 !运算符重载 进一步优化 日期天数 日期天数 日期-天数 日期-天数 前置&&后置 前置--&&后置-- 思路&#…

强化学习的基础知识和6种基本算法解释

强化学习的基础知识和概念简介&#xff08;无模型、在线学习、离线强化学习等&#xff09; 机器学习(ML)分为三个分支:监督学习、无监督学习和强化学习。 监督学习(SL):关注在给定标记训练数据的情况下获得正确的输出无监督学习(UL):关注在没有预先存在的标签的情况下发现数据…

[附源码]Python计算机毕业设计Django校园疫情防范管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;我…

我的周刊(第070期)

我的信息周刊&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。&#x1f3af; 项目streamlit[1]用 Python 快速构建数据应用&#xff1…

微信公众号开发—通过网页授权实现业务系统登录及用户绑定(微信网页授权自动登录业务系统)

&#x1f60a; 作者&#xff1a; 一恍过去&#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390&#x1f38a; 社区&#xff1a; Java技术栈交流&#x1f389; 主题&#xff1a; 微信公众号开发—通过网页授权实现业务系统登录及用户绑定(微信网页授权自…

产品经理快速入门指南之常见问题篇

产品经理作为近几年互联网最炙手可热的岗位&#xff0c;可谓是赚足了眼球。其实呢&#xff0c;产品经理是很难定义的一个角色&#xff0c;如果非要一句话定义&#xff0c;那么产品经理是为终端用户服务&#xff0c;负责产品整个生命周期的人。今天这篇文章小编会带大家了解一下…

交通部1078-2016版中的音视频协议的一点想法

交通部1078的音视频中的格式有点像TS流, 交通部中1078的音视频的解析用的走的HTTP的协议,内容是流媒体,之前用的是ffmpeg解析的内容流之前是把payload中的数据流区分出音频,视频直接塞给ffmpeg,由ffmpeg推两路流到rtmp协议上去,这种方法有点粗暴, 最近分析ffmpeg源码发现交通…

谷歌通过Chrome简化登录安卓密码支持

谷歌宣布&#xff0c;它正在为其 Chrome 网络浏览器和 Android 操作系统引入密码支持&#xff0c;以简化跨应用程序、网站和设备的登录。 谷歌今天表示&#xff1a; “密码是密码和其他可钓鱼身份验证因素的一种更安全的替代品。它们不能重复使用&#xff0c;不会在服务器漏洞…

AngularJS 2.0 稳定版真的发布了!

导读之前我们还哀叹&#xff0c;谷歌的 AngularJS 2.0 的稳定版看起来年底也未必能见到&#xff0c;然而&#xff0c;在 9 月 14 日谷歌总部召开的一个会议上&#xff0c;突然就宣布最终的稳定版发布了——而这距离前一个版本 RC7 的发布才过去了一天。 AngularJS 2.0 的开发始…

详解入门安全测试最难懂的概念 —— CSRF

对于刚刚入门安全的同学来说&#xff0c;csrf是最难理解的概念之一&#xff0c;本文会用最简单的方式对csrf进行讲解&#xff0c;包括csrf的定义&#xff0c;csrf典型的攻击流程以及如何对其进行防范&#xff0c;希望本文能够帮到大家&#xff01; CSRF定义 CSRF&#xff08;…

Nacos学习笔记 (1)Nacos的简介与安装

1. Nacos 介绍与发展前景 1.1 官网概览&#xff1a; Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一…

性能测试(一)—— 概述、策略、指标、流程

目录 一、性能测试概述 1、为什么要进行性能测试&#xff1f; 2、性能测试的概念 2.1 什么是性能&#xff1f; 2.2 什么是性能测试&#xff1f; 2.3 性能测试目的 3、性能测试与功能测试 3.1 焦点不一样 3.2 关系 二、性能测试策略 1、性能测试策略 1.1 基准测试 …

PageObject(PO)设计模式在 UI 自动化中的实践总结(以 QQ 邮箱登陆为例)

1080608 28.8 KB PO的思想最早是2013年由IT大佬Martin Flower提出的&#xff1a; martinfowler.com bliki: PageObject A page object wraps an HTML page, or fragment, with an application-specific API, allowing you to manipulate page elements for testing without d…

MVC操作方法如何绑定Stream类型的参数

1、我需要读取HTTP消息的整个 body 来填充 MVC 方法参数&#xff1b; 2、HTTP消息的 body 不是 form-data&#xff0c;而是完全的二进制内容。 最简单的方法就是不使用模型绑定&#xff0c;即在MVC方法中直接访问 HttpContext.Request.Body。 var request HttpContext.Requ…

[附源码]计算机毕业设计Python的物品交换平台(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

使用设备树给DM9000网卡_触摸屏指定中断

目录 1 在设备树中描述网卡中断 2 dm9dev9000c.c 3 在设备树中描述触摸屏中断 1 在设备树中描述网卡中断 srom-cs420000000 {compatible "simple-bus";#address-cells <1>;#size-cells <1>;reg <0x20000000 0x8000000>;ranges;ethernet20000…

ESP 常用的低功耗配置选项解析

此篇博客介绍 ESP 常用的低功耗配置选项。 1.常用功耗优化配置选项 1.1.动态调频 CPU 工作的频率越高&#xff0c;功耗消耗也越大。通过 DFS&#xff08;dynamic frequency scaling&#xff0c;动态调频&#xff09;可以让系统自动切换工作频率&#xff0c;达到功耗和性能间…

Transformers学习笔记1. 一些基本概念和编码器、字典

Transformers学习笔记1. 一些基本概念和编码器、字典一、基本概念1. Hugging Face简介2. Transformers&#xff08;1&#xff09;简介&#xff08;1&#xff09;预定义模型&#xff08;2&#xff09;使用方法3. Datasets查看有哪些公开数据集方法1&#xff1a; 使用datasets包的…