From 5a01a0f6686e13d53c2165b853d64970733ea381 Mon Sep 17 00:00:00 2001
From: Meaglith Ma <genedna@gmail.com>
Date: Tue, 1 Apr 2014 01:47:32 +0800
Subject: [PATCH 01/12] Init dockerfiles folder and base gogs Dockerfile

---
 dockerfiles/images/gogits/Dockerfile   | 20 ++++++++++++++++++++
 dockerfiles/images/gogits/sources.list | 10 ++++++++++
 dockerfiles/images/memcached/.gitkeep  |  0
 dockerfiles/images/mysql/.gitkeep      |  0
 dockerfiles/images/posgresql/.gitkeep  |  0
 dockerfiles/images/redis/.gitkeep      |  0
 6 files changed, 30 insertions(+)
 create mode 100644 dockerfiles/images/gogits/Dockerfile
 create mode 100644 dockerfiles/images/gogits/sources.list
 create mode 100644 dockerfiles/images/memcached/.gitkeep
 create mode 100644 dockerfiles/images/mysql/.gitkeep
 create mode 100644 dockerfiles/images/posgresql/.gitkeep
 create mode 100644 dockerfiles/images/redis/.gitkeep

diff --git a/dockerfiles/images/gogits/Dockerfile b/dockerfiles/images/gogits/Dockerfile
new file mode 100644
index 000000000..cb16d1cf5
--- /dev/null
+++ b/dockerfiles/images/gogits/Dockerfile
@@ -0,0 +1,20 @@
+FROM stackbrew/ubuntu:13.10
+MAINTAINER  Meaglith Ma <genedna@gmail.com> (@genedna)
+
+ADD ./sources.list /etc/apt/
+
+RUN mkdir -p /go
+ENV PATH /usr/local/go/bin:/go/bin:$PATH
+ENV GOROOT /usr/local/go
+ENV GOPATH /go
+
+RUN apt-get update && apt-get install -y curl git mercurial zip wget ca-certificates build-essential
+
+RUN curl -s http://docker.u.qiniudn.com/go1.2.1.src.tar.gz | tar -v -C /usr/local -xz
+RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1
+
+RUN go get -u github.com/gogits/gogs 
+RUN cd $GOPATH/src/github.com/gogits/gogs && go build
+
+RUN apt-get autoremove -y
+RUN apt-get clean all
diff --git a/dockerfiles/images/gogits/sources.list b/dockerfiles/images/gogits/sources.list
new file mode 100644
index 000000000..58214b4ed
--- /dev/null
+++ b/dockerfiles/images/gogits/sources.list
@@ -0,0 +1,10 @@
+deb http://mirrors.aliyun.com/ubuntu/ saucy main restricted
+deb http://mirrors.aliyun.com/ubuntu/ saucy-updates main restricted
+deb http://mirrors.aliyun.com/ubuntu/ saucy universe
+deb http://mirrors.aliyun.com/ubuntu/ saucy-updates universe
+deb http://mirrors.aliyun.com/ubuntu/ saucy multiverse
+deb http://mirrors.aliyun.com/ubuntu/ saucy-updates multiverse
+deb http://mirrors.aliyun.com/ubuntu/ saucy-backports main restricted universe multiverse
+deb http://mirrors.aliyun.com/ubuntu/ saucy-security main restricted
+deb http://mirrors.aliyun.com/ubuntu/ saucy-security universe
+deb http://mirrors.aliyun.com/ubuntu/ saucy-security multiverse
diff --git a/dockerfiles/images/memcached/.gitkeep b/dockerfiles/images/memcached/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/dockerfiles/images/mysql/.gitkeep b/dockerfiles/images/mysql/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/dockerfiles/images/posgresql/.gitkeep b/dockerfiles/images/posgresql/.gitkeep
new file mode 100644
index 000000000..e69de29bb
diff --git a/dockerfiles/images/redis/.gitkeep b/dockerfiles/images/redis/.gitkeep
new file mode 100644
index 000000000..e69de29bb

From a044c24c3db4b18b20406045b40e55ce15f941a0 Mon Sep 17 00:00:00 2001
From: Meaglith Ma <genedna@gmail.com>
Date: Tue, 1 Apr 2014 14:27:21 +0800
Subject: [PATCH 02/12] Update the Golang Dockerfile and add mysql Dockerfile

---
 dockerfiles/images/gogits/Dockerfile   |  6 ++++--
 dockerfiles/images/gogits/sources.list | 10 ----------
 dockerfiles/images/mysql/Dockerfile    | 18 ++++++++++++++++++
 3 files changed, 22 insertions(+), 12 deletions(-)
 delete mode 100644 dockerfiles/images/gogits/sources.list
 create mode 100644 dockerfiles/images/mysql/Dockerfile

diff --git a/dockerfiles/images/gogits/Dockerfile b/dockerfiles/images/gogits/Dockerfile
index cb16d1cf5..bcd6e6908 100644
--- a/dockerfiles/images/gogits/Dockerfile
+++ b/dockerfiles/images/gogits/Dockerfile
@@ -1,14 +1,14 @@
 FROM stackbrew/ubuntu:13.10
 MAINTAINER  Meaglith Ma <genedna@gmail.com> (@genedna)
 
-ADD ./sources.list /etc/apt/
+RUN echo "deb http://mirrors.aliyun.com/ubuntu/ saucy main restricted" > /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-backports main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security multiverse" >> /etc/apt/sources.list
 
 RUN mkdir -p /go
 ENV PATH /usr/local/go/bin:/go/bin:$PATH
 ENV GOROOT /usr/local/go
 ENV GOPATH /go
 
-RUN apt-get update && apt-get install -y curl git mercurial zip wget ca-certificates build-essential
+RUN apt-get update && apt-get install --yes --force-yes curl git mercurial zip wget ca-certificates build-essential
 
 RUN curl -s http://docker.u.qiniudn.com/go1.2.1.src.tar.gz | tar -v -C /usr/local -xz
 RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1
@@ -18,3 +18,5 @@ RUN cd $GOPATH/src/github.com/gogits/gogs && go build
 
 RUN apt-get autoremove -y
 RUN apt-get clean all
