在Docker中使用ubuntu镜像搭建gitLib

使用环境:

Docker version 1.6.1, build 97cd073

1.下载基础镜像

docker pull ubuntu:14.04

2.运行镜像

docker run -t -i  ubuntu:14.04 /bin/bash

3,安装ssh

apt-get update -y
apt-get install -y openssh-client openssh-server
#允许root用户登录
sed -i ‘s/PermitRootLogin without-password/PermitRootLogin yes/g‘ /etc/ssh/sshd_config
#登录验证密码
sed -i ‘s/#PasswordAuthentication yes/PasswordAuthentication yes/g‘ /etc/ssh/sshd_config

mkdir /var/run/sshd
#修改root用户的密码
echo "root:123456" | chpasswd
#启动ssh
/usr/sbin/sshd
#退出
exit

4,保存镜像

#停止容器
docker stop CONTAINER_ID
#保存镜像
docker commit CONTAINER_ID gitlib_ubuntu
#删除容器
docker rm CONTAINER_ID
#重新创建容器
docker run -i -t -d  --privileged -p 55402:22 -p 80:80 --name gitlib_ubuntu_1 gitlib_ubuntu:latest /usr/sbin/sshd -D

5,安装依赖包

sudo是必须安装的。

#确认系统更新到最新
apt-get update -y
apt-get upgrade -y
apt-get install sudo -y

#由于ubuntu安装的是vimrc.tiny,所以删除该版本,安装vim full版本
apt-get -y remove vim-common
apt-get -y  install vim

#vi打开utf-8文件乱码的解决方案
vi /etc/vim/vimrc
set fileencodings=utf-8,gb2312,gbk,gb18030
set termencoding=utf-8
set encoding=prc
#显示行号
set nu

#安装依赖包
sudo apt-get install -y build-essential zlib1g-dev libyaml-dev libssl-dev libgdbm-dev libreadline-dev libncurses5-dev libffi-dev curl openssh-server redis-server checkinstall libxml2-dev libxslt-dev libcurl4-openssl-dev libicu-dev logrotate python-docutils pkg-config cmake nodejs

#安装Git
sudo apt-get install -y git-core
#确认git版本在1.7.10以上
git --version

6,安装Ruby

mkdir /tmp/ruby && cd /tmp/ruby
curl -L --progress http://cache.ruby-lang.org/pub/ruby/2.1/ruby-2.1.6.tar.gz | tar xz
cd ruby-2.1.6
./configure --disable-install-rdoc
make
sudo make install

#安装bundler ,一个安装ruby的包系统 ,用bundler管理gem,选择淘宝提供的RubyGems镜像
sudo gem sources -r https://rubygems.org/
sudo gem sources -a https://ruby.taobao.org/
gem sources -l

#终端出现下面的内容,说明设置成功
*** CURRENT SOURCES ***
https://ruby.taobao.org/

sudo gem install bundler --no-ri --no-rdoc

7,创建系统用户

sudo adduser --disabled-login --gecos ‘GitLab‘ git

8,安装mysql

#安装mysql,期间会要求输入mysql root用户的密码
sudo apt-get install -y mysql-server mysql-client libmysqlclient-dev
#确认mysql版本为5.5.14以上
mysql --version
#登录mysql
mysql -u root -p
#登录报错ERROR 2002 (HY000): Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘需要执行下面语句。
sudo /etc/init.d/mysql restart

#创建git用户,$password为git用户密码,自行修改
mysql>CREATE USER ‘git‘@‘localhost‘ IDENTIFIED BY ‘$password‘;
#创建数据库
mysql>CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
#授权
mysql>GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, LOCK TABLES ON `gitlabhq_production`.* TO ‘git‘@‘localhost‘;
#退出
mysql>\q
#使用git用户登录mysql
mysql -u git -p -D gitlabhq_production
#确认登录成功后退出
mysql>\q

  

9,安装Redis

sudo apt-get install redis-server
sudo cp /etc/redis/redis.conf /etc/redis/redis.conf.orig

#修改/etc/redis/redis.conf(vi /etc/redis/redis.conf)
unixsocket /var/run/redis/redis.sock
unixsocketperm 770

mkdir /var/run/redis
chown redis:redis /var/run/redis
chmod 755 /var/run/redis
#重启redis
sudo service redis-server restart
#添加git用户到redis组
sudo usermod -aG redis git

以上所有的操作都是使用root用户。

10,安装GitLab

#使用git用户
su git
#确认当前位置为/home/git
pwd
#Clone GitLab repository
git clone https://gitlab.com/gitlab-org/gitlab-ce.git -b 7-14-stable gitlab
#进入gitlab目录
cd /home/git/gitlab
cp config/gitlab.yml.example config/gitlab.yml

