GitLab steht wegen Wartungsarbeiten am Montag, den 10. Mai, zwischen 17:00 und 19:00 Uhr nicht zur Verfügung.

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

3
The GitLab docker image is [available on Docker Hub](https://registry.hub.docker.com/u/gitlab/gitlab-ce/).
4

5
## After starting a container
6

7
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.
8

9 10
It might take a while before the docker container is responding to queries.

11
You can check the status with something like `sudo docker logs -f gitlab`.
12

13
You can login to the web interface with username `root` and password `password`.
14 15 16

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

17
## Run the image
18

19 20 21
Run the image:
```bash
sudo docker run --detach \
Kamil Trzcinski's avatar
Kamil Trzcinski committed
22
	--publish 8443:443 --publish 8080:80 --publish 2222:22 \
23 24 25 26 27 28 29
	--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
```
30

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

35
After this you can login to the web interface as explained above in 'After starting a container'.
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
36

37
## Where is the data stored?
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
38

39 40 41 42
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*
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
43

44 45 46
You can fine tune these directories to meet your requirements.

### Configure GitLab
47

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

50
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:
51
```bash
52
sudo docker exec -it gitlab /bin/bash
53 54
```

55
You can also edit just `/etc/gitlab/gitlab.rb`:
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
56
```bash
57
sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
58 59
```

60 61
**You should set the `external_url` to point to a valid URL.**

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

64 65 66 67
**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:
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
68 69

```bash
70
sudo docker restart gitlab
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
71 72
```

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

75
## Diagnose potential problems
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
76

77
Read container logs:
78
```bash
79
sudo docker logs gitlab
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
80
```
81

82
Enter running container:
83
```bash
84
sudo docker exec -it gitlab /bin/bash
Sytse Sijbrandij's avatar
Sytse Sijbrandij committed
85 86
```

87
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.
88

89
### Upgrade GitLab to newer version
90

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

97
1. stop running container,
98
```bash
99
sudo docker rm gitlab
100
```
101

102
1. remove existing container,
103 104 105
```bash
sudo docker pull gitlab/gitlab-ce:latest
```
106

107
1. create the container once again with previously specified options.
108
```bash
109
sudo docker run --detach \
Kamil Trzcinski's avatar
Kamil Trzcinski committed
110
	--publish 8443:443 --publish 8080:80 --publish 2222:22 \
111 112 113 114 115 116
	--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
117
```
118

119
On the first run GitLab will reconfigure and update itself.
120

121
### Run GitLab CE on public IP address
122

123
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
124
You can do that by modifying the `--publish` ([Binding container ports to the host](https://docs.docker.com/articles/networking/#binding-ports)):
125

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

128
To expose GitLab CE on IP 1.1.1.1:
129 130

```bash
131 132 133 134 135 136 137 138
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
139 140
```

141
You can then access GitLab instance at http://1.1.1.1/ and https://1.1.1.1/.
142

Kamil Trzcinski's avatar
Kamil Trzcinski committed
143 144 145 146 147 148 149 150 151 152 153
### 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
154

155 156
- Ensure the containers are running
- Login to Dockerhub with `sudo docker login`
157 158

```bash
159 160
sudo docker login
sudo docker push gitlab/gitlab-ce:latest
161 162
```

163 164
## Troubleshooting

165 166 167
Please see the [troubleshooting](troubleshooting.md) file in this directory.

Note: We use `fig.yml` to have compatibility with fig and because docker-compose also supports it.
karen Carias's avatar
karen Carias committed
168
Our docker image runs chef at every start to generate GitLab configuration.