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


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

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


08 补充

以下内容更新时间2023.08.17

部署成功后,使用过程中,出现一些地方的请求链接不是域名,而是内网ip,造成请求失败。
更新docker-compose.yml后解决

version: '3'
services:
...
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'https://www.xxx.com'  # 这里改成了https+域名
    ports:
      - '83:443'  # 这里从80改成了443
...

此外,使用npm做反向代理时,代理的http也修改为了https。

(完)

猜你喜欢

转载自blog.csdn.net/xuzhongyi103/article/details/132124275