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

杂记 | 记录一次使用Docker安装gitlab-ce的过程(含配置交换内存)

文章目录

  • 01 准备工作
  • 02 (可选)配置交换内存
  • 03 编辑docker-compose.yml
  • 04 启动并修改配置
  • 05 nginx反向代理
  • 06 (可选)修改配置文件
  • 07 访问并登录


01 准备工作

最近想自建一个gitlab服务来保存自己的项目,于是找到gitlab-ce的方式。
开工前先梳理一下状况:

  • 具备一台云服务器(我用的腾讯云)
  • CentOS7的系统,已安装好了docekr和docker-compose(如果没装先自行装一下)
  • 服务器内存为4G(这个内存有点吃紧,先凑合用)
  • 服务不直接对外暴露,而是使用nginx做反向代理(实际使用nginx proxy manager来做,主打一个:省心)
  • 有一个自己的域名,方便访问,没有的话用ip也能访问(推荐还是用域名,配合HTTPS更舒心)

我的云服务器配置如下,建议不要低于我的配置:
在这里插入图片描述

02 (可选)配置交换内存

由于我的服务器内存只有4G,而腾讯云的服务器居然没有给我分配交换内存,于是我决定自己配置交换内存,相当于虚拟内存。
如果已经有交换内存,也可以通过配置来叠加扩大。
以下是Linux命令

# 先查看内存状况
free -h# 在根目录创建swap文件夹
mkdir /swap# 进入到swap目录
cd /swap# 创建一个4096M的交换内存(根据自己情况修改结尾的count属性)
dd if=/dev/zero of=swapfile bs=1MB count=4096# 设置并建立交换文件
mkswap ./swapfile# 赋予交换文件600权限(安全起见)
chmod 600 ./swapfile# 启用交换分区
swapon ./swapfile# 设置开机自动挂载
echo '/swap/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab# 重启服务器
reboot# 查看交换内存是否设置成功
free -h

03 编辑docker-compose.yml

接下来,在root目录下新建一个gitlab文件夹,在其中创建docker-compose.yml文件并编辑内容。

version: '3'
services:gitlab:image: 'gitlab/gitlab-ce:latest'restart: alwayshostname: '10.0.12.13'  # 因为我打算用nginx反向代理,这里填的宿主机的内网ipenvironment:  # 配置外部访问链接,这里不建议使用https,否则启动和访问都可能变慢,https在nginx那里去配置GITLAB_OMNIBUS_CONFIG: |external_url 'http://10.0.12.13'ports:- '83:80'# - '443:443'  # 因为docker中没使用https,这里注释了# - '22:22'  # 暂时用不到,也注释了,注意端口冲突的问题volumes:- './config:/etc/gitlab'- './logs:/var/log/gitlab'- './data:/var/opt/gitlab'

04 启动并修改配置

启动前先拉取镜像

# 在上一步创建的docker-compose.yml所在的目录执行
docker-compose pull# 拉取完成后使用命令启动容器
docker-compose up -d

启动需要花一些时间,我花了5分钟,先暂时不要访问。

05 nginx反向代理

为了安全起见,我做了nginx反向代理,实际是用的nginx proxy manager来完成的,nginx也可自行配置。
在这里插入图片描述

如果是使用nginx.conf配置如下:
(没有真实试过,仅供参考)

