MyHomeLab:3-在docker中安装gitlab
在docker中安装gitlab
https://www.cnblogs.com/diaomina/p/12830449.html
拉取gitlab docker镜像
1 | docker pull gitlab/gitlab-ce:latest |
配置存储
在运行GitLab前,需要先配置本地存储,留给GitLab使用。
可配置一个新的环境变量,$GITLAB_HOME
指向配置、日志和数据文件所在的目录。确保目录存在并且已授予适当的权限。
1 | export GITLAB_HOME=/srv/gitlab |
主要是以下三个目录需要透出来存储
Local location | Container location | Usage |
---|---|---|
$GITLAB_HOME/data |
/var/opt/gitlab |
For storing application data. |
$GITLAB_HOME/logs |
/var/log/gitlab |
For storing logs. |
$GITLAB_HOME/config |
/etc/gitlab |
For storing the GitLab configuration files. |
在相应位置创建好/data
,/logs
,/config
运行GitLab并运行容器
1 | sudo docker run \ |
命令解释:
-i 以交互模式运行容器,通常与 -t 同时使用命令解释:
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-p 9980:80 将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口
-p 9922:22 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
-v /data/gitlab/etc:/etc/gitlab 将容器/etc/gitlab目录挂载到宿主机/data/gitlab/etc:/etc/gitlab目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
–restart always 容器自启动
–privileged=true 让容器获取宿主机root权限
–name gitlab 设置容器名称为gitlab
gitlab/gitlab-ce 镜像的名称,这里也可以写镜像ID
配置修改
进入容器内
1 | docker exec -it mygitlab /bin/bash |
修改gitlab.rb
1 | 修改gitlab.rb |
Root密码
配置好后访问自己的gitlab页面,可以用以下命令获取登陆密码,密码文件将在 24 小时后的第一次重新配置运行中自动删除。
1 | sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password |
gitlab-runner
启动
想要使用gitlab的CI/CD功能还需要有一个RUNNER,此为一个单独的docker
注意 -v /var/run/docker.sock:/var/run/docker.sock 不可或缺 这样在容器中装载/var/run/docker.sock,使构建的容器保存在宿主机本身的镜像存储中。
1 | docker run -d --name gitlab-runner --restart always \ |
注册
启动一个临时docker注册,配置内容会写入/data/gitlab-runner/config
1 | docker run --rm -it -v /data/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register |
执行后会要求输入gitlab中的url和令牌
- 输入您的 GitLab 实例 URL(也称为
gitlab-ci coordinator URL
)。 - 输入您获得的令牌以注册Runner。
- 输入Runner的描述。您可以稍后在 GitLab 用户界面中更改此值。
- 输入与 runner 关联的标签,用逗号分隔。您可以稍后在 GitLab 用户界面中更改此值。
- 提供runner executor。对于大多数用例,请输入
docker
。 - 如果您
docker
作为执行人输入,系统会要求您提供默认image用于未在.gitlab-ci.yml
配置.
注册结束后就可以在管理页面看到Runner了
修改配置
进入/data/gitlab-runner/config
,修改config.toml,将volumes改为如下,这样在容器中装载/var/run/docker.sock,使构建的容器保存在宿主机本身的镜像存储中。
1 | volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] |
否则可能会报错 gitlab runner Cannot connect to the Docker daemon at unix ///var/run/docker.sock. Is the docker daemon running?