From 0dcc1e88a4a9a1fe4745421474fcb3e93bfb87ef Mon Sep 17 00:00:00 2001 From: Vincent Robert Date: Thu, 27 Nov 2014 15:48:19 +0100 Subject: Add Dockerfile to build an Omnibus GitLab image --- docker/Dockerfile | 36 ++++++++++++++++++++++++++++++++++++ docker/README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ docker/gitlab.rb | 31 +++++++++++++++++++++++++++++++ 3 files changed, 109 insertions(+) create mode 100644 docker/Dockerfile create mode 100644 docker/README.md create mode 100644 docker/gitlab.rb (limited to 'docker') diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 00000000000..b1720e15114 --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,36 @@ +# 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 + +# Install required packages +RUN apt-get update -q \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qy \ + openssh-server \ + wget \ + && apt-get clean + +# Download & Install GitLab +RUN TMP_FILE=$(mktemp); \ + wget -q -O $TMP_FILE https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab_7.5.1-omnibus.5.2.0.ci-1_amd64.deb \ + && dpkg -i $TMP_FILE \ + && rm -f $TMP_FILE + +# Manage SSHD through runit +RUN mkdir -p /opt/gitlab/sv/sshd/supervise \ + && mkfifo /opt/gitlab/sv/sshd/supervise/ok \ + && printf "#!/bin/sh\nexec 2>&1\numask 077\nexec /usr/sbin/sshd -D" > /opt/gitlab/sv/sshd/run \ + && chmod a+x /opt/gitlab/sv/sshd/run \ + && ln -s /opt/gitlab/sv/sshd /opt/gitlab/service \ + && mkdir -p /var/run/sshd + +# Expose web & ssh +EXPOSE 80 22 + +# Volume & configuration +VOLUME ["/var/opt/gitlab", "/var/log/gitlab", "/etc/gitlab"] +ADD gitlab.rb /etc/gitlab/ + +# Default is to run runit & reconfigure +CMD gitlab-ctl reconfigure > /var/log/gitlab/reconfigure.log & /opt/gitlab/embedded/bin/runsvdir-start diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 00000000000..ca56a9b35a4 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,42 @@ +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. A subscription gives you access to our support team and to GitLab Enterprise Edition that contains extra features aimed at larger organizations. + + + +![GitLab Logo](https://gitlab.com/uploads/appearance/logo/1/brand_logo-c37eb221b456bb4b472cc1084480991f.png) + + +How to use this image. +====================== + +I recommend creating a data volume container first, this will simplify migrations and backups: + + docker run --name gitlab_data genezys/gitlab:7.5.1 /bin/true + +This empty container will exist to persist as volumes the 3 directories used by GitLab, so remember not to delete it: + +- `/var/opt/gitlab` for application data +- `/var/log/gitlab` for logs +- `/etc/gitlab` for configuration + +Then run GitLab: + + docker run --detach --name gitlab --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data genezys/gitlab:7.5.1 + +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`. + + +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`. + +To access GitLab configuration, you can start a new container using the shared data volume container: + + docker run -ti --rm --volumes-from gitlab_data ubuntu vi /etc/gitlab/gitlab.rb + +**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). diff --git a/docker/gitlab.rb b/docker/gitlab.rb new file mode 100644 index 00000000000..da909db01f8 --- /dev/null +++ b/docker/gitlab.rb @@ -0,0 +1,31 @@ +# External URL should be your Docker instance. +# By default, this example is the "standard" boot2docker IP. +# Always use port 80 here to force the internal nginx to bind port 80, +# even if you intend to use another port in Docker. +external_url "http://192.168.59.103/" + +# 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' +gitlab_rails['gitlab_support_email'] = 'support@example.com' +gitlab_rails['time_zone'] = 'Europe/Paris' + +# SMTP settings +# You must use an external server, the Docker container does not install an SMTP server +gitlab_rails['smtp_enable'] = true +gitlab_rails['smtp_address'] = "smtp.example.com" +gitlab_rails['smtp_port'] = 587 +gitlab_rails['smtp_user_name'] = "user" +gitlab_rails['smtp_password'] = "password" +gitlab_rails['smtp_domain'] = "example.com" +gitlab_rails['smtp_authentication'] = "plain" +gitlab_rails['smtp_enable_starttls_auto'] = true + +# Enable LDAP authentication +# gitlab_rails['ldap_enabled'] = true +# gitlab_rails['ldap_host'] = 'ldap.example.com' +# gitlab_rails['ldap_port'] = 389 +# gitlab_rails['ldap_method'] = 'plain' # 'ssl' or 'plain' +# gitlab_rails['ldap_allow_username_or_email_login'] = false +# gitlab_rails['ldap_uid'] = 'uid' +# gitlab_rails['ldap_base'] = 'ou=users,dc=example,dc=com' -- cgit v1.2.3