+
+EXPOSE 3000
diff --git a/dockerfiles/images/gogits/sources.list b/dockerfiles/images/gogits/sources.list
deleted file mode 100644
index 58214b4ed..000000000
--- a/dockerfiles/images/gogits/sources.list
+++ /dev/null
@@ -1,10 +0,0 @@
-deb http://mirrors.aliyun.com/ubuntu/ saucy main restricted
-deb http://mirrors.aliyun.com/ubuntu/ saucy-updates main restricted
-deb http://mirrors.aliyun.com/ubuntu/ saucy universe
-deb http://mirrors.aliyun.com/ubuntu/ saucy-updates universe
-deb http://mirrors.aliyun.com/ubuntu/ saucy multiverse
-deb http://mirrors.aliyun.com/ubuntu/ saucy-updates multiverse
-deb http://mirrors.aliyun.com/ubuntu/ saucy-backports main restricted universe multiverse
-deb http://mirrors.aliyun.com/ubuntu/ saucy-security main restricted
-deb http://mirrors.aliyun.com/ubuntu/ saucy-security universe
-deb http://mirrors.aliyun.com/ubuntu/ saucy-security multiverse
diff --git a/dockerfiles/images/mysql/Dockerfile b/dockerfiles/images/mysql/Dockerfile
new file mode 100644
index 000000000..c3b85e3b9
--- /dev/null
+++ b/dockerfiles/images/mysql/Dockerfile
@@ -0,0 +1,18 @@
+FROM stackbrew/ubuntu:13.10
+MAINTAINER  Meaglith Ma <genedna@gmail.com> (@genedna)
+
+RUN echo "deb http://mirrors.aliyun.com/ubuntu/ saucy main restricted" > /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-backports main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security multiverse" >> /etc/apt/sources.list
+
+#ENV MYSQL_PASSWORD docker
+
+#RUN echo "mysql-server mysql-server/root_password password $MYSQL_PASSWORD" | debconf-set-selections  
+#RUN echo "mysql-server mysql-server/root_password_again password $MYSQL_PASSWORD" | debconf-set-selections
+
+RUN apt-get update && apt-get install -y --force-yes mysql-server 
+RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
+
+RUN apt-get autoremove -y
+RUN apt-get clean all
+
+EXPOSE 3306
+CMD ["/usr/bin/mysqld_safe", "--skip-syslog", "--log-error=/dev/null"]  

From 5f4b5c1557b1f39d6bad24c5056aafa6138639e6 Mon Sep 17 00:00:00 2001
From: Meaglith Ma <genedna@gmail.com>
Date: Sun, 6 Apr 2014 17:31:42 +0800
Subject: [PATCH 03/12] Temp commit

---
 dockerfiles/images/gogits/Dockerfile | 4 +++-
 dockerfiles/images/mysql/Dockerfile  | 1 +
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/dockerfiles/images/gogits/Dockerfile b/dockerfiles/images/gogits/Dockerfile
index bcd6e6908..9c7d018b0 100644
--- a/dockerfiles/images/gogits/Dockerfile
+++ b/dockerfiles/images/gogits/Dockerfile
@@ -13,10 +13,12 @@ RUN apt-get update && apt-get install --yes --force-yes curl git mercurial zip w
 RUN curl -s http://docker.u.qiniudn.com/go1.2.1.src.tar.gz | tar -v -C /usr/local -xz
 RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1
 
-RUN go get -u github.com/gogits/gogs 
+RUN http_proxy=106.187.38.45:3128 go get -u github.com/gogits/gogs 
 RUN cd $GOPATH/src/github.com/gogits/gogs && go build
 
 RUN apt-get autoremove -y
 RUN apt-get clean all
 
 EXPOSE 3000
+
+CMD ["./$GOPATH/src/github.com/gogits/gogs/gogs"]  
diff --git a/dockerfiles/images/mysql/Dockerfile b/dockerfiles/images/mysql/Dockerfile
index c3b85e3b9..ecf69a2c5 100644
--- a/dockerfiles/images/mysql/Dockerfile
+++ b/dockerfiles/images/mysql/Dockerfile
@@ -15,4 +15,5 @@ RUN apt-get autoremove -y
 RUN apt-get clean all
 
 EXPOSE 3306
+
 CMD ["/usr/bin/mysqld_safe", "--skip-syslog", "--log-error=/dev/null"]  

From c8b81d8339fa81f3744fb177a373c490f81940bc Mon Sep 17 00:00:00 2001
From: Meaglith Ma <genedna@gmail.com>
Date: Wed, 9 Apr 2014 10:46:05 +0800
Subject: [PATCH 04/12] Create README.md

---
 dockerfiles/README.md | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 dockerfiles/README.md

diff --git a/dockerfiles/README.md b/dockerfiles/README.md
new file mode 100644
index 000000000..d82787289
--- /dev/null
+++ b/dockerfiles/README.md
@@ -0,0 +1 @@
+== Gogs Install With Docker ==

From 4efb56af03bf8a113e9b39d123b9399e546d3505 Mon Sep 17 00:00:00 2001
From: Meaglith Ma <genedna@gmail.com>
Date: Wed, 9 Apr 2014 10:48:05 +0800
Subject: [PATCH 05/12] Update README.md

---
 dockerfiles/README.md | 24 +++++++++++++++++++++++-
 1 file changed, 23 insertions(+), 1 deletion(-)

diff --git a/dockerfiles/README.md b/dockerfiles/README.md
index d82787289..4268c7c20 100644
--- a/dockerfiles/README.md
+++ b/dockerfiles/README.md
@@ -1 +1,23 @@
-== Gogs Install With Docker ==
+### Gogs Install With Docker
+
+
+#### Gogs With MySQL
+
+
+#### Gogs With PostgreSQL
+
+
+#### Gogs, MySQL With Redis
+
+
+#### Gogs, MySQL With Memcached
+
+
+#### Gogs, PostgreSQL With Redis
+
+
+#### Gogs, PostgreSQL With Memcached
+
+
+
+

From 5966dd78e67de613bea53a517712645c8449b358 Mon Sep 17 00:00:00 2001
From: crystaldust <juzhenatpku@gmail.com>
Date: Thu, 10 Apr 2014 19:56:19 +0800
Subject: [PATCH 06/12] Add the scirpts for auto deploy.

---
 dockerfiles/build.sh                 | 28 ++++++++++++++++++++++++++++
 dockerfiles/build.sh.bak             | 27 +++++++++++++++++++++++++++
 dockerfiles/images/gogits/Dockerfile |  8 ++++++--
 dockerfiles/images/gogits/deploy.sh  | 15 +++++++++++++++
 dockerfiles/images/mysql/Dockerfile  | 17 +++++++++++++----
 dockerfiles/images/test/Dockerfile   |  7 +++++++
 dockerfiles/run.sh                   | 13 +++++++++++++
 7 files changed, 109 insertions(+), 6 deletions(-)
 create mode 100755 dockerfiles/build.sh
 create mode 100755 dockerfiles/build.sh.bak
 create mode 100644 dockerfiles/images/gogits/deploy.sh
 create mode 100644 dockerfiles/images/test/Dockerfile
 create mode 100755 dockerfiles/run.sh

diff --git a/dockerfiles/build.sh b/dockerfiles/build.sh
new file mode 100755
index 000000000..113f63dbe
--- /dev/null
+++ b/dockerfiles/build.sh
@@ -0,0 +1,28 @@
+# Configs
+MYSQL_PASSWORD="kuajie8402"
+MYSQL_RUN_NAME="gogs_mysql"
+typeset -u MYSQL_ALIAS
+MYSQL_ALIAS="db"
+HOST_PORT="3000"
+
+# Replace the mysql root password in MySQL image Dockerfile.
+sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/mysql/Dockerfile
+# Replace the mysql root password in gogits image Dockerfile.
+sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/gogits/deploy.sh
+sed -i "s/THE_MYSQL_ALIAS/$MYSQL_ALIAS/g" images/gogits/deploy.sh
+
+
+# Build the MySQL image
+cd images/mysql
+docker build -t gogs/mysql .
+#
+## Build the gogits image
+cd images/gogits
+docker build -t gogs/gogits .
+#
+## Run MySQL image with name
+docker run -d --name $MYSQL_RUN_NAME gogs/mysql
+#
+## Run gogits image and link it to the MySQL image
+docker run --link $MYSQL_RUN_NAME:$MYSQL_ALIAS -p $HOST_PORT:3000 gogs/gogits
+
diff --git a/dockerfiles/build.sh.bak b/dockerfiles/build.sh.bak
new file mode 100755
index 000000000..545a13dae
--- /dev/null
+++ b/dockerfiles/build.sh.bak
@@ -0,0 +1,27 @@
+# Configs
+MYSQL_PASSWORD="YOUR_MYSQL_PASSWORD"
+MYSQL_RUN_NAME="YOUR_MYSQL_RUN_NAME"
+typeset -u MYSQL_ALIAS
+MYSQL_ALIAS="YOUR_MYSQL_ALIAS"
+HOST_PORT="YOUR_HOST_PORT"
+
+# Replace the mysql root password in MySQL image Dockerfile.
+sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/mysql/Dockerfile
+# Replace the mysql root password in gogits image Dockerfile.
+sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/gogits/Dockerfile
+
+
+# Build the MySQL image
+cd images/mysql
+docker build -i gogs/mysql .
+
+# Build the gogits image
+cd images/gogits
+docker build -i gogs/gogits .
+
+# Run MySQL image with name
+docker run -d --name $MYSQL_RUN_NAME gogs/mysql
+
+# Run gogits image and link it to the MySQL image
+docker run --link $MYSQL_RUN_NAME:$MYSQL_ALIAS -p $HOST_PORT:3000 gogs/gogits
+
diff --git a/dockerfiles/images/gogits/Dockerfile b/dockerfiles/images/gogits/Dockerfile
index 9c7d018b0..265f86dad 100644
--- a/dockerfiles/images/gogits/Dockerfile
+++ b/dockerfiles/images/gogits/Dockerfile
@@ -19,6 +19,10 @@ RUN cd $GOPATH/src/github.com/gogits/gogs && go build
 RUN apt-get autoremove -y
 RUN apt-get clean all
 
-EXPOSE 3000
+# Add the deploy script to the docker image and assign execution permission to it.
+ADD ./deploy.sh /
+RUN chmod +x deploy.sh
 
-CMD ["./$GOPATH/src/github.com/gogits/gogs/gogs"]  
+EXPOSE 3000
+CMD [/deploy.sh]
+CMD ["$GOPATH/src/github.com/gogits/gogs/gogs web"]  
diff --git a/dockerfiles/images/gogits/deploy.sh b/dockerfiles/images/gogits/deploy.sh
new file mode 100644
index 000000000..f9c2144e2
--- /dev/null
+++ b/dockerfiles/images/gogits/deploy.sh
@@ -0,0 +1,15 @@
+# deploy.sh in gogits image
+# Script in the gogits image
+## Replace the mysql password
+MYSQL_PASSWORD=kuajie8402
+MYSQL_ALIAS=DB
+MYSQL_PASSWORD_LINE=`awk '$0 ~ str{print NR+1}' str="USER = root" $GOPATH/src/github.com/gogits/gogs/conf/app.ini`
+
+sed -e "${MYSQL_PASSWORD_LINE}s/.*$/PASSWD = $MYSQL_PASSWORD/g" conf/app.ini 
+
+## Replace the mysql address and port
+# DB_PORT=tcp://172.17.0.2:3306
+# DB_PORT_3306_TCP_PORT=3306
+# DB_PORT_3306_TCP_PROTO=tcp
+sed -e "/HOST = 127.0.0.1:3306/c\HOST = ${MYSQLALIAS}_PORT" app.ini
+
diff --git a/dockerfiles/images/mysql/Dockerfile b/dockerfiles/images/mysql/Dockerfile
index ecf69a2c5..7c0324015 100644
--- a/dockerfiles/images/mysql/Dockerfile
+++ b/dockerfiles/images/mysql/Dockerfile
@@ -1,12 +1,21 @@
-FROM stackbrew/ubuntu:13.10
+#FROM stackbrew/ubuntu:13.10
+FROM stackbrew/ubuntu
 MAINTAINER  Meaglith Ma <genedna@gmail.com> (@genedna)
 
+RUN apt-get install -y --force-yes software-properties-common
+
 RUN echo "deb http://mirrors.aliyun.com/ubuntu/ saucy main restricted" > /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-backports main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security multiverse" >> /etc/apt/sources.list
 
-#ENV MYSQL_PASSWORD docker
+#RUN add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
+
+RUN apt-get --yes --force-yes update
+RUN apt-get --yes --force-yes upgrade 
+
+
+ENV MYSQL_PASSWORD kuajie8402
 
-#RUN echo "mysql-server mysql-server/root_password password $MYSQL_PASSWORD" | debconf-set-selections  
-#RUN echo "mysql-server mysql-server/root_password_again password $MYSQL_PASSWORD" | debconf-set-selections
+RUN echo "mysql-server mysql-server/root_password password $MYSQL_PASSWORD" | debconf-set-selections  
+RUN echo "mysql-server mysql-server/root_password_again password $MYSQL_PASSWORD" | debconf-set-selections
 
 RUN apt-get update && apt-get install -y --force-yes mysql-server 
 RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
