From 71e6871737bebbb7164f1c0853120cd209428259 Mon Sep 17 00:00:00 2001
From: Jozef Vaclavik <jozef@snabb.me>
Date: Fri, 20 Mar 2015 20:03:14 +0100
Subject: [PATCH] Separate Dockerfile for Data and Application

---
 docker/Dockerfile                  |  4 ----
 docker/README.md                   | 38 +++++++++++++++++++++++-------
 docker/data/Dockerfile             |  8 +++++++
 docker/{ => data}/assets/gitlab.rb |  0
 4 files changed, 37 insertions(+), 13 deletions(-)
 create mode 100644 docker/data/Dockerfile
 rename docker/{ => data}/assets/gitlab.rb (100%)

diff --git a/docker/Dockerfile b/docker/Dockerfile
index 4eb280f9554..6c351f727ff 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -26,11 +26,7 @@ RUN mkdir -p /opt/gitlab/sv/sshd/supervise \
 # Expose web & ssh
 EXPOSE 80 22
 
-# Declare volumes
-VOLUME ["/var/opt/gitlab", "/var/log/gitlab", "/etc/gitlab"]
-
 # Copy assets
-COPY assets/gitlab.rb /etc/gitlab/
 COPY assets/wrapper /usr/local/bin/
 
 # Wrapper to handle signal, trigger runit and reconfigure GitLab
diff --git a/docker/README.md b/docker/README.md
index 58982a238a8..b7e8b0db7e7 100644
--- a/docker/README.md
+++ b/docker/README.md
@@ -8,14 +8,15 @@ GitLab offers git repository management, code reviews, issue tracking, activity
 ![GitLab Logo](https://gitlab.com/uploads/appearance/logo/1/brand_logo-c37eb221b456bb4b472cc1084480991f.png)
 
 
-How to use this image
+How to use these images
 ======================
 
-At this moment GitLab doesn't have official Docker images.
-Build your own based on the Omnibus packages with the following command (it assumes you're in the GitLab repo root directory):
+At this moment GitLab doesn't have official Docker images. 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 (it assumes you're in the GitLab repo root directory):
 
 ```bash
-sudo docker build --tag gitlab_image docker/
+sudo docker build --tag gitlab_data_image docker/data/
+sudo docker build --tag gitlab_app_image_xy docker/
 ```
 
 We assume using a data volume container, this will simplify migrations and backups.
@@ -30,16 +31,16 @@ The directories on data container are:
 Create the data container with:
 
 ```bash
-sudo docker run --name gitlab_data gitlab_image /bin/true
+sudo docker run --name gitlab_data gitlab_data_image /bin/true
 ```
 
-After creating this run GitLab:
+After creating data container run GitLab container:
 
 ```bash
-sudo docker run --detach --name gitlab_app --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_image
+sudo docker run --detach --name gitlab_app_xy --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_app_image_xy
 ```
 
-It might take a while before the docker container is responding to queries. You can follow the configuration process with `docker logs -f gitlab_app`.
+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`.
 
 You can then go to `http://localhost:8080/` (or `http://192.168.59.103:8080/` if you use boot2docker).
 You can login with username `root` and password `5iveL!fe`.
@@ -54,7 +55,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:
 
 ```bash
-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
 ```
 
@@ -62,6 +63,25 @@ 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).
 
+How to upgrade GitLab
+========================
+
+To updgrade GitLab to new versions, stop running container, create new docker image and container from that image.
+
+It Assumes that you're upgrading from 7.8 to 7.9 and you're in the updated GitLab repo root directory:
+
+```bash
+sudo docker stop gitlab_app_78
+sudo docker build --tag gitlab_app_image_79 docker/
+sudo docker run --detach --name gitlab_app_79 --publish 8080:80 --publish 2222:22 --volumes-from gitlab_data gitlab_app_image_79
+```
+
+On the first run GitLab will reconfigure and update itself. If everything runs OK don't forget to cleanup old container and image:
+
+```bash
+sudo docker rm gitlab_app_78
+sudo docker rmi gitlab_app_image_78
+```
 
 Troubleshooting
 =========================
diff --git a/docker/data/Dockerfile b/docker/data/Dockerfile
new file mode 100644
index 00000000000..ea0175c4aa2
--- /dev/null
+++ b/docker/data/Dockerfile
@@ -0,0 +1,8 @@
+FROM busybox
+
+# Declare volumes
+VOLUME ["/var/opt/gitlab", "/var/log/gitlab", "/etc/gitlab"]
+# Copy assets
+COPY assets/gitlab.rb /etc/gitlab/
+
+CMD /bin/sh
diff --git a/docker/assets/gitlab.rb b/docker/data/assets/gitlab.rb
similarity index 100%
rename from docker/assets/gitlab.rb
rename to docker/data/assets/gitlab.rb
-- 
2.30.9