summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSytse Sijbrandij <sytse@gitlab.com>2014-12-03 11:44:46 +0000
committerSytse Sijbrandij <sytse@gitlab.com>2014-12-03 11:44:46 +0000
commit6c68db60910839a6a0009a18992281f1d5ff899b (patch)
tree7e342a613811aa41335a9f664f3e431d25e079c3
parentac04665a8c35a9c96fe4fc6fe4391aa8ef703fd0 (diff)
parent3838b168b33163d4cbe64b7ff6e6b408bc8d857f (diff)
downloadgitlab-ce-6c68db60910839a6a0009a18992281f1d5ff899b.tar.gz
Merge branch 'user-agnostic-docker-example' into 'master'
User agnostic docker example See merge request !245
-rw-r--r--docker/Dockerfile7
-rw-r--r--docker/README.md40
-rw-r--r--docker/gitlab.rb6
-rw-r--r--docker/troubleshooting.md63
4 files changed, 102 insertions, 14 deletions
diff --git a/docker/Dockerfile b/docker/Dockerfile
index b1720e15114..3ffedd16e81 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -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
MAINTAINER Vincent Robert <vincent.robert@genezys.net>
# Install required packages
RUN apt-get update -q \
&& DEBIAN_FRONTEND=noninteractive apt-get install -qy \
- openssh-server \
- wget \
+ openssh-server \
+ wget \
&& apt-get clean
# Download & Install GitLab
diff --git a/docker/README.md b/docker/README.md
index ca56a9b35a4..a489203d017 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -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)
-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/log/gitlab` for logs
- `/etc/gitlab` for configuration
-Then run GitLab:
+Create the data container with:
+
+```bash
+sudo docker run --name gitlab_data gitlab_image /bin/true
+```
+
+After creating this run GitLab:
- docker run --detach --name gitlab --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data genezys/gitlab:7.5.1
+```bash
+sudo docker run --detach --name gitlab_app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_image
+```
-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`.
+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`.
@@ -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.
-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.
diff --git a/docker/gitlab.rb b/docker/gitlab.rb
index da909db01f8..7fddf309c01 100644
--- a/docker/gitlab.rb
+++ b/docker/gitlab.rb
@@ -4,6 +4,12 @@
# even if you intend to use another port in Docker.
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
# 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'
diff --git a/docker/troubleshooting.md b/docker/troubleshooting.md
new file mode 100644
index 00000000000..b1b70de5997
--- /dev/null
+++ b/docker/troubleshooting.md
@@ -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
+
+```