mirror of
https://github.com/sameersbn/docker-gitlab.git
synced 2026-01-25 14:08:09 +00:00
193 lines
6.0 KiB
Markdown
193 lines
6.0 KiB
Markdown
# Docker GitLab
|
|
|
|
Dockerfile to build a GitLab container image.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
git clone https://github.com/sameersbn/docker-gitlab.git
|
|
cd docker-gitlab
|
|
sudo docker build -t="gitlabhq/gitlab" .
|
|
```
|
|
|
|
## Quick Start
|
|
Run the gitlab image
|
|
|
|
```bash
|
|
GITLAB=$(sudo docker run -d gitlabhq/gitlab)
|
|
GITLAB_IP=$(sudo docker inspect $GITLAB | grep IPAddres | awk -F'"' '{print $4}')
|
|
```
|
|
|
|
Access the GitLab application
|
|
|
|
```bash
|
|
xdg-open "http://${GITLAB_IP}"
|
|
```
|
|
|
|
__NOTE__: Please allow a minute or two for the GitLab application to start.
|
|
|
|
Login using the default username and password:
|
|
|
|
* username: admin@local.host
|
|
* password: 5iveL!fe
|
|
|
|
You should now have GitLab ready for testing. If you want to use GitLab for more than just testing then please read the **Advanced Options** section.
|
|
|
|
## Advanced Options
|
|
|
|
### Mounting volumes
|
|
GitLab is a code hosting software and as such you don't want to lose your code when the docker container is stopped/deleted. To avoid losing any data, you should mount volumes at.
|
|
|
|
* /home/git/repositories
|
|
* /home/git/gitlab-satellites
|
|
* /home/git/.ssh
|
|
|
|
Volumes can be mounted in docker by specifying the **'-v'** option in the docker run command.
|
|
|
|
```bash
|
|
mkdir /opt/gitlab/repositories
|
|
mkdir /opt/gitlab/gitlab-satellites
|
|
mkdir /opt/gitlab/.ssh
|
|
docker run -d \
|
|
-v /opt/gitlab/repositories:/home/git/repositories \
|
|
-v /opt/gitlab/gitlab-satellites:/home/git/gitlab-satellites \
|
|
-v /opt/gitlab/.ssh:/home/git/.ssh gitlabhq/gitlab
|
|
```
|
|
|
|
### Configuring MySQL database connection
|
|
GitLab uses a database backend to store its data.
|
|
|
|
#### Using the internal mysql server
|
|
This docker image is configured to use a MySQL database backend. The database connection can be configured using environment variables. If not specified, the image will start a mysql server internally and use it. However in this case, the data stored in the mysql database will be lost if the container is stopped/deleted. To avoid this you should mount a volume at /var/lib/mysql.
|
|
|
|
```bash
|
|
mkdir /opt/gitlab/mysql
|
|
docker run -d \
|
|
-v /opt/gitlab/repositories:/home/git/repositories \
|
|
-v /opt/gitlab/gitlab-satellites:/home/git/gitlab-satellites \
|
|
-v /opt/gitlab/.ssh:/home/git/.ssh \
|
|
-v /opt/gitlab/mysql:/var/lib/mysql gitlabhq/gitlab
|
|
```
|
|
|
|
This will make sure that the data stored in the database is not lost when the image is stopped and started again.
|
|
|
|
#### Using an external mysql server
|
|
The image can be configured to use an external MySQL database instead of starting a MySQL server internally. The database configuration should be specified using environment variables while starting the GitLab image.
|
|
|
|
Before you start the GitLab image create user and database for gitlab.
|
|
|
|
```bash
|
|
mysql -uroot -p
|
|
CREATE USER 'gitlab'@'%.%.%.%' IDENTIFIED BY 'password';
|
|
CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`;
|
|
GRANT SELECT, LOCK TABLES, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER ON `gitlabhq_production`.* TO 'gitlab'@'%.%.%.%';
|
|
```
|
|
|
|
To make sure the database is initialized start the container with DB_INIT=yes environment variable set.
|
|
|
|
**NOTE: This should be done only for the first run**.
|
|
|
|
*Assuming that the mysql server host is 192.168.1.100*
|
|
|
|
```bash
|
|
docker run -d \
|
|
-e "DB_HOST=192.168.1.100" -e "DB_NAME=gitlabhq_production" -e "DB_USER=gitlab" -e "DB_PASS=password" -e "DB_INIT=yes" \
|
|
-v /opt/gitlab/repositories:/home/git/repositories \
|
|
-v /opt/gitlab/gitlab-satellites:/home/git/gitlab-satellites \
|
|
-v /opt/gitlab/.ssh:/home/git/.ssh gitlabhq/gitlab
|
|
```
|
|
|
|
This will initialize the gitlab database. Now that the database is initialized, omit the **-e "DB_INIT=yes"** option from the docker command.
|
|
|
|
```bash
|
|
docker run -d \
|
|
-e "DB_HOST=192.168.1.100" -e "DB_NAME=gitlabhq_production" -e "DB_USER=gitlab" -e "DB_PASS=password" \
|
|
-v /opt/gitlab/repositories:/home/git/repositories \
|
|
-v /opt/gitlab/gitlab-satellites:/home/git/gitlab-satellites \
|
|
-v /opt/gitlab/.ssh:/home/git/.ssh gitlabhq/gitlab
|
|
```
|
|
|
|
### Other options
|
|
Below is the complete list of parameters that can be set using environment variables.
|
|
|
|
* GITLAB_HOST
|
|
|
|
The hostname of the GitLab server. Defaults to localhost
|
|
|
|
* GITLAB_EMAIL
|
|
|
|
The email address for the GitLab server. Defaults to gitlab@localhost.
|
|
|
|
* GITLAB_SUPPORT
|
|
|
|
The support email address for the GitLab server. Defaults to support@localhost.
|
|
|
|
* REDIS_HOST
|
|
|
|
The hostname of the redis server. Defaults to localhost
|
|
|
|
* REDIS_PORT
|
|
|
|
The connection port of the redis server. Defaults to 6379.
|
|
|
|
* UNICORN_WORKERS
|
|
|
|
The number of unicorn workers to start. Defaults to 2.
|
|
|
|
* SIDEKIQ_CONCURRENCY
|
|
|
|
The number of concurrent sidekiq jobs to run. Defaults to 5
|
|
|
|
* DB_HOST
|
|
|
|
The mysql server hostname. Defaults to localhost.
|
|
|
|
* DB_NAME
|
|
|
|
The mysql database name. Defaults to gitlabhq_production
|
|
|
|
* DB_USER
|
|
|
|
The mysql database user. Defaults to root
|
|
|
|
* DB_PASS
|
|
|
|
The mysql database password. Defaults to no password
|
|
|
|
* DB_POOL
|
|
|
|
The mysql database connection pool count. Defaults to 5.
|
|
|
|
* DB_INIT
|
|
|
|
Whether to initial the mysql database. Defaults to no
|
|
|
|
### Putting it all together
|
|
|
|
```bash
|
|
docker run -d -h git.local.host \
|
|
-v /opt/gitlab/repositories:/home/git/repositories \
|
|
-v /opt/gitlab/gitlab-satellites:/home/git/gitlab-satellites \
|
|
-v /opt/gitlab/.ssh:/home/git/.ssh \
|
|
-v /opt/gitlab/mysql:/var/lib/mysql \
|
|
-e "GITLAB_HOST=git.local.host" -e "GITLAB_EMAIL=gitlab@local.host" -e "GITLAB_SUPPORT=support@local.host" \
|
|
gitlabhq/gitlab
|
|
```
|
|
|
|
If you are using an external mysql database
|
|
|
|
```bash
|
|
docker run -d -h git.local.host \
|
|
-v /opt/gitlab/repositories:/home/git/repositories \
|
|
-v /opt/gitlab/gitlab-satellites:/home/git/gitlab-satellites \
|
|
-v /opt/gitlab/.ssh:/home/git/.ssh \
|
|
-e "DB_HOST=192.168.1.100" -e "DB_NAME=gitlabhq_production" -e "DB_USER=gitlab" -e "DB_PASS=password" \
|
|
-e "GITLAB_HOST=git.local.host" -e "GITLAB_EMAIL=gitlab@local.host" -e "GITLAB_SUPPORT=support@local.host" \
|
|
gitlabhq/gitlab
|
|
```
|
|
|
|
## References
|
|
https://github.com/gitlabhq/gitlabhq
|
|
|
|
https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/installation.md
|