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端口,导致下载代码失败。所以这里强调一致哦。

posted @ 2020-10-14 14:26  哈喽哈喽111111  阅读(1028)  评论(0编辑  收藏  举报