当前位置: 首页 > news >正文

在linux系统的docker中安装GitLab

一、安装GitLab:

在安装了docker之后就是下载安装GitLab了,在linux系统中输入命令:docker search gitlab就可以看到很多项目,一般安装第一个,它是英文版的,如果英文不好可以安装twang2218/gitlab-ce-zh。

image.png

1、安装项目

这里没有选第一个,下载安装中文版了,安装时间比较长,需要耐心等待。

image.png

2.创建挂载目录

mkdir -p /usr/local/gitlab/etc 
mkdir -p /usr/local/gitlab/log 
mkdir -p /usr/local/gitlab/data


3.修改目录权限


chmod 777 /usr/local/gitlab/etc
chmod 777 /usr/local/gitlab/log
chmod 777 /usr/local/gitlab/data

4.启动gitlab,执行docker

docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --name gitlab -v /www/gitlab/etc:/etc/gitlab -v /www/gitlab/log:/var/log/gitlab -v /www/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh

docker run -d -p 8443:443 -p 8090:80 -p 8022:22 --restart always --name gitlab -v /mydata/gitlab/etc:/etc/gitlab -v /mydata/gitlab/log:/var/log/gitlab -v /mydata/gitlab/data:/var/opt/gitlab --privileged=true twang2218/gitlab-ce-zh


 

这个命令的意思如下:

docker run \

-d                #后台运行,全称:detach

-p 8443:443     #将容器的内部端口8443映射到外部端口443上,外界会先访问443端口到达指定位置,然后发现443映射的是docker里的8443端口,就会继续访问8443端口,然后根据设置做出对应的处理。

-p 8090:80       #将容器的内部端口8090映射到外部端口80上,原理同上。

-p 8022:22       #将容器的内部端口8022映射到外部端口22上,原理同上。

--restart always   #容器自启动

--name gitlab      #设置容器的名称为gitlab

-v /usr/local/gitlab/etc:/etc/gitlab     #将容器/etc/gitlab目录挂载到宿主机/usr/local/gitlab/etc目录下,若宿主机内此目录不存在将会自动创建,一般挂载到一个比较大的磁盘上,防止后面出现磁盘满了的情况。

-v /usr/local/gitlab/log:/var/log/gitlab    #原理同上。

-v /usr/local/gitlab/data:/var/opt/gitlab    #原理同上。

--privileged=true             #让容器获取宿主机root权限

twang2218/gitlab-ce-zh         #镜像的名称,这里也可以写镜像的id。

5、查看gitlab是否已经启动,

如果后面跟上-a参数,则会把没启动的容器也显示出来。

docker ps -a

image.png

二、配置gitlab

1、首先进入容器,

里面的gitlab是容器的名称,就是上图里NAMES下面的那个信息。

docker exec -it gitlab bash

image.png

看到前面变成这样就说明进到容器里了。

2、修改gitlab.rb文件:

//先进入到gitlab目录

cd /etc/gitlab

//然后编辑gitlab.rb文件

vim gitlab.rb

image.png

执行vim命令后效果是这样:

image.png

3、修改gitlab.rb文件中的IP和端口号,修改external_url后面的值,这个值是IP地址或者域名,不用加端口号。

image.png

4、保存,在修改完毕后按一下esc键,然后输入:qw后按回车键保存文件。

image.png

将一下内容复制到gitlab.rb文件(注意修改成自己的ip),修改完成后 :wq 保存退出

external_url 'http://xx.xx.xx.xx'
gitlab_rails['gitlab_ssh_host'] = '192.168.XX.XX'
gitlab_rails['gitlab_shell_ssh_port'] = 8022
 

external_url 'http://xx.xx.xx.xx'
gitlab_rails['gitlab_ssh_host'] = '192.168.XX.XX'
gitlab_rails['gitlab_shell_ssh_port'] = 8022

3、配置gitlab.yml文件。

//文件路径:/opt/gitlab/embedded/service/gitlab-rails/config

//先进入到config目录下

cd /opt/gitlab/embedded/service/gitlab-rails/config

