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

news2024/11/15 21:26:42

文章目录

  • 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: always
    hostname: '10.0.12.13'  # 因为我打算用nginx反向代理,这里填的宿主机的内网ip
    environment:  # 配置外部访问链接,这里不建议使用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 开启https
        server_name www.xxx.com;  # 改成访问的域名或ip
        location / {
            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

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


(完)

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

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

相关文章

Flink CEP(三)pattern动态更新

线上运行的CEP中肯定经常遇到规则变更的情况&#xff0c;如果每次变更时都将任务重启、重新发布是非常不优雅的。尤其在营销或者风控这种对实时性要求比较高的场景&#xff0c;如果规则窗口过长&#xff08;一两个星期&#xff09;&#xff0c;状态过大&#xff0c;就会导致重启…

策略模式(C++)

定义 定义一系列算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可互相替换((变化)。该模式使得算法可独立手使用它的客户程序稳定)而变化(扩展&#xff0c;子类化)。 ——《设计模式》GoF 使用场景 在软件构建过程中&#xff0c;某些对象使用的算法可能多种多…

24考研数据结构-并查集

目录 5.5.2 并查集&#xff08;双亲表示法&#xff09;1. 并查集的存储结构2. 并查集的代码实现初始化并查时间复杂度union操作的优化&#xff08;不要瘦高的树&#xff09;并查集的进一步优化&#xff08;find的优化&#xff0c;压缩路径&#xff09;优化总结 数据结构&#x…

大模型使用——超算上部署LLAMA-2-70B-Chat

大模型使用——超算上部署LLAMA-2-70B-Chat 前言 1、本机为Inspiron 5005&#xff0c;为64位&#xff0c;所用操作系统为Windos 10。超算的操作系统为基于Centos的linux&#xff0c;GPU配置为A100&#xff0c;所使用开发环境为Anaconda。 2、本教程主要实现了在超算上部署LLAM…

SpringBoot整合redis集群实现读写分离(哨兵模式)

1 首先要在Linux虚拟机上安装redis # 安装包存放目录 cd /usr/local/redis # 下载最新稳定版 wget https://download.redis.io/releases/redis-6.2.6.tar.gz # 解压 tar -zxvf redis-6.2.6.tar.gz # 进入解压后的目录 cd /usr/local/redis/redis-6.2.6/ # 编译 make # 执行 &q…

系列二、IOC基本概念和底层原理

一、IOC基本概念 控制反转&#xff1a;把对象创建和对象之间的调用过程&#xff0c;交给Spring进行管理&#xff1b;使用IOC的目的&#xff1a;减低耦合度&#xff1b; 二、IOC底层原理 xml解析 工厂模式 反射 2.1、图解IOC底层原理 # 第一步&#xff1a;xml配置文件&am…

【小沐学NLP】在线AI绘画网站(网易云课堂:AI绘画工坊)

文章目录 1、简介1.1 参与方式1.2 模型简介 2、使用费用3、操作步骤3.1 选择模型3.2 输入提示词3.3 调整参数3.4 图片生成 4、测试例子4.1 小狗4.2 蜘蛛侠4.3 人物4.4 龙猫 结语 1、简介 Stable Diffusion是一种强大的图像生成AI&#xff0c;它可以根据输入的文字描述词&#…

AI驱动的靶点发现综述

疾病建模和靶点识别是药物发现中最关键的初始步骤。传统的靶点识别是一个耗时的过程&#xff0c;需要数年至数十年的时间&#xff0c;并且通常从学术报告开始。鉴于其分析大型数据集和复杂生物网络的优势&#xff0c;人工智能在现代药物靶点识别中发挥着越来越重要的作用。该综…

telnet检验网络能不能通

telnet检测网络能不能通&#xff08;ip地址端口号&#xff09;

wait,notify/notifyAll都要放在synchronized锁里面

wait&#xff0c;notify/notifyAll都要放在synchronized锁里面 如果没放在synchronized锁里面&#xff0c;就要报这样的错误 public class Test5 {public static void main(String[] args) throws InterruptedException {Thread t1 new Thread(()->{syn();},"t1&quo…

【C高级】Day 3 shell

1. 整理思维导图 3. 输入一个文件名&#xff0c;判断是否为shell脚本文件&#xff0c;如果是脚本文件&#xff0c;判断是否有可执行权限&#xff0c;如果有可执行权限&#xff0c;运行文件&#xff0c;如果没有可执行权限&#xff0c;给文件添加可执行权限。 #!/bin/bash rea…

python制作小程序制作流程,用python编写一个小程序

这篇文章主要介绍了python制作小程序代码宠物运输&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获&#xff0c;下面让小编带着大家一起了解一下。 1 importtkinter2 importtkinter.messagebox3 importmath4 classJSQ:5 6 7 d…

CAM,PradCAM,layer CAM(可解释性分析方法)

目录 1.CAM 1.1作用 1.2应用实例 1.3CAM的特点 1.4CAM的思路 1.5CAM的缺点 2.GradCAM 2.1和GAM的区别及思路 2.2应用面 2.3一个延深&#xff08;解决模型偏见&#xff09; 2.4缺点 3.Grad CAM 4.Score CAM 5.layer CAM 参考文献 1.CAM 1.1作用 CAM不不光可以分类还…

前端JS实用操作符,一些骚操作✨

目录 0、!! 双重逻辑非操作符 &#x1f4da; 1、?? 操作符 空值合并/空判断 ✅ 2、?. 可选链运算符&#x1f50d; 3、?? 操作符 逻辑空值赋值运算符 &#x1f49a; 4、三元运算符 &#x1f4d7; 5、~~ 操作符 双位运算符 &#x1f528; 6、&&与 ||或 短…

在java中操作redis_Data

1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency> 2.配置Redis数据源 redis:host: ${sky.redis.host}port: ${sky.redis.port}password: ${sk…

揭秘程序员最喜欢的5个高薪工作

大家好&#xff0c;这里是程序员晚枫。想了解更多精彩内容&#xff0c;快来关注程序员晚枫 今天给大家推荐5个适合程序员的高薪岗位。 01 推荐岗位 以下是5个工资最高的程序员工作&#xff1a; 数据科学家&#xff1a;数据科学家是负责数据收集、处理、分析和报告的专业人员。…

Markdown学习简记

目录 一、写Markdown的第0步 二、语法须知 标题 粗体强调 斜体 斜体同时粗体 删除线 高亮 代码 代码块 引用块 无序列表 有序列表 链接 表格 图片 分割线 目录生成 内联HTML代码 Typora常用快捷键 Typora的主题样式与检查元素 一、写Markdown的第…

MySQL事务篇:ACID原则、事务隔离级别及事务机制原理剖析

引言 众所周知&#xff0c;MySQL数据库的核心功能就是存储数据&#xff0c;通常是整个业务系统中最重要的一层&#xff0c;可谓是整个系统的“大本营”&#xff0c;因此只要MySQL存在些许隐患问题&#xff0c;对于整个系统而言都是致命的。那此刻不妨思考一个问题&#xff1a; …

录像编辑软件—— Camtasia Studio 2023下载安装和激活的基本流程

Camtasia Studio 2023是一款简单易用的高清录屏和视频编辑软件&#xff0c;拥有录制屏幕和配音、视频的剪辑和过场动画、添加说明字幕和水印、制作视频封面和菜单、视频压缩和播放。 Camtasia Studio能在任何颜色模式下轻松地记录 屏幕动作&#xff0c;包括影像、音效、鼠标移…

C语言案例 按序输出三个整数-02

题目&#xff1a;输入三个整数a,b,c,按从小到大的顺序输出 步骤一&#xff1a;定义程序的目标 编写一个C程序&#xff0c;随机输入三个整数&#xff0c;按照从小到大的顺序输出。 步骤二&#xff1a;程序设计 整个程序由三个模块组成&#xff0c;第一个为scanf输入函数模块&a…