vi config/gitlab.yml
#修改host的值为访问域名
host: gitlib
#修改ssh端口,如果ssh端口不是默认的22端口,则必须修改该值
#否则git clone ssh不能成功
ssh_port: 55402

#unicorn配置
cp config/unicorn.rb.example config/unicorn.rb
#rack配置
cp config/initializers/rack_attack.rb.example config/initializers/rack_attack.rb
#Configure Git global settings for git user, used when editing via web editor
git config --global core.autocrlf input
#redis配置
cp config/resque.yml.example config/resque.yml
#创建附属目录
mkdir /home/git/gitlab-satellites

  

# git MySQL数据库配置 :
cp config/database.yml.mysql config/database.yml
vi config/database.yml
#修改database.yml文件中production的username和password
production:
  adapter: mysql2
  encoding: utf8
  collation: utf8_general_ci
  reconnect: false
  database: gitlabhq_production
  pool: 10
  username: git
  password: "$password"
安装Gems
#选择淘宝提供的RubyGems镜像
vi Gemfile
#source "https://rubygems.org"
source "http://ruby.taobao.org"

bundle install --deployment --without development test postgres aws kerberos

  

安装GitLab Shell
bundle exec rake gitlab:shell:install[v2.6.3] REDIS_URL=unix:/var/run/redis/redis.sock RAILS_ENV=production

#修改gitlab_url为访问域名
vi /home/git/gitlab-shell/config.yml
gitlab_url: "http://gitlib"
#初始化git的数据库脚本,并且激活高级功能
bundle exec rake gitlab:setup RAILS_ENV=production

执行结果为
Administrator account created:

login.........root
password......5iveL!fe
cp lib/support/init.d/gitlab.default.example /etc/default/gitlab
#设置 GitLab 使用 Logrotate 备份 Log
cp lib/support/logrotate/gitlab /etc/logrotate.d/gitlab
#编译
bundle exec rake assets:precompile RAILS_ENV=production
#启动gitlab
sudo service gitlab start

11,安装Nginx

使用root用户

sudo apt-get install -y nginx

sudo cp lib/support/nginx/gitlab /etc/nginx/sites-available/gitlab
sudo ln -s /etc/nginx/sites-available/gitlab /etc/nginx/sites-enabled/gitlab

vi /etc/nginx/sites-available/gitlab
#删除listen行中的default_server,修改server_name值为访问域名
server {
  listen 0.0.0.0:80;
  listen [::]:80;
  server_name gitlib;
  ...
}

sudo service nginx restart

  

12,设置hosts

vi /etc/hosts

127.0.0.1       gitlib

  

13,访问web

访问地址 http://gitlib

默认管理员用户:root/5iveL!fe

  

14,后记

a,nginx的server_name,gitlab-shell的gitlab_url,gitlab的gitlab.yml中的host,三个值必须一致
b,当前容器保存镜像后,从镜像再次运行的时候,需要修改/etc/hosts文件
启动mysql
sudo /etc/init.d/mysql restart
启动redis
sudo service redis-server restart
启动gitlib
sudo service gitlab restart
启动nginx
sudo service nginx restart

参考

http://www.open-open.com/lib/view/open1397006572653.html

https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md

http://doc.gitlab.com/ce/install/database_mysql.html

15,备份和恢复

使用官网给出的方案,备份后不能恢复。下面给出了另外一种方案。

备份

cd /home/git/
#打包仓库文件
tar zcvf /tmp/repositories.tar.gz ./repositories
#备份sql文件
mysqldump -uroot -pxxxx gitlabhq_production > /tmp/gitlabhq_production.sql
#备份keys
cp /home/git/.ssh/authorized_keys  /tmp/authorized_keys

  

恢复

#使用git用户
su git
#解压仓库文件
tar zxvf repositories.tar.gz
#导入仓库
cp -r repositories /home/git/
#导入keys
cat authorized_keys >> /home/git/.ssh/authorized_keys
#导入数据库
mysql -uroot -pxxx gitlabhq_production < gitlabhq_production.sql 

cd /home/git/gitlab/
bundle exec rake gitlab:import:repos RAILS_ENV=production
bundle exec rake gitlab:satellites:create RAILS_ENV=production
#检测
bundle exec rake gitlab:check RAILS_ENV=production

#使用root用户重启gitlab
sudo service gitlab restart

  

参考

http://www.linuxyan.com/web-server/398.html

时间: 2024-10-10 19:58:12

在Docker中使用ubuntu镜像搭建gitLib的相关文章

Docker中配置国内镜像

1. 为什么要为docker配置国内镜像 ??在正常情况下,docker有一个默认连接的国外官方镜像,在国外的网友访问该官方镜像自然不成问题,但是国内毕竟不是国外,由于国情不同,中国的网络访问国外官方镜像网速一向很慢,而且往往还会遭遇断网的窘境,所以说我们要想正常使用docker的镜像,那么我们就不得不配置相应的国内镜像. 2. 可以使用的国内镜像有哪些 ??Docker可以配置的国内镜像有很多可供选择,比如说:阿里云,网易蜂巢,DaoCloud,Docker中国区官方镜像等,这些都是可以提供给

在Ubuntu18.04的Docker中安装Oracle镜像及简单使用

一.软件环境: 1.OS:Ubuntu 18.04 2.已安装了Docker 二.安装Oracle镜像的过程 1.切换到root账号下,如果是普通账号,下面操作指令前面加sudo 2.搜索oracle镜像 docker search oracle 3.下载oracle镜像 Docker pull registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g 4.查看镜像 docker images docker images registry.cn-h

Docker中Hadoop集群搭建

使用腾讯云主机,docker构建集群测试环境. 环境 1.操作系统: CentOS 7.2 64位 网路设置 hostname IP cluster-master 172.18.0.2 cluster-slave1 172.18.0.3 cluster-slave2 172.18.0.4 cluster-slave3 172.18.0.5 Docker 安装 curl -sSL https://get.daocloud.io/docker | sh ##换源 ###这里可以参考这篇文章http:

Docker中启动Nginx镜像,配置aspnetcore 网站代理

1.使用docker 下载nginx 镜像  docker pull nginx 2.启动nginx docker run --name nginx -p 80:80 -d nginx 这样就简单的把nginx启动了,但是我们想要改变配置文件nginx.conf ,进入容器,命令: docker exec -it nginx bash nginx.conf配置文件在 /etc/nginx/  下面,但是你使用vim nginx.conf 或者vi nginx.conf 会发现vi或者vim命令没

利用docker中的nginx镜像部署angular项目

1.进入angular项目下的src文件加下:在命令行中执行:ng build --prod --aot 2.将生成的dist文件,通过Xftp传到服务器中 3.修改权限 4.进入到dist文件夹下的t-app文件夹下,执行dockers run命令 原文地址:https://www.cnblogs.com/MyUniverse/p/11288977.html

Linux下使用docker 拉取 vsftpd 镜像搭建 Ftp 服务器,连接 Ftp 时遇到的错误(425 Failed to establish connection)

Ftp踩坑系列: Linux上的ftp服务器 vsftpd 之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传 ftp服务器Serv-U 设置允许自动创建不存在的目录 FTP协议的粗浅学习--利用wireshark抓包分析相关tcp连接 一.前言 出现这个问题,在docker这类容器出现之前,原因可能是防火墙的问题: FTP服务器一般默认使用被动模式,即,客户端一般会和服务端的21端口建立连接,该连接用来传输命令.真正传输数据时,服务端会返回一个随机端口,告诉客户端新建

docker中搭建jenkins环境

想在docker中搭建一个jenkins环境.开始的时候我想在先pull centos,然后在里面自己搭建环境,搭建后的环境可以运行,但是不知道挂载哪的数据,这也是我不熟悉jenkins的原因. 同事告诉我一个新的思路https://registry.hub.docker.com/_/jenkins/在官网中,寻找镜像,查看information(原来我也知道这个方法,但是由于都是英语,不想看,但看起来,发现没有想象中的那么枯燥). docker pull jenkins 下载镜像 docker

docker 中搭建tomcat

关于docker中tomcat的搭建,没有什么多说的,直接下载官方镜像 docker pull tomcat  (可能会下载到好几个镜像,就是tag不同,有知道为什么的可以告诉我) 然后我看的  https://registry.hub.docker.com/_/tomcat/    中的描述docker run -it --rm -p 8888:8080 tomcat:8.0 然后 在网页中显示正常.可是没说挂载数据的东西. 我先登录进容器,然后,查看好需要挂载出来的数据,然后再重新启动一个容

Docker中通过模板创建镜像,Docker容器、仓库及数据管理

1.通过模板创建镜像 (1)首先去下载一个模板 http://openvz.org/Download/templates/precreated //下载速度不快,阿铭下载了一个centos6的模板centos-6-x86-minimal.tar.gz (2)导入该镜像的命令为: cat centos-6-x86-minimal.tar.gz|docker import - centos6 (3)查看导入的镜像 docker images (4)导出镜像: 把现有镜像,导出为一个文件: docke