为了账号安全,请及时绑定邮箱和手机立即绑定

使用Docker在自家的服务器上搭建gitlab

标签:
Docker Git

好久都没写文章了,昨晚熬夜改了下喜马拉雅爬虫并整合到nodc里面,推送代码的时候,发现个人服务器上的gitlab的时间不在东八区,所以又搞了一下。

其实这个也没什么好写的,只是最近发现慕课网上出了svn的新课《SVN从入门到放弃》,心想:难道那些公司还在用svn吗?虽然并不觉得svn有什么不好,但是个人就是习惯用git,而且我大部分的个人项目都放在github上,私人项目都放在自己搭的个人服务器上。

前提

想要搭建gitlab私人代码仓库,是需要条件的。

首先,你得有一个内存大于4G的服务器,我自己的服务器是8G的内存。因为gitlab这个东西太吃内存了,一运行就吞掉2G的内存。关于我的服务器的配置,可以看《从零开始搭建Nas——购买硬件的那些坑》

服务器信息

然后就没有然后了。接下来就是动手搭建的时间了。

搭建

官方的docker定制性太差,想使用外部数据库。找了一圈发现一个很好的封装sameersbn/gitlab

图片描述

外部数据库使用mysql和redis官方的镜像。

接下来就是复制粘贴的时间了。

图片描述

部署数据库

官方使用的是内部数据库,而现在我想把数据库也独立成一个容器,以后多个应用容器公用同一个数据库容器。所以数据库的port都使用默认的。

mysql

运行容器

mkdir -p /home/bubao/disk/data1/opt/mysql/{data,conf.d}
docker run --name mysql \
    --restart=always \
    --env MYSQL_ROOT_PASSWORD=123456 \
    --volume /home/bubao/disk/data1/opt/mysql/data:/var/lib/mysql \
    --volume /home/bubao/disk/data1/opt/mysql/conf.d:/etc/mysql/conf.d \
    --publish 3306:3306 \
    -d mysql:8.0

进入容器

docker exec -it mysql /bin/bash  
mysql -h localhost -uroot -p

添加账号,并创建一个用户

CREATE USER 'gitlab'@'%.%.%.%' IDENTIFIED BY '123456';
CREATE DATABASE IF NOT EXISTS `gitlab_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
GRANT ALL PRIVILEGES ON `gitlab_production`.* TO 'gitlab'@'%.%.%.%';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
flush privileges; 

redis

mkdir -p /home/bubao/disk/data1/opt/redis/{conf,data}

docker run --name redis \
--restart=always \
--volume /home/bubao/disk/data1/opt/redis/conf:/usr/local/etc/redis \
--volume /home/bubao/disk/data1/opt/redis/data:/data \
--publish 6379:6379 \
-d redis:5.0-rc4 --appendonly yes

部署gitlab

mkdir -p /home/bubao/disk/data1/opt/gitlab

docker run \
    --name gitlab -d \
    --restart=always \
    --link mysql:mysql \
    --link redis:redisio \
    --env 'DB_HOST=10.0.0.3' \
    --env 'DB_PORT=3306' \
    --env 'DB_NAME=gitlab_production' \
    --env 'DB_USER=gitlab' \
    --env 'DB_PASS=123456' \
    --env 'REDIS_HOST=10.0.0.3' \
    --env 'REDIS_PORT=6379' \
    --publish 10012:22 --publish 10010:80 \
    --env 'GITLAB_SSH_PORT=10012' \
    --env 'GITLAB_PORT=10010' \
    --env 'GITLAB_HOST=10.0.0.3' \
    --env 'GITLAB_TIMEZONE=Asia/Shanghai' \
    --env 'GITLAB_SECRETS_DB_KEY_BASE=long-and-random-alpha-numeric-string' \
    --env 'GITLAB_SECRETS_SECRET_KEY_BASE=long-and-random-alpha-numeric-string' \
    --env 'GITLAB_SECRETS_OTP_KEY_BASE=long-and-random-alpha-numeric-string' \
    --volume /home/bubao/disk/data1/opt/gitlab/data:/home/git/data \
sameersbn/gitlab:11.2.3

登录

因为gitlab启动时间比较长,等十分钟,进入10.0.0.3:10010,输入root密码,就能登录了。当然也可以创建新的用户,root用户用于管理其他用户。

图片描述

点击查看更多内容
8人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JS工程师
手记
粉丝
9582
获赞与收藏
319

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消