diff --git a/dockerfiles/images/test/Dockerfile b/dockerfiles/images/test/Dockerfile
new file mode 100644
index 000000000..b8ed66d4d
--- /dev/null
+++ b/dockerfiles/images/test/Dockerfile
@@ -0,0 +1,7 @@
+FROM   stackbrew/ubuntu:saucy
+
+RUN    apt-get install -y --force-yes software-properties-common  
+RUN    add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"  
+RUN    apt-get --yes --force-yes update  
+RUN    apt-get --yes --force-yes upgrade  
+
diff --git a/dockerfiles/run.sh b/dockerfiles/run.sh
new file mode 100755
index 000000000..7721ab41d
--- /dev/null
+++ b/dockerfiles/run.sh
@@ -0,0 +1,13 @@
+# Configs
+MYSQL_PASSWORD="kuajie8402"
+MYSQL_RUN_NAME="gogs_mysql"
+typeset -u MYSQL_ALIAS
+MYSQL_ALIAS="db"
+HOST_PORT="3000"
+
+## Run MySQL image with name
+docker run -d --name $MYSQL_RUN_NAME gogs/mysql
+#
+## Run gogits image and link it to the MySQL image
+docker run --link $MYSQL_RUN_NAME:$MYSQL_ALIAS -p $HOST_PORT:3000 gogs/gogits
+

From 2315dc39b6c84bdb8fbbe778e56e4b27b8760ba9 Mon Sep 17 00:00:00 2001
From: Lance Ju <lance@crenolab.com>
Date: Fri, 11 Apr 2014 14:55:43 +0800
Subject: [PATCH 07/12] Add the auto build scripts for deplying gogs with
 Docker.

---
 dockerfiles/build.sh                 | 15 ++++++---------
 dockerfiles/images/gogits/Dockerfile | 11 ++++++++---
 dockerfiles/images/gogits/deploy.sh  | 15 ++++++++++-----
 dockerfiles/images/mysql/Dockerfile  | 25 +++++++++++++++++--------
 dockerfiles/images/test/Dockerfile   |  7 -------
 5 files changed, 41 insertions(+), 32 deletions(-)
 delete mode 100644 dockerfiles/images/test/Dockerfile

diff --git a/dockerfiles/build.sh b/dockerfiles/build.sh
index 113f63dbe..57138577c 100755
--- a/dockerfiles/build.sh
+++ b/dockerfiles/build.sh
@@ -1,16 +1,12 @@
-# Configs
-MYSQL_PASSWORD="kuajie8402"
-MYSQL_RUN_NAME="gogs_mysql"
-typeset -u MYSQL_ALIAS
-MYSQL_ALIAS="db"
-HOST_PORT="3000"
+# Configs of the docker images, you might have specify your own configs here.
+MYSQL_PASSWORD="YOUR_MYSQL_PASSWORD"
+MYSQL_RUN_NAME="YOUR_MYSQL_RUN_NAME"
+HOST_PORT="YOUR_HOST_PORT"
 
 # Replace the mysql root password in MySQL image Dockerfile.
 sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/mysql/Dockerfile
 # Replace the mysql root password in gogits image Dockerfile.
 sed -i "s/THE_MYSQL_PASSWORD/$MYSQL_PASSWORD/g" images/gogits/deploy.sh
-sed -i "s/THE_MYSQL_ALIAS/$MYSQL_ALIAS/g" images/gogits/deploy.sh
-
 
 # Build the MySQL image
 cd images/mysql
@@ -24,5 +20,6 @@ docker build -t gogs/gogits .
 docker run -d --name $MYSQL_RUN_NAME gogs/mysql
 #
 ## Run gogits image and link it to the MySQL image
-docker run --link $MYSQL_RUN_NAME:$MYSQL_ALIAS -p $HOST_PORT:3000 gogs/gogits
+echo "Now we have the MySQL image(running) and gogs image, use the follow command to start gogs service:'
+echo -e "\033[33m docker run -i -t --link $MYSQL_RUN_NAME:db -p $HOST_PORT:3000 gogs/gogits \033[0m"
 
diff --git a/dockerfiles/images/gogits/Dockerfile b/dockerfiles/images/gogits/Dockerfile
index 265f86dad..410bb9cb0 100644
--- a/dockerfiles/images/gogits/Dockerfile
+++ b/dockerfiles/images/gogits/Dockerfile
@@ -1,6 +1,8 @@
 FROM stackbrew/ubuntu:13.10
 MAINTAINER  Meaglith Ma <genedna@gmail.com> (@genedna)
 
+ENV DEBIAN_FRONTEND noninteractive
+
 RUN echo "deb http://mirrors.aliyun.com/ubuntu/ saucy main restricted" > /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-backports main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security multiverse" >> /etc/apt/sources.list
 
 RUN mkdir -p /go
@@ -13,9 +15,12 @@ RUN apt-get update && apt-get install --yes --force-yes curl git mercurial zip w
 RUN curl -s http://docker.u.qiniudn.com/go1.2.1.src.tar.gz | tar -v -C /usr/local -xz
 RUN cd /usr/local/go/src && ./make.bash --no-clean 2>&1
 
-RUN http_proxy=106.187.38.45:3128 go get -u github.com/gogits/gogs 
+# You may need a proxy, if github is very slow.
+#RUN http_proxy=106.187.38.45:3128 go get -u github.com/gogits/gogs 
+RUN go get -u github.com/gogits/gogs 
 RUN cd $GOPATH/src/github.com/gogits/gogs && go build
 
+# Clean all the unused packages
 RUN apt-get autoremove -y
 RUN apt-get clean all
 
@@ -24,5 +29,5 @@ ADD ./deploy.sh /
 RUN chmod +x deploy.sh
 
 EXPOSE 3000
-CMD [/deploy.sh]
-CMD ["$GOPATH/src/github.com/gogits/gogs/gogs web"]  
+
+CMD /deploy.sh
diff --git a/dockerfiles/images/gogits/deploy.sh b/dockerfiles/images/gogits/deploy.sh
index f9c2144e2..4612a63da 100644
--- a/dockerfiles/images/gogits/deploy.sh
+++ b/dockerfiles/images/gogits/deploy.sh
@@ -1,15 +1,20 @@
-# deploy.sh in gogits image
-# Script in the gogits image
+# deploy.sh in gogits image, replace the configs and run gogs
+
 ## Replace the mysql password
-MYSQL_PASSWORD=kuajie8402
+MYSQL_PASSWORD=THE_MYSQL_PASSWORD
 MYSQL_ALIAS=DB
 MYSQL_PASSWORD_LINE=`awk '$0 ~ str{print NR+1}' str="USER = root" $GOPATH/src/github.com/gogits/gogs/conf/app.ini`
 
-sed -e "${MYSQL_PASSWORD_LINE}s/.*$/PASSWD = $MYSQL_PASSWORD/g" conf/app.ini 
+sed -i "${MYSQL_PASSWORD_LINE}s/.*$/PASSWD = $MYSQL_PASSWORD/g" $GOPATH/src/github.com/gogits/gogs/conf/app.ini 
 
 ## Replace the mysql address and port
