gitlab-ce-docker Plugin¶
This plugin installs GitLab CE(Community Edition) on Docker.
NOTICE: currently, this plugin support Linux only.
Background¶
GitLab officially provides an image gitlab-ce. We can use this image to start a container:
docker run --detach \
--hostname gitlab.example.com \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:rc
The variable $GITLAB_HOME
here pointing to the directory where the configuration, logs, and data files will reside.
We can set this variable by the export
command:
The GitLab container uses host mounted volumes to store persistent data:
Local location | Container location | Usage |
---|---|---|
$GITLAB_HOME/data |
/var/opt/gitlab |
For storing application data |
$GITLAB_HOME/logs |
/var/log/gitlab |
For storing logs |
$GITLAB_HOME/config |
/etc/gitlab |
For storing the GitLab configuration files |
So, we can customize the following configurations:
- hostname
- host port
- persistent data path
- docker image tag
Configuration¶
Note:
1. the user you are using must be root
or in the docker
group;
2. https
isn't supported for now.
The following content is an example of the "tool file".
For more information on the main config, the tool file and the var file of DevStream, see Core Concepts Overview and DevStream Configuration.
tools:
# name of the tool
- name: gitlab-ce-docker
# id of the tool instance
instanceID: default
# format: name.instanceID; If specified, dtm will make sure the dependency is applied first before handling this tool.
dependsOn: [ ]
# options for the plugin
options:
# hostname for running docker. (default: gitlab.example.com)
hostname: gitlab.example.com
# pointing to the directory where the configuration, logs, and data files will reside.
# (default: /srv/gitlab)
# 1. it should be a absolute path
# 2. once the tool is installed, it can't be changed
gitlabHome: /srv/gitlab
# ssh port exposed in the host machine. (default: 22)
sshPort: 22
# http port exposed in the host machine. (default: 80)
httpPort: 80
# https port exposed in the host machine.
# (default: 443)
# todo: support https, reference: https://docs.gitlab.com/omnibus/settings/nginx.html#enable-https
httpsPort: 443
# whether to delete the gitlabHome directory when the tool is removed. (default: false)
rmDataAfterDelete: false
# gitlab-ce tag. (default: "rc")
imageTag: "rc"
Some Commands That May Help¶
- clone code
- ssh
# port is 22
git clone git@${hostname}/${username}/${project}.git
# port is not 22, 2022 as a sample
git clone ssh://git@${hostname}:2022/${username}/${project}.git
- http