gitlab docker部署

490 阅读3分钟

1.运行

1. docker-compose

docker-compose-gitlab.yml up

version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce'
    container_name: gitlab
    restart: always
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        gitlab_rails['time_zone'] = 'Asia/Shanghai'
    ports:
      - '7881:80'
      - '7883:443'
      - '7882:22'
    volumes:
      - /home/gitlab/config:/etc/gitlab
      - /home/gitlab/data:/var/opt/gitlab
      - /home/gitlab/logs:/var/log/gitlab
    privileged: true
  • 7881 为http端口
  • 7882 为ssh端口
  • xx.xxx.xxx.xx 服务器ip

启动命令

docker-compose -f docker-compose-gitlab.yml up

2.docker run

docker run
-itd
-p 7881:80
-p 7882:22
-v /home/gitlab/etc:/etc/gitlab
-v /home/gitlab/log:/var/log/gitlab
-v /home/gitlab/opt:/var/opt/gitlab
--restart always
--privileged=true
gitlab/gitlab-ce:14.9.0-ce.0

注意

启动慢 记得查看日志

运行 gitlab 启动需要比较长的时间 通过docker logs -f id

一定要给文件夹 设置权限

chmod 777 /home/gitlab

有时候绑定的http 端口 变化,不一定是80

7881:80 7881:8080 7881:3000

2.其他版本

  • gitlab/gitlab-ce:14.9.0-ce.0
  • drud/gitlab-ce

3.配置调整

注意 修改  `修改容器配置``2.修改http和ssh配置` 请根据实际情况调整,有些服务器可以不设置。

有些配置了还是不行,只能本机访问服务,其他电脑无法访问时,可以另外安装nginx转发gitlab服务解决。

1.修改容器配置

docker exec -it gitlab /bin/bash

修改gitlab.rb

vi /etc/gitlab/gitlab.rb
## 加入如下
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://xx.xx.xx.xx:7881'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = 'xx.xx.xx.xx'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 7882

让配置生效

gitlab-ctl reconfigure

注意不要重启,/etc/gitlab/gitlab.rb文件的配置会映射到gitlab.yml这个文件,所以在gitlab上会自动生成的http地址应该是 http://xx.xx.xx.xx:7881

2.修改http和ssh配置

# 检查是否生效,没有的话手工修改,并重启服务
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml

  gitlab:
    host: xx.xx.xx.xx
    port: 7881 # 这里改为7881
    https: false
# 重启
gitlab-ctl restart
# 退出容器
exit

4.查询与修密码

方法1 直接查密码

# 账号
root 
# 密码
cat /home/gitlab/config/initial_root_password

方法2 修改密码

docker exec -it gitlab /bin/bash
# 进入控制台
gitlab-rails console -e production
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为mj
user.password='qwe123456'
# 保存
user.save!
# 退出
exit

5.gitlab 不同版本迁移

  • 老版本 11.2.3
  • 新版本 15.11.3

只能先把老的版还原到相同的docker版本

然后根据官方的指引升级

可以先上hub.docker.com 搜索是否都有这些要升级的版本

  1. 相同版本同步脚本
# 1. 检查当前版本
docker exec gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
# 2. 进入容器
docker exec -it gitlab bash
# 3. 备份文件 存储在 /var/opt/gitlab/backups/下面
gitlab-rake gitlab:backup:create
# 生成文件   /var/opt/gitlab/backups/1684222315_2023_05_16_15.11.3_gitlab_backup.tar

# 4. 复制上面的备份文件到 另外一台服务器,相同的路径 ,前提两台电脑已经添加秘钥
cp /home/gitlab/data/backups/1684222315_2023_05_16_15.11.3_gitlab_backup.tar
 root@xxx.xx.xx.xx://home/gitlab/data/backups/

# 5. 进入容器
docker exec -it gitlab bash

# 6. 设置文件权限
chmod -R 777 1684222315_2023_05_16_15.11.3_gitlab_backup.tar

# 7. 停止数据库操作服务
gitlab-ctl stop unicorn 
gitlab-ctl stop sidekiq

# 8. 开始还原 注意这里只需要写_gitlab_backup.tar  前面的文件名即可
gitlab-rake gitlab:backup:restore BACKUP=1684222315_2023_05_16_15.11.3

# 9. 重启服务
gitlab-ctl restart

  1. 不同docker版本配置
version: '3'
services:
  gitlab:
    image: 'gitlab/gitlab-ce' # 这里一直修改 gitlab/gitlab-ce:11.0.6 gitlab/gitlab-ce:11.11.8
    container_name: gitlab
    restart: always
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        gitlab_rails['time_zone'] = 'Asia/Shanghai'
    ports:
      - '7881:80'
      - '7883:443'
      - '7882:22'
    volumes:
      - /home/gitlab/config:/etc/gitlab
      - /home/gitlab/data:/var/opt/gitlab
      - /home/gitlab/logs:/var/log/gitlab
    privileged: true

6.参考项目

github.com/mjsong07/do…