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

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

相关推荐
武子康2 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
Alsn865 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
2601_961875245 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant
java_cj5 天前
深入kube-apiserver认证机制:从Bearer Token到mTLS的完整认证链解析
linux·运维·服务器·云原生·容器·kubernetes
程序员老赵5 天前
服务器没有桌面?Docker 跑个 Chrome,浏览器就能远程用
docker·容器·devops
杨浦老苏5 天前
轻量级Docker仪表板Servedash
运维·docker·监控·群晖·仪表板
正经教主5 天前
【docker基础】 第八周:容器监控与应用更新策略
运维·docker·容器
kiros_wang5 天前
Docker 使用完整指南
运维·docker·容器
正经教主5 天前
【docker基础】第九周:Docker安全与镜像优化
运维·docker·容器
CodeStats5 天前
【虚拟机】 从 CPU 指令到虚拟机隔离:虚拟机就是一个“模拟了完整硬件的普通进程”
java·docker