diff --git a/.docker/control.sh b/.docker/control.sh new file mode 100755 index 0000000..fb9e163 --- /dev/null +++ b/.docker/control.sh @@ -0,0 +1,30 @@ +#!/bin/bash +ACTION=$1 + +if [ "$ACTION" = "syncdb" ]; then + docker run -it --rm -e DB_USER=postgres -e DB_NAME=postgres --net container:snipt-net snipt/snipt python manage.py syncdb --noinput +fi + +if [ "$ACTION" = "migrate" ]; then + docker run -it --rm -e DB_USER=postgres -e DB_NAME=postgres --net container:snipt-net snipt/snipt python manage.py migrate --noinput +fi + +if [ "$ACTION" = "collectstatic" ]; then + docker run -it --rm -v $(pwd)/static:/app/snipt/static --net container:snipt-net snipt/snipt python manage.py collectstatic --noinput +fi + +if [ "$ACTION" = "deploy" ]; then + echo "pulling latest image" + docker pull snipt/snipt + echo "stopping app" + docker kill snipt-app + docker rm snipt-app + echo "deploying new container" + docker run -it --name snipt-app -d -e DB_USER=postgres -e DB_NAME=postgres -e DEBUG=false --net container:snipt-net snipt/snipt + echo "done" +fi + +if [ "$ACTION" = "backupdb" ]; then + echo "backing up db" + docker run --rm --net container:snipt-net --entrypoint pg_dump postgres:9.1 -h 127.0.0.1 -U postgres snipt +fi diff --git a/.docker/destroy.sh b/.docker/destroy.sh index 3fe2b2b..5be7ef2 100755 --- a/.docker/destroy.sh +++ b/.docker/destroy.sh @@ -7,28 +7,29 @@ fi for CMP in $COMPONENTS; do if [ "$CMP" = "postgres" -o "$CMP" = "all" ]; then echo "destroying postgres" - docker kill snipt-pg - docker rm snipt-pg + docker kill snipt-pg > /dev/null + docker rm snipt-pg > /dev/null fi if [ "$CMP" = "elasticsearch" -o "$CMP" = "all" ]; then echo "destroying elasticsearch" - docker kill snipt-es - docker rm snipt-es + docker kill snipt-es > /dev/null + docker rm snipt-es > /dev/null fi if [ "$CMP" = "app" -o "$CMP" = "all" ]; then echo "destroying app" - docker kill snipt-app - docker rm snipt-app + docker kill snipt-app > /dev/null + docker rm snipt-app > /dev/null fi if [ "$CMP" = "proxy" -o "$CMP" = "all" ]; then echo "destroying proxy" - docker kill snipt-proxy - docker rm snipt-proxy + docker kill snipt-proxy > /dev/null + docker rm snipt-proxy > /dev/null fi if [ "$CMP" = "all" ]; then - docker kill snipt-net - docker rm snipt-net + echo "destroying shared net" + docker kill snipt-net > /dev/null + docker rm snipt-net > /dev/null fi done diff --git a/.docker/nginx.conf b/.docker/nginx.conf index fade215..e9fc8c9 100644 --- a/.docker/nginx.conf +++ b/.docker/nginx.conf @@ -17,7 +17,7 @@ http { '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; - access_log /var/log/nginx/access.log main; + access_log off; sendfile on; #tcp_nopush on; @@ -29,11 +29,69 @@ http { upstream backend_snipt { server 127.0.0.1:8000; } + server { + listen 80; + server_name *.snipt.net; + + if ($host ~* "^([^.]+(\.[^.]+)*)\.snipt.net$"){ + set $subd $1; + rewrite ^(.*)$ https://$subd.snipt.net$1 permanent; + break; + } + } + server { + listen 80; + server_name snipt.net www.snipt.net beta.snipt.net; + rewrite ^(.*) https://snipt.net$1 permanent; + } + server { + listen 443; + server_name www.snipt.net; + + access_log off; + error_log /logs/nginx.log; + + ssl on; + ssl_certificate /etc/certs/2013-dnsimple/snipt.net.crt; + ssl_certificate_key /etc/certs/2013-dnsimple/snipt.net.key; + + rewrite ^(.*) https://snipt.net$1 permanent; + } + server { + listen 443; + server_name snipt.net *.snipt.net; + + access_log off; + error_log /logs/nginx.log; + + ssl on; + ssl_certificate /etc/certs/2013-dnsimple/snipt.net.crt; + ssl_certificate_key /etc/certs/2013-dnsimple/snipt.net.key; + + location ~* /favicon.ico { + root /app/snipt/static/images/; + expires max; + } + + location / { + proxy_pass http://backend_snipt; + proxy_set_header Host $host; + } + + location /static/ { + alias /app/snipt/static/; + expires max; + } + + location /public/feed/ { + rewrite ^/public/feed/$ https://snipt.net/public/?rss permanent; + } + } server { listen 80 default_server; access_log off; - error_log /var/log/nginx/snipt.log; + error_log /logs/nginx.log; location ~* /favicon.ico { root /app/snipt/static/images/; @@ -52,3 +110,4 @@ http { } } + diff --git a/.docker/start.sh b/.docker/start.sh index 85e977a..ba71255 100755 --- a/.docker/start.sh +++ b/.docker/start.sh @@ -8,37 +8,39 @@ fi for CMP in $COMPONENTS; do if [ "$CMP" = "all" ]; then # start net container - docker run -it -p 8000:80 --name snipt-net -d debian:jessie bash + docker run -it -p 80:80 -p 443:443 --name snipt-net -d debian:jessie bash > /dev/null sleep 1 fi if [ "$CMP" = "postgres" -o "$CMP" = "all" ]; then echo "starting postgres" - docker run -it -d --name snipt-pg --net container:snipt-net postgres:9.1 + docker run -it -d --name snipt-pg --net container:snipt-net postgres:9.1 > /dev/null # wait for PG to start sleep 5 + # create db + docker run -it --rm --net container:snipt-net --entrypoint createdb postgres:9.1 -h 127.0.0.1 -U postgres -E UTF8 -O postgres snipt fi if [ "$CMP" = "elasticsearch" -o "$CMP" = "all" ]; then echo "starting elasticsearch" - docker run -it -d --name snipt-es --net container:snipt-net arcus/elasticsearch + docker run -it -d --name snipt-es --net container:snipt-net arcus/elasticsearch > /dev/null sleep 1 fi if [ "$CMP" = "app" -o "$CMP" = "all" ]; then echo "starting app" # migrate - docker run -it --rm -e DB_USER=postgres -e DB_NAME=postgres --net container:snipt-net snipt/snipt python manage.py syncdb --noinput - docker run -it --rm -e DB_USER=postgres -e DB_NAME=postgres --net container:snipt-net snipt/snipt python manage.py migrate --noinput + docker run -it --rm -e DB_USER=postgres -e DB_NAME=snipt --net container:snipt-net snipt/snipt python manage.py syncdb --noinput + docker run -it --rm -e DB_USER=postgres -e DB_NAME=snipt --net container:snipt-net snipt/snipt python manage.py migrate --noinput # collect static docker run -it --rm -v $(pwd)/static:/app/snipt/static --net container:snipt-net snipt/snipt python manage.py collectstatic --noinput # run app - docker run -it --name snipt-app -d -e DB_USER=postgres -e DB_NAME=postgres -e DEBUG=false --net container:snipt-net snipt/snipt + docker run -it --name snipt-app -d -e DB_USER=postgres -e DB_NAME=snipt -e DEBUG=false --net container:snipt-net snipt/snipt > /dev/null sleep 1 fi if [ "$CMP" = "proxy" -o "$CMP" = "all" ]; then echo "starting proxy" - docker run -d --name snipt-proxy -it -v $(pwd)/.docker/nginx.conf:/etc/nginx/nginx.conf -v $(pwd)/static:/app/snipt/static --net container:snipt-net nginx nginx -g 'daemon off;' -c /etc/nginx/nginx.conf + docker run -d --name snipt-proxy -it -v /var/log/snipt:/logs -v $(pwd)/.docker/nginx.conf:/etc/nginx/nginx.conf -v $(pwd)/static:/app/snipt/static -v /etc/certs:/etc/certs --net container:snipt-net nginx nginx -g 'daemon off;' -c /etc/nginx/nginx.conf > /dev/null fi done