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
创建项目后显示的项目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端口,导致下载代码失败。所以这里强调一致哦。