Made a single docker file.
This commit is contained in:
parent
7af59c54fc
commit
e8edd20bfd
7 changed files with 183 additions and 41 deletions
134
docker/README.md
134
docker/README.md
|
@ -5,21 +5,74 @@ GitLab offers git repository management, code reviews, issue tracking, activity
|
||||||
|
|
||||||
Learn more on [https://about.gitlab.com](https://about.gitlab.com)
|
Learn more on [https://about.gitlab.com](https://about.gitlab.com)
|
||||||
|
|
||||||
|
Single and app and data images
|
||||||
|
===================
|
||||||
|
|
||||||
How to build and use images yourself
|
Normally docker uses a single image for one applications.
|
||||||
|
But GitLab stores repositories and uploads in the filesystem.
|
||||||
|
This means that upgrades of a single image are hard.
|
||||||
|
That is why we recommend using separate app and data images.
|
||||||
|
We'll first describe how to use a single image.
|
||||||
|
After that we'll describe how to use the app and data images.
|
||||||
|
|
||||||
|
Single image
|
||||||
|
=================
|
||||||
|
|
||||||
|
Run the below commands from the GitLab repo root directory.
|
||||||
|
People using boot2docker should run the commands without sudo.
|
||||||
|
|
||||||
|
Build the image with:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo docker build --tag gitlab-ce docker/single/
|
||||||
|
```
|
||||||
|
|
||||||
|
Run the image with:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo docker run --detach --name gitlab-ce --publish 8080:80 --publish 2222:22 gitlab-ce
|
||||||
|
```
|
||||||
|
|
||||||
|
You can then go to [http://localhost:8080/](http://localhost:8080/) or [http://192.168.59.103:8080/](http://192.168.59.103:8080/) if you use boot2docker.
|
||||||
|
|
||||||
|
You can login with username `root` and password `5iveL!fe`.
|
||||||
|
Next time, you can just use `sudo docker start gitlab-ce` and `sudo docker stop gitlab-ce`.
|
||||||
|
|
||||||
|
Publish the image with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab-ce sytse/gitlab-ce:7.10.1
|
||||||
|
sudo docker push sytse/gitlab-ce:7.10.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Use the published image with:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker pull sytse/gitlab-ce:7.10.1
|
||||||
|
sudo docker run --detach --name gitlab-ce --publish 8080:80 --publish 2222:22 sytse/gitlab-ce:7.10.1
|
||||||
|
```
|
||||||
|
|
||||||
|
Troubleshoot with:
|
||||||
|
|
||||||
|
```
|
||||||
|
sudo docker run -ti -e TERM=linux --name gitlab-ce --publish 8080:80 --publish 2222:22 sytse/gitlab-ce:7.10.1 bash
|
||||||
|
/opt/gitlab/embedded/bin/runsvdir-start & gitlab-ctl reconfigure
|
||||||
|
gitlab-ctl start
|
||||||
|
```
|
||||||
|
|
||||||
|
Build and use app and data images
|
||||||
======================
|
======================
|
||||||
|
|
||||||
At this moment GitLab doesn't have official Docker images.
|
At this moment GitLab doesn't have official Docker images.
|
||||||
There are unofficial images at the bottom of this document.
|
There are unofficial images at the bottom of this document.
|
||||||
But in this section we'll build our own.
|
|
||||||
For convinience we will use suffix _xy where xy is current version of GitLab.
|
|
||||||
Build your own based on the Omnibus packages with the following commands.
|
Build your own based on the Omnibus packages with the following commands.
|
||||||
Run these from the GitLab repo root directory.
|
For convinience we will use suffix _xy where xy is current version of GitLab.
|
||||||
People using boot2docker should run it without sudo.
|
Run the below commands from the GitLab repo root directory.
|
||||||
|
People using boot2docker should run the commands without sudo.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo docker build --tag gitlab_data_image docker/data/
|
sudo docker build --tag gitlab-data docker/data/
|
||||||
sudo docker build --tag gitlab_app_image_xy docker/
|
sudo docker build --tag gitlab-app:7.10.1 docker/app/
|
||||||
```
|
```
|
||||||
|
|
||||||
We assume using a data volume container, this will simplify migrations and backups.
|
We assume using a data volume container, this will simplify migrations and backups.
|
||||||
|
@ -34,13 +87,13 @@ The directories on data container are:
|
||||||
Create the data container with:
|
Create the data container with:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo docker run --name gitlab_data gitlab_data_image /bin/true
|
sudo docker run --name gitlab-data gitlab-data /bin/true
|
||||||
```
|
```
|
||||||
|
|
||||||
After creating data container run GitLab container:
|
After creating data container run GitLab container:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo docker run --detach --name gitlab_app_xy --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_app_image_xy
|
sudo docker run --detach --name gitlab-app::7.10.1 --publish 8080:80 --publish 2222:22 --volumes-from gitlab-data gitlab-app:7.10.1
|
||||||
```
|
```
|
||||||
|
|
||||||
It might take a while before the docker container is responding to queries. You can follow the configuration process with `sudo docker logs -f gitlab_app_xy`.
|
It might take a while before the docker container is responding to queries. You can follow the configuration process with `sudo docker logs -f gitlab_app_xy`.
|
||||||
|
@ -50,7 +103,7 @@ You can then go to [http://localhost:8080/](http://localhost:8080/) or [http://1
|
||||||
You can login with username `root` and password `5iveL!fe`.
|
You can login with username `root` and password `5iveL!fe`.
|
||||||
Next time, you can just use `sudo docker start gitlab_app` and `sudo docker stop gitlab_app`.
|
Next time, you can just use `sudo docker start gitlab_app` and `sudo docker stop gitlab_app`.
|
||||||
|
|
||||||
How to configure GitLab
|
Configure GitLab
|
||||||
========================
|
========================
|
||||||
|
|
||||||
This container uses the official Omnibus GitLab distribution, so all configuration is done in the unique configuration file `/etc/gitlab/gitlab.rb`.
|
This container uses the official Omnibus GitLab distribution, so all configuration is done in the unique configuration file `/etc/gitlab/gitlab.rb`.
|
||||||
|
@ -58,7 +111,7 @@ This container uses the official Omnibus GitLab distribution, so all configurati
|
||||||
To access GitLab configuration, you can start an interactive command line in a new container using the shared data volume container, you will be able to browse the 3 directories and use your favorite text editor:
|
To access GitLab configuration, you can start an interactive command line in a new container using the shared data volume container, you will be able to browse the 3 directories and use your favorite text editor:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo docker run -ti -e TERM=linux --rm --volumes-from gitlab_data ubuntu
|
sudo docker run -ti -e TERM=linux --rm --volumes-from gitlab-data ubuntu
|
||||||
vi /etc/gitlab/gitlab.rb
|
vi /etc/gitlab/gitlab.rb
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -66,7 +119,7 @@ vi /etc/gitlab/gitlab.rb
|
||||||
|
|
||||||
You can find all available options in [Omnibus GitLab documentation](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration).
|
You can find all available options in [Omnibus GitLab documentation](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md#configuration).
|
||||||
|
|
||||||
How to upgrade GitLab
|
Upgrade GitLab with app and data images
|
||||||
========================
|
========================
|
||||||
|
|
||||||
To updgrade GitLab to new versions, stop running container, create new docker image and container from that image.
|
To updgrade GitLab to new versions, stop running container, create new docker image and container from that image.
|
||||||
|
@ -74,41 +127,40 @@ To updgrade GitLab to new versions, stop running container, create new docker im
|
||||||
It Assumes that you're upgrading from 7.8 to 7.9 and you're in the updated GitLab repo root directory:
|
It Assumes that you're upgrading from 7.8 to 7.9 and you're in the updated GitLab repo root directory:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo docker stop gitlab_app_78
|
sudo docker stop gitlab-app
|
||||||
sudo docker build --tag gitlab_app_image_79 docker/
|
sudo docker rm gitlab-app
|
||||||
sudo docker run --detach --name gitlab_app_79 --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_app_image_79
|
sudo docker build --tag gitlab-app:7.10.1 docker/app/
|
||||||
|
sudo docker run --detach --name gitlab-app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab-app:7.10.1
|
||||||
```
|
```
|
||||||
|
|
||||||
On the first run GitLab will reconfigure and update itself. If everything runs OK don't forget to cleanup old container and image:
|
On the first run GitLab will reconfigure and update itself. If everything runs OK don't forget to cleanup image:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo docker rm gitlab_app_78
|
sudo docker rmi gitlab-app:7.8.1
|
||||||
sudo docker rmi gitlab_app_image_78
|
```
|
||||||
|
|
||||||
|
Publish app and data images to Dockerhub
|
||||||
|
=========================
|
||||||
|
Login to Dockerhub with `sudo docker login` and run the following (replace '7.9.2' with the version you're using and 'Sytse Sijbrandij' with your name):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab-app:7.10.1 sytse/gitlab-app:7.10.1
|
||||||
|
sudo docker push sytse/gitlab-app:7.10.1
|
||||||
|
sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab_data sytse/gitlab_data
|
||||||
|
sudo docker push sytse/gitlab_data
|
||||||
|
```
|
||||||
|
|
||||||
|
Use app and data images published to Dockerhub
|
||||||
|
================================
|
||||||
|
This examples uses the unofficial images made by GitLab CEO Sytse.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo docker pull sytse/gitlab-data
|
||||||
|
sudo docker pull sytse/gitlab-app:7.10.1
|
||||||
|
sudo docker run --name gitlab-data sytse/gitlab-data /bin/true
|
||||||
|
sudo docker run --detach --name gitlab_app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data sytse/gitlab-app:7.10.1
|
||||||
```
|
```
|
||||||
|
|
||||||
Troubleshooting
|
Troubleshooting
|
||||||
=========================
|
=========================
|
||||||
Please see the [troubleshooting](troubleshooting.md) file in this directory.
|
Please see the [troubleshooting](troubleshooting.md) file in this directory.
|
||||||
|
|
||||||
|
|
||||||
Publish the images to Dockerhub
|
|
||||||
=========================
|
|
||||||
Login to Dockerhub with `sudo docker login` and run the following (replace '7.9.2' with the version you're using and 'Sytse Sijbrandij' with your name):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab_app_xy sytse/gitlab-ce:7.9.2
|
|
||||||
sudo docker push sytse/gitlab-ce:7.9.2
|
|
||||||
sudo docker commit -m "Initial commit" -a "Sytse Sijbrandij" gitlab_data sytse/gitlab_data
|
|
||||||
sudo docker push sytse/gitlab_data
|
|
||||||
```
|
|
||||||
|
|
||||||
Use images published to Dockerhub
|
|
||||||
================================
|
|
||||||
This examples uses the unofficial images made by GitLab CEO Sytse.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sudo docker pull sytse/gitlab_data
|
|
||||||
sudo docker pull sytse/gitlab-ce:7.9.2
|
|
||||||
sudo docker run --name gitlab_data_volume sytse/gitlab_data /bin/true
|
|
||||||
sudo docker run --detach --name gitlab_app_7_9_2 --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data_volume sytse/gitlab-ce:7.9.2
|
|
||||||
```
|
|
||||||
|
|
35
docker/single/Dockerfile
Normal file
35
docker/single/Dockerfile
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
FROM ubuntu:14.04
|
||||||
|
MAINTAINER Sytse Sijbrandij
|
||||||
|
|
||||||
|
# Install required packages
|
||||||
|
RUN apt-get update
|
||||||
|
ENV DEBIAN_FRONTEND noninteractive
|
||||||
|
RUN apt-get install -yq --no-install-recommends \
|
||||||
|
ca-certificates \
|
||||||
|
openssh-server \
|
||||||
|
wget
|
||||||
|
|
||||||
|
# Download & Install GitLab
|
||||||
|
# If the Omnibus package version below is outdated please contribute a merge request to update it.
|
||||||
|
# If you run GitLab Enterprise Edition point it to a location where you have downloaded it.
|
||||||
|
RUN TMP_FILE=$(mktemp); \
|
||||||
|
wget -q -O $TMP_FILE https://downloads-packages.s3.amazonaws.com/ubuntu-14.04/gitlab-ce_7.10.1~omnibus.2-1_amd64.deb \
|
||||||
|
&& dpkg -i $TMP_FILE \
|
||||||
|
&& rm -f $TMP_FILE
|
||||||
|
|
||||||
|
# Manage SSHD through runit
|
||||||
|
RUN mkdir -p /opt/gitlab/sv/sshd/supervise \
|
||||||
|
&& mkfifo /opt/gitlab/sv/sshd/supervise/ok \
|
||||||
|
&& printf "#!/bin/sh\nexec 2>&1\numask 077\nexec /usr/sbin/sshd -D" > /opt/gitlab/sv/sshd/run \
|
||||||
|
&& chmod a+x /opt/gitlab/sv/sshd/run \
|
||||||
|
&& ln -s /opt/gitlab/sv/sshd /opt/gitlab/service \
|
||||||
|
&& mkdir -p /var/run/sshd
|
||||||
|
|
||||||
|
# Expose web & ssh
|
||||||
|
EXPOSE 80 22
|
||||||
|
|
||||||
|
# Copy assets
|
||||||
|
COPY assets/wrapper /usr/local/bin/
|
||||||
|
|
||||||
|
# Wrapper to handle signal, trigger runit and reconfigure GitLab
|
||||||
|
CMD ["/usr/local/bin/wrapper"]
|
16
docker/single/assets/wrapper
Executable file
16
docker/single/assets/wrapper
Executable file
|
@ -0,0 +1,16 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function sigterm_handler() {
|
||||||
|
echo "SIGTERM signal received, try to gracefully shutdown all services..."
|
||||||
|
gitlab-ctl stop
|
||||||
|
}
|
||||||
|
|
||||||
|
trap "sigterm_handler; exit" TERM
|
||||||
|
|
||||||
|
function entrypoint() {
|
||||||
|
/opt/gitlab/embedded/bin/runsvdir-start &
|
||||||
|
gitlab-ctl reconfigure # will also start everything
|
||||||
|
gitlab-ctl tail # tail all logs
|
||||||
|
}
|
||||||
|
|
||||||
|
entrypoint
|
31
docker/single/marathon.json
Normal file
31
docker/single/marathon.json
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"id": "/gitlab",
|
||||||
|
"ports": [0,0],
|
||||||
|
"cpus": 2,
|
||||||
|
"mem": 2048.0,
|
||||||
|
"disk": 10240.0,
|
||||||
|
"container": {
|
||||||
|
"type": "DOCKER",
|
||||||
|
"docker": {
|
||||||
|
"network": "HOST",
|
||||||
|
"image": "sytse/gitlab-ce:7.10.1"
|
||||||
|
},
|
||||||
|
"volumes": [
|
||||||
|
{
|
||||||
|
"containerPath": "/var/opt/gitlab",
|
||||||
|
"hostPath": "/var/opt/gitlab",
|
||||||
|
"mode": "RW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"containerPath": "/var/log/gitlab",
|
||||||
|
"hostPath": "/var/log/gitlab",
|
||||||
|
"mode": "RW"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"containerPath": "/var/opt/gitlab",
|
||||||
|
"hostPath": "/var/opt/gitlab",
|
||||||
|
"mode": "RW"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
|
@ -61,3 +61,11 @@ head /proc/sys/kernel/shmmax /proc/sys/kernel/shmall
|
||||||
free -m
|
free -m
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Remove ALL docker containers and images (also non GitLab ones):
|
||||||
|
|
||||||
|
```
|
||||||
|
docker rm $(docker ps -a -q)
|
||||||
|
docker rmi $(docker images -q)
|
||||||
|
```
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue