mirror of
https://github.com/dokku/dokku.git
synced 2026-05-18 05:05:46 +02:00
initial commit
This commit is contained in:
32
bootstrap.sh
Normal file
32
bootstrap.sh
Normal file
@@ -0,0 +1,32 @@
|
||||
apt-get install -y linux-image-extra-`uname -r`
|
||||
apt-get install -y software-properties-common
|
||||
add-apt-repository -y ppa:dotcloud/lxc-docker
|
||||
apt-get update
|
||||
apt-get install -y lxc-docker
|
||||
apt-get install -y git ruby nginx make
|
||||
|
||||
cd /usr/local/bin
|
||||
wget https://raw.github.com/progrium/gitreceive/master/gitreceive
|
||||
chmod +x gitreceive
|
||||
gitreceive init
|
||||
|
||||
cd ~
|
||||
git clone https://github.com/progrium/buildstep.git
|
||||
cd buildstep
|
||||
cp buildstep /home/git/buildstep
|
||||
make
|
||||
|
||||
|
||||
cd ~
|
||||
git clone https://github.com/progrium/dokku.git
|
||||
cd dokku
|
||||
cp receiver /home/git/receiver
|
||||
cp nginx-app-conf /home/git/nginx-app-conf
|
||||
cp nginx-reloader.conf /etc/init/nginx-reloader.conf
|
||||
|
||||
start nginx-reloader
|
||||
|
||||
echo $HOSTNAME > /home/git/DOMAIN
|
||||
|
||||
echo "Be sure to upload a public key for your user:"
|
||||
echo " cat ~/.ssh/id_rsa.pub | ssh root@$HOStNAME \"gitreceive upload-key progrium\""
|
||||
10
nginx-app-conf
Executable file
10
nginx-app-conf
Executable file
@@ -0,0 +1,10 @@
|
||||
#!/bin/bash
|
||||
APP="$1"; PORT="$2"; HOSTNAME="$3"
|
||||
cat<<EOF
|
||||
upstream $APP { server 127.0.0.1:$PORT; }
|
||||
server {
|
||||
listen 80;
|
||||
server_name $APP.$HOSTNAME;
|
||||
location / { proxy_pass http://$APP; }
|
||||
}
|
||||
EOF
|
||||
4
nginx-reloader.conf
Normal file
4
nginx-reloader.conf
Normal file
@@ -0,0 +1,4 @@
|
||||
script
|
||||
echo | sudo -u git nc -l -U /home/git/reload-nginx && /etc/init.d/nginx reload
|
||||
end script
|
||||
respawn
|
||||
34
receiver
Executable file
34
receiver
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/bin/bash
|
||||
set -e
|
||||
echo "-----> Building $1 ..."
|
||||
APP="app/$1"
|
||||
cat | $HOME/buildstep $APP
|
||||
echo "-----> Build complete!"
|
||||
echo "-----> Deploying $1 ..."
|
||||
if [[ -f "$HOME/DOMAIN" ]]; then
|
||||
DOMAIN=$(< "$HOME/DOMAIN")
|
||||
fi
|
||||
if [[ -f "$HOME/$1/PORT" ]]; then
|
||||
OLDID=$(< "$HOME/$1/CONTAINER")
|
||||
docker kill $OLDID > /dev/null
|
||||
PORT=$(< "$HOME/$1/PORT")
|
||||
ID=$(docker run -d -p ":$PORT" -e "PORT=$PORT" $APP /bin/bash -c "cd /app && ./start")
|
||||
echo $ID > "$HOME/$1/CONTAINER"
|
||||
else
|
||||
ID=$(docker run -d -p 5000 -e PORT=5000 $APP /bin/bash -c "cd /app && ./start")
|
||||
echo $ID > "$HOME/$1/CONTAINER"
|
||||
PORT=$(docker inspect $ID | ruby -e 'require"json";puts JSON.parse(STDIN.read)["NetworkSettings"]["PortMapping"]["5000"]')
|
||||
echo $PORT > "$HOME/$1/PORT"
|
||||
if [[ $DOMAIN ]]; then
|
||||
$HOME/nginx-app-conf $1 $PORT $DOMAIN > $HOME/$1/nginx.conf
|
||||
nc -U $HOME/reload-nginx
|
||||
fi
|
||||
fi
|
||||
echo
|
||||
echo "-----> Application deployed:"
|
||||
if [[ $DOMAIN ]]; then
|
||||
echo " http://$1.$DOMAIN"
|
||||
else
|
||||
echo " http://$(hostname -i | cut -d' ' -f3):$PORT"
|
||||
fi
|
||||
echo
|
||||
Reference in New Issue
Block a user