+# When using --link in docker run, the mysql image's info looks like this:
 # DB_PORT=tcp://172.17.0.2:3306
 # DB_PORT_3306_TCP_PORT=3306
 # DB_PORT_3306_TCP_PROTO=tcp
-sed -e "/HOST = 127.0.0.1:3306/c\HOST = ${MYSQLALIAS}_PORT" app.ini
+# DB_PORT_3306_TCP_ADDR=172.17.0.2
+sed -i "/HOST = 127.0.0.1:3306/c\HOST = $DB_PORT_3306_TCP_ADDR:$DB_PORT_3306_TCP_PORT" $GOPATH/src/github.com/gogits/gogs/conf/app.ini
+cd $GOPATH/src/github.com/gogits/gogs/ 
 
+# The sudo is a must here, or the go within docker container won't get the current user by os.Getenv("USERNAME")
+sudo ./gogs web
diff --git a/dockerfiles/images/mysql/Dockerfile b/dockerfiles/images/mysql/Dockerfile
index 7c0324015..9b163e32b 100644
--- a/dockerfiles/images/mysql/Dockerfile
+++ b/dockerfiles/images/mysql/Dockerfile
@@ -1,18 +1,16 @@
 #FROM stackbrew/ubuntu:13.10
-FROM stackbrew/ubuntu
+#FROM stackbrew/ubuntu
+FROM   stackbrew/ubuntu:saucy
 MAINTAINER  Meaglith Ma <genedna@gmail.com> (@genedna)
 
-RUN apt-get install -y --force-yes software-properties-common
-
-RUN echo "deb http://mirrors.aliyun.com/ubuntu/ saucy main restricted" > /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-updates multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-backports main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security main restricted" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security universe" >> /etc/apt/sources.list && echo "deb http://mirrors.aliyun.com/ubuntu/ saucy-security multiverse" >> /etc/apt/sources.list
-
-#RUN add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
+ENV DEBIAN_FRONTEND noninteractive
 
+RUN apt-get install -y --force-yes software-properties-common
+RUN add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
 RUN apt-get --yes --force-yes update
 RUN apt-get --yes --force-yes upgrade 
 
-
-ENV MYSQL_PASSWORD kuajie8402
+ENV MYSQL_PASSWORD THE_MYSQL_PASSWORD
 
 RUN echo "mysql-server mysql-server/root_password password $MYSQL_PASSWORD" | debconf-set-selections  
 RUN echo "mysql-server mysql-server/root_password_again password $MYSQL_PASSWORD" | debconf-set-selections
@@ -20,9 +18,20 @@ RUN echo "mysql-server mysql-server/root_password_again password $MYSQL_PASSWORD
 RUN apt-get update && apt-get install -y --force-yes mysql-server 
 RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf
 
+RUN service mysql restart
+
+RUN echo "mysql -uroot -p$MYSQL_PASSWORD -e 'drop database if exists gogs;'" >> import.sh  
+RUN echo "mysql -uroot -p$MYSQL_PASSWORD -e 'create database gogs;'" >> import.sh  
+RUN chmod +x import.sh
+
 RUN apt-get autoremove -y
 RUN apt-get clean all
 
+RUN    /usr/sbin/mysqld & \
+    sleep 10s &&\
+    echo "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' WITH GRANT OPTION; FLUSH PRIVILEGES" | mysql -p$MYSQL_PASSWORD &&\
+    ./import.sh
+
 EXPOSE 3306
 
 CMD ["/usr/bin/mysqld_safe", "--skip-syslog", "--log-error=/dev/null"]  
diff --git a/dockerfiles/images/test/Dockerfile b/dockerfiles/images/test/Dockerfile
deleted file mode 100644
index b8ed66d4d..000000000
--- a/dockerfiles/images/test/Dockerfile
+++ /dev/null
@@ -1,7 +0,0 @@
-FROM   stackbrew/ubuntu:saucy
-
-RUN    apt-get install -y --force-yes software-properties-common  
-RUN    add-apt-repository -y "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"  
-RUN    apt-get --yes --force-yes update  
-RUN    apt-get --yes --force-yes upgrade  
-

From b1a3ba9932f2894a70d7f8e04ffc6ea8d71ce779 Mon Sep 17 00:00:00 2001
From: Lance Ju <lance@crenolab.com>
Date: Fri, 11 Apr 2014 15:32:57 +0800
Subject: [PATCH 08/12] Fix the path problem, which will build the mysql image
 as the gogits image

---
 dockerfiles/build.sh | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/dockerfiles/build.sh b/dockerfiles/build.sh
index 57138577c..1e7cf0ad0 100755
--- a/dockerfiles/build.sh
+++ b/dockerfiles/build.sh
@@ -13,13 +13,13 @@ cd images/mysql
 docker build -t gogs/mysql .
 #
 ## Build the gogits image
-cd images/gogits
+cd ../gogits
 docker build -t gogs/gogits .
 #
 ## Run MySQL image with name
 docker run -d --name $MYSQL_RUN_NAME gogs/mysql
 #
 ## Run gogits image and link it to the MySQL image
-echo "Now we have the MySQL image(running) and gogs image, use the follow command to start gogs service:'
+echo "Now we have the MySQL image(running) and gogs image, use the follow command to start gogs service:"
 echo -e "\033[33m docker run -i -t --link $MYSQL_RUN_NAME:db -p $HOST_PORT:3000 gogs/gogits \033[0m"
 

From a4f070b828638fe74946299618495af7efe028a7 Mon Sep 17 00:00:00 2001
From: crystaldust <juzhenatpku@gmail.com>
Date: Fri, 11 Apr 2014 16:10:52 +0800
Subject: [PATCH 09/12] Update README.md

Update the guide of how to deploy gogs in docker with the scripts.
---
 dockerfiles/README.md | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/dockerfiles/README.md b/dockerfiles/README.md
index 4268c7c20..97c5aa053 100644
--- a/dockerfiles/README.md
+++ b/dockerfiles/README.md
@@ -1,5 +1,39 @@
 ### Gogs Install With Docker
 
