docker方式部署gitlab
说明
- 操作系统:CentOS Linux release 7.9.2009 (Core)
- docker版本:20.10.17
- 主机ip地址:172.16.100.107
- gitlab.cn官网安装教程:https://docs.gitlab.cn/jh/install/docker.html
- 文中包含部署过程中遇到的问题及解决办法
- 内网时间服务器:172.16.100.2
安装
创建存放持久化数据的目录
mkdir /srv/gitlab
cd /srv/gitlab/
创建必需的子目录
mkdir data logs config
修改官方命令
docker run --detach \
--hostname 172.16.100.107 \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest
上面的命令中重点是这些卷
--hostname 172.16.100.107 #修改成你自己的
--volume /srv/gitlab/config:/etc/gitlab
--volume /srv/gitlab/logs:/var/log/gitlab
--volume /srv/gitlab/data:/var/opt/gitlab
此时不要运行命令,这里我们要看一下命令,官方命令可能存在问题
--publish 443:443 --publish 80:80 --publish 22:22
这里的的含义是要占用本机的443 80 22 端口.众所周知443 80端口般没问题,但是22端口一般存在问题.22端口一般是ssh所用端口.
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 952/sshd
所以我们需要修改一下这个端口,否则容器是无法启动的,会报这个错误,我这里把22改为2222端口,你可以改为其它没有被进程占用的端口:
docker: Error response from daemon: driver failed programming external connectivity on endpoint gitlab (dc36d8ee8dea7b846ded2cbde2b2788e9dbed834b9ce6f24716dc584425502ea): Error starting userland proxy: listen tcp4 0.0.0.0:22: bind: address already in use.
最终命令如下:
docker run --detach \
--hostname 172.16.100.107 \
--publish 443:443 --publish 80:80 --publish 2222:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
--shm-size 256m \
registry.gitlab.cn/omnibus/gitlab-jh:latest
执行后我们等待镜像拉取完毕,查看容器是否创建成功.镜像比较大,需要拉取一会.
[root@dhl107 gitlab]# docker run --detach --hostname 172.16.100.107 --publish 443:443 --publish 80:80 --publish 2222:22 --name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab --volume /srv/gitlab/logs:/var/log/gitlab --volume /srv/gitlab/data:/var/opt/gitlab --shm-size 256m registry.gitlab.cn/omnibus/gitlab-jh:latest
Unable to find image 'registry.gitlab.cn/omnibus/gitlab-jh:latest' locally
latest: Pulling from omnibus/gitlab-jh
846c0b181fff: Pull complete
b177d2c6b473: Pull complete
1237feeb5080: Pull complete
d699df069df3: Pull complete
b0d65d890c59: Pull complete
7b73a6fe76ef: Pull complete
cb988e6d5c63: Pull complete
f57b8db0a491: Extracting [=======================================> ] 1.036GB/1.326GB
我们查看容器是否创建成功:
[root@dhl107 gitlab]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3040e6f04d0e registry.gitlab.cn/omnibus/gitlab-jh:latest "/assets/wrapper" 5 seconds ago Up 4 seconds (health: starting) 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp, 0.0.0.0:2222->22/tcp, :::2222->22/tcp gitlab
如果创建成功,使用下面的命令可以跟踪容器内gitlab应用启动日志
[root@dhl107 gitlab]# docker logs -f gitlab
Thank you for using GitLab Docker Image!
Current version: gitlab-jh=15.7.2-jh.0
Configure GitLab for your system by editing /etc/gitlab/gitlab.rb file #这里不必理会,因为我们已经映射到了主机目录,停止gitlab容器,直接vim修改/srv/gitlab/config/gitlab.rb文件,然后启动容器即可.
And restart this container to reload settings.
To do it use docker exec:
docker exec -it gitlab editor /etc/gitlab/gitlab.rb #这里不必理会,因为我们已经映射到了主机目录,停止gitlab容器,直接vim修改/srv/gitlab/config/gitlab.rb文件,然后启动容器即可.
docker restart gitlab
For a comprehensive list of configuration options please see the Omnibus GitLab readme
https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
If this container fails to start due to permission problems try to fix it by executing:
docker exec -it gitlab update-permissions
docker restart gitlab
Cleaning stale PIDs & sockets
cat: /var/opt/gitlab/gitlab-rails/VERSION: No such file or directory
Installing gitlab.rb config...
Generating ssh_host_rsa_key...
初始化过程可能需要很长时间。所以需要耐心等待.每过一会可以访问http://172.16.100.107/ 试试.
如果出现了登录页面,我们需要查找一个密码
[root@dhl107 ~]# sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
Password: ZRIKocuTDT/jD6B52QUqw3C9QNJmZCfW3ZhpGU7zocU=
用户名:root
密码: ZRIKocuTDT/jD6B52QUqw3C9QNJmZCfW3ZhpGU7zocU=
使用该密码即可登录.
如果想要在命令行修改初始密码(或者初始密码弄丢了),我们可以使用下面的命令:
gitlab-rake "gitlab:password:reset[root]"
Enter password:
Confirm password:
上面命令的意思是修改root的密码,然后根据shell提示输入2次密码,完成密码修改
系统登录报422错误,这个错误我这边是因为时间与标准时间差了1天多.同步一下时间就好了.
同步时间命令:
[root@dhl107 ~]# yum install ntpdate -y
[root@dhl107 ~]# ntpdate 172.16.100.2 #172.16.100.2是我的内网时间服务器
13 Jan 18:40:55 ntpdate[37087]: step time server 172.16.100.2 offset 106114.358633 sec
[root@dhl107 ~]# date
2023年 01月 13日 星期五 18:40:59 CST