基于Docker构建安装Git/GitLab,以及制作springboot工程镜像
liuian 2024-12-24 14:18 42 浏览
今天给大家分享的是《领先的开源自动化服务器Jenkins的应用实战》之基于Docker安装构建Git/GitLab版本控制与代码云存储的场所;使用Git管理项目,springboot工程制作镜像知识体系,欢迎大家一起阅读!
Git/GitLab版本控制与代码云存储的场所
免费开源的分布式版本控制系统
本地离线存储:绝大多数操作都只需要访问本地文件和资源,不用连网,在本地磁盘上就保存着所有当前项目的历史更新,所以处理起来速度飞快。
分布式:每一个 Git克隆 都是一个完整的文件库,含有全部历史记录和修订追踪能力,不依赖于网络连接或中心服务器。其最大特色就是“分支”及“合并”操作非常快速、简便。
免费开源:安装基于Apache,Ruby等免费开源软件, 旨在快速高效地处理无论规模大小的任何软件工程 ,商业用户无任何限制,完全放心使用。
安装启动docker
1、安装docke
# 1、yum 包更新到最新
yum update
# 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
# 3、 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、 安装docker,出现输入的界面都按 y
yum install -y docker-ce
# 5、 查看docker版本,验证是否验证成功
docker -v
2、配置镜像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://8cqoh10g.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
3、安装私有仓库
# 拉取镜像
docker pull registry
# 创建容器
docker run -d -p 5000:5000 registry
#配置私有仓库地址
vim /etc/docker/daemon.json
{
"insecure-registries": ["192.168.200.133:5000"]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
#启动本地仓库容器
docker start 容器ID
4、访问私有仓库
http://192.168.200.133:5000/v2/_catalog
如果访问不到,关闭防火墙:
systemctl stop firewalld
docker下gitlab安装配置使用
1、安装
#查找Gitlab镜像
docker search gitlab
#gitlab镜像拉取
docker pull gitlab/gitlab-ce
#查看本地镜像
docker images
#本机建立的3个目录
#为了gitlab容器通过挂载本机目录启动后可以映射到本机,然后后续就可以直接在本机查看和编辑了,不用再进容器操作
#配置文件
mkdir -p /home/gitlab/etc
#数据文件
mkdir -p /home/gitlab/data
#日志文件
mkdir -p /home/gitlab/logs
#启动容器
docker run --name='gitlab' -d \
--publish 4443:443 --publish 8888:80 \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/data:/var/opt/gitlab \
-v /home/gitlab/logs:/var/log/gitlab \
gitlab/gitlab-ce:latest
#查看启动日志
docker logs -f gitlab
2、配置
按上面的方式,gitlab容器运行没问题,但在gitlab上创建项目的时候,生成项目的URL访问地址是按容器的hostname来生成的,也就是容器的id。作为gitlab服务器,我们需要一个固定的URL访问地址,于是需要配置gitlab.rb(宿主机路径:/home/gitlab/config/gitlab.rb)
#配置域名或IP
#配置gitlab.rb
cd /home/gitlab/etc
vim gitlab.rb
#配置http协议所使用的访问地址,不加端口号默认为80
external_url 'http://192.168.200.133'
#配置gitlab.yml
cd /home/gitlab/data/gitlab-rails/etc
vim gitlab.yml
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: 192.168.200.133
port: 8888
https: false
3、初始化密码
gitlab 默认管理用户是root
登录:http://192.168.200.133:8888 登录修改root 的密码
4、登录
用户名 root 密码
5、创建项目
http-demo
安装Git
# 安装
yum install -y git
# 查看版本
git version
# git version 1.8.3.1
使用Git管理项目
1、使用idea从GitLab检出空项目
项目地址:http://192.168.200.133:8888/root/http-demo.git
2、复制项目并运行
idea中运行项目并访问:http://127.0.0.1:10000/user/1
3、提交代码到GitLab
在工程根目录创建 .gitignore,此文件中记录了在提交代码时哪些文件或目录被忽略
.idea/
target/
*.iml
Springboot工程制作镜像
1、SpringBoot运行Jar包
使用maven的打包插件
将下边的插件依赖拷贝到微服务工程中
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
使用maven打包并运行访问微服务工程
java -jar http-demo-1.0-SNAPSHOT.jar
2、创建Docker镜像
在linux上新建一个目录,将上一步的jar包拷贝到Linux服务器,准备创建镜像。
cd /home
mkdir icoding
测试jar包是否可以运行,执行:java -jar
java -jar http-demo-1.0-SNAPSHOT.jar
访问:http://192.168.200.133:10000/user/1
在http-demo-1.0-SNAPSHOT.jar所在文件夹位置编写Dockerfile文件
vim Dockerfile
FROM java:8
# VOLUME 指定了临时文件目录为/tmp。
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD http-demo-1.0-SNAPSHOT.jar app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
在Dockerfile文件所在目录创建镜像
docker build -t http-demo:1.0-SNAPSHOT .
查看镜像
docker images
3、创建启动容器
基于http-demo:1.0-SNAPSHOT镜像创建容器,容器名称为http-demo
docker run -d -p 10000:10000 http-demo:1.0-SNAPSHOT
容器创建成功,可通过docker ps -a命令查看
4、访问页面
http://192.168.200.133:10000/user/1
5、 停止与删除
停止容器 删除容器 删除镜像
6、 使用maven构建镜像
上边构建的过程是通过手工一步一步完成,maven提供docker-maven-plugin插件可完成从打包到构建镜像、构建容器等过程。
(1)编写pom_docker.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.5.RELEASE</version>
</parent>
<groupId>com.icoding</groupId>
<artifactId>http-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!--docker镜像相关的配置信息-->
<configuration>
<!--镜像名,这里用工程名-->
<imageName>${project.artifactId}</imageName>
<!--Dockerfile文件所在目录-->
<dockerDirectory>${project.basedir}/src/main/resources</dockerDirectory>
<!--TAG,这里用工程版本号-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!--构建镜像的配置信息-->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.artifactId}-${project.version}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
</project>
(2 )拷贝Dockerfile文件
(3 )在IDEA中提交修改的文件
(4) lclone最新项目
git clone http://192.168.200.133:8888/root/http-demo.git
(5 )打包构建镜像
#进入工程目录
cd http-demo
#打包构建镜像
mvn -f pom_docker.xml clean package -DskipTests docker:build
(6)创建启动容器
基于http-demo:1.0-SNAPSHOT镜像创建容器,容器名称为http-demo
docker run -d -p 10000:10000 http-demo:1.0-SNAPSHOT
容器创建成功,可通过docker ps -a命令查看
(7) 访问页面
http://192.168.200.133:10000/user/1
欢迎大家关注艾编程公众号,回复“Jenkins”看完整的视频和资料内容哦!
相关推荐
- VS Code当中的15个神仙插件,值得收藏
-
VisualStudioCode是一款轻量级但功能强大的源代码编辑器,适用于Windows、macOS和Linux。内置了对JavaScript、TypeScript和Node.js...
- 制作简易页面计算器的详细教程和代码分享
-
今天教大家一个比较简单实用的Web小应用:简单计算器。这个案例比较简单、比较直观,适合小孩或者初学编程者进行编程入门的练习。用html进行入门编程练习优点非常多:IDE框架比较轻,VSCode安装方便...
- CSS视觉格式化模型,你真的了解么?
-
CSS视觉格式化模型(visualformattingmodel)是用来处理文档并将它显示在视觉媒体上的机制。这是CSS2.1的一个基础概念。视觉格式化模型根据CSS盒模型为文档的每个元素生成0...
- 用Cursor开启JAVA+AI生涯(启用java script)
-
Cursor是基于VSCode开发的一款编辑器,支持多种语言的开发编辑。与传统的开发工具相比,它有多种优势:与AI无缝集成,响应速度快,占用内存小。但很多同学在"起步"过程中遇到了...
- C# WinForms中maskedTextBox控件使用的简单示例
-
在C#WinForms中,MaskedTextBox是一个用于输入格式化文本的控件。它允许您定义一个掩码(Mask),指定输入的文本应该遵循的特定格式。以下是一个简单的示例,演示如何在WinForm...
- C#编程基础(看这一篇就够了)(c#编程实例100篇)
-
C#及其开发环境简介C#概述C#是一个现代的、通用的、面向对象的编程语言,由微软(Microsoft)开发,经Ecma和ISO核准认可。它由AndersHejlsberg和他的团队在.NET框架开发...
- Visual Studio Package 插件开发(Visual Studio SDK)
-
背景 这段时间公司新做了一个支付系统,里面有N个后台服务,每次有更新修改,拷贝打包发布包“不亦乐乎”。。。于是我想要不要自己定制个打包插件。 部分朋友可能会认为,有现成的可以去找一个,干嘛不用持续...
- 10个必备的Visual Studio Code (VS code)插件
-
我基本上每天都用vscode,我喜欢的小巧,开源,免费并且非常强大。尤其它非常多的插件可以免费使用。这里我把经常用插件介绍给大家,希望大家留言讨论我把VScode插件分两类,一类是处理可视化的,...
- 【推荐】一款超牛×的Visual Studio 2022插件
-
今天给大家推荐一款超级NB的VisualStudio2022插件——CodeMain,这是一个代码格式化及处理的插件。 一、打开添加扩展窗口; 二、查找扩展; 三、管理扩展; 四、CodeM...
- Visual Studio跨平台开发实战(2):Xamarin.iOS基本控制项介绍
-
前言在上一篇文章中,我们介绍了Xamarin以及简单的HelloWorld范例,这次我们针对iOS的专案目录架构以及基本控制项进行说明.包含UIButton,UISlider,UISwitch...
- Visual Studio Code(visual studio code干什么用的)
-
VisualStudioCode(简称VSCode是一款由微软开发的轻量级、强大而且免费的代码编辑器。它不仅支持多种编程语言,如Python、JavaScript、Java等,还拥有丰富的插件生...
- 团队协作-代码格式化工具clang-format
-
环境:clang-format:10.0.0前言统一的代码规范对于整个团队来说十分重要,通过git/svn在提交前进行统一的ClangFormat格式化,可以有效避免由于人工操作带来的代码格式问题。C...
- Visual Studio 2022 辅助插件介绍
-
在软件开发的世界里,效率和质量是永恒的追求。VisualStudio2022作为一款功能强大的集成开发环境(IDE),通过引入各种辅助插件,能够极大地提升开发者的编码效率、代码质量和开发体验。本...
- 五款安卓程序 帮助管理你的网络存储
-
2015-09-1605:46:00作者:赵为民安卓设备以及非常普及,利用安全可以很好的管理的你各种服务……也包括你的存储。当然,现在几乎所有的NAS存储厂商都提供了一个应用程序,让你利用安卓设备...
- 局域网一个飞牛Nas,一个群晖Nas,如何互传文件?
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:科技菜菜家里有一个入门群晖Nas一直在做照片备份,现在有新添了一个小主机飞牛Nas。现在遇到了一个新问题,备份到群辉的多个手机照片已经超过5...
- 一周热门
-
-
Python实现人事自动打卡,再也不会被批评
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
飞牛OS入门安装遇到问题,如何解决?
-
- 最近发表
-
- VS Code当中的15个神仙插件,值得收藏
- 制作简易页面计算器的详细教程和代码分享
- CSS视觉格式化模型,你真的了解么?
- 用Cursor开启JAVA+AI生涯(启用java script)
- C# WinForms中maskedTextBox控件使用的简单示例
- C#编程基础(看这一篇就够了)(c#编程实例100篇)
- Visual Studio Package 插件开发(Visual Studio SDK)
- 10个必备的Visual Studio Code (VS code)插件
- 【推荐】一款超牛×的Visual Studio 2022插件
- Visual Studio跨平台开发实战(2):Xamarin.iOS基本控制项介绍
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- table.render (33)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)