Saki's 研究记录

基于Docker在M芯片的Mac OS X系统中的部署和设置GitLab

字数统计: 1.2k阅读时长: 5 min
2023/04/11

环境信息

mac OS: 13.1
docker desktop: 4.16.2 (95914)
Docker Compose version 2.6.1

环境准备

使用命令搜索镜像:docker search gitlib-ce

1
2
3
4
docker search gitlib
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
yhfudev/docker-gitlab docker gitlib for arch linux 3 [OK]
...

找到镜像后,拉取镜像:
yrzr/gitlab-ce-arm64v8

1
docker pull yrzr/gitlab-ce-arm64v8

这个是gitlabarm64镜像

1
> mkdir gitlab

设置环境变量:

1
2
3
> export GITLAB_HOME=$(pwd)/gitlab
> echo $GITLAB_HOME
/Users/shenshijie/Data/app/gitlab

或使用.env:

1
GITLAB_HOME=${PWD}

或直接使用.替换$GITLAB_HOME

为 gitlab 创建 docker-compose 配置文件

1
vim docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
version: '3.7'
services:
web:
image: 'yrzr/gitlab-ce-arm64v8:latest'
hostname: 'localhost'
restart: always
container_name: gitlab-ce
depends_on:
- postgres
environment:
TZ: 'Asia/Shanghai'
#GITLAB_ROOT_PASSWORD: ''
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://localhost'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
gitlab_rails['gitlab_ssh_host'] = 'localhost'
gitlab_rails['gitlab_shell_ssh_port'] = 9922
postgresql['enable'] = false
gitlab_rails['db_username'] = "gitlab"
gitlab_rails['db_password'] = "gitlab"
gitlab_rails['db_host'] = "postgresql"
gitlab_rails['db_database'] = "gitlabhq_production"
gitlab_rails['db_adapter'] = 'postgresql'
gitlab_rails['db_encoding'] = 'utf8'
ports:
- '9980:80'
- '9922:22'
- '8443:443'
volumes:
- '$GITLAB_HOME/config:/etc/gitlab'
- '$GITLAB_HOME/logs:/var/log/gitlab'
- '$GITLAB_HOME/data:/var/opt/gitlab'
networks:
- gitlab

postgres:
image: postgres
container_name: postgres
hostname: 'postgresql'
restart: always
ports:
- 25432:5432
volumes:
- $GITLAB_HOME/db_data:/var/lib/postgresql/data
environment:
POSTGRES_USER: gitlab
POSTGRES_PASSWORD: gitlab
POSTGRES_DB: gitlabhq_production
networks:
- gitlab

networks:
gitlab:
name: gitlab-network

参数解析:

  • hostname: 访问的域名
  • env: 这里面就是临时提权生效的
    • 这个就是可以给gitlab传入部分参数,让其构建过程读取你设置的值(gitlab.rb)并且生效
    • 官方说这个并不会写入gitlab.rb(就是gitlab的配置文件),只是临时生效(容器生存期间)

对于Gitlab配置,你可以配置容器内的,也可以配置映射的区域
前者可以用gitlab-ctl reconfigure重新生效,后者需要重启容器

• 容器内: /etc/gitlab
• 映射: $GITLAB_HOME/config

*注意:这里的路径下面一定要加上/etc、/log、/opt,不然创建出来的gitlab文件会有问题

启动容器

1
docker-compose up -d

验证是否启动成功

1
2
3
4
5
docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
gitlab-ce "/assets/wrapper" gitlab running (healthy) 0.0.0.0:9922->22/tcp, 0.0.0.0:9980->80/tcp, 0.0.0.0:8443->443/tcp
gitlab-runner-1 "/usr/bin/dumb-init …" runner running
postgres "docker-entrypoint.s…" postgres running 0.0.0.0:25432->5432/tcp

部署,整个初始化的过程,我这边等了2-4分钟左右, 因为机器配置不是很高~~~~

修改配置

进入容器

1
docker exec -it gitlab-ce /bin/bash

修改 gitlab.rb

1
vi /etc/gitlab/gitlab.rb

gitlab.rb的配置实在是多,整个配置文件目前接近1800行;里面涵盖了日志,安全,nginx,数据库等等的所有配置,大多数配置都有默认值,所以很多东西看你的需要来开启,

在最下面加入以下代码

1
2
3
4
5
6
// gitlab地址,端口默认为80端口
external_url 'http://192.168.124.194'
// ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '192.168.124.194'
// ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

修改http和ssh配置

1
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

注意此处的 host为线上服务器IP,或者改为域名,如果没有则不需要修改

1
2
3
4
5
6
## GitLab settings
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: 192.168.124.194
port: 9980
https: false

修改成功后重启

1
gitlab-ctl restart

或者重载配置文件使其生效

1
gitlab-ctl reconfigure

退出容器

1
exit

使用 root 账户登录:

获取密码:

1
2
docker exec -it gitlab-ce grep 'Password:' /etc/gitlab/initial_root_password
Password: ********************************************

访问:http://localhost:9980 或者 http://0.0.0.0:9980

到这一步就成功一大半了!

登录:
通过IP访问或配置hosts后通过域名访问,获取root初始密码,24小时后失效,需及时修改密码

修改gitlab的root密码

进入容器

1
docker exec -it gitlab-ce /bin/bash

进入gitlab控制台

1
2
3
4
5
6
7
gitlab-rails console -e production
--------------------------------------------------------------------------------
Ruby: ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5) [aarch64-linux]
GitLab: 15.9.2 (d5a415f1e66) FOSS
GitLab Shell: 14.17.0
PostgreSQL: 13.8
------------------------------------------------------------[ booted in 21.18s ]

查询id为1的账号,1默认是超级管理员

1
2
user = User.where(id:1).first
=> #<User id:1 @root>

修改密码 密码如果只有数字无法保存

1
2
user.password='********'
=> "********"

保存修改 如果返回true则表示保存成功

1
2
user.save!
=> true

退出容器

1
exit

中文设置

中文设置方法: 依次点击工具栏最右侧用户头 -> Settings -> Preferred language , 然后选择 “简体中文” 即可。

查看版本

查看Gitlab版本,可以在https://your.domain.name/help上查看GitLab的版本。
gitlab-version

关闭所有在运行的容器

执行命令

1
docker-compose down

引用

以上。

CATALOG
  1. 1. 环境信息
  2. 2. 环境准备
  3. 3. 为 gitlab 创建 docker-compose 配置文件
  4. 4. 启动容器
  5. 5. 修改配置
    1. 5.1. 修改http和ssh配置
    2. 5.2. 使用 root 账户登录:
  6. 6. 修改gitlab的root密码
    1. 6.1. 进入容器
    2. 6.2. 查询id为1的账号,1默认是超级管理员
    3. 6.3. 修改密码 密码如果只有数字无法保存
    4. 6.4. 保存修改 如果返回true则表示保存成功
    5. 6.5. 退出容器
  7. 7. 中文设置
  8. 8. 查看版本
  9. 9. 关闭所有在运行的容器
  10. 10. 引用