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

文章目录

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

01 准备工作

最近想自建一个gitlab服务来保存自己的项目,于是找到gitlab-ce的方式。

开工前先梳理一下状况:

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

我的云服务器配置如下,建议不要低于我的配置:

02 (可选)配置交换内存

由于我的服务器内存只有4G,而腾讯云的服务器居然没有给我分配交换内存,于是我决定自己配置交换内存,相当于虚拟内存。

如果已经有交换内存,也可以通过配置来叠加扩大。

以下是Linux命令

sh 复制代码
# 先查看内存状况
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文件并编辑内容。

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 启动并修改配置

启动前先拉取镜像

sh 复制代码
# 在上一步创建的docker-compose.yml所在的目录执行
docker-compose pull

# 拉取完成后使用命令启动容器
docker-compose up -d

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

05 nginx反向代理

为了安全起见,我做了nginx反向代理,实际是用的nginx proxy manager来完成的,nginx也可自行配置。

如果是使用nginx.conf配置如下:

(没有真实试过,仅供参考)

python 复制代码
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%,还算给力。

sh 复制代码
# 找到外部卷上对应的配置文件
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账户登录。

sh 复制代码
# 获取root用户初始密码:
docker exec -it <gitlab容器名或id> grep 'Password:' /etc/gitlab/initial_root_password

# 结果如下
Password: xxxxxxxxxxxxxxxxx

(页面下方可以设置成中文)


(完)

相关推荐
Sirius Wu3 小时前
Docker 镜像的构建、打包、变更、再次打包全流程
运维·docker·容器
Zhu7584 小时前
【软件部署】docker环境部署domino
运维·docker·容器
IT布道6 小时前
[GitLab] 项目源码迁移踩坑记
运维·gitlab
.柒宇.7 小时前
信创实战:银河麒麟 V10 服务器安装、网络配置与 Docker 环境搭建
linux·运维·docker·国产信创·麒麟操作系统
IT从业者张某某7 小时前
基于Docker的hadoop容器安装hive并测试
hive·hadoop·docker
杨浦老苏7 小时前
Docker容器管理面板Dockhand
运维·docker·群晖
努力的搬砖人.7 小时前
配置 Docker 镜像加速器
运维·docker·容器
江湖有缘7 小时前
实时监控所有端口,Docker 部署 WatchYourPorts 保姆级教程
运维·docker·容器
IT从业者张某某7 小时前
基于Docker的hadoop容器安装zookeeper
hadoop·docker·zookeeper
guojb8247 小时前
告别部署踩坑:用 Docker Compose 优雅搞定多前端站点、HTTPS 与 SSE 推送
nginx·docker·https