image.png

//打开编辑gitlab.yml文件

vim gitlab.yml

image.png

//修改host与上面.rb文件里的external_url一致。

//修改port为80,这里定义的端口号是80,说明通过80端口可以访问到,在容器运行的时候使用了-p 8090:80进行端口映射

,就是将外部端口8090映射到docker容器的80端口上,外面通过8090端口访问时就被转到docker的80端口上了,这里定义的gitlab端口是80,就会被监听到,然后执行对应的操作。

6、重启docker中的gitlab,

因为此时已经进入到docker的gitlab容器中了,所以可以执行容器内重启服务命令:

gitlab-ctl restart

7、退出容器命令exit:

image.png

8、使用浏览器打开gitlab

,网址是gitlab.rb配置文件中定义的external_url的值,端口号是运行容器时-p后面定义的端口号,这里是:http://gitlab.wuniuai.com:8090,第一次访问账号和密码都是root,会让修改密码,改好后就可以正常使用了

image.png

9、查看容器详细信息

,可以查看gitlab的运行状态、端口映射情况、文件挂载情况,等于是把执行docker run时的所有信息都展示出来了:

docker inspect gitlab

image.png

image.png

从上方可以看到挂载了三个目录,如果要转移数据就需要把三个目录都转移到需要的位置,然后重新执行docker run运行和设置这个容器,run里的名称如果已经存在则无法执行,要么用新名称,要么使用docker rm 容器名称,把原来的容器删掉。

二、常用命令:

1、容器外停止:

docker stop gitlab    //这里的gitlab是执行docker run时--name后面设置的名字。

2、容器外重启:

docker restart gitlab

3、进入容器内部命令行:

docker exec -it gitlab bash

4、容器内部命令行中应用配置

,让修改后的配置生效:

gitlab-ctl reconfigure

5、容器内部命令行中重启应用:

gitlab-ctl restart

6、容器外查看正在运行的容器,返回的有ID和名称,这两个值都可以操作指定的容器:

docker ps

7、容器外查看所有容器,包含正在运行的和未运行的:

docker ps -a

8、容器外查看所有镜像:

docker images

9、容器外删除容器:

docker rm gitlab   //这里的gitlab是容器的名称,用这个容器的id也可以,效果都一样。

10、查看指定容器的日志记录:

docker logs gitlab    //这里是查看gitlab的日志信息,会显示日志文件中的所有内容。

11、修改gitlab.rb配置文件

vi /etc/gitlab/gitlab.rb

把对应的修改的#去掉,然后修改如下

external_url 'http://127.0.0.1:8080'   需要和创建容器指定的端口号一致
gitlab_rails['gitlab_ssh_host'] = '127.0.0.1'
gitlab_rails['gitlab_shell_ssh_port'] = 222
nginx['listen_port'] =8080   

12、进gitlab容器重启配置服务

docker exec -it gitlab /bin/bash #进去gitlab容器的命令

gitlab-ctl reconfigure #重置gitlab客户端的命令

  等待一会儿完成后,exit退出即可;

13、重启gitlab容器

$ docker restart gitlab

14、根据设置好的Ip地址或者域名访问gitlab

http://ip:8080

进入以后会让修改密码,修改完成后登入即可;

15、运行项目创建项目

默认的登录名是root

使用docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password  可以查看root的默认密码 

 16、进入系统后,点击创建一个项目

所以在使用的时候需要加上 8881端口号 否则是访问不到的 请求被拒绝

使用的时候是 http://192.168.66.71:8881/root/myweb.git

 17、使用Git拉去远程项目需要绑定密钥

点击右上角头像设置SSH密钥,输入id_rsa.pub的内容,如下图所示:

保存后的结果。

保存后的结果。

 18、拉取或者上传项目之前

请先初始化本地git仓库,创建一个文件夹,在指定的位置初始化本地git仓库,便于规范性的操作。克隆拉取命令省略;

git init

git clone  ssh://git@192.168.66.71:8222/root/myweb.git

git clone http://192.168.66.71:8881/root/myweb.git
 

