杂记 | 记录一次使用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

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


(完)

相关推荐
桂月二二2 小时前
Java与容器化:如何使用Docker和Kubernetes优化Java应用的部署
java·docker·kubernetes
LinkTime_Cloud4 小时前
GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily
大数据·运维·gitlab
sin22014 小时前
GitLab安装及使用
gitlab
Smile丶凉轩4 小时前
Docker核心技术和实现原理
运维·docker·容器
清风细雨_林木木4 小时前
Docker使用——国内Docker的安装办法
运维·docker·容器
dessler5 小时前
Docker-Dockerfile讲解(三)
linux·运维·docker
一休哥助手5 小时前
深入理解 Docker 网桥配置与网络管理
docker·容器·eureka
PittDing7 小时前
【更新】Docker新手入门教程2:在Windows系统通过compose创建多个mysql镜像并配置应用
windows·mysql·docker
Mitch3118 小时前
【漏洞复现】CVE-2014-3120 & CVE-2015-1427 Expression Injection
运维·web安全·elasticsearch·docker·apache
m0_748251089 小时前
docker安装nginx,docker部署vue前端,以及docker部署java的jar部署
java·前端·docker