docker下部署gitlab
docker用来隔离应用还是很方便的,一来本身的操作较为简单,二来资源占用也比虚拟机要小得多,三来也较为安全,因为像数据库这样的应用不会再全局暴露端口,同时应用间的通信通过加密和端口转发,更加安全。
Gitlab是目前比较流行的开源类Github代码管理平台。Gitlab使用Rails开发,使用PostgreSQL或MySQL数据库,Redis做缓存。一般自己搭建私有代码仓库,Gitlab通常是首选。这里简单介绍一下dockerized Gitlab。
Gitlab的docker镜像早已有人做好了,并且维护相当不错。大家可以前往其GitHub仓库了解该镜像的情况。官方repo的readme中已经有详细的安装配置方案,这里我简单的梳理一下部署流程。
安装Docker
这里以Ubuntu 14.04发行版为例,在bash中输入一下命令安装最新的docker:
sudo apt-get purge docker.io
curl -s https://get.docker.io/ubuntu/ | sudo sh
sudo apt-get update
sudo apt-get install lxc-docker
注意: 如果你使用了阿里云最新推出的Docker镜像,那么可以省略本节的步骤。因为阿里云的这个镜像已经自带了1.2版的docker,版本比较新,可以直接使用。
安装docker-gitlab
使用如下命令可以使Docker下载对应版本的Gitlab镜像:
docker pull sameersbn/gitlab:7.5.3
上面的命令下载7.5.3版的Gitlab,如果想下载最新版本,可以输入以下命令:
docker pull sameersbn/gitlab:latest
待下载完成后就算完成安装了。
也可以Clone刚才的提到的仓库,然后在本机上build镜像:
git clone https://github.com/sameersbn/docker-gitlab.git
cd docker-gitlab
docker build --tag="$USER/gitlab" .
注意上面最后一行命令结尾有一个"."符号,不要掉了。
安装PostgreSQL
Gitlab推荐使用PostgreSQL作为数据库。既然使用了docker,那么我们为何不考虑把所有的组件都用docker包装起来?我们一样可以下载PostgreSQL的镜像完成安装,这种安装更加便捷。
首先输入以下命令下载PostgreSQL镜像:
docker pull sameersbn/postgresql:latest
然后我们要为数据库默认的表空间建立目录以存放数据:
mkdir -p /opt/postgresql/data
这里/opt/postgresql/data部分可以替换成你自己希望建立的地址。
如果是使用SELinux,那么还需要改变一下这个目录的安全设置:
sudo chcon -Rt svirt_sandbox_file_t /opt/postgresql/data
如果没有使用SELinux,可以跳过上面一条命令。
最后使用以下命令行启动数据库:
docker run --name=postgresql -d \
-e 'DB_NAME=gitlabhq_production' -e 'DB_USER=gitlab' -e 'DB_PASS=password' \
-v /opt/postgresql/data:/var/lib/postgresql \
sameersbn/postgresql:latest
这里,"-e"选项后面的内容请不要随意变更,这里的配置都是Gitlab默认的数据库配置,如果没有在后面Gitlab镜像启动的设置里面做相应的修改的话,这里的修改会让程序无法正常运行。
安装Redis
同样,我们可以使用docker来安装Redis:
docker pull sameersbn/redis:latest
然后启动它:
docker run --name=redis -d sameersbn/redis:latest
启动gitlab
在最终启动Gitlab之前,我们还需要为Gitlab创建一个目录用来存放提交上来的代码,docker-gitlab内部使用/home/git/data这个目录存放代码,我们在容器外部创建一个目录然后在启动的时候挂载到这个路径即可:
mkdir -p /opt/gitlab/data
mkdir -p /opt/gitlab/backups
同样,如果使用SELinux,需要修改目录的安全配置:
sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/data
sudo chcon -Rt svirt_sandbox_file_t /opt/gitlab/backups
在完成上面所有的步骤以后,我们可以用以下命令启动Gitlab:
docker run --name='gitlab' -d \
-e 'GITLAB_PORT=10080' -e 'GITLAB_SSH_PORT=10022' \
-e 'GITLAB_BACKUPS=monthly' \
-p 10022:22 -p 10080:80 \
-v /opt/gitlab/data:/home/gitl/data \
-v /opt/gitlab/backups:/home/git/data/backups
sameersbn/gitlab:7.5.3
上面的命令将使用10080作为Gitlab的Web访问端口,10022将作为ssh push和pull代码的端口。
在本地可以使用浏览器打开http://localhost:10080来访问Gitlab,初始登录网站使用root账户,用户名为root,密码为:5iveL!fe,登录后需要立即修改密码。
这里解释一下各参数:
-d: 后台运行
-e:配置Gitlab运行的环境变量,这个参数很重要,具体有哪些环境变量,后面列举
-p: 端口转发规则
-v: 共享目录挂载,即docker容器内外数据共享
Gitlab的环境变量配置比较多,这里列举一下比较重要的Gitlab的环境变量:
- GITLAB_HOST: 这个是Gitlab服务器的hostname,你需要将此设定为网站的域名或者ip(不带端口号),默认值为
localhost,这个值会被Gitlab用来生成repo的链接,所以必须要设置。否则,在创建的repo中,会发现所有的repo链接都是以localhost为hostname。 - GITLAB_PORT Gitlab网站的访问端口,这里的设置要结合端口转发一起设置,否则会导致网站无法访问,默认值为
80 - GITLAB_SSH_PORT Gitlab的SSH代码提交方式使用的SSH端口,这里的设置要结合端口转发一起设置,否则会导致代码无法提交,默认值为
22。如果是在VPS上部署,这个值请使用别的端口,比如上面提到的10022端口,否则会与VPS原本的SSH端口产生冲突,造成SSH无法登录VPS - GITLAB_BACKUPS Gitlab的自动备份配置,有
disable,daily,weekly,monthly四个可选值,默认为disable。建议打开自动备份 - GITLAB_BACKUP_DIR Gitlab自动备份目录,默认值为
/home/git/data/backups
docker下部署gitlab的更多相关文章
- 设想 Docker 下部署 KVM
设想 Docker 下部署 KVM 一.安装 $ yum -y install kvm # kvm base , must $ yum -y install libvirt -y # libvirtd ...
- 在Docker下部署Nginx
在Docker下部署Nginx 在Docker下部署Nginx,包括: 部署一个最简单的Nginx,可以通过80端口访问默认的网站 设置记录访问和错误日志的路径 设置静态网站的路径 通过proxy_p ...
- Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程)
场景 Docker-Compose简介与Ubuntu Server 上安装Compose: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/deta ...
- 3.Docker Compose 部署 GitLab
什么是 GitLab GitLab 是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目.它拥有与 Githu ...
- docker 下安装gitlab
1.找到docker镜像 docker search gitlab 2.下载gitlab镜像 docker pull gitlab/gitlab-ce/ 3.通常会将 GitLab 的配置 (etc ...
- Docker快速部署gitlab
环境: Centos7.5 安装Docker 1.移除旧版本: $ sudo yum remove docker \ docker-client \ docker-client-latest \ do ...
- docker下运行Gitlab CE+Jenkins+Nexus3+docker-registry-frontend
DevOps - Gitlab CE - Jenkins - Nexus Gitlab CE https://hub.docker.com/r/gitlab/gitlab-ce/ https://do ...
- 使用Docker快速部署Gitlab
使用Docker部署Gitlab 1. 下载gitlab镜像 docker pull gitlab/gitlab-ce 2. 运行gitlab实例 GITLAB_HOME=`pwd`/data/git ...
- Docker下部署springboot项目
1.背景 如何在docker容器环境下部署一个springboot项目? 2.具体步骤 第一步:准备一个springboot项目的xxxx.jar包 jar包中用于测试的一个接口如下 第二步:编写Do ...
随机推荐
- iOS 自动布局详细介绍
1. 自动布局的理解 iOS自动布局很有用,可以在不同size的屏幕上运行,原先看的头痛,还是习惯用最蠢的[UIScreen mainScreen].bounds.size.width等来布局,后来实 ...
- [linux]CentOS无法使用epel源
[linux]CentOS无法使用epel源 问题的产生与解决 作者作为Android应用开发者,对linux的接触一直是ubuntu为主,但是有一个用于科学上网的vps,由于内存只有64M,所以使用 ...
- Android中使用抖动动画吸引来用户注意
原文:http://www.androidcn.org/topic/552e65bc61d460226ab27a5c 在应用中,有时候我们要吸引用户去点击某些按钮,比如应用市场的推荐按钮,为了能够吸引 ...
- Android 系统版本&API对照表
最新Android系统版本与API等级对应关系表 数据来源:http://d.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLe ...
- IPv4中IP地址分类
分三个部分进行讲述: 1 五类IP 2 特殊用途的IP 3 私有IP 1 五类IP IPV4简单粗暴地把IP地址分为五类.分类方法如下图所示: 也就是说,分为以下几类: A: 0.0.0.0-127. ...
- wordpress对显示某分类目录的文章列表页时对单个文章显示字数限制和省略
wordpress会在对应的此类列表页面模板中,遍历输出每篇文章的信息,缩略图,作者,正文,标题等, 输出具体的正文的部分 使用这样一句 <?php the_content(''); ?> ...
- swap分区
swap分区 一块的新加进来的硬盘,我们要怎么给它创建swap分区呢?要遵循下面四个步骤: (1)使用一个现有的分区,比如记为A (2)然后分区类型的16进制编码,即A的16进制编码. (3)格式化A ...
- HTTPS连接的前几毫秒发生了什么——Amazon HTTPS案例分析
转自: http://blog.jobbole.com/48369/ 提示:英文原文写于2009年,当时的Firefox和最新版的Firefox,界面也有很大改动.以下是正文. 花了数小时阅读了如潮的 ...
- nginx的配置总结
总体而言,nginx的配置比起apache来是要简洁很多,而言容易理解得多的,另外官网的文档也十分的简洁易懂.我们先看一个简化版的配置文件nginx.conf: #user nobody; worke ...
- 教你怎样写自定义IP地址算法
通过IP地址可以看到算法规律,写成自定义IP地址,也可以把IP地址转为自定格式的IP地址.也可以用于加密一些明文数字.起始次方可自定义(以1次方和0次方为例) a.以下写正反算法(以1次方为最小单位) ...