README.md 5.24 KB
Newer Older
1
# GitLab Docker images
2

3
## What is GitLab?
4

5
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.
6
Learn more on [https://about.gitlab.com](https://about.gitlab.com)
7

8
## After starting a container
9

10
After starting a container you can go to [http://localhost:8080/](http://localhost:8080/) or [http://192.168.59.103:8080/](http://192.168.59.103:8080/) if you use boot2docker.
11

12
13
It might take a while before the docker container is responding to queries.

14
You can check the status with something like `sudo docker logs -f 7c10172d7705`.
15

16
17
18
19
You can login to the web interface with username `root` and password `5iveL!fe`.

Next time, you can just use docker start and stop to run the container.

20
21
## How to build the docker images

22
23
24
25
This guide will also let you know how to build docker images yourself.
Please run all the commands from the GitLab repo root directory.
People using boot2docker should run all the commands without sudo.

26
## Choosing between the single and the app and data images
27

Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
28
29
30
31
32
33
34
Normally docker uses a single image for one applications.
But GitLab stores repositories and uploads in the filesystem.
This means that upgrades of a single image are hard.
That is why we recommend using separate app and data images.
We'll first describe how to use a single image.
After that we'll describe how to use the app and data images.

35
## Single image
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
36

37
Get a published image from Dockerhub:
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
38

39
40
```bash
sudo docker pull sytse/gitlab-ce:7.10.1
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
41
42
```

43
Run the image:
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
44

45
```bash
46
sudo docker run --detach --publish 8080:80 --publish 2222:22 sytse/gitlab-ce:7.10.1
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
47
48
```

49
After this you can login to the web interface as explained above in 'After starting a container'.
50

51
52
53
Build the image:

```bash
54
sudo docker build --tag sytse/gitlab-ce:7.10.1 docker/single/
55
56
57
```

Publish the image to Dockerhub:
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
58
59

```bash
60
sudo docker push sytse/gitlab-ce
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
61
62
```

63
Diagnosing commands:
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
64
65

```bash
66
sudo docker run -i -t sytse/gitlab-ce:7.10.1
67
sudo docker run -ti -e TERM=linux --name gitlab-ce-troubleshoot --publish 8080:80 --publish 2222:22 sytse/gitlab-ce:7.10.1 bash /usr/local/bin/wrapper
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
68
69
```

70
71
72
## App and data images

### Get published images from Dockerhub
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
73

74
75
76
```bash
sudo docker pull sytse/gitlab-data
sudo docker pull sytse/gitlab-app:7.10.1
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
77
```
78

79
### Run the images
80
81
82
83

```bash
sudo docker run --name gitlab-data sytse/gitlab-data /bin/true
sudo docker run --detach --name gitlab_app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data sytse/gitlab-app:7.10.1
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
84
85
```

86
After this you can login to the web interface as explained above in 'After starting a container'.
87

88
### Build images
89

90
Build your own based on the Omnibus packages with the following commands.
91

92
```bash
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
93
94
sudo docker build --tag gitlab-data docker/data/
sudo docker build --tag gitlab-app:7.10.1 docker/app/
95
```
96

97
After this run the images as described in the previous section.
98

99
100
101
102
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:
103
104
105
106
107

- `/var/opt/gitlab` for application data
- `/var/log/gitlab` for logs
- `/etc/gitlab` for configuration

108
### Configure GitLab
109

Terrence Benade's avatar
Terrence Benade committed
110
This container uses the official Omnibus GitLab distribution, so all configuration is done in the unique configuration file `/etc/gitlab/gitlab.rb`.
111

112
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:
113

114
```bash
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
115
sudo docker run -ti -e TERM=linux --rm --volumes-from gitlab-data ubuntu
116
117
vi /etc/gitlab/gitlab.rb
```
118
119
120

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

121
You can find all available options in [Omnibus GitLab documentation](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration).
122

123
### Upgrade GitLab with app and data images
124
125
126

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

127
It Assumes that you're upgrading from 7.8.1 to 7.10.1 and you're in the updated GitLab repo root directory:
128
129

```bash
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
130
131
132
133
sudo docker stop gitlab-app
sudo docker rm gitlab-app
sudo docker build --tag gitlab-app:7.10.1 docker/app/
sudo docker run --detach --name gitlab-app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab-app:7.10.1
134
135
```

136
On the first run GitLab will reconfigure and update itself. If everything runs OK don't forget to cleanup the app image:
137
138

```bash
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
139
sudo docker rmi gitlab-app:7.8.1
140
```
141

142
### Publish images to Dockerhub
143

144
145
146
Login to Dockerhub with `sudo docker login` and run the following (replace '7.9.2' with the version you're using and 'Sytse Sijbrandij' with your name):

```bash
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
147
148
sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab-app:7.10.1 sytse/gitlab-app:7.10.1
sudo docker push sytse/gitlab-app:7.10.1
149
150
151
152
sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab_data sytse/gitlab_data
sudo docker push sytse/gitlab_data
```

153
154
## Troubleshooting

155
Please see the [troubleshooting](troubleshooting.md) file in this directory.