Setting up GitLab with Docker

Useful commands:

sudo docker ps
sudo docker image ls
  • Edit container:
sudo docker exec -it gitlab /bin/bash

Starting point

  • Pre-installed Ubuntu 16.04 Desktop in Virtual Box

Set up the repository

  • Update the apt package index:
sudo apt-get update
  • Install packages to allow apt to use a repository over HTTPS:
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common
  • Add Docker’s official GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • Set up stable repository:
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

Install Docker CE

  • Update the apt package index:
sudo apt-get update
  • Install Docker ce latest version:
sudo apt-get install docker-ce
  • Verify that Docker CE is working by running hello-world image:
sudo docker run hello-world

Install Docker Compose on Linux

  • Download Docker Compose:
sudo curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
  • Apply excecutable permissions to the binary:
sudo chmod +x /usr/local/bin/docker-compose
  • Test the installation:
sudo docker-compose --version

Install GitLab using docker-compose

  • Create docker-compose.yml file:
sudo nano docker-compose.yml
  • Insert to file (remember to edit extrenal_url!):
web:
  image: 'gitlab/gitlab-ee:latest'
  restart: always
  hostname: ''
  environment:
    GITLAB_OMNIBUS_CONFIG: |
      external_url 'http://YOUR IP HERE'
      # Add any other gitlab.rb configuration here, each on its own line
  ports:
    - '80:80'
    - '443:443'
    - '22:22'
  volumes:
    - '/srv/gitlab/config:/etc/gitlab'
    - '/srv/gitlab/logs:/var/log/gitlab'
    - '/srv/gitlab/data:/var/opt/gitlab'
  • To start GitLab run the following command in same folder where docker-compose.yml is:
sudo docker-compose up -d

:exclamation: You need to have included ports free for this configuration to work. Common problem: SSH is on port 22 by default.