美文网首页
docker实战--使用docker安装gitlab

docker实战--使用docker安装gitlab

作者: 随意的ID | 来源:发表于2018-11-07 14:01 被阅读0次

    在docker hub上的镜像介绍:https://hub.docker.com/r/gitlab/gitlab-ce/

    gitlab官方的关于如何使用gitlab的docker image文档:https://docs.gitlab.com/omnibus/docker/

    1. 拉取镜像

    docker image pull gitlab/gitlab-ce:latest

    2. 启动容器

    docker run --detach \
        --hostname gitlab.xxx.com \
        --publish 443:443 --publish 80:80 --publish 22:22 \
        --name gitlab \
        --restart always \
        --volume /var/docker-date/gitlab-server/config:/etc/gitlab \
        --volume /var/docker-date/gitlab-server/logs:/var/log/gitlab \
        --volume /var/docker-date/gitlab-server/data:/var/opt/gitlab \
        gitlab/gitlab-ce:latest
    

    --publish中的三个端口可以自行指定,后续web访问和git使用的时候注意端口号不同即可。

    服务启动时间较长,请耐心等待,关于启动的日志可用如下命令查看:
    docker container logs -f gitlab,也可用docker container ls,查看status状态栏里面的显示情况,当显示有(healthy)的时候,代表启动完成。

    3. 配置gitlab

    默认情况下不用修改什么,也可直接访问gitlab页面。

    gitlab的配置文件为:/var/docker-date/gitlab-server/config/gitlab.rb

    3.1 邮件

    邮件是GitLab不得不配置的一块, 它提供了代码提交提醒, 用户注册、密码找回等功能。

    GitLab也提供了几种邮件配置方案, 包含sendmail, postfix 及 smtp, 这里只介绍smtp。

    修改配置文件内如下内容:

    gitlab_rails['smtp_enable'] = true
    gitlab_rails['smtp_address'] = "smtpdm.aliyun.com"
    gitlab_rails['smtp_port'] = 25
    gitlab_rails['smtp_user_name'] = "admin@xxx.com"
    gitlab_rails['smtp_password'] = "xxx"
    gitlab_rails['smtp_domain'] = "smtpdm.aliyun.com"
    gitlab_rails['smtp_authentication'] = "login"
    gitlab_rails['smtp_enable_starttls_auto'] = true
    gitlab_rails['smtp_tls'] = false
    
    gitlab_rails['gitlab_email_from'] = 'admin@xxx.com'
    

    这里使用阿里云的“邮件推送”产品里面的smtp相关配置,一个月可以免费发送200封邮件。当然你也可以使用其他smtp服务,你自己的个人邮箱应该也可以。

    邮件测试,修改完配置后,首先重启容器:

    docker restart gitlab

    有时候重启可能会报错,这时候建议删除容器,然后重新启动一个新容器。

    进入容器:

    docker container exec -it gitlab bash

    进入gitlab自己的控制台:

    gitlab-rails console

    手动执行发送测试邮件命令,检查是否能正常发送:

    Notify.test_email('你的邮箱@qq.com', 'subject', 'content from gitlab').deliver_now

    3.2 简单优化gitlab

    用户注册登录相关:

    在gitlab登录页面上,默认可以随意注册用户,如果你的gitlab打算放到公网上,一般不使用这种方式,可以关闭相关选项。然后使用邮件推送注册,以及强制用户第一次登录修改密码,这种方式需要管理员添加一个用户,写上用户的邮箱,系统会自动发送邮件到邮箱进行注册以及修改密码。

    参考:Gitlab实战3:Gitlab用户注册及管理

    ssl配置:

    方式一:让gitlab自己去let's encrypt自动申请,并可以设置自动续期

    参考:https://docs.gitlab.com/omnibus/settings/ssl.html#let-39-s-encrypt-integration

    方式二:手动指定证书

    参考:https://docs.gitlab.com/omnibus/settings/nginx.html#manually-configuring-https

    得到证书后:

    mkdir -p /var/docker-date/gitlab-server/config/ssl

    复制你的证书到指定目录:

    cp /etc/letsencrypt/archive/xxx.com/* /var/docker-date/gitlab-server/config/ssl

    编辑配置文件,修改如下内容:
    vi /var/docker-date/gitlab-server/config/gitlab.rb

    external_url 'https://gitlab.xxx.com'
    nginx['redirect_http_to_https'] = true
    nginx['ssl_certificate'] = "/etc/gitlab/ssl/fullchain1.pem"
    nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/privkey1.pem"
    

    对于第二种方式,由于Let’s Encrypt证书需定时续签,你还需要自行考虑证书如何同步更新的问题。

    4. 维护gitlab

    gitlab备份:

    docker exec -t <container name> gitlab-rake gitlab:backup:create

    备份的文件在/var/docker-date/gitlab-server/data/backups/目录下。

    备份恢复:

    如果需要指定恢复某个特定备份,可以在后面加上BACKUP=时间戳

    docker exec -it <name of container> gitlab-rake gitlab:backup:restore BACKUP=xxxx

    参考:https://docs.gitlab.com/ce/raketasks/backup_restore.html#restore-for-docker-image-and-gitlab-omnibus-helm-chart

    gitlab版本升级:

    参考:https://docs.gitlab.com/omnibus/docker/README.html#upgrade-gitlab-to-newer-version

    相关文章

      网友评论

          本文标题:docker实战--使用docker安装gitlab

          本文链接:https://www.haomeiwen.com/subject/nbqvxqtx.html