From 5966dd78e67de613bea53a517712645c8449b358 Mon Sep 17 00:00:00 2001 From: crystaldust Date: Thu, 10 Apr 2014 19:56:19 +0800 Subject: [PATCH] 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) +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 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 --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 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 +