热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Docker系列】在Docker中部署Gitlab

Docker部署Gitlab在Docker中安装Gitlab教程,官方文档下载镜像dockerpullgitlabgitlab-ce运行容器sudodocke

Docker 部署 Gitlab

在 Docker 中安装 Gitlab 教程,官方文档

下载镜像

docker pull gitlab/gitlab-ce

运行容器

sudo docker run \--hostname gitlab.example.com \--publish 8443:443 --publish 8081:80 -p 2222:22 \--name gitlab \--restart always \--volume $HOME/_docker/gitlab/config:/etc/gitlab \--volume $HOME/_docker/gitlab/logs:/var/log/gitlab \--volume $HOME/_docker/gitlab/data:/var/opt/gitlab \-v /etc/localtime:/etc/localtime \-d \gitlab/gitlab-ce:latest

由于端口冲突,重新映射了一个端口 2222,如果不想麻烦,可以事先将 ssh 端口号更改成别的端口号,修改ssh端口号的方法

# 要从之前的:
git clone git@gitlab.example.com:myuser/awesome-project.git
# 改为明确使用 `ssh://` 的 `URL` 方式。
git clone ssh://git@gitlab.example.com:2222/myuser/awesome-project.git

为了克隆不必麻烦,保留 gitlab22 端口映射,将主机的 sshd22 端口映射到容器中去。将主机的 sshd 端口更改为 2222

编辑文件 /etc/ssh/sshd_config,将其中的 #Port 22 注释去掉,将数字 22 更改为 2222,执行下面的命令重启 sshd 服务

systemctl restart sshd

防火墙的规则,添加开发 2222 端口

iptables -A INPUT -p tcp --dport 2222 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 2222 -j ACCEPT
# 再查看下是否添加上去, 看到添加了
iptables -L -n

如果此容器由于权限问题而无法启动,请尝试通过执行以下操作来修复它:

docker exec -it gitlab update-permissions
docker restart gitlab

容器手动备份

# 第一种进行入容器执行命令的方法进行手工备份
docker exec -it 容器名或容器id bash # 进入容器
gitlab-rake gitlab:backup:create # 执行gitlab备份命令# 第二种直接使用外部命令执行,一次完成
docker exec 容器名或容器id gitlab-rake gitlab:backup:create

自动备份

通过在宿主机上使用 crontab 使用备份命令实现自动备份

添加备份脚本 vi ~/_docker/gitlab/gitlab.backup.sh,将下面内容添加到脚本中,保存之后添加可执行权限 chmod +x gitlab.backup.shs

#!/bin/bash
case "$1" in start)docker exec gitlab-ce11.2.3 gitlab-rake gitlab:backup:create;;
esac

创建定时执行计划

crontab -e # 进入编辑,添加下面内容# 每天2点备份 gitlab 数据
0 2 * * * $HOME/_docker/gitlab/gitlab.backup.sh start
# * * * * * command
# 分 时 日 月 周 命令# 其中,
# 第1列表示分钟,1~59,每分钟用*表示
# 第2列表示小时,1~23,(0表示0点)
# 第3列表示日期,1~31
# 第4列表示月份,1~12
# 第5列表示星期,0~6(0表示星期天)
# 第六列表示要运行的命令。

上面两行保存之后,重新载入配置

service crond reload
# or
systemctl reload crond.service

备份保留七天

设置只保存最近7天的备份,编辑 vi $HOME/_docker/gitlab/config/gitlab.rb 配置文件,找到如下代码,删除注释 # 保存

# /etc/gitlab/gitlab.rb 配置文件 修改下面这一行
gitlab_rails['backup_keep_time'] = 604800

重新加载gitlab配置文件

docker exec 容器名或容器id gitlab-ctl reconfigure

容器管理

docker stop gitlab # 停止容器
docker rm gitlab # 删除容器
docker start gitlab # 启动容器
# 编辑 gitlab 容器配置
docker exec -it gitlab vim /etc/gitlab/gitlab.rb
# 重启 gitlab 容器
docker restart gitlab

通过 Docker Compose 按照

使用 Docker Compose,可以轻松配置,安装和升级基于 Docker 的 GitLab 安装,官方教程在这里。

第一步: Docker 官方教程安装 Docker Compose。

第二步: 创建 docker-compose.yml 文件,将下面配置复制到文件中 (或者下载官方示例):

web:image: 'gitlab/gitlab-ce:latest'restart: alwayshostname: 'gitlab.example.com'environment:GITLAB_OMNIBUS_CONFIG: |external_url 'https://gitlab.example.com'ports:- '8081:80'- '8443:443'- '22:22'volumes:- ./gitlab-data/config:/etc/gitlab- ./gitlab-data/logs:/var/log/gitlab- ./gitlab-data/data:/var/opt/gitlab- /etc/localtime:/etc/localtime

第三步: 确保与 docker-compose.yml 文件同一目录下运行 docker-compose up -d 启动 Gitlab

使用 Docker Swarm

官方教程 创建 docker-compose.yml 文件

