Merge branch 'user-agnostic-docker-example' into 'master'
User agnostic docker example See merge request !245
This commit is contained in:
commit
6c68db6091
4 changed files with 102 additions and 14 deletions
|
@ -1,14 +1,11 @@
|
||||||
# Data: docker run --name gitlab_data genezys/gitlab:7.5.1 /bin/true
|
|
||||||
# Run: docker run --detach --name gitlab --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data genezys/gitlab:7.5.1
|
|
||||||
|
|
||||||
FROM ubuntu:14.04
|
FROM ubuntu:14.04
|
||||||
MAINTAINER Vincent Robert <vincent.robert@genezys.net>
|
MAINTAINER Vincent Robert <vincent.robert@genezys.net>
|
||||||
|
|
||||||
# Install required packages
|
# Install required packages
|
||||||
RUN apt-get update -q \
|
RUN apt-get update -q \
|
||||||
&& DEBIAN_FRONTEND=noninteractive apt-get install -qy \
|
&& DEBIAN_FRONTEND=noninteractive apt-get install -qy \
|
||||||
openssh-server \
|
openssh-server \
|
||||||
wget \
|
wget \
|
||||||
&& apt-get clean
|
&& apt-get clean
|
||||||
|
|
||||||
# Download & Install GitLab
|
# Download & Install GitLab
|
||||||
|
|
|
@ -8,27 +8,45 @@ GitLab offers git repository management, code reviews, issue tracking, activity
|
||||||
![GitLab Logo](https://gitlab.com/uploads/appearance/logo/1/brand_logo-c37eb221b456bb4b472cc1084480991f.png)
|
![GitLab Logo](https://gitlab.com/uploads/appearance/logo/1/brand_logo-c37eb221b456bb4b472cc1084480991f.png)
|
||||||
|
|
||||||
|
|
||||||
How to use this image.
|
How to use this image
|
||||||
======================
|
======================
|
||||||
|
|
||||||
I recommend creating a data volume container first, this will simplify migrations and backups:
|
At this moment GitLab doesn't have official Docker images.
|
||||||
|
Build your own based on the Omnibus packages with the following command (it assumes you're in the GitLab repo root directory):
|
||||||
|
|
||||||
docker run --name gitlab_data genezys/gitlab:7.5.1 /bin/true
|
```bash
|
||||||
|
sudo docker build --tag gitlab_image docker/
|
||||||
|
```
|
||||||
|
|
||||||
This empty container will exist to persist as volumes the 3 directories used by GitLab, so remember not to delete it:
|
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/opt/gitlab` for application data
|
||||||
- `/var/log/gitlab` for logs
|
- `/var/log/gitlab` for logs
|
||||||
- `/etc/gitlab` for configuration
|
- `/etc/gitlab` for configuration
|
||||||
|
|
||||||
Then run GitLab:
|
Create the data container with:
|
||||||
|
|
||||||
docker run --detach --name gitlab --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data genezys/gitlab:7.5.1
|
```bash
|
||||||
|
sudo docker run --name gitlab_data gitlab_image /bin/true
|
||||||
|
```
|
||||||
|
|
||||||
You can then go to `http://localhost:8080/` (or most likely `http://192.168.59.103:8080/` if you use boot2docker). Next time, you can just use `docker start gitlab` and `docker stop gitlab`.
|
After creating this run GitLab:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker run --detach --name gitlab_app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_image
|
||||||
|
```
|
||||||
|
|
||||||
|
It might take a while before the docker container is responding to queries.
|
||||||
|
|
||||||
|
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.
|
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`.
|
This container uses the official Omnibus GitLab distribution, so all configuration is done in the unique configuration file `/etc/gitlab/gitlab.rb`.
|
||||||
|
@ -39,4 +57,8 @@ To access GitLab configuration, you can start a new container using the shared d
|
||||||
|
|
||||||
**Note** that GitLab will reconfigure itself **at each container start.** You will need to restart the container to reconfigure your GitLab.
|
**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 [GitLab documentation](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration).
|
You can find all available options in [Omnibus GitLab documentation](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration).
|
||||||
|
|
||||||
|
Troubleshooting
|
||||||
|
=========================
|
||||||
|
Please see the [troubleshooting](troubleshooting.md) file in this directory.
|
||||||
|
|
|
@ -4,6 +4,12 @@
|
||||||
# even if you intend to use another port in Docker.
|
# even if you intend to use another port in Docker.
|
||||||
external_url "http://192.168.59.103/"
|
external_url "http://192.168.59.103/"
|
||||||
|
|
||||||
|
# Prevent Postgres from trying to allocate 25% of total memory
|
||||||
|
postgresql['shared_buffers'] = '1MB'
|
||||||
|
|
||||||
|
# Configure GitLab to redirect PostgreSQL logs to the data volume
|
||||||
|
postgresql['log_directory'] = '/var/log/gitlab/postgresql'
|
||||||
|
|
||||||
# Some configuration of GitLab
|
# Some configuration of GitLab
|
||||||
# You can find more at https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration
|
# You can find more at https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration
|
||||||
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
|
gitlab_rails['gitlab_email_from'] = 'gitlab@example.com'
|
||||||
|
|
63
docker/troubleshooting.md
Normal file
63
docker/troubleshooting.md
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
# Troubleshooting
|
||||||
|
|
||||||
|
This is to troubleshoot https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/245
|
||||||
|
But it might contain useful commands for other cases as well.
|
||||||
|
|
||||||
|
The configuration to add the postgres log in vim is:
|
||||||
|
postgresql['log_directory'] = '/var/log/gitlab/postgresql'
|
||||||
|
|
||||||
|
# Commands
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker build --tag gitlab_image docker/
|
||||||
|
|
||||||
|
sudo docker rm -f gitlab_app
|
||||||
|
sudo docker rm -f gitlab_data
|
||||||
|
|
||||||
|
sudo docker run --name gitlab_data gitlab_image /bin/true
|
||||||
|
|
||||||
|
sudo docker run -ti --rm --volumes-from gitlab_data ubuntu apt-get update && sudo apt-get install -y vim && sudo vim /etc/gitlab/gitlab.rb
|
||||||
|
|
||||||
|
sudo docker run --detach --name gitlab_app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_image
|
||||||
|
|
||||||
|
sudo docker run -t --rm --volumes-from gitlab_data ubuntu tail -f /var/log/gitlab/reconfigure.log
|
||||||
|
|
||||||
|
sudo docker run -t --rm --volumes-from gitlab_data ubuntu tail -f /var/log/gitlab/postgresql/current
|
||||||
|
|
||||||
|
sudo docker run -t --rm --volumes-from gitlab_data ubuntu cat /var/opt/gitlab/postgresql/data/postgresql.conf | grep shared_buffers
|
||||||
|
|
||||||
|
sudo docker run -t --rm --volumes-from gitlab_data ubuntu cat /etc/gitlab/gitlab.rb
|
||||||
|
```
|
||||||
|
|
||||||
|
# Interactively
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# First start a GitLab container without starting GitLab
|
||||||
|
# This is almost the same as starting the GitLab container except:
|
||||||
|
# - we run interactively (-t -i)
|
||||||
|
# - we define TERM=linux because it allows to use arrow keys in vi (!!!)
|
||||||
|
# - we choose another startup command (bash)
|
||||||
|
sudo docker run -ti -e TERM=linux --name gitlab_app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_image bash
|
||||||
|
|
||||||
|
# Configure GitLab to redirect PostgreSQL logs
|
||||||
|
echo "postgresql['log_directory'] = '/var/log/gitlab/postgresql'" >> /etc/gitlab/gitlab.rb
|
||||||
|
|
||||||
|
# Prevent Postgres from allocating 25% of total memory
|
||||||
|
echo "postgresql['shared_buffers'] = '1MB'" >> /etc/gitlab/gitlab.rb
|
||||||
|
|
||||||
|
# You can now start GitLab manually from Bash (in the background)
|
||||||
|
# Maybe the command below is still missing something to run in the background
|
||||||
|
gitlab-ctl reconfigure > /var/log/gitlab/reconfigure.log & /opt/gitlab/embedded/bin/runsvdir-start &
|
||||||
|
|
||||||
|
# Inspect PostgreSQL config
|
||||||
|
cat /var/opt/gitlab/postgresql/data/postgresql.conf | grep shared_buffers
|
||||||
|
|
||||||
|
# And tail the logs (PostgreSQL log may not exist immediately)
|
||||||
|
tail -f /var/log/gitlab/reconfigure.log /var/log/gitlab/postgresql/current
|
||||||
|
|
||||||
|
# And get the memory
|
||||||
|
cat /proc/meminfo
|
||||||
|
head /proc/sys/kernel/shmmax /proc/sys/kernel/shmall
|
||||||
|
free -m
|
||||||
|
|
||||||
|
```
|
Loading…
Reference in a new issue