+Deply gogs in [Docker](http://www.docker.io/) is just as easy as eating a pie, what you do is just open the `dockerfiles/build.sh` file, replace the confis:
+
+```
+MYSQL_PASSWORD="YOUR_MYSQL_PASSWORD"
+MYSQL_RUN_NAME="YOUR_MYSQL_RUN_NAME"
+HOST_PORT="YOUR_HOST_PORT"
+```
+
+And run:
+```
+cd dockerfiles
+./build.sh
+```
+
+The build might take some time, just be paient. After it finishes, you will receive the message:
+
+```
+Now we have the MySQL image(running) and gogs image, use the follow command to start gogs service( the content might be different, according to your own configs):
+ docker run -i -t --link gogs_mysql:db -p 3333:3000 gogs/gogits
+```
+
+Just follow the message, run:
+
+```
+ docker run -i -t --link gogs_mysql:db -p 3333:3000 gogs/gogits
+```
+
+Now we have gogs running! Open the browser and navigate to:
+
+```
+http://YOUR_HOST_IP:YOUR_HOST_PORT
+```
+
+Let's 'gogs'!
 
 #### Gogs With MySQL
 

From 555b6976a32318c8decce521bdc61765eb6642c9 Mon Sep 17 00:00:00 2001
From: FuXiaoHei <fuxiaohei@hexiaz.com>
Date: Fri, 11 Apr 2014 22:41:41 +0800
Subject: [PATCH 10/12] add search form in top navbar

---
 public/css/gogs.css        | 27 +++++++++++++++++++++++----
 templates/base/navbar.tmpl | 19 ++++++++++++++++---
 2 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/public/css/gogs.css b/public/css/gogs.css
index 48d485fa5..634548b8c 100755
--- a/public/css/gogs.css
+++ b/public/css/gogs.css
@@ -67,6 +67,7 @@ html, body {
     color: #EEE;
     font-size: 100%;
     height: 46px;
+    margin-top: 3px;
 }
 
 #nav-logo {
@@ -81,10 +82,6 @@ html, body {
     text-decoration: none;
 }
 
-.nav-item.navbar-right {
-    margin-top: 3px;
-}
-
 .nav-item.navbar-btn {
     cursor: pointer;
     margin-top: 8px;
@@ -96,6 +93,28 @@ html, body {
     margin: 0;
 }
 
+#nav-search-form {
+    width: 300px;
+    margin-top: 0;
+}
+
+#nav-search-form button {
+    margin-top: 0;
+    background-image: none;
+    background-color: #F6F6F6;
+}
+
+#nav-search-form input[type=search] {
+    background-color: #F6F6F6;
+    border-bottom-right-radius: 3px;
+    border-top-right-radius: 3px;
+}
+
+#nav-search-form input[type=search]:focus {
+    background-color: #FFF;
+    border-color: #D9D9D9;
+}
+
 /* gogits nav item active status */
 #masthead .nav .active {
     color: #fff;
diff --git a/templates/base/navbar.tmpl b/templates/base/navbar.tmpl
index c0855d81e..1f908f39c 100644
--- a/templates/base/navbar.tmpl
+++ b/templates/base/navbar.tmpl
@@ -1,9 +1,22 @@
 <div class="masthead navbar" id="masthead">
     <div class="container">
         <nav class="nav">
-            <a id="nav-logo" class="nav-item{{if .PageIsHome}} active{{end}}" href="/"><img src="/img/favicon.png" alt="Gogs Logo" id="logo"></a>
-            <a class="nav-item{{if .PageIsUserDashboard}} active{{end}}" href="/">Dashboard</a>
-            <a class="nav-item{{if .PageIsHelp}} active{{end}}" href="https://github.com/gogits/gogs/wiki">Help</a>{{if .IsSigned}}
+            <a id="nav-logo" class="nav-item pull-left{{if .PageIsHome}} active{{end}}" href="/"><img src="/img/favicon.png" alt="Gogs Logo" id="logo"></a>
+            <a class="nav-item pull-left{{if .PageIsUserDashboard}} active{{end}}" href="/">Dashboard</a>
+            <a class="nav-item pull-left{{if .PageIsHelp}} active{{end}}" href="https://github.com/gogits/gogs/wiki">Help</a>{{if .IsSigned}}
+            <form class="nav-item pull-left{{if .PageIsNewRepo}} active{{end}}" id="nav-search-form">
+                <div class="input-group">
+                    <div class="input-group-btn">
+                        <button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown">All Repositories <span class="caret"></span></button>
+                        <ul class="dropdown-menu">
+                            <li><a href="#">All Repositories</a></li>
+                            <li class="divider"></li>
+                            <li><a href="#">This Repository</a></li>
+                        </ul>
+                    </div>
+                    <input type="search" class="form-control input-sm" name="q" placeholder="search code, commits and issues"/>
+                </div>
+            </form>
             <a id="nav-out" class="nav-item navbar-right navbar-btn btn btn-danger" href="/user/logout/"><i class="fa fa-power-off fa-lg"></i></a>
             <a id="nav-avatar" class="nav-item navbar-right{{if .PageIsUserProfile}} active{{end}}" href="{{.SignedUser.HomeLink}}" data-toggle="tooltip" data-placement="bottom" title="{{.SignedUserName}}">
                 <img src="{{.SignedUser.AvatarLink}}?s=28" alt="user-avatar" title="username"/>

From 11f54b142699b59a74b9babc195e712414a3c78a Mon Sep 17 00:00:00 2001
From: Unknown <joe2010xtmf@163.com>
Date: Fri, 11 Apr 2014 12:14:11 -0400
Subject: [PATCH 11/12] Mirror bug fix

---
 modules/base/template.go      |   3 +
 modules/middleware/context.go |   2 +-
 routers/user/user.go          |  14 +-
 templates/repo/diff.tmpl      | 330 +---------------------------------
 4 files changed, 13 insertions(+), 336 deletions(-)