version: "3.6"
services:gitlab:image: gitlab/gitlab-ce:latestports:- "22:22"- "80:80"- "443:443"volumes:- /srv/gitlab/data:/var/opt/gitlab- /srv/gitlab/logs:/var/log/gitlab- /srv/gitlab/config:/etc/gitlab- /etc/localtime:/etc/localtimeenvironment:GITLAB_OMNIBUS_CONFIG: "from_file('/omnibus_config.rb')"configs:- source: gitlabtarget: /omnibus_config.rbsecrets:- gitlab_root_passwordgitlab-runner:image: gitlab/gitlab-runner:alpinedeploy:mode: replicatedreplicas: 4
configs:gitlab:file: ./gitlab.rb
secrets:gitlab_root_password:file: ./root_password.txt

创建 gitlab.rb 文件

external_url 'https://my.domain.com/'
gitlab_rails['initial_root_password'] = File.read('/run/secrets/gitlab_root_password')
gitlab_rails['backup_keep_time'] = 604800
gitlab_rails['time_zone'] = 'Asia/Shanghai' # 中国的东八区时间

创建 root_password.txt 文件

MySuperSecretAndSecurePass0rd!

确保您与 docker-compose.yml 在同一目录中并运行:

docker stack deploy --compose-file docker-compose.yml mystack


推荐阅读
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在ElasticStack日志监控系统中,Logstash编码插件自5.0版本起进行了重大改进。插件被独立拆分为gem包,每个插件可以单独进行更新和维护,无需依赖Logstash的整体升级。这不仅提高了系统的灵活性和可维护性,还简化了插件的管理和部署过程。本文将详细介绍这些编码插件的功能、配置方法,并通过实际生产环境中的应用案例,展示其在日志处理和监控中的高效性和可靠性。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • REST与RPC:选择哪种API架构风格?
    在探讨REST与RPC这两种API架构风格的选择时,本文首先介绍了RPC(远程过程调用)的概念。RPC允许客户端通过网络调用远程服务器上的函数或方法,从而实现分布式系统的功能调用。相比之下,REST(Representational State Transfer)则基于资源的交互模型,通过HTTP协议进行数据传输和操作。本文将详细分析两种架构风格的特点、适用场景及其优缺点,帮助开发者根据具体需求做出合适的选择。 ... [详细]
  • 在 CentOS 6.5 系统上部署 VNC 服务器的详细步骤与配置指南
    在 CentOS 6.5 系统上部署 VNC 服务器时,首先需要确认 VNC 服务是否已安装。通常情况下,VNC 服务默认未安装。可以通过运行特定的查询命令来检查其安装状态。如果查询结果为空,则表明 VNC 服务尚未安装,需进行手动安装。此外,建议在安装前确保系统的软件包管理器已更新至最新版本,以避免兼容性问题。 ... [详细]
  • 在项目开发过程中,掌握一些关键的Linux命令至关重要。例如,使用 `Ctrl+C` 可以立即终止当前正在执行的命令;通过 `ps -ef | grep ias` 可以查看特定服务的进程信息,包括进程ID(PID)和JVM参数(如内存分配和远程连接端口);而 `netstat -apn | more` 则用于显示网络连接状态,帮助开发者监控和调试网络服务。这些命令不仅提高了开发效率,还能有效解决运行时的各种问题。 ... [详细]
  • 基于域名、端口和IP的虚拟主机构建方案
    本文探讨了在单台物理服务器上构建多个Web站点的虚拟主机方案,详细介绍了三种主要的虚拟主机类型:基于域名、基于IP地址和基于端口的虚拟主机。每种类型的实现方式及其优缺点均进行了深入分析,为实际应用提供了全面的技术指导。 ... [详细]
  • Vi编辑器的工作模式有哪些?如何在不同模式间切换?
    Vi编辑器是Linux系统中常用的文本编辑工具,具备三种主要工作模式:命令模式、插入模式和底行模式。用户可以通过特定的按键组合在这些模式之间进行切换,以实现不同的编辑功能。例如,在命令模式下,用户可以执行移动光标、删除文本等操作;而在插入模式下,则可以输入或修改文本内容。底行模式则用于执行保存文件、退出编辑器等命令。 ... [详细]
  • 求助:在CentOS 5.8系统上安装PECL扩展遇到问题
    在 CentOS 5.8 系统上尝试安装 APC 扩展时遇到了问题,具体表现为 PECL 工具无法正常工作。为了确保顺利安装,需要解决 PECL 的相关依赖和配置问题。建议检查 PHP 和 PECL 的版本兼容性,并确保所有必要的库和开发工具已正确安装。此外,可以尝试手动下载 APC 扩展的源代码并进行编译安装,以绕过 PECL 工具的限制。 ... [详细]
  • 在JavaWeb项目架构中,NFS(网络文件系统)的实现与优化是关键环节。NFS允许不同主机系统通过局域网共享文件和目录,提高资源利用率和数据访问效率。本文详细探讨了NFS在JavaWeb项目中的应用,包括配置、性能优化及常见问题的解决方案,旨在为开发者提供实用的技术参考。 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
  • Linux系统防火墙启用与端口开放详细指南及操作流程
    在Linux系统中,启用防火墙并开放特定端口是确保网络安全的重要步骤。本文详细介绍了防火墙的配置方法和操作流程,包括如何解决在使用 `service iptables save` 命令时遇到的常见问题,如命令不支持基本的LSB动作(启动、停止等)的情况。此外,还提供了多种解决方案和最佳实践,帮助用户高效地管理和维护系统安全。 ... [详细]
author-avatar
小dej_531
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有