文章目录
- 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
(页面下方可以设置成中文)
(完)