GitLab Documentation

Digital Ocean and Docker

Initial setup

In this guide you'll configure a Digital Ocean droplet and set up Docker locally on either macOS or Linux.

On macOS

Install Docker Toolbox

  1. https://www.docker.com/products/docker-toolbox

On Linux

Install Docker Engine

  1. https://docs.docker.com/engine/installation/linux

Install Docker Machine

  1. https://docs.docker.com/machine/install-machine

The rest of the steps are identical for macOS and Linux

Create new docker host

  1. Login to Digital Ocean
  2. Generate a new API token at https://cloud.digitalocean.com/settings/api/tokens

This command will create a new DO droplet called gitlab-test-env-do that will act as a docker host.

Note: 4GB is the minimum requirement for a Docker host that will run more then one GitLab instance

Set the DO token - Replace the string below with your generated token

export DOTOKEN=cf3dfd0662933203005c4a73396214b7879d70aabc6352573fe178d340a80248

Create the machine

docker-machine create \
  --driver digitalocean \
  --digitalocean-access-token=$DOTOKEN \
  --digitalocean-size "4gb" \
    gitlab-test-env-do

Creating GitLab test instance

Connect your shell to the new machine

In this example we'll create a GitLab EE 8.10.8 instance.

First connect the docker client to the docker host you created previously.

eval "$(docker-machine env gitlab-test-env-do)"

You can add this to your ~/.bash_profile file to ensure the docker client uses the gitlab-test-env-do docker host

Create new GitLab container

Setup container settings
export SSH_PORT=2222
export HTTP_PORT=8888
export VERSION=8.10.8-ee.0
export NAME=gitlab-test-8.10
Create container
docker run --detach \
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://$(docker-machine ip gitlab-test-env-do):$HTTP_PORT'; gitlab_rails['gitlab_shell_ssh_port'] = $SSH_PORT;" \
--hostname $(docker-machine ip gitlab-test-env-do) \
-p $HTTP_PORT:$HTTP_PORT -p $SSH_PORT:22 \
--name $NAME \
gitlab/gitlab-ee:$VERSION

Connect to the GitLab container

Retrieve the docker host IP
docker-machine ip gitlab-test-env-do
# example output: 192.168.151.134
Execute interactive shell/edit configuration
docker exec -it $NAME /bin/bash
# example commands
root@192:/# vi /etc/gitlab/gitlab.rb
root@192:/# gitlab-ctl reconfigure

Resources