--- stage: none group: unassigned info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments type: howto --- # Digital Ocean and Docker Machine test environment This guide is for quickly testing different versions of GitLab and not recommended for ease of future upgrades or keeping the data you create. ## Initial setup This guide configures a Digital Ocean droplet and sets up Docker locally on either macOS or Linux. ### On macOS #### Install Docker Desktop - ### On Linux #### Install Docker Engine - #### Install Docker Machine - NOTE: The rest of the steps are identical for macOS and Linux. ## Create new Docker host 1. Login to Digital Ocean. 1. Generate a new API token at . This command creates a new Digital Ocean droplet called `gitlab-test-env-do` that acts as a Docker host. NOTE: 4GB is the minimum requirement for a Docker host that runs more than one GitLab instance. - RAM: 4GB - Name: `gitlab-test-env-do` - Driver: `digitalocean` 1. Set the DO token: ```shell export DOTOKEN= ``` 1. Create the machine: ```shell docker-machine create \ --driver digitalocean \ --digitalocean-access-token=$DOTOKEN \ --digitalocean-size "4gb" \ gitlab-test-env-do ``` Resource: . ## Creating GitLab test instance ### Connect your shell to the new machine This example creates a GitLab EE 8.10.8 instance. First connect the Docker client to the Docker host you created previously. ```shell 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 - HTTP port: `8888` - SSH port: `2222` - Set `gitlab_shell_ssh_port` using `--env GITLAB_OMNIBUS_CONFIG` - Hostname: IP of Docker host - Container name: `gitlab-test-8.10` - GitLab version: **EE** `8.10.8-ee.0` #### Set up container settings ```shell export SSH_PORT=2222 export HTTP_PORT=8888 export VERSION=8.10.8-ee.0 export NAME=gitlab-test-8.10 ``` #### Create container ```shell 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 ```shell docker-machine ip gitlab-test-env-do # example output: 192.168.151.134 ``` Browse to: `http://192.168.151.134:8888/`. #### Execute interactive shell/edit configuration ```shell docker exec -it $NAME /bin/bash ``` ```shell # example commands root@192:/# vi /etc/gitlab/gitlab.rb root@192:/# gitlab-ctl reconfigure ``` ### Resources - . - . - .