docker安装gitlab--下载项目路径不正确

参照https://segmentfault.com/a/1190000019772866安装

     1、查找镜像

         docker search git

     2、下载镜像

     docker pull gitlab/gitlab-ce

     3、创建目录

      mkdir -p /srv/gitlab/config

      mkdir -p /srv/gitlab/logs

      mkdir -p /srv/gitlab/data

      通常会将 GitLab 的配置 (etc) 、 日志 (log) 、数据 (data) 放到容器之外, 便于日后升级, 因此请先准备这三个目录。

     4、启动运行

      docker run --detach \

           --hostname gitlab.example.com \

           --publish 8443:443 --publish 8880:80 --publish 8222: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 \

           --privileged=true \

           gitlab/gitlab-ce:latest

     说明:

           --hostname gitlab.example.com: 设置主机名或域名

           --publish 8443:443:将http:443映射到外部端口8443

           --publish 8880:80:将web:80映射到外部端口8880

           --publish 8222:22:将ssh:22映射到外部端口8222

           --name gitlab: 运行容器名

          --restart always: 自动重启

          --volume /srv/gitlab/config:/etc/gitlab: 挂载目录

          --volume /srv/gitlab/logs:/var/log/gitlab: 挂载目录

          --volume /srv/gitlab/data:/var/opt/gitlab: 挂载目录

          --privileged=true 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限

     运行成功之后,可以使用下面的命令查看容器运行状态:

      docker ps 

     可以看到 GitLab 已经在运行了,有一个属性 STATUS 为 health: starting,说明 gitlab 的服务正在启动中,还没有启动完毕。       等这个状态变成 healthy 时则说明已经部署完成,可以访问了。

     5、访问

     gitlab启动成功后,浏览器访问http://ip:8880, 即可访问

     ps:此处会有问题,访问不到,详情见下“遇到问题”

     6、配置邮箱服务

     想要让 GitLab 给你发送邮件,还要配置一下邮件服务器,这里以QQ邮箱的 IMAP/SMTP服务 来配置。

     打开邮箱->设置->账户,然后开启 IMAP/SMTP服务,然后根据文档获取 授权码 ,这步比较重要。

     然后跳转至挂载目录 /srv/gitlab/config/ 编辑gitlab.rb 文件,找到 Email Settings的注释位置,然后修改以下内容:

        ### Email Settings

        gitlab_rails['smtp_enable'] = true # 开启 SMTP 功能

        gitlab_rails['smtp_address'] = "smtp.qq.com"

        gitlab_rails['smtp_port'] = 465 # 端口不可以选择587,测试过会发送邮件失败

        gitlab_rails['smtp_user_name'] = "test@qq.com" # 你的邮箱账号

        gitlab_rails['smtp_password'] = "1324dasd" # 授权码,不是密码

        gitlab_rails['smtp_authentication'] = "login"

        gitlab_rails['smtp_enable_starttls_auto'] = true

        gitlab_rails['smtp_tls'] = true

        gitlab_rails['gitlab_email_from'] = 'test@qq.com' # 发件人信息,必须跟‘smtp_user_name’保持一致,否则报错

        gitlab_rails['smtp_domain'] = "qq.com" # 修改并不影响

配置完成后保存,然后输入下面的命令使配置生效。

        sudo docker exec gitlab gitlab-ctl reconfigure

使配置生效之后我们可以使用 gitlab 自带的工具进行一下测试。依次执行下面的命令:

# 开启 gitlab 的 bash 工具

        $ docker exec -it gitlab bash

# 开启 gitlab-rails 工具

        $ gitlab-rails console production

# 发送邮件进行测试

        Notify.test_email('test_001@123.com', 'Message Subject', 'Message Body').deliver_now

测试完成之后退出gitlab的bash工具,重启 gitlab 即可。

        $ docker restart gitlab

发现问题

     通过url 访问不到git

解决问题

  博主给出的方案:

        在之前第一次运行 gitlab 容器的时候,有一个参数 hostname 为 gitlab.example.com , 如果配置了域名可以忽略这一步,如          果你没有配置相应域名的话,你的仓库的地址将会变为下面这样:

        ssh : git@gitlab.example.com:test/test.git

        http:gitlab.example.com/test/test.git

        如果域名不存在的话,这个地址是无法进行 clone 的。

        为了解决这个问题,我们可以设置成 IP 或 你配置了的域名来访问。

        打开文件 /srv/gitlab/config/gitlab.rb 文件并找到

        # external_url 'GENERATED_EXTERNAL_URL'

       这行,去掉注释,并按照下面的格式修改。

        # ip 形式

        external_url 'http://192.168.1.44'

        # 域名形式

        external_url 'http://JemGeek.com'

        # 子域名

        external_url 'http://gitlab.JemGeek.com'

        # 其他形式

        external_url 'http://JemGeek.com/gitlab'

        以上形式都是可以的。修改完成后,输入命令:

   $ docker exec gitlab gitlab-ctl reconfigure

        使配置生效,然后重启 gitlab 即可。

         ps 并没有解决问题

后查找到的解决方案:

    方法1(装载https://www.jianshu.com/p/d707f70c60d2):

       问题的原因就出在external_url地址设置上。
       GitLab默认的http访问端口号为80端口,如果想更改端口号,一般是通过docker run时设置端口映射,将80端口映射为其他           端口。例如:

      这里将GitLab的http端口改为8080,如果你这时修改external_url地址为http://ip:8080,那GitLab肯定访问不了,因为你已经          将内部的端口号修改为8080端口了,而你通过docker run映射出来的端口号是80端口,所以不可能访问到。那该怎么办?

      既然你已经将内部的端口号由80端口改为8080端口,这时候你就将容器停止并删除,但是不要将映射的配置文件删除                  (gitlab.rb文件),docker在删除容器的时候不会将映射的文件删除。在此运行docker run命令,如下

 注意这里映射的端口为8080端口,根据自己设置的external_url端口号进行调整

  接下来就能访问GitLab了,并且在checkout检出地址栏中,http地址端口号也正确了。

方法2:(未亲测,但觉得应该可行)

     我的方法是:假设期望的外部地址为 http://gitlab.example.com:50000/
     1. 修改之前的映射端口:
          1) 找到 gitlab dockerId docker ps
          2) 停止所有 docker实例
          3)停止docker服务 systemctl stop docker
          4) cd /var/lib/docker/containers/<docker-id>
          5) 编辑 hostconfig.json config.v2.json 中相关的映射端口(找到 80 改成 50000)
     2. 修改external_url为实际的外部地址 url+port
          1) 编辑 gitlab.rb文件 external_url = gitlab.example.com:50000
          2) systemctl start docker
          3) start docker gitlab

 

浏览器访问

浏览器可以正常访问

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值