docker 部署 gitlab-ce 16.9.1

### 文章目录

  • [@[toc]](#文章目录 @[toc] 拉取 gitlab-ce 镜像 创建 gitlab-ce 持久化目录 启停脚本配置 配置 gitlab-ce 编辑 gitlab-ce 配置文件 重启 gitlab-ce 配置 root 密码 设置中文)
  • [拉取 gitlab-ce 镜像](#文章目录 @[toc] 拉取 gitlab-ce 镜像 创建 gitlab-ce 持久化目录 启停脚本配置 配置 gitlab-ce 编辑 gitlab-ce 配置文件 重启 gitlab-ce 配置 root 密码 设置中文)
  • [创建 gitlab-ce 持久化目录](#文章目录 @[toc] 拉取 gitlab-ce 镜像 创建 gitlab-ce 持久化目录 启停脚本配置 配置 gitlab-ce 编辑 gitlab-ce 配置文件 重启 gitlab-ce 配置 root 密码 设置中文)
  • [启停脚本配置](#文章目录 @[toc] 拉取 gitlab-ce 镜像 创建 gitlab-ce 持久化目录 启停脚本配置 配置 gitlab-ce 编辑 gitlab-ce 配置文件 重启 gitlab-ce 配置 root 密码 设置中文)
  • [配置 gitlab-ce](#文章目录 @[toc] 拉取 gitlab-ce 镜像 创建 gitlab-ce 持久化目录 启停脚本配置 配置 gitlab-ce 编辑 gitlab-ce 配置文件 重启 gitlab-ce 配置 root 密码 设置中文)
  • [编辑 gitlab-ce 配置文件](#文章目录 @[toc] 拉取 gitlab-ce 镜像 创建 gitlab-ce 持久化目录 启停脚本配置 配置 gitlab-ce 编辑 gitlab-ce 配置文件 重启 gitlab-ce 配置 root 密码 设置中文)
  • [重启 gitlab-ce](#文章目录 @[toc] 拉取 gitlab-ce 镜像 创建 gitlab-ce 持久化目录 启停脚本配置 配置 gitlab-ce 编辑 gitlab-ce 配置文件 重启 gitlab-ce 配置 root 密码 设置中文)
  • [配置 root 密码](#文章目录 @[toc] 拉取 gitlab-ce 镜像 创建 gitlab-ce 持久化目录 启停脚本配置 配置 gitlab-ce 编辑 gitlab-ce 配置文件 重启 gitlab-ce 配置 root 密码 设置中文)
  • [设置中文](#文章目录 @[toc] 拉取 gitlab-ce 镜像 创建 gitlab-ce 持久化目录 启停脚本配置 配置 gitlab-ce 编辑 gitlab-ce 配置文件 重启 gitlab-ce 配置 root 密码 设置中文)

gitlab/gitlab-ce(需要科学上网)

拉取 gitlab-ce 镜像

shell 复制代码
docker pull gitlab/gitlab-ce:16.9.1-ce.0

查看镜像是不是有 Volumes 的配置

shell 复制代码
docker inspect gitlab/gitlab-ce:16.9.1-ce.0 --format='{{.Config.Volumes}}'

获取到类似如下的内容,说明有 Volumes 的配置

shell 复制代码
map[/etc/gitlab:{} /var/log/gitlab:{} /var/opt/gitlab:{}]

创建 gitlab-ce 持久化目录

shell 复制代码
mkdir -p /data/gitlab-ce-root
cat << EOF > /data/gitlab-ce-root/gitlab-ce.env
GITLAB_BASE_DIR='/data/gitlab-ce-root'
GITLAB_CONFIG_DIR="\${GITLAB_BASE_DIR}/conf"
GITLAB_DATA_DIR="\${GITLAB_BASE_DIR}/data"
GITLAB_LOG_DIR="\${GITLAB_BASE_DIR}/logs"
EOF

创建目录

shell 复制代码
source /data/gitlab-ce-root/gitlab-ce.env
mkdir -p ${GITLAB_CONFIG_DIR} ${GITLAB_DATA_DIR} ${GITLAB_LOG_DIR}

启停脚本配置

  • 通过 start 启动容器
  • 通过 stop 停止容器
  • 通过 restart 重启容器
  • 通过 exec 进入容器
shell 复制代码
#!/usr/bin/env bash
source /data/gitlab-ce-root/gitlab-ce.env

GITLAB_PORT='8888'
GITLAB_MEM=4G
GITLAB_NAME='gitlab-ce'
GITLAB_IMAGE='gitlab/gitlab-ce:16.9.1-ce.0'

function useAge () {
  echo "usage: [ bash ${0} start ] to start gitlab-ce"
  echo "usage: [ bash ${0} stop ] to stop gitlab-ce"
  echo "usage: [ bash ${0} restart ] to restart gitlab-ce"
  echo "usage: [ bash ${0} exec ] to exec gitlab-ce"
  exit 1
}

function optStart () {
DOCKER_PS=$(docker ps -a | awk "/${GITLAB_NAME}/ {print \$NF}")

if [[ "${DOCKER_PS}"x == "${GITLAB_NAME}"x ]];then
  DOCKER_STATUS=$(docker ps -a --format="{{.Names}} {{.Status}}" | awk "/${GITLAB_NAME}/ {print \$2}")

  if [[ "${DOCKER_STATUS}"x == "Up"x ]];then
    echo "${GITLAB_NAME} is up"
  else
    docker start ${GITLAB_NAME} > /dev/null

    if [ $? -eq 0 ];then
      echo "${GITLAB_NAME} start success"
    fi
  fi
else
  docker run -d \
    -p ${GITLAB_PORT}:80 \
    -v ${GITLAB_CONFIG_DIR}:/etc/gitlab  \
    -v ${GITLAB_LOG_DIR}:/var/log/gitlab \
    -v ${GITLAB_DATA_DIR}:/var/opt/gitlab \
    --restart always \
    --privileged=true \
    --name ${GITLAB_NAME} \
    --memory=${GITLAB_MEM} \
    ${GITLAB_IMAGE}
fi
}

function optStop () {
  docker stop ${GITLAB_NAME} > /dev/null

  if [ $? -eq 0 ];then
    echo "${GITLAB_NAME} stop success"
  fi
}

function optExec () {
  docker exec -it ${GITLAB_NAME} bash
}

if [ $# -eq 0 ];then
  useAge
fi

case $1 in
    'start' )
        optStart
        ;;
    'stop' )
        optStop
        ;;
    'restart' )
        optStop
        optStart
        ;;
    'exec' )
        optExec
        ;;
    '*' )
        useAge
        ;;
esac

配置 gitlab-ce

进入 gitlab-ce 容器

shell 复制代码
docker exec -it gitlab-ce bash

编辑 gitlab-ce 配置文件

shell 复制代码
egrep -q '^external_url' /etc/gitlab/gitlab.rb || echo "external_url 'http://172.72.0.170'" >> /etc/gitlab/gitlab.rb

重启 gitlab-ce

退出容器,然后重启容器

复制代码
docker restart gitlab-ce

gitlab-ce 的重启时间非常的久,这个和硬件有关系,等到日志出现 gitlab Reconfigured 就说明重启完成了,就可以用浏览器访问 ip 地址去打开 gitlab 页面了

配置 root 密码

进入容器

复制代码
docker exec -it gitlab-ce bash

进入控制台

复制代码
gitlab-rails console -e production

耐心等待,等他出现下面的内容

复制代码
--------------------------------------------------------------------------------
 Ruby:         ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux]
 GitLab:       16.9.1 (0ef8ba69a8f) FOSS
 GitLab Shell: 14.33.0
 PostgreSQL:   14.10
------------------------------------------------------------[ booted in 44.67s ]
Loading production environment (Rails 7.0.8)
irb(main):001:0>

查询管理员的名字

复制代码
user = User.where(id:1).first

返回如下的内容

复制代码
=> #<User id:1 @root>

设置密码

复制代码
user.password='Password@123'

保存密码,返回 true 表示修改成功

复制代码
user.save!

设置中文

找到 Localization ,把 Language 换成简体中文,然后save change

刷新一下页面,就显示中文了

相关推荐
B1nna2 小时前
Docker学习
学习·docker·容器
缘友一世2 小时前
网安系列【15】之Docker未授权访问漏洞
docker·容器
慕木兮人可9 小时前
Docker部署MySQL镜像
spring boot·后端·mysql·docker·ecs服务器
armcsdn13 小时前
基于Docker Compose部署Traccar容器与主机MySQL的完整指南
mysql·docker·容器
凌晨两点的菜鸡14 小时前
前端部署-docker
前端·docker
LuckyLay14 小时前
使用 Docker 搭建 Go Web 应用开发环境——AI教你学Docker
前端·docker·golang
杨浦老苏15 小时前
IntelliSSH:AI驱动的远程服务器管理软件
人工智能·docker·ai·ssh·群晖
铅笔侠_小龙虾15 小时前
Docker 实战 -- Mysql
mysql·docker·容器
IvanCodes15 小时前
三、Docker常用命令
docker·容器
海星船长丶17 小时前
基于docker进行渗透测试环境的快速搭建(在ubantu中docker设置代理)
运维·docker·容器