Docker安装Gitlab
# 拉取镜像
docker pull gitlab/gitlab-ce
# 创建挂载目录
mkdir -p /opt/gitlab/{data,etc,log}
# 启动容器
docker run -d -p 8090:80 -p 8443:443 -p 8222:22 --name gitlab --restart always --privileged=true -v /opt/gitlab/etc:/etc/gitlab -v /opt/gitlab/log:/var/log/gitlab -v /opt/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
df12108bb81d gitlab/gitlab-ce:latest "/assets/wrapper" 23 minutes ago Up 10 minutes (healthy) 0.0.0.0:8222->22/tcp, 0.0.0.0:8090->80/tcp, 0.0.0.0:8443->443/tcp gitlab
# 端口说明
# 80和443端口是gitlab中nginx使用的,22端口是gitlab中ssh使用的,均是默认端口
在浏览器中输入如下地址:http://宿主机ip:8090
先设置root用户密码(至少8位)
root/12345678
登录后设置界面为中文
创建项目后显示的项目git地址,使用的是容器id的信息,而不是宿主机的信息
解决办法:
修改配置文件中使用的地址或端口(若启动容器时均使用的容器默认端口,则只修改地址,不修改端口)
# 直接修改宿主机上的配置文件,启动容器时挂载了容器数据卷到宿主机上
# vim /opt/gitlab/etc/gitlab.rb
# external_url 'http://192.168.0.253' # 若启动容器时映射的没有使用默认80端口,则地址后面还需要加上端口,这个是通过web页面访问gitlab的地址,暂不修改这个
# 使用ssh的方式clone项目,默认使用的是22端口,因为是通过宿主机访问的,使用的端口是8222,所以需要修改这个,详看下面的图片,使用SSH克隆,地址中需要加上这个端口
gitlab_rails["gitlab_shell_ssh_port"] = 8222
# vim /opt/gitlab/data/gitlab-rails/etc/gitlab.yml # 通过HTTP方式clone项目,默认使用的是80端口,因为是通过宿主机访问的,使用的端口是8090,所以需要修改这个,详看下面的图片,使用HTTP克隆,地址中需要加上这个端口
gitlab:
## Web server settings (note: host is the FQDN, do not include http://)
host: 192.168.0.253 # 默认的是容器id,这里修改成宿主机IP
port: 8090 # 需要修改成通过宿主机访问的那个端口
https: false
# 登录进容器中,重新启动服务,而不是重新启动容器(重启容器的话端口还是80,不是修改后的8090),最终解决办法是修改external_url,后面也加上8090端口号
~ # docker exec -it gitlab gitlab-ctl restart
# 分开操作
~ # docker exec -it gitlab /bin/bash
root@79c266fad617:/# gitlab-ctl restart
注意: 需要修改gitlab.rb配置文件中的站点地址。这里指定的端口是8090(不是必须的)也就是需要将gitlab.rb配置的地址改成8090和external_url端口为8090。
为什么端口要改成一致的?如果不修改gitlab.rb中的站点地址则默认是80端口,这时候做external_url的时候例如将80映射到8090,此时对外访问8090可以打开gitlab页面,但是下载代码的时候会发现地址为80端口,导致下载代码失败。所以这里强调一致哦。
目录 返回
首页