gitlab-org--gitlab-foss/docker
Sytse (admin) 708c39ff57 Merge branch 'master' into 'master'
Separate Dockerfile for Data and Application

This is based on #1158

Instead of creating data container from same docker image, we create separate docker image for data container to avoid keeping original docker image after upgrading to new version. (That results in 1GB space that cannot be freed)

See merge request !409
2015-03-26 23:47:00 +00:00
..
assets Separate Dockerfile for Data and Application 2015-03-20 20:03:14 +01:00
data Separate Dockerfile for Data and Application 2015-03-20 20:03:14 +01:00
.dockerignore Gracefully shutdown services in Docker container 2015-02-24 19:20:57 +08:00
Dockerfile Merge branch 'master' into 'master' 2015-03-26 23:47:00 +00:00
README.md Separate Dockerfile for Data and Application 2015-03-20 20:03:14 +01:00
troubleshooting.md Move commands to the readme, rename gitlab to gitlab_app, add PostgreSQL tweaks to gitlab.rb. 2014-12-03 12:41:47 +01:00

What is GitLab?

GitLab offers git repository management, code reviews, issue tracking, activity feeds, wikis. It has LDAP/AD integration, handles 25,000 users on a single server but can also run on a highly available active/active cluster. A subscription gives you access to our support team and to GitLab Enterprise Edition that contains extra features aimed at larger organizations.

https://about.gitlab.com

GitLab Logo

How to use these images

At this moment GitLab doesn't have official Docker images. For convinience we will use suffix _xy where xy is current version of GitLab. Build your own based on the Omnibus packages with the following commands (it assumes you're in the GitLab repo root directory):

sudo docker build --tag gitlab_data_image docker/data/
sudo docker build --tag gitlab_app_image_xy docker/

We assume using a data volume container, this will simplify migrations and backups. This empty container will exist to persist as volumes the 3 directories used by GitLab, so remember not to delete it.

The directories on data container are:

  • /var/opt/gitlab for application data
  • /var/log/gitlab for logs
  • /etc/gitlab for configuration

Create the data container with:

sudo docker run --name gitlab_data gitlab_data_image /bin/true

After creating data container run GitLab container:

sudo docker run --detach --name gitlab_app_xy --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_app_image_xy

It might take a while before the docker container is responding to queries. You can follow the configuration process with sudo docker logs -f gitlab_app_xy.

You can then go to http://localhost:8080/ (or http://192.168.59.103:8080/ if you use boot2docker). You can login with username root and password 5iveL!fe. Next time, you can just use sudo docker start gitlab_app and sudo docker stop gitlab_app.

How to configure GitLab

This container uses the official Omnibus GitLab distribution, so all configuration is done in the unique configuration file /etc/gitlab/gitlab.rb.

To access GitLab configuration, you can start an interactive command line in a new container using the shared data volume container, you will be able to browse the 3 directories and use your favorite text editor:

sudo docker run -ti -e TERM=linux --rm --volumes-from gitlab_data ubuntu 
vi /etc/gitlab/gitlab.rb

Note that GitLab will reconfigure itself at each container start. You will need to restart the container to reconfigure your GitLab.

You can find all available options in Omnibus GitLab documentation.

How to upgrade GitLab

To updgrade GitLab to new versions, stop running container, create new docker image and container from that image.

It Assumes that you're upgrading from 7.8 to 7.9 and you're in the updated GitLab repo root directory:

sudo docker stop gitlab_app_78
sudo docker build --tag gitlab_app_image_79 docker/
sudo docker run --detach --name gitlab_app_79 --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_app_image_79

On the first run GitLab will reconfigure and update itself. If everything runs OK don't forget to cleanup old container and image:

sudo docker rm gitlab_app_78
sudo docker rmi gitlab_app_image_78

Troubleshooting

Please see the troubleshooting file in this directory.