diff --git a/modules/base/template.go b/modules/base/template.go
index 5a42107c4..624149796 100644
--- a/modules/base/template.go
+++ b/modules/base/template.go
@@ -67,6 +67,9 @@ var TemplateFuncs template.FuncMap = map[string]interface{}{
 	"TimeSince":  TimeSince,
 	"FileSize":   FileSize,
 	"Subtract":   Subtract,
+	"Add": func(a, b int) int {
+		return a + b
+	},
 	"ActionIcon": ActionIcon,
 	"ActionDesc": ActionDesc,
 	"DateFormat": DateFormat,
diff --git a/modules/middleware/context.go b/modules/middleware/context.go
index 6ee94b960..e7f962c3e 100644
--- a/modules/middleware/context.go
+++ b/modules/middleware/context.go
@@ -103,7 +103,7 @@ func (ctx *Context) RenderWithErr(msg, tpl string, form auth.Form) {
 func (ctx *Context) Handle(status int, title string, err error) {
 	log.Error("%s: %v", title, err)
 	if martini.Dev == martini.Prod {
-		ctx.HTML(500, "status/500")
+		ctx.HTML(200, "status/500")
 		return
 	}
 
diff --git a/routers/user/user.go b/routers/user/user.go
index 37c6baa9f..39dfa462b 100644
--- a/routers/user/user.go
+++ b/routers/user/user.go
@@ -24,14 +24,14 @@ func Dashboard(ctx *middleware.Context) {
 	ctx.Data["PageIsUserDashboard"] = true
 	repos, err := models.GetRepositories(&models.User{Id: ctx.User.Id})
 	if err != nil {
-		ctx.Handle(200, "user.Dashboard", err)
+		ctx.Handle(500, "user.Dashboard", err)
 		return
 	}
 	ctx.Data["MyRepos"] = repos
 
 	feeds, err := models.GetFeeds(ctx.User.Id, 0, false)
 	if err != nil {
-		ctx.Handle(200, "user.Dashboard", err)
+		ctx.Handle(500, "user.Dashboard", err)
 		return
 	}
 	ctx.Data["Feeds"] = feeds
@@ -44,7 +44,7 @@ func Profile(ctx *middleware.Context, params martini.Params) {
 	// TODO: Need to check view self or others.
 	user, err := models.GetUserByName(params["username"])
 	if err != nil {
-		ctx.Handle(200, "user.Profile", err)
+		ctx.Handle(500, "user.Profile", err)
 		return
 	}
 
@@ -57,14 +57,14 @@ func Profile(ctx *middleware.Context, params martini.Params) {
 	case "activity":
 		feeds, err := models.GetFeeds(user.Id, 0, true)
 		if err != nil {
-			ctx.Handle(200, "user.Profile", err)
+			ctx.Handle(500, "user.Profile", err)
 			return
 		}
 		ctx.Data["Feeds"] = feeds
 	default:
 		repos, err := models.GetRepositories(user)
 		if err != nil {
-			ctx.Handle(200, "user.Profile", err)
+			ctx.Handle(500, "user.Profile", err)
 			return
 		}
 		ctx.Data["Repos"] = repos
@@ -100,14 +100,14 @@ func SignIn(ctx *middleware.Context) {
 
 	user, err := models.GetUserByName(userName)
 	if err != nil {
-		ctx.HTML(200, "user/signin")
+		ctx.HTML(500, "user/signin")
 		return
 	}
 
 	secret := base.EncodeMd5(user.Rands + user.Passwd)
 	value, _ := ctx.GetSecureCookie(secret, base.CookieRememberName)
 	if value != user.Name {
-		ctx.HTML(200, "user/signin")
+		ctx.HTML(500, "user/signin")
 		return
 	}
 
diff --git a/templates/repo/diff.tmpl b/templates/repo/diff.tmpl
index 396aa795f..a041284d0 100644
--- a/templates/repo/diff.tmpl
+++ b/templates/repo/diff.tmpl
@@ -30,7 +30,7 @@
                 {{range .Diff.Files}}
                 <li>
                     <div class="diff-counter count pull-right">
-                        {{if Subtract .Addition .Deletion}}
+                        {{if Add .Addition .Deletion}}
                         <span class="add" data-line="{{.Addition}}">{{.Addition}}</span>
                         <span class="bar">
                             <span class="pull-left add"></span>
@@ -53,7 +53,7 @@
         <div class="panel panel-default diff-file-box diff-box file-content" id="diff-2">
             <div class="panel-heading">
                 <div class="diff-counter count pull-left">
-                    {{if Subtract .Addition .Deletion}}
+                    {{if Add .Addition .Deletion}}
                     <span class="add" data-line="{{.Addition}}">+ {{.Addition}}</span>
                     <span class="bar">
                         <span class="pull-left add"></span>
@@ -91,338 +91,12 @@
                         </tr>
                         {{end}}
                         {{end}}
-                       <!--  <tr class="same-code nl-2 ol-2">
-                            <td class="lines-num lines-num-old">
-                                <span rel="L1">2</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="L1">2</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="same-code nl-3 ol-3">
-                            <td class="lines-num lines-num-old">
-                                <span rel="L3">3</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="L3">3</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="add-code nl-4 ol-0">
-                            <td class="lines-num lines-num-old">
-                                <span rel="add">+</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="L4">4</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="add-code nl-5 ol-0">
-                            <td class="lines-num lines-num-old">
-                                <span rel="add">+</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="L5">5</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="del-code nl-0 ol-4">
-                            <td class="lines-num lines-num-old">
-                                <span rel="L4">4</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="del">-</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="del-code nl-0 ol-5">
-                            <td class="lines-num lines-num-old">
-                                <span rel="L5">5</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="del">-</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="del-code nl-0 ol-6">
-                            <td class="lines-num lines-num-old">
-                                <span rel="L6">6</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="del">-</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="del-code nl-0 ol-7">
-                            <td class="lines-num lines-num-old">
-                                <span rel="L7">7</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="del">-</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="same-code nl-6 ol-8">
-                            <td class="lines-num lines-num-old">
-                                <span rel="L8">8</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="L6">6</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="same-code nl-7 ol-9">
-                            <td class="lines-num lines-num-old">
-                                <span rel="L1">9</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="L1">7</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr>
-                        <tr class="same-code nl-8 ol-10">
-                            <td class="lines-num lines-num-old">
-                                <span rel="L1">10</span>
-                            </td>
-                            <td class="lines-num lines-num-new">
-                                <span rel="L1">8</span>
-                            </td>
-                            <td class="lines-code">
-                                <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                            </td>
-                        </tr> -->
                     </tbody>
                 </table>
                 {{end}}
             </div>
         </div>
         {{end}}
-
-        <!-- <div class="panel panel-default diff-file-box diff-box file-content">
-            <div class="panel-heading">
-                <div class="diff-counter count pull-left">
-                    <span class="add" data-line="2">+ 2</span>
-                    <span class="bar">
-                        <span class="pull-left add"></span>
-                        <span class="pull-left del"></span>
-                    </span>
-                    <span class="del" data-line="4">- 4</span>
-                </div>
-                <a class="btn btn-default btn-sm pull-right" href="#">View File</a>
-                <span class="file">data/test/bson_test/simple_type.go</span>
-            </div>
-            <div class="panel-body file-body file-code code-view code-diff">
-                <table>
-                    <tbody>
-                    <tr class="same-code nl-1 ol-1">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L1">1</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L1">1</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="same-code nl-2 ol-2">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L1">2</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L1">2</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="same-code nl-3 ol-3">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L3">3</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L3">3</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="add-code nl-4 ol-0">
-                        <td class="lines-num lines-num-old">
-                            <span rel="add">+</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L4">4</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="add-code nl-5 ol-0">
-                        <td class="lines-num lines-num-old">
-                            <span rel="add">+</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L5">5</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="del-code nl-0 ol-4">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L4">4</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="del">-</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="del-code nl-0 ol-5">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L5">5</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="del">-</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="del-code nl-0 ol-6">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L6">6</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="del">-</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="del-code nl-0 ol-7">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L7">7</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="del">-</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="same-code nl-6 ol-8">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L8">8</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L6">6</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="same-code nl-7 ol-9">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L1">9</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L1">7</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="same-code nl-8 ol-10">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L1">10</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L1">8</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="ellipsis-code">
-                        <td class="text-center lines-ellipsis" colspan="2">
-                            <i class="fa fa-ellipsis-h"></i>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="same-code nl-8 ol-10">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L1">10</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L1">8</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    <tr class="same-code nl-8 ol-10">
-                        <td class="lines-num lines-num-old">
-                            <span rel="L1">10</span>
-                        </td>
-                        <td class="lines-num lines-num-new">
-                            <span rel="L1">8</span>
-                        </td>
-                        <td class="lines-code">
-                            <pre>	"github.com/youtube/vitess/go/bson"</pre>
-                        </td>
-                    </tr>
-                    </tbody>
-                </table>
-            </div>
-        </div>
-
-        <div class="panel panel-default diff-file-box diff-box file-content">
-            <div class="panel-heading">
-                <div class="diff-counter count pull-left">
-                    <span class="add" data-line="0">BIN</span>
-                    <span class="bar">
-                        <span class="pull-left add"></span>
-                        <span class="pull-left del"></span>
-                    </span>
-                    <span class="del" data-line="1"></span>
-                </div>
-                <a class="btn btn-default btn-sm pull-right" href="#">View File</a>
-                <span class="file">data/test/bson_test/simple_type.png</span>
-            </div>
-            <div class="panel-body file-body file-code code-view code-bin">
-                <table>
-                    <tbody>
-                    <tr class="text-center"><td><img src="http://1.gravatar.com/avatar/f72f7454ce9d710baa506394f68f4132?s=200" alt=""/></td></tr>
-                    </tbody>
-                </table>
-            </div>
-        </div> -->
     </div>
 </div>
 {{template "base/footer" .}}

From a5fcaae5ee550ef28a77b9387f6c75192ef1a88a Mon Sep 17 00:00:00 2001
From: Unknown <joe2010xtmf@163.com>
Date: Fri, 11 Apr 2014 12:26:23 -0400
Subject: [PATCH 12/12] UPDATE README

---
 README.md                  | 4 +++-
 README_ZH.md               | 4 +++-
 templates/base/navbar.tmpl | 4 ++--
 3 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/README.md b/README.md
index adb70cde7..d30e81356 100644
--- a/README.md
+++ b/README.md
@@ -45,8 +45,9 @@ Make sure you install [Prerequirements](https://github.com/gogits/gogs/wiki/Prer
 
 There are two ways to install Gogs:
 
-- [Install from binary](https://github.com/gogits/gogs/wiki/Install-from-binary): **STRONGLY RECOMMENDED** for just try and deployment!
+- [Install from binary](https://github.com/gogits/gogs/wiki/Install-from-binary): **STRONGLY RECOMMENDED**
 - [Install from source](https://github.com/gogits/gogs/wiki/Install-from-source)
+- [Ship with Docker](https://github.com/gogits/gogs/tree/master/dockerfiles)
 
 ## Acknowledgments
 
@@ -56,6 +57,7 @@ There are two ways to install Gogs:
 - System Monitor Status is inspired by [GoBlog](https://github.com/fuxiaohei/goblog).
 - Usage and modification from [beego](http://beego.me) modules.
 - Thanks [gobuild.io](http://gobuild.io) for providing binary compile and download service.
+- Great thanks to [Docker China](http://www.dockboard.org/) for providing [dockerfiles](https://github.com/gogits/gogs/tree/master/dockerfiles).
 
 ## Contributors
 
diff --git a/README_ZH.md b/README_ZH.md
index 1bfffc81b..43303cdf5 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -39,8 +39,9 @@ Gogs 完全使用 Go 语言来实现对 Git 数据的操作,实现 **零** 依
 
 然后,您可以通过以下两种方式来安装 Gogs:
 
-- [二进制安装](https://github.com/gogits/gogs/wiki/Install-from-binary): **强烈推荐** 适合体验者和实际部署
+- [二进制安装](https://github.com/gogits/gogs/wiki/Install-from-binary): **强烈推荐**
 - [源码安装](https://github.com/gogits/gogs/wiki/Install-from-source)
+- [采用 Docker 部署](https://github.com/gogits/gogs/tree/master/dockerfiles)
 
 ## 特别鸣谢
 
@@ -50,6 +51,7 @@ Gogs 完全使用 Go 语言来实现对 Git 数据的操作,实现 **零** 依
 - [beego](http://beego.me) 模块的使用与修改。
 - [martini](http://martini.codegangsta.io/) 的路由与中间件机制。
 - 感谢 [gobuild.io](http://gobuild.io) 提供二进制编译与下载服务。
+- 感谢 [Docker 中文社区](http://www.dockboard.org/) 提供的 [dockerfiles](https://github.com/gogits/gogs/tree/master/dockerfiles)。
 
 ## 贡献成员
 
diff --git a/templates/base/navbar.tmpl b/templates/base/navbar.tmpl
index 1f908f39c..8d6ca47e9 100644
--- a/templates/base/navbar.tmpl
+++ b/templates/base/navbar.tmpl
@@ -4,7 +4,7 @@
             <a id="nav-logo" class="nav-item pull-left{{if .PageIsHome}} active{{end}}" href="/"><img src="/img/favicon.png" alt="Gogs Logo" id="logo"></a>
             <a class="nav-item pull-left{{if .PageIsUserDashboard}} active{{end}}" href="/">Dashboard</a>
             <a class="nav-item pull-left{{if .PageIsHelp}} active{{end}}" href="https://github.com/gogits/gogs/wiki">Help</a>{{if .IsSigned}}
-            <form class="nav-item pull-left{{if .PageIsNewRepo}} active{{end}}" id="nav-search-form">
+            {{if .Repository}}<form class="nav-item pull-left{{if .PageIsNewRepo}} active{{end}}" id="nav-search-form">
                 <div class="input-group">
                     <div class="input-group-btn">
                         <button type="button" class="btn btn-sm btn-default dropdown-toggle" data-toggle="dropdown">All Repositories <span class="caret"></span></button>
@@ -16,7 +16,7 @@
                     </div>
                     <input type="search" class="form-control input-sm" name="q" placeholder="search code, commits and issues"/>
                 </div>
-            </form>
+            </form>{{end}}
             <a id="nav-out" class="nav-item navbar-right navbar-btn btn btn-danger" href="/user/logout/"><i class="fa fa-power-off fa-lg"></i></a>
             <a id="nav-avatar" class="nav-item navbar-right{{if .PageIsUserProfile}} active{{end}}" href="{{.SignedUser.HomeLink}}" data-toggle="tooltip" data-placement="bottom" title="{{.SignedUserName}}">
                 <img src="{{.SignedUser.AvatarLink}}?s=28" alt="user-avatar" title="username"/>