使用docker安装gitlab社区版

本次安装 社区版(Community Edition,缩写为 CE)

下载镜像

首先下载gitlab社区版镜像(gitlab/gitlab-ce),镜像比较大,建议docker切换国内镜像

$ docker pull gitlab/gitlab-ce

创建映射目录

方便修改配置,存储备份数据,方便后期升级,通常映射三个文件夹:配置 (etc) 、 日志 (log) 、数据 (data) 

# 配置文件
$ mkdir -p /usr/local/docker/gitlab/config
# 日志文件
$ mkdir -p /usr/local/docker/gitlab/logs 
# 数据
$ mkdir -p /usr/local/docker/gitlab/data

生成容器

$ docker run --detach \
    --hostname 192.168.0.243 \
    --publish 7001:443 --publish 7002:7002 --publish 7003:22 \
    --name gitlab --restart always \
    --privileged=true
    --volume /usr/local/docker/gitlab/config:/etc/gitlab \
    --volume /usr/local/docker/gitlab/logs:/var/log/gitlab \
    --volume /usr/local/docker/gitlab/data:/var/opt/gitlab \
    docker.io/gitlab/gitlabce:latest

说明

  1. --hostname 192.168.0.243: 设置主机名或域名,此处为远程访问的域名或ip
  2. --publish 7001:443:将https:443映射到外部端口7001 
  3. --publish 7002:7002:  将web:7002映射到外部端口7002,访问--hostname设置的ip或域名访问页面、例如:http://192.168.0.243:7002/(此处7002原为80端口,因为修改配置为7002,此处不能80:7002,gitlab内部网址错误,建议使用80端口,不进行替换)
  4. --publish 7003:22:  将ssh:22映射到外部端口7003 使用ssh://[email protected]:7003/root/aaa.git拉取项目
  5. --name gitlab: 运行容器名
  6. --restart always: 自动重启
  7. --volume /usr/local/docker/gitlab/config:/etc/gitlab: 挂载目录
  8. --volume /usr/local/docker/gitlab/logs:/var/log/gitlab: 挂载目录
  9. --volume /usr/local/docker/gitlab/data:/var/opt/gitlab: 挂载目录
  10. --privileged=true 使得容器内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限

 

gitlab需要的资源比较多,建议4g内存4核,安装时间比较长,无需担心

# 查看已运行的容器
$ docker ps -a

查看gitlab容器,有一个属性 STATUS 为 health: starting,说明 正在启动中,还没有启动完毕。状态变成 healthy ,说明已经部署完成,可以访问了。

配置

由于咱们进行了端口的映射,但是gitlab的端口还是原先的,所以需要修改成最新的配置

修改/usr/local/docker/gitlab/config文件下的gitlab.rb文件

# 远程访问的域名或ip 例如http://192.168.0.243、http://radon.com、http://gitlab.radon.com、http://radon.com/gitlab
# 此处为http访问地址和端口号,如需修改端口号从此处配置,否则为80,不建议进行端口映射
external_url 'http://192.168.0.243:7002'
# ssh链接的域名或ip
gitlab_rails['gitlab_ssh_host'] = '192.168.0.243'
# ssh的端口号
gitlab_rails['gitlab_shell_ssh_port'] = 7003

邮箱设置,修改/usr/local/docker/gitlab/config文件下的gitlab.rb文件

### Email
gitlab_rails['smtp_enable'] = true # 开启 SMTP 功能
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465 # 端口不可以选择587,测试过会发送邮件失败
gitlab_rails['smtp_user_name'] = "[email protected]" # 你的邮箱账号
gitlab_rails['smtp_password'] = "123321" # 授权码,不是密码
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '[email protected]' # 发件人信息,必须跟‘smtp_user_name’保持一致,否则报错
gitlab_rails['smtp_domain'] = "qq.com" # 修改并不影响 

刷新配置

方法一:不进入容器

# 刷新配置
$ docker exec gitlab gitlab-ctl reconfigure

# 重启gitlab
$ docker container restart gitlab

方法二:进入容器

# 进去gitlab容器内
$ docker exec -it gitlab /bin/bash  
# 重置gitlab配置
$ gitlab-ctl reconfigure  

gitlab常用命令

# 刷新gitlab的配置
$ docker exec gitlab gitlab-ctl reconfigure
  
# 重启gitlab服务(建议使用docker container restart gitlab)
$ docker exec gitlab gitlab-ctl restart 

# 查看gitlab运行状态
$ docker exec gitlab gitlab-ctl status

# 停止gitlab服务(建议使用docker container stop gitlab)
$ docker exec gitlab gitlab-ctl stop

# 查看gitlab运行日志(建议使用docker logs gitlab)
$ docker exec gitlab gitlab-ctl tail

gitlab升级(注意gitlab的升级不能跨大版本升级)

# 进入gitlab容器
$ docker exec -it gitlab /bin/bash

# 备份数据(备份数据在data/backups文件夹下)
$ gitlab-rake gitlab:backup:create

# 停止gitlab容器
$ docker container stop gitlab

# 移除gitlab容器
$ docker rm gitlab

# 下载最新镜像
$ docker pull gitlab/gitlab-ce

# 运行镜像,此命令与旧版安装命令一致,保证配置和文件映射相同
$ docker run --detach \
    --hostname 192.168.0.243 \
    --publish 7001:443 --publish 7002:80 --publish 7003:22 \
    --name gitlab --restart always \
    --privileged=true
    --volume /usr/local/docker/gitlab/config:/etc/gitlab \
    --volume /usr/local/docker/gitlab/logs:/var/log/gitlab \
    --volume /usr/local/docker/gitlab/data:/var/opt/gitlab \
    docker.io/gitlab/gitlabce:latest

gitlab备份与恢复

建议进行同版本的备份与恢复

# 进入gitlab容器
$ docker exec -it gitlab /bin/bash

# 备份数据(备份数据在data/backups文件夹下)
$ gitlab-rake gitlab:backup:create


# 恢复备份(备份数据在data/backups文件夹下)
$ gitlab-rake gitlab:backup:restore BACKUP=备份文件编号

 

 

你可能感兴趣的:(运维,centos)