http {...server {listen 443 ssl http2;  # 使用443 开启httpsserver_name www.xxx.com;  # 改成访问的域名或iplocation / {proxy_pass http://127.0.0.1:83;  # 内网ip或127.0.0.1加容器外部端口}# 配置证书ssl_certificate /etc/ssl/certificates/www.xxx.com.pem;ssl_certificate_key /etc/ssl/certificates/www.xxx.com.key;}...
}

06 (可选)修改配置文件

我的gitlab启动后,内存占用维持在90%+,可以考虑修改配置文件,牺牲一部分功能来保证运转。
实测内存占用从93%下降到了83%,还算给力。

# 找到外部卷上对应的配置文件
cd ~/gitlab  # 这个文件夹是我存放docker-compose.yml的文件夹# 使用编辑器编辑配置文件
vim ./config/gitlab.rb# 将下面两项置为false 因为是个人使用 用不到这些功能
prometheus['enable'] = false  # Prometheus 监控
mattermost['enable'] = false  # Mattermost 聊天# tips 可能会用到的vim命令
/world  # 斜杠后跟要查找的词
n  # 跳转到下一个
N  # 跳转到上一个
yy  # 复制这一行
p  # 粘贴复制的内容
u  # 撤销一步操作
:noh  # 取消高亮显示
:wq  # 保存并退出# 接下来进入容器内部
docker exec -it <gitlab容器名或id> /bin/bash# 重载配置
gitlab-ctl reconfigure# 退出容器
exit

07 访问并登录

然后就是输入刚才配置的域名或ip进行访问。
首次访问可以注册账号,也可使用root账户登录。

# 获取root用户初始密码:
docker exec -it <gitlab容器名或id> grep 'Password:' /etc/gitlab/initial_root_password# 结果如下
Password: xxxxxxxxxxxxxxxxx

(页面下方可以设置成中文)
在这里插入图片描述


(完)

相关文章:

杂记 | 记录一次使用Docker安装gitlab-ce的过程(含配置交换内存)

文章目录 01 准备工作02 &#xff08;可选&#xff09;配置交换内存03 编辑docker-compose.yml04 启动并修改配置05 nginx反向代理06 &#xff08;可选&#xff09;修改配置文件07 访问并登录 01 准备工作 最近想自建一个gitlab服务来保存自己的项目&#xff0c;于是找到gitla…...

MyBatis@Param注解的用法

一、前言 本人在学习mybatis的过程中遇到的一个让人不爽的bug&#xff0c;在查找了些相关的资料后得以解决&#xff0c;遂记录。 二、报错及解决 mapper中有一方法&#xff1a; Select("select * from emp " "where name like concat(%, #{name}, %) "…...

Shader 编程:GLSL 重要的内置函数

该原创文章首发于微信公众号&#xff1a;字节流动 未经作者&#xff08;微信ID&#xff1a;Byte-Flow&#xff09;允许&#xff0c;禁止转载 前面发了一些关于 Shader 编程的文章&#xff0c;有读者反馈太碎片化了&#xff0c;希望这里能整理出来一个系列&#xff0c;方便系统的…...

浏览器同源策略

浏览器同源策略 同源策略&#xff1a;是一个重要的浏览器的安全策略&#xff0c;用于限制一个源的文档或者它加载的脚本如何能与另一个源的资源进行交互 它能帮助阻隔恶意文档&#xff0c;减少可能被攻击的媒介 例如&#xff1a;被钓鱼网站收集信息&#xff0c;使用ajax发起…...

GD32F103的EXTI中断和EXTI事件

GD32F103的EXTI可以产生中断&#xff0c;也产生事件信号。 GD32F03的EXTI触发源: 1、I/O管脚的16根线&#xff1b; 2、内部模块的4根线(包括LVD、RTC闹钟、USB唤醒、以太网唤醒)。 通过配置GPIO模块的AFIO_EXTISSx寄存器&#xff0c;所有的GPIO管脚都可以被选作EXTI的触发源…...

了解 spring MVC + 使用spring MVC - springboot

前言 本篇介绍什么是spring MVC &#xff0c;如何使用spring MVC&#xff0c;了解如何连接客户端与后端&#xff0c;如何从前端获取各种参数&#xff1b;如有错误&#xff0c;请在评论区指正&#xff0c;让我们一起交流&#xff0c;共同进步&#xff01; 文章目录 前言1. 什么…...

C#中的Invoke

在 C# 中&#xff0c;Invoke() 是一个用于调用方法的方法&#xff0c;它能够在运行时动态地调用一个方法。 Invoke() 方法的使用方式有两种&#xff1a; 通过 MethodInfo 对象调用&#xff1a; using System.Reflection;namespace ConsoleApp_Invoke {public class Program{…...

Hive终端命令行打印很多日志时,如何设置日志级别

示例&#xff1a;use test; 切换到test数据库时&#xff0c;输出很多日志信息不方便看结果&#xff0c;如下图。 解决方法&#xff1a; 退出hive命令行界面&#xff08;ctrlC&#xff09;执行“vi /usr/local/apache-hive-3.1.2-bin/conf/log4j.properties”命令&#xff0c;创…...

Android的PopupWindow(详细版)

经典好文推荐,通过阅读本文,您将收获以下知识点: 一、PopupWindow简介 二、PopupWindow 的使用方法 三、底部PopupWindow的实现 四、参考文献 一、PopupWindow简介 在学习PopupWindow之前,我们先了解一下PopupWindow的继承关系。 PopupWindow继承关系如下: java.lang.Obje…...

Navicat远程连接Linux的MySQL

打开Linux终端&#xff0c;进入root权限&#xff0c;用vim打开MySQL的配置文件 vim /etc/mysql/mysql.conf.d/mysqld.cnf将bind-address的值改为0.0.0.0 进入MySQL mysql -u root -p 将root用户改为允许远程登录 update user set host % where user root; 创建用户 CRE…...

Spring IOC

◆ 传统Javaweb开发的困惑 ◆ IoC、DI和AOP思想提出 ◆ Spring框架的诞生 Spring | Home IOC控制反转&#xff1a;BeanFactory 快速入门 package com.xiaolin.service.Impl;import com.xiaolin.dao.UserDao; import com.xiaolin.service.UserService;public class UserServic…...

华为OD机试真题【上班之路】

1、题目描述 【上班之路】 Jungle 生活在美丽的蓝鲸城&#xff0c;大马路都是方方正正&#xff0c;但是每天马路的封闭情况都不一样。 地图由以下元素组成&#xff1a; 1&#xff09;”.” — 空地&#xff0c;可以达到; 2&#xff09;”*” — 路障&#xff0c;不可达到; 3&a…...

【linux源码学习】【实验篇】使用bochs运行linux0.11系统(搭建一个自己的工作站)

目录 背景资源获取bochs环境搭建windowsbochs环境搭建linux声明 背景 最近看赵炯老师的《linux内核完全注释》&#xff0c;然后在最后一个习题里面看到使用bochs跑一下0.11的内核代码&#xff0c;本来觉得很难&#xff0c;但是如果做过一遍就会发现其实很简单&#xff0c;这个…...

java+springboot+mysql个人日记管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的个人日记管理系统&#xff0c;系统包含超级管理员、管理员、用户角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;用户管理&#xff1b;反馈管理&#xff1b;系统公告&#xff1b;个人…...

旋转图像 LeetCode热题100

题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 思路 利用矩阵性质&#xff0c;先反转矩阵的每一列元素&#xff0c;再把…...

Vue3 element-plus表单嵌套表格实现动态表单验证

Vue3结合element-plus表单项可以动态添加/删除 部分效果图如下&#xff1a; 另表格有添加和删除按钮&#xff0c;点击提交进行表单验证。 首先data格式必须是对象包裹数组 import { ref, reactive } from vue; import { FormInstance } from element-plus const froms re…...

VSCode插件Todo Tree的使用

在VSCode中安装插件Todo Tree。按下快捷键ctrlshiftP&#xff0c;输入setting.jspn&#xff0c;选择相应的配置范围&#xff0c;我们选择的是用户配置 Open User Settings(JSON)&#xff0c;将以下代码插入其中。 //todo-tree 标签配置从这里开始 标签兼容大小写字母(很好的功…...

无人驾驶实战-第五课(动态环境感知与3D检测算法)

激光雷达的分类&#xff1a; 机械式Lidar&#xff1a;TOF、N个独立激光单元、旋转产生360度视场 MEMS式Lidar&#xff1a;不旋转 激光雷达的输出是点云&#xff0c;点云数据特点&#xff1a; 简单&#xff1a;x y z i &#xff08;i为信号强度&#xff09; 稀疏&#xff1a;7%&…...

Tomcat 的内存配置

修改 Tomcat 的内存配置&#xff0c;你需要调整 Tomcat 的 Java 虚拟机&#xff08;JVM&#xff09;参数。具体来说&#xff0c;你需要修改 catalina.sh&#xff08;Linux/macOS&#xff09;或 catalina.bat&#xff08;Windows&#xff09;脚本中的 JAVA_OPTS 变量。以下是一般…...

pycharm出现python test运行报错(pytest模式)

pycharm出现python test运行报错 一、python test 执行代码报错二、删除运行配置三、修改pycharm默认配置为 unittests四、成功&#xff01; 一、python test 执行代码报错 二、删除运行配置 三、修改pycharm默认配置为 unittests 四、成功&#xff01;...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

[USACO23FEB] Bakery S

题目描述 Bessie 开了一家面包店! 在她的面包店里&#xff0c;Bessie 有一个烤箱&#xff0c;可以在 t C t_C tC​ 的时间内生产一块饼干或在 t M t_M tM​ 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC​,tM​≤109)。由于空间…...