阿拉丁和灯

Thoughts, stories and ideas.



用Docker Compose方式安装Gitlab服务


Gitlab是一个开源的Git hosting服务软件,使用广泛。我们知道用Docker方式来安装服务端软件,是非常方便的。但Gitlab需要三个服务:Gitlab,PostgreSQL数据库,以及Redis缓存。如果用命令行直接运行container,需要三条命令,还要指定很多的配置项。与之前用Docker方式运行Ghost和Phabricator不同的是,这次我们用**docker-compose**工具来一次运行多个container。只需要两个简单的命令行就可以完成Gitlab服务的安装和启动。可以说是前所未有的便捷。

Image

Image:
https://registry.hub.docker.com/u/sameersbn/gitlab/
Source code:
https://github.com/sameersbn/docker-gitlab

包含三个Image:redis, postgresql, gitlab

Docker Compose Yml File

这三个image, 如果直接用Docker run命令来跑的话,需要三条命令,并且还要指定很多的参数来指定一些选项的值,比如db username/password。Docker提供了更方便的解决方案:Docker Compose,用一条命令就可以跑起多个Container,最适合这种运行多个Container共同组成一个服务的情景。

Docker Compose接受一个.yml文件作为输入。Yml文件指定了多个Container怎么启动,彼此之间怎么连接。下面是sameersbn/gitlab这个Image所提供的Yml文件(https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml).

postgresql:
  image: sameersbn/postgresql:9.4-3
  environment:
    - DB_USER=gitlab
    - DB_PASS=password
    - DB_NAME=gitlabhq_production
  volumes:
    - /srv/docker/gitlab/postgresql:/var/lib/postgresql
gitlab:
  image: sameersbn/gitlab:7.13.5
  links:
    - redis:redisio
    - postgresql:postgresql
  ports:
    - "10080:80"
    - "10022:22"
  environment:
    - TZ=Asia/Kolkata
    - SMTP_ENABLED=false
    - SMTP_DOMAIN=www.example.com
    - SMTP_HOST=smtp.gmail.com
    - SMTP_PORT=587
    - SMTP_USER=mailer@example.com
    - SMTP_PASS=password
    - SMTP_STARTTLS=true
    - SMTP_AUTHENTICATION=login
    - GITLAB_TIMEZONE=Kolkata
    - GITLAB_HOST=localhost
    - GITLAB_PORT=10080
    - GITLAB_SSH_PORT=10022
    - GITLAB_EMAIL=admin@example.com
    - GITLAB_EMAIL_REPLY_TO=noreply@example.com
    - GITLAB_BACKUPS=daily
    - GITLAB_BACKUP_TIME=01:00
  volumes:
    - /srv/docker/gitlab/gitlab:/home/git/data
redis:
  image: sameersbn/redis:latest
  volumes:
    - /srv/docker/gitlab/redis:/var/lib/redis

命令

安装Docker,拉images

1  yum -y update  
2  yum -y install docker  
3  docker -d &
4  docker pull sameersbn/gitlab:latest  
5  docker pull sameersbn/redis:latest
6  docker pull sameersbn/postgresql:9.4-3

安装Docker Compose

1  curl -L https://github.com/docker/compose/releases/download/1.4.0/docker-compose-Linux-x86_64 > /usr/local/bin/docker-compose
2  ls /usr/local/bin/docker-compose -la
3  chmod +x /usr/local/bin/docker-compose 

运行

1  wget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
2  docker-compose up &

Docker compose的输出示例

Docker Compose输出的信息是比较友好的。可以看到,Docker Compose先后跑起了三个container。用这种方式启动由多个Container组成的服务,非常地方便。

结果

运行以上步骤之后,Gitlab服务就起来了,可以访问 http://localhost:10080 来打开服务

参考资料

Docker Compose的Git repo
https://github.com/docker/compose

Announcing Docker Machine, Swarm, And Compose For Orchestrating Distributed Apps
http://blog.docker.com/2014/12/announcing-docker-machine-swarm-and-compose-for-orchestrating-distributed-apps/



View or Post Comments