Docker搭建Gitlab CI 全過程詳解

配置環境:

宿主機:Ubuntu 13.04 (x86_64)

docker版本:0.7.0

Client version: 0.7.0
Go version (client): go1.2rc5
Git commit (client): 0d078b6
Server version: 0.7.0
Git commit (server): 0d078b6
Go version (server): go1.2rc5
Last stable version: 0.7.0

Gitlab     版本:4.2.0(已經搭建好的)

Gitlab CI版本:3.2.0 

1、從index.docker.io搜尋所需鏡像。

固然是去咱們最可愛得index.docker.io上去搜尋啦。 html

sudo docker search gitlab-ci          #從docker index搜尋gitlab-ci的鏡像



這裏有不少的可用image不少,這些都是用戶上傳的,能夠本身選擇,我通常都是看TRUSTED欄有ok的就能夠,這是我本身猜的啊,你根據本身的經驗來就行。我選的是anapsix/gitlab-ci,看這個比較順眼,就它了。 mysql

2、去https://index.docker.io獲取鏡像相關的信息。

彆着急讓你下載的鏡像跑起來,咱們把別人的成果偷來以後總不能不會用把,接着去https://index.docker.io 去看看咱們偷來的東西是誰的,怎麼樣讓這個東東跑起來。 git


看看,人家都教你怎麼用啦。人家還告訴你怎麼作的這個鏡像,就是咱們的Dockerfile。不過我是要和本身內網的Gitlab上用,因此直接拷貝下來的東西不能用。 github

這是Dockerfile的內容: redis

FROM tianon/debian   #基礎鏡像包

MAINTAINER Anastas Semenov <anapsix@random.io>    #做者

RUN apt-get update #run跑的是命令 sql

#底下這一部分和實體機上安裝相似,可是仍是有很大的不一樣,我就掉進這個坑裏去過。 RUN DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes libxml2-dev libxslt-dev libcurl4-openssl-dev libreadline6-dev libc6-dev libssl-dev libyaml-dev libicu-dev zlib1g-dev libsqlite3-dev wget curl gcc build-essential make git sudo postfix cron ruby1.9.1 ruby1.9.1-dev rubygems-integration redis-server RUN gem install bundle --no-ri --no-rdoc RUN adduser --disabled-login --gecos 'GitLab CI' gitlab_ci RUN cd /home/gitlab_ci; sudo -u gitlab_ci -H git clone -b 3-2-stable --depth 1 https://github.com/gitlabhq/gitlab-ci.git gitlab-ci RUN cd /home/gitlab_ci/gitlab-ci; sudo -u gitlab_ci -H mkdir -p tmp/pids tmp/sockets RUN cd /home/gitlab_ci/gitlab-ci; curl -sL https://raw.github.com/anapsix/gitlabci-docker/master/BUNDLER-adding-sqlite3-support.patch | sudo -u gitlab_ci -H git am RUN cd /home/gitlab_ci/gitlab-ci; sudo -u gitlab_ci -H bundle install --without development test postgres mysql --deployment RUN cd /home/gitlab_ci/gitlab-ci; sudo -u gitlab_ci -H curl -sL https://raw.github.com/anapsix/gitlabci-docker/master/gitlab_ctrl.rb > ./gitlabci_ctrl.rb; chmod +x ./gitlabci_ctrl.rb RUN cd /home/gitlab_ci/gitlab-ci; sudo -u gitlab_ci -H ./gitlabci_ctrl.rb --db --puma --app GITLAB_URLS="https://dev.gitlab.org/" RUN cd /home/gitlab_ci/gitlab-ci; sudo -u gitlab_ci -H bundle exec rake db:setup RAILS_ENV=production RUN cd /home/gitlab_ci/gitlab-ci; sudo -u gitlab_ci -H bundle exec whenever -w RAILS_ENV=production # cleanup, if needed #RUN DEBIAN_FRONTEND=noninteractive apt-get remove --force-yes -y ruby1.9.1-dev #RUN DEBIAN_FRONTEND=noninteractive apt-get autoremove --force-yes -y EXPOSE 9000 #container開的端口 WORKDIR /home/gitlab_ci/gitlab-ci CMD /home/gitlab_ci/gitlab-ci/gitlabci_ctrl.rb --start #啓動命令




就至關與你偷了別人的東西(打個好比)不會用,去找人家,人家還告訴你這個東西怎麼用,並且還告訴你這個東西是怎麼作出來的。哈哈哈,真是個好yin。 docker

3、修改鏡像使鏡像符合本身的須要。

這下前因後果都弄清楚以後,咱們修改鏡像就要跑本身的東西啦。 shell

docker run -i -t anapsix/gitlab-ci /bin/bash


docker run  anapsid/gitlab-ci :是讓docker用anapsid/gitlab-ci鏡像跑進一個container裏面 ruby

-i -t 是進入這個container,如今咱們就在容器裏面去了。 bash


由於我事先看過如何去實體機上安裝Gitlab CI,因此進去就直接修改文件,改爲能與本地Gitlab服務器呼應。

https://github.com/gitlabhq/gitlab-ci/blob/master/doc/installation.md (gitlab-ci安裝教程

http://www.cnblogs.com/inbase/p/3276310.html (這個是按照教程作的實驗以及遇到的問題)

進入容器以後修改:


其餘的不用改。而後退出exit退出,而且用docker ps -l查看container號,這時上一行會有一個用docker commit提交你修改的部分。

exit

docker ps -l #這一行會產生一個container ID,下一行命令會用到。

docker commit 你的container-ID liql/gitlab-ci #把你在anapsid/gitlab-ci修改的部分固 #化成你本身的images



4、讓本身的鏡像跑起來。

而後就能夠跑起來啦

1.方法一:

docker run -d -p 9000:9000  liql/gitlab-ci /home/gitlab_ci/gitlab-ci/gitlabci_ctrl.rb --start

2.方法二:

docker run -i -t -p 9000:9000 liql/gitlab-ci   #這是進入container的命令

/home/gitlab_ci/gitlab-ci/gitlabci_ctrl.rb --start


這裏千萬不能exit,用ctrl+p 而後 ctrl+q 這個時候就看到容器在跑了。


而後訪問你的http://192.168.0.211:9090 就會看到驚喜了。


大功告成。收穫多多啊。

相關文章
相關標籤/搜索