19、Gitlab中实现CI/CD,需要安装gitlab-runner

docker pull gitlab/gitlab-runner:latest

相关文章:

在linux系统的docker中安装GitLab

一、安装GitLab: 在安装了docker之后就是下载安装GitLab了,在linux系统中输入命令:docker search gitlab就可以看到很多项目,一般安装第一个,它是英文版的,如果英文不好可以安装twang2218/gitlab-ce-zh。 …...

Python面试常见问题及答案12

问题: 请解释Python中的GIL(全局解释器锁)是什么? ○ 答案: GIL是Python解释器中的一种机制,用于确保任何时候只有一个线程在执行Python字节码。这在多线程场景下可能影响性能优化,但对于单线程…...

从0-1开发一个Vue3前端系统页面-9.博客页面布局

本节主要实现了博客首页界面的基本布局并完善了响应式布局,因为完善了响应式布局故对前面的页面布局有所改动,这里会将改动后的源码同步上传。 1.对页面头部的用户信息进行设计和美化 布局设计参考 :通常初级前端的布局会通过多个div划分区域…...

[手机Linux] 六,ubuntu18.04私有网盘(NextCloud)安装

一,LNMP介绍 LNMP一键安装包是一个用Linux Shell编写的可以为CentOS/RHEL/Fedora/Debian/Ubuntu/Raspbian/Deepin/Alibaba/Amazon/Mint/Oracle/Rocky/Alma/Kali/UOS/银河麒麟/openEuler/Anolis OS Linux VPS或独立主机安装LNMP(Nginx/MySQL/PHP)、LNMPA(Nginx/MySQ…...

白话java设计模式

创建模式 单例模式(Singleton Pattern): 就是一次创建多次使用,它的对象不会重复创建,可以全局来共享状态。 工厂模式(Factory Method Pattern): 可以通过接口来进行实例化创建&a…...

助力 Tuanjie OpenHarmony 开发:如何使用工具包 Hilog 和 SDK Kits Package?

随着团结引擎从 1.0.0 迭代至 1.3.0,越来越多的开发者开始使用团结引擎开发 OpenHarmony 应用。 在开发的过程中,我们也收到了大量反馈,尤其是在日志、堆栈和性能数据方面,这些信息对开发和调试过程至关重要。同时,我…...

NSDT 3DConvert:高效实现大模型文件在线预览与转换

NSDT 3DConvert 作为一个 WebGL 展示平台,能够实现多种模型格式免费在线预览,并支持大于1GB的OBJ、STL、GLTF、点云等模型进行在线查看与交互,这在3D模型展示领域是一个相当强大的功能。 平台特点 多格式支持 NSDT 3DConvert兼容多种3D模型…...

电商数据采集电商,行业数据分析,平台数据获取|稳定的API接口数据

电商数据采集可以通过多种方式完成,其中包括人工采集、使用电商平台提供的API接口、以及利用爬虫技术等自动化工具。以下是一些常用的电商数据采集方法: 人工采集:人工采集主要是通过基本的“复制粘贴”的方式在电商平台上进行数据的收集&am…...

VUE+Node.js+mysq实现响应式个人博客|项目初始化+路由配置+基础组件搭建

Day 1 开发文档:项目初始化与基础架构搭建 一、项目初始化 1. 创建项目 首先,我们使用 Vite 创建一个基于 Vue 3 的项目: # 创建项目 npm create vitelatest my-blog -- --template vue # 这条命令会创建一个名为 my-blog 的新项目&#…...

Python如何正确解决reCaptcha验证码(9)

前言 本文是该专栏的第73篇,后面会持续分享python爬虫干货知识,记得关注。 我们在处理某些国内外平台项目的时候,相信很多同学或多或少都见过,如下图所示的reCaptcha验证码。 而本文,笔者将重点来介绍在实战项目中,遇到上述中的“reCaptcha验证码”,如何正确去处理并解…...

web3跨链预言机协议-BandProtocol

项目简介 Band Protocol 项目最初于 2017年成立并建立在 ETH 之上。后于2020年转移到了 Cosmos 网络上,基于 Cosmos SDK 搭建了一条 Band Chain 。这是一条 oracle-specific chain,主要功能是提供跨链预言机服务。Cosmos生态上第一个,也是目…...

JAVA将集合切分成指定份数(简易)

JAVA将集合切分成指定份数 主要方法 /** * 主要方法* param list 切分的集合* param count 切成的份数* return*/ public static List<List> splitList(List list,int count){if(count <0 ){return Lists.newArrayList();}List<List> result Lists.newArrayL…...

深度神经网络(DNN)在时序预测中的应用与缺陷

目录 ​编辑 一、DNN在时序预测中的应用 二、DNN的缺陷 三、技术挑战与未来趋势 四、结论 随着大数据时代的到来&#xff0c;深度学习技术在时序预测领域扮演着越来越重要的角色。深度神经网络&#xff08;DNN&#xff09;因其强大的非线性拟合能力和自动特征提取能力&…...

springboot445新冠物资管理(论文+源码)_kaic

摘 要 使用旧方法对新冠物资管理的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在新冠物资管理的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误不能及时纠正等问题。这次开发的新冠物资管…...

C++算法第十一天

本篇文章我们继续学习动态规划 目录 第一题 题目链接 题目解析 代码原理 代码编写 第二题 题目链接 题目解析 代码原理 代码编写 第三题 题目链接 题目解析 代码原理 代码编写 第四题 题目链接 题目解析 代码原理 代码编写 第五题 题目链接 题目解析 代…...

常 用 类

一、 Object 类 1. Object 类的介绍 (1) Object 类位于 java.lang 包中&#xff0c;是继承关系的根类、超类&#xff0c;是所有类的父类 ( 直接的父类或是间接父类 ) (2) Object 类型的引用可以用于存储任意类型的对象。 (3) Object 类中定义方法&#xff0c;所有类都可以…...

ACL(访问控制列表)

ACL技术概述 • 随着网络的飞速发展&#xff0c;网络安全和网络服务质量 QoS &#xff08; Quality of Service &#xff09;问题日益突出。 ▫ 园区重要服务器资源被随意访问&#xff0c;园区机密信息容易泄露&#xff0c;造成安全隐患。 ▫ Internet 病毒肆意侵略园区内网&am…...

json字符串转json

问题 Json格式化后&#xff0c;存在各种\n ,\r,以及空格&#xff0c;怎么办&#xff1f; 直接replaceAlll(“\s”,“”) 吗&#xff1f; 解决办法&#xff1a; //使用hutool的jsonutil工具&#xff0c;直接将其转换为json&#xff0c;再转string, //这样就不需要使用 各种re…...

GPT-Omni 与 Mini-Omni2:创新与性能的结合

近年来&#xff0c;随着人工智能技术的飞速发展&#xff0c;各种模型和平台应运而生&#xff0c;以满足从个人用户到企业级应用的多样化需求。在这一领域&#xff0c;GPT-Omni 和 Mini-Omni2 是两款备受瞩目的技术产品&#xff0c;它们凭借独特的设计和强大的功能&#xff0c;在…...

探秘 JSON:数据交互的轻盈使者

文章目录 一、JSON是什么二、JSON的语法规则三、应用场景四、性能优化五、总结 一、JSON是什么 JSON&#xff08;JavaScript Object Notation&#xff09;即 JavaScript 对象表示法&#xff0c;是一种轻量级的数据交换格式。JSON 以键值对的形式组织数据&#xff0c;键是字符串…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

第一篇:Liunx环境下搭建PaddlePaddle 3.0基础环境(Liunx Centos8.5安装Python3.10+pip3.10)

第一篇&#xff1a;Liunx环境下搭建PaddlePaddle 3.0基础环境&#xff08;Liunx Centos8.5安装Python3.10pip3.10&#xff09; 一&#xff1a;前言二&#xff1a;安装编译依赖二&#xff1a;安装Python3.10三&#xff1a;安装PIP3.10四&#xff1a;安装Paddlepaddle基础框架4.1…...