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

使用Docker中部署GitLab 避坑指南

在容器化的世界中,Docker已经成为了我们部署和管理应用程序的首选工具。然而,在使用Docker部署GitLab时,我们可能会遇到一些问题,本文将为你提供一份详细的避坑指南。网上的教程有的都没说清楚,或者干脆是错的。摸索了好几个小时,才知道为啥要这么做。

安装docker

  1. 这一步自行百度,不细说了。

docker 安装gitlab社区版

  1. 直接执行docker pull gitlab/gitlab-ce:latest命令拉取最新的镜像
docker pull gitlab/gitlab-ce:latest
  1. 把容器跑起来
 docker run -d --name gitlab --privileged=true --restart always -p 9922:22 -p 9980:9980 -v /home/gitlab/etc:/etc/gitlab -v /home/gitlab/log:/var/log/gitlab -v /home/gitlab/opt:/var/opt/gitlab gitlab/gitlab-ce
//对命令的解释docker run -d --name gitlab //指定容器名称--privileged=true //指定容器可以获得root权限--restart always //指定意外停止时自动重启-p 9922:22 //指定ssh clone时候的端口-p 9980:9980 //指定http访问时的端口-v /home/gitlab/etc:/etc/gitlab //挂载配置文件目录出来-v /home/gitlab/log:/var/log/gitlab -v /home/gitlab/opt:/var/opt/gitlab gitlab/gitlab-ce
  1. 在宿主机直接修改/home/gitlab/etc/gitlab.rb文件
#这一步决定了以http方式clone时的地址和端口号
external_url 'http://192.168.1.11:9980' 
#这一步决定了你在浏览器打开时要访问什么端口
nginx['listen_port'] = 9980#ssh 的配置
#ssh连接地址
gitlab_rails['gitlab_ssh_host'] = '192.168.1.11'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922
  1. 重启容器,让配置生效
docker restart gitlab

注意事项

如果是按照上述教程安装的gitlab,则不需要看下边的了。

这都是血泪的教训

  1. 首先,我们需要明确一点,如果你不打算使用80端口访问GitLab,那么在执行docker run命令的时候,一定要让访问端口容器内部和外部的保持一致。否则,这将会给你带来不必要的麻烦。也就是说假如你想用9980这个端口访问你的gitlab,那就映射宿主机的9980端口到容器的9980端口,并修改gitlab.rb文件中nginx的监听端口为9980.否则你还要进容器修改运行时配置文件gitlab.yml,这个文件本身就是由gitlab.rb文件映射得来的。所以我不明白为什么那么多网上的教程用其他端口映射容器内的80,再去容器里修改配置是图啥。
  2. 你还需要修改nginx的监听端口,将nginx[‘listen_port’]设置为9980。这样,nginx就能正确地将流量转发到你的GitLab实例上。这个是默认监听容器内80端口的,记好了是容器内,所以这个根据我们的映射规则,一定要修改为我们映射的9980端口。你问我用其他端口映射容器内80,nginx就监听80不行吗,当然行啦,但是你clone的时候就会发现,哎,这个clone地址怎么没有端口号。然后就又陷入了要去容器里修改gitlab.yml的怪圈。

相关文章:

使用Docker中部署GitLab 避坑指南

在容器化的世界中,Docker已经成为了我们部署和管理应用程序的首选工具。然而,在使用Docker部署GitLab时,我们可能会遇到一些问题,本文将为你提供一份详细的避坑指南。网上的教程有的都没说清楚,或者干脆是错的。摸索了…...

我的NPI项目之设备系统启动(八) -- Android14的GKI2.0开发步骤和注意事项

GKI是什么? Google为什么要推行GKI? GKI全称General Kernel Image。GKI在framework和kernel之间提供了标准接口,使得android OS能够轻松适配/维护/兼容不同的设备和linux kernel。 Google引入GKI的目的是将Framework和Kernel进一步的解耦。因…...

鼠标右键助手专业版 MouseBoost PRO for Mac v3.3.6中文破解

MouseBoost Pro mac版是一款简单实用的鼠标右键助手专业版,MouseBoost Pro for Mac只要轻点你的鼠标右键,就可以激活你想要的各种功能,让你的工作效率大幅度提高,非常好用。 软件下载:MouseBoost PRO for Mac v3.3.6中…...

React学习计划-react-hooks补充

React Hooks 1. 使用hooks理由 高阶组件为了复用,导致代码层级复杂生命周期的复杂 2. useState(保存组件状态) const [state, setstate] useState(initialState)3. useEffect(处理副作用)和useLayoutEffect(同步执行副作用) 使用方式: useEffect(…...

KTV点歌系统vue+springboot音乐歌曲播放器系统

目前现有的KTV点歌系统对于用户而言其在线点歌流程仍然过于繁琐,对于歌曲而言其系统安全性并不能保障。同时整套系统所使用的技术相对较为落后,界面不能动态化展示。相比较于其它同类型网站而言不能体现技术先进性。 1.2 项目目标 KTV点歌系统的后台开发…...

vue video 多个视频切换后视频不显示的解决方法

先说一下我这边的需求是视频需要轮播&#xff0c;一个人员有多个视频&#xff0c;左右轮播是轮播某个人员下的视频&#xff0c;上下切换是切换人员。 vue 代码 <el-carouselindicator-position"none"ref"carousel"arrow"always":interval&qu…...

多态与代码屎山

到底什么是多态呢?多态是面向未来的,比如企业采购为例: 一般分为线上合线下两种, 我们设计一个父类叫做"采购", 里面做一些共通的处理: 申请, 承认, 支付, 购买方式. 然后让各自的子类(线上,线下)实现自己的方法.实际调用过程中传入不同的对象就可以.到此为止项目开…...

Git基本操作(2)

Git基本操作&#xff08;2&#xff09; 上交文件之后&#xff0c;git文件的变化git cat-file HEAD指针里面有啥文件被修改git statusgit diff 文件名 版本回退&#xff08;git reset&#xff09;撤销回退git reflog 撤销的三种情况还没有addgit checkout -- [file] 已经add还没…...

编程笔记 Golang基础 023 切片

编程笔记 Golang基础 023 切片 一、切片二、定义与初始化三、基本操作四、示例 Go语言中的切片&#xff08;slices&#xff09;是基于数组的抽象数据类型&#xff0c;它提供了一种灵活的方式来处理可变长度的数据序列。切片本身不存储任何数据&#xff0c;而是指向底层数组的一…...

qt 软件发布(Windows)

1. 开发环境 QtCreator MSVC编译器 2. 源码编译 生成release或者debug版本的exe可执行文件(x64或x86) 3. windeployqt 打包 ①左下角开始菜单栏找到QT的命令交互对话框&#xff0c;如下图MSVC 2017 64-bit(根据第二步编译的类型选择64位或者32位)。 ②cd 切换到第二步可…...

《汇编语言》- 读书笔记 - 第11章-标志寄存器

《汇编语言》- 读书笔记 - 第11章-标志寄存器 标志寄存器指令与标志位关系11.1 ZF&#xff08;Zero Flag&#xff0c;零标志位&#xff09;11.2 PF&#xff08;Parity Flag&#xff0c;奇偶标志位&#xff09;11.3 SF&#xff08;Sign Flag&#xff0c;符号标志位&#xff09;处…...

1.QT简介(介绍、安装,项目创建等)

1. QT介绍 Qt&#xff08;官方发音 [kju:t]&#xff09;是一个跨平台的C开发库&#xff0c;主要用来开发图形用户界面&#xff08;Graphical User Interface&#xff0c;GUI&#xff09;程序 Qt 是纯 C 开发的&#xff0c;正常情况下需要先学习C语言、然后在学习C然后才能使用…...

【服务器】服务器推荐

一、引言 在数字世界的浪潮中&#xff0c;服务器作为数据存储和处理的基石&#xff0c;其重要性不言而喻。而在这个繁星点点的市场中&#xff0c;雨云以其独特的优势和超高的性价比&#xff0c;逐渐成为众多企业和个人的首选。今天&#xff0c;就让我带你走进雨云的世界&#…...

信号系统之线性图像处理

1 卷积 图像卷积的工作原理与一维卷积相同。例如&#xff0c;图像可以被视为脉冲的总和&#xff0c;即缩放和移位的delta函数。同样&#xff0c;线性系统的特征在于它们如何响应脉冲。也就是说&#xff0c;通过它们的脉冲响应。系统的输出图像等于输入图像与系统脉冲响应的卷积…...

uniapp腾讯地图JavaScript Api,H5端和原生APP端可用

因项目需要&#xff0c;在uniapp中集成使用腾讯地图&#xff0c;为了方便维护&#xff0c;希望通过一套代码实现H5和APP同时可用。H5显示相对简单&#xff0c;APP端比较麻烦&#xff0c;记录下实现过程 一、集成步骤 1.使用 renderjs script标签使用renderjs&#xff0c;因为…...

MyBatisPlus:PG数组类型自动映射问题

引言: PostGreSQL数据库提供了丰富的数据类型,通过查看官网文档,我们也可以发现,PG也提供了对数组类型的支持。 但是在实际开发中,我们通常是使用MyBatis/MyBatisPlus这种半自动ORM映射框架来实现数据库/表数据基本的增删改查,以及其它操作。那么,问题来了,如何…...

Data-Shape制作UI节点简介

很多小伙伴对于Data-Shape制作简单的UI都是似懂非懂&#xff0c;群里很多小伙伴也总是询问相关的问题&#xff0c;那么&#xff0c;今天我就简单举几个例子&#xff0c;专门介绍下Data-Shape创建简单UI的教程。 首先&#xff0c;本次教程&#xff0c;使用的是Data-Shape 2021.…...

kubernetes负载均衡部署

目录 1.新master节点的搭建 对master02进行初始化配置&#xff08;192.168.88.31&#xff09; 将master01的配置移植到master02 修改master02配置文件 2.负载均衡的部署 两台负载均衡器配置nginx 部署keepalived服务 所有node节点操作 总结 实验准备&#xff1a; k8s…...

NestJS入门6:日志中间件

前文参考&#xff1a; NestJS入门1 NestJS入门2&#xff1a;创建模块 NestJS入门3&#xff1a;不同请求方式前后端写法 NestJS入门4&#xff1a;MySQL typeorm 增删改查 NestJS入门5&#xff1a;加入Swagger 1. 安装 nest g middleware logger middleware​ ​ ​ 2. lo…...

CommonJS、require、moudle实现两个文件传参

目的&#xff1a;实现两个文件传参 文件A给B传入一个参数&#xff0c;并且文件B代码执行后再传回A。 场景 拆分express项目中的app.js文件中的路由、项目越大会使app.js文件变大&#xff0c;复杂 如何使用 app.js文件 导入路由文件调用路由文件&#xff0c;调用的时候传入…...

别再拷贝exe到NXBIN了!用批处理文件搞定NX二次开发外部exe的环境变量(附VS2015/NX12配置)

告别手动拷贝&#xff1a;用批处理智能管理NX二次开发环境变量 每次修改完NX二次开发的外部exe程序&#xff0c;都要手动拷贝到NXBIN目录&#xff1f;这种重复劳动不仅低效&#xff0c;还容易导致版本混乱。其实只需一个简单的批处理脚本&#xff0c;就能彻底解决环境变量配置问…...

药物发现自动化:FEP计算工作流引擎faah的设计原理与实战

1. 项目概述&#xff1a;一个面向药物发现的自动化工作流引擎 最近在药物研发的自动化工具领域&#xff0c;一个名为 kiron0/faah 的项目引起了我的注意。这并非一个简单的脚本集合&#xff0c;而是一个设计精巧、旨在为药物发现中的自由能微扰计算提供端到端自动化解决方案的…...

MATLAB/Simulink模型化设计驱动树莓派:从LED闪烁到快速原型开发

1. 项目概述&#xff1a;当MATLAB/Simulink遇见树莓派 如果你是一名算法工程师、控制工程师&#xff0c;或者正在学习嵌入式系统&#xff0c;那么“模型化设计”和“快速原型开发”这两个词对你来说一定不陌生。它们听起来很高大上&#xff0c;但核心目标其实很朴素&#xff1…...

MedAgentBench:大模型临床决策能力评估基准详解与应用

1. 项目概述&#xff1a;当大模型成为医疗决策的“实习生” 最近在医疗AI的圈子里&#xff0c;一个名为“MedAgentBench”的开源项目引起了不小的讨论。这个由斯坦福机器学习组&#xff08;Stanford ML Group&#xff09;发布的项目&#xff0c;其核心目标非常明确&#xff1a;…...

独立开发者如何利用 Taotoken 以更低成本试验多种 AI 模型能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何利用 Taotoken 以更低成本试验多种 AI 模型能力 对于独立开发者或小型工作室而言&#xff0c;在产品开发的早期阶段…...

Agent 的记忆也会被投毒:长期记忆安全的六阶段框架

过去&#xff0c;我们更习惯把大模型的风险理解为“这一轮输入有没有问题”“这一轮输出会不会越界”。但有了长期记忆之后&#xff0c;风险结构发生了变化。恶意内容不一定在当场触发&#xff0c;也不一定在同一轮任务里显现出来。它可以先悄悄进入记忆&#xff0c;在几天后、…...

湿版摄影风格失效的5个致命误区,第4个连Midjourney官方文档都未披露——基于217组AB测试的权威归因报告

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;湿版摄影风格失效的5个致命误区&#xff0c;第4个连Midjourney官方文档都未披露——基于217组AB测试的权威归因报告 为何“wet plate collodion”提示词突然失灵&#xff1f; 在 Midjourney v6.1 及 N…...

555定时器深度解析:从RC电路到三种工作模式的原理与应用

1. 项目概述在电子设计的工具箱里&#xff0c;有那么几颗芯片&#xff0c;你几乎可以在任何时代的电路板上找到它们的身影。它们可能不是性能最强的&#xff0c;但一定是应用最广、最经久不衰的。今天要聊的555定时器&#xff0c;就是这样一个“活化石”级别的存在。自上世纪70…...

BeagleBone Black设备树覆盖层实战:从原理到自定义SPI/UART配置

1. 项目概述&#xff1a;为什么BeagleBone Black开发者必须掌握设备树&#xff1f;如果你正在使用BeagleBone Black&#xff08;BBB&#xff09;进行嵌入式开发&#xff0c;并且已经不止一次地困惑于为什么某个外设&#xff08;比如UART、SPI或者某个GPIO&#xff09;无法按预期…...

【负荷预测】基于LSTM-KAN的负荷预测研究(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...