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

3 4 5 6
## 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.
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 gitlab`.
15

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

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

20
## Run the image
21

22 23 24
Run the image:
```bash
sudo docker run --detach \
Kamil Trzcinski's avatar
Kamil Trzcinski committed
25
	--publish 8443:443 --publish 8080:80 --publish 2222:22 \
26 27 28 29 30 31 32
	--name gitlab \
	--restart always \
	--volume /srv/gitlab/config:/etc/gitlab \
	--volume /srv/gitlab/logs:/var/log/gitlab \
	--volume /srv/gitlab/data:/var/opt/gitlab \
	gitlab/gitlab-ce:latest
```
33

Kamil Trzcinski's avatar
Kamil Trzcinski committed
34
This will download and start GitLab CE container and publish ports needed to access SSH, HTTP and HTTPS.
35 36
All GitLab data will be stored as subdirectories of `/srv/gitlab/`.
The container will automatically `restart` after system reboot.
37

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

40
## Where is the data stored?
41

42 43 44 45
The GitLab container uses host mounted volumes to store persistent data:
- `/srv/gitlab/data` mounted as `/var/opt/gitlab` in the container is used for storing *application data*
- `/srv/gitlab/logs` mounted as `/var/log/gitlab` in the container is used for storing *logs*
- `/srv/gitlab/config` mounted as `/etc/gitlab` in the container is used for storing *configuration*
46

47 48 49
You can fine tune these directories to meet your requirements.

### Configure GitLab
50

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

53
To access GitLab configuration, you can start an bash in a new the context of running container, you will be able to browse all directories and use your favorite text editor:
54
```bash
55
sudo docker exec -it gitlab /bin/bash
56 57
```

58
You can also edit just `/etc/gitlab/gitlab.rb`:
59
```bash
60
sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb
61 62
```

63 64
**You should set the `external_url` to point to a valid URL.**

Kamil Trzcinski's avatar
Kamil Trzcinski committed
65 66
**You may also be interesting in [Enabling HTTPS](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md#enable-https).**

67 68 69 70
**To receive e-mails from GitLab you have to configure the [SMTP settings](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/smtp.md),
because Docker image doesn't have a SMTP server.**

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

```bash
73
sudo docker restart gitlab
74 75
```

76
For more options for configuring the container please check [Omnibus GitLab documentation](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration).
77

78
## Diagnose potential problems
79

80
Read container logs:
81
```bash
82
sudo docker logs gitlab
83
```
84

85
Enter running container:
86
```bash
87
sudo docker exec -it gitlab /bin/bash
88 89
```

90
From within container you can administrer GitLab container as you would normally administer Omnibus installation: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md.
91

92
### Upgrade GitLab to newer version
93

94 95
To upgrade GitLab to new version you have to do:
1. pull new image,
96
```bash
97
sudo docker stop gitlab
98
```
99

100
1. stop running container, 
101
```bash
102
sudo docker rm gitlab
103
```
104

105 106 107 108
1. remove existing container, 
```bash
sudo docker pull gitlab/gitlab-ce:latest
```
109

110
1. create the container once again with previously specified options.
111
```bash
112
sudo docker run --detach \
Kamil Trzcinski's avatar
Kamil Trzcinski committed
113
	--publish 8443:443 --publish 8080:80 --publish 2222:22 \
114 115 116 117 118 119
	--name gitlab \
	--restart always \
	--volume /srv/gitlab/config:/etc/gitlab \
	--volume /srv/gitlab/logs:/var/log/gitlab \
	--volume /srv/gitlab/data:/var/opt/gitlab \
	gitlab/gitlab-ce:latest
120
```
121

122
On the first run GitLab will reconfigure and update itself.
123

124
### Run GitLab CE on public IP address
125

126
You can make Docker to use your IP address and forward all traffic to the GitLab CE container.
Kamil Trzcinski's avatar
Kamil Trzcinski committed
127
You can do that by modifying the `--publish` ([Binding container ports to the host](https://docs.docker.com/articles/networking/#binding-ports)):
128

129
> --publish=[] : Publish a container᾿s port or a range of ports to the host format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort
130

131
To expose GitLab CE on IP 1.1.1.1:
132 133

```bash
134 135 136 137 138 139 140 141
sudo docker run --detach \
	--publish 1.1.1.1:443:443 --publish 1.1.1.1:80:80 --publish 1.1.1.1:22:22 \
	--name gitlab \
	--restart always \
	--volume /srv/gitlab/config:/etc/gitlab \
	--volume /srv/gitlab/logs:/var/log/gitlab \
	--volume /srv/gitlab/data:/var/opt/gitlab \
	gitlab/gitlab-ce:latest
142 143
```

144
You can then access GitLab instance at http://1.1.1.1/ and https://1.1.1.1/.
145

Kamil Trzcinski's avatar
Kamil Trzcinski committed
146 147 148 149 150 151 152 153 154 155 156
### Build the image

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

```bash
sudo docker build --tag gitlab/gitlab-ce:latest docker/
```

### Publish the image to Dockerhub
157

158 159
- Ensure the containers are running
- Login to Dockerhub with `sudo docker login`
160 161

```bash
162 163
sudo docker login
sudo docker push gitlab/gitlab-ce:latest
164 165
```

166 167
## Troubleshooting

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