From 1d5515a237466c111e90c96415ae89e6f26bb21f Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Tue, 2 Jul 2019 11:47:08 +0200 Subject: [PATCH 1/3] few scripts to build the docker images automatically and prompt the user about the risks and the tag to use --- service/docker/build_all.sh | 5 +++++ service/docker/build_codefresh.sh | 5 +++++ service/docker/build_database.sh | 17 +++++++++++++++++ service/docker/build_scidash.sh | 17 +++++++++++++++++ service/docker/build_virgo.sh | 17 +++++++++++++++++ 5 files changed, 61 insertions(+) create mode 100755 service/docker/build_all.sh create mode 100755 service/docker/build_codefresh.sh create mode 100755 service/docker/build_database.sh create mode 100755 service/docker/build_scidash.sh create mode 100755 service/docker/build_virgo.sh diff --git a/service/docker/build_all.sh b/service/docker/build_all.sh new file mode 100755 index 00000000..7f0e00f7 --- /dev/null +++ b/service/docker/build_all.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +./build_database.sh +./build_virgo.sh +./build_scidash.sh diff --git a/service/docker/build_codefresh.sh b/service/docker/build_codefresh.sh new file mode 100755 index 00000000..13d3ebf3 --- /dev/null +++ b/service/docker/build_codefresh.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +docker build -f Dockerfile-virgo -t metacell/scidash_virgo:latest +docker build -f Dockerfile-postgres -t metacell/scidash_db:latest +docker build -f Dockerfile-scidash -t metacell/scidash:latest diff --git a/service/docker/build_database.sh b/service/docker/build_database.sh new file mode 100755 index 00000000..8478a351 --- /dev/null +++ b/service/docker/build_database.sh @@ -0,0 +1,17 @@ +#!/bin/bash +echo "We are going to build the scidash Database, be carefull since" +echo " this can overwrite the existing container if another one is already running" +while true; do + read -p "Do you wish to install to continue?" yn + case $yn in + [Yy]* ) read -p "Please type the tag you want to use for this build (default will use the latest and overwrite this)" tag; + if [[ -z "$tag" ]]; then + docker build -f Dockerfile-postgres -t metacell/scidash_db:latest + else + docker build -f Dockerfile-postgres -t metacell/scidash_db:$tag + fi + break;; + [Nn]* ) exit;; + * ) echo "Please answer yes or no.";; + esac +done diff --git a/service/docker/build_scidash.sh b/service/docker/build_scidash.sh new file mode 100755 index 00000000..1f808746 --- /dev/null +++ b/service/docker/build_scidash.sh @@ -0,0 +1,17 @@ +#!/bin/bash +echo "We are going to build the scidash image, be carefull since this" +echo "can overwrite the existing image if another one is already running" +while true; do + read -p "Do you wish to install to continue?" yn + case $yn in + [Yy]* ) read -p "Please type the tag you want to use for this build (default will use the latest and overwrite this)" tag; + if [[ -z "$tag" ]]; then + docker build -f Dockerfile-scidash -t metacell/scidash:latest + else + docker build -f Dockerfile-scidash -t metacell/scidash:$tag + fi + break;; + [Nn]* ) exit;; + * ) echo "Please answer yes or no.";; + esac +done diff --git a/service/docker/build_virgo.sh b/service/docker/build_virgo.sh new file mode 100755 index 00000000..75023b0a --- /dev/null +++ b/service/docker/build_virgo.sh @@ -0,0 +1,17 @@ +#!/bin/bash +echo "We are going to build the Geppetto\'s Virgo, be carefull since this" +echo "can overwrite the existing image if another one is already built" +while true; do + read -p "Do you wish to install to continue?" yn + case $yn in + [Yy]* ) read -p "Please type the tag you want to use for this build (default will use the latest and overwrite this)" tag; + if [[ -z "$tag" ]]; then + docker build -f Dockerfile-virgo -t metacell/scidash_geppetto:latest + else + docker build -f Dockerfile-virgo -t metacell/scidash_geppetto:$tag + fi + break;; + [Nn]* ) exit;; + * ) echo "Please answer yes or no.";; + esac +done From 8daa51d37c490762aeec126ef5e8fa2e3ff26409 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Tue, 2 Jul 2019 11:48:36 +0200 Subject: [PATCH 2/3] docker compose edited to reflect the image names used in the scripts --- service/deployment/docker-compose.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/service/deployment/docker-compose.yml b/service/deployment/docker-compose.yml index 20bf9668..fdf873f5 100644 --- a/service/deployment/docker-compose.yml +++ b/service/deployment/docker-compose.yml @@ -6,15 +6,15 @@ services: expose: - "6379" scidash-postgres: - image: scidash_db + image: metacell/scidash_db:latest expose: - "5432" volumes: - ./database:/var/lib/postgresql/ scidash: - image: scidash_image_dario - ports: - - 8001:8000 + image: metacell/scidash:latest + expose: + - "8000" depends_on: - scidash-redis - scidash-postgres From 0fa78ec9b47e6b7836d83d3566c1a7fe60fde639 Mon Sep 17 00:00:00 2001 From: Dario Del Piano Date: Tue, 2 Jul 2019 11:56:31 +0200 Subject: [PATCH 3/3] haproxy configuration and README pushed --- service/deployment/haproxy/Dockerfile | 16 ++++ service/deployment/haproxy/README | 19 +++++ service/deployment/haproxy/haproxy.cfg | 51 +++++++++++ service/deployment/haproxy/spike.asu.edu.cert | 32 +++++++ service/deployment/haproxy/spike.asu.edu.key | 52 ++++++++++++ service/deployment/haproxy/spike.asu.edu.pem | 84 +++++++++++++++++++ 6 files changed, 254 insertions(+) create mode 100644 service/deployment/haproxy/Dockerfile create mode 100644 service/deployment/haproxy/README create mode 100644 service/deployment/haproxy/haproxy.cfg create mode 100644 service/deployment/haproxy/spike.asu.edu.cert create mode 100644 service/deployment/haproxy/spike.asu.edu.key create mode 100644 service/deployment/haproxy/spike.asu.edu.pem diff --git a/service/deployment/haproxy/Dockerfile b/service/deployment/haproxy/Dockerfile new file mode 100644 index 00000000..dba7203e --- /dev/null +++ b/service/deployment/haproxy/Dockerfile @@ -0,0 +1,16 @@ +# Dockerfile + +# Use the offical haproxy base image +FROM haproxy:1.7 + +# Copy our haproxy configuration into the docker container +COPY ./haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg + +# Copy our ssl certificate into the docker container +COPY ./spike.asu.edu.pem /private/spike.asu.edu.pem + +# HAProxy requires a user & group named haproxy in order to run +RUN groupadd haproxy && useradd -g haproxy haproxy + +# HAProxy also requires /var/lib/haproxy/run/haproxy/ to be created before it's run +RUN mkdir -p /var/lib/haproxy/run/haproxy/ diff --git a/service/deployment/haproxy/README b/service/deployment/haproxy/README new file mode 100644 index 00000000..836b8e38 --- /dev/null +++ b/service/deployment/haproxy/README @@ -0,0 +1,19 @@ +INSTRUCTIONS: + +1. Edit the haproxy.cfg, in the section pasted below: + +backend www-backend + # Tell haproxy to redirect all http traffic to https + redirect scheme https if !{ ssl_fc } + server www-1 172.20.0.4:8000 check + +Change the ip address in the last line to match the one used by docker container that runs Scidash. +Rebuild the haproxy docker image. + +======================================= + +2. Run the image as per below + +docker run --net=host -it haproxy:latest + +(if the image has been built as haproxy:latest, differently change that part to point to the relevant image just built). diff --git a/service/deployment/haproxy/haproxy.cfg b/service/deployment/haproxy/haproxy.cfg new file mode 100644 index 00000000..db69925d --- /dev/null +++ b/service/deployment/haproxy/haproxy.cfg @@ -0,0 +1,51 @@ +#haproxy.cfg + +global + chroot /var/lib/haproxy + user haproxy + group haproxy + pidfile /var/run/haproxy.pid + + # Default SSL material locations + ca-base /usr/local/etc/ssl/certs + crt-base /usr/local/etc/ssl/private + + # Default ciphers to use on SSL-enabled listening sockets. + ssl-default-bind-options no-sslv3 no-tls-tickets force-tlsv12 + ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS + + spread-checks 4 + tune.maxrewrite 1024 + tune.ssl.default-dh-param 2048 + +defaults + mode http + balance roundrobin + + option dontlognull + option dontlog-normal + option redispatch + + maxconn 5000 + timeout connect 5s + timeout client 20s + timeout server 20s + timeout queue 30s + timeout http-request 5s + timeout http-keep-alive 15s + +frontend www-http + bind 0.0.0.0:80 + reqadd X-Forwarded-Proto:\ http + default_backend www-backend + +frontend www-https + #Replace this with the name of your ssl certificate + bind 0.0.0.0:8002 ssl crt /private/spike.asu.edu.pem + reqadd X-Forwarded-Proto:\ https + default_backend www-backend + +backend www-backend + # Tell haproxy to redirect all http traffic to https + redirect scheme https if !{ ssl_fc } + server www-1 172.20.0.4:8000 check diff --git a/service/deployment/haproxy/spike.asu.edu.cert b/service/deployment/haproxy/spike.asu.edu.cert new file mode 100644 index 00000000..4259352d --- /dev/null +++ b/service/deployment/haproxy/spike.asu.edu.cert @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFjjCCA3agAwIBAgIJAKGXxyS8E2+MMA0GCSqGSIb3DQEBCwUAMFwxCzAJBgNV +BAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCU0YxGzAZBgNVBAoMElNjaWRh +c2ggRGV2IFNlcnZlcjEWMBQGA1UEAwwNc3Bpa2UuYXN1LmVkdTAeFw0xOTAzMTEx +NjM3NDBaFw0yOTAzMDgxNjM3NDBaMFwxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJD +QTELMAkGA1UEBwwCU0YxGzAZBgNVBAoMElNjaWRhc2ggRGV2IFNlcnZlcjEWMBQG +A1UEAwwNc3Bpa2UuYXN1LmVkdTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK1uDC37LGfkPvXECXEYOZIObmGpPqrsXbJG0vGXJ9Bn4CqQt3SfrK+NjV92 +syzpVY6E+QDsd11qTeCF2ZCmMx636tjnDVA8UebN7x00YIHQktCtgyiJ7Qr0r8pg +/4y/DRfp3xP78PmRQ7PG9e6KYpIjL0icKza5qCpk4DlXvsYNnleoSUHuK4lxchjC +Wjm5sKYiPGAetSo9+hWSyGUo/fAdNJ4WwMm/bETYqtOvTiJAhwFlWyzGTxSEbtZV +KzlwPC2ZVNd3yLKlE4o5iR2Rscq+Pr8SGXWUFe+ZOGkDlhmcjD52Ue3i6K/2HQ7w +hzS1safX4LUYvz0F0Dc+wsDTEiXwCqsVE7TZ1X5T6nhRSjG6eucvHZiahGsEs3gh +xYStwFZToa9PcG+wYqtTAdpARtdfJdXdaX9Ap2/go8HVRVlIkFrY8fK+K6NQSU4A +dxfao6hBs9p1JRKPRUpmgG4iQHNGUk2K1vDvMzr8eff+lzKxdc5n6AbFvt0a47o1 +vhVMkjTNwbgrXbpQbkp48Ya8rNfrDR+BAROnI7BOGFN/nzMhTzR4z/HRamjfzNi3 +8z84kQhxAmh/0RZyvcX9Qd5A3eWPQK9dZQtT/3ygDBl/bVroq9clooM20sEyBTmM +o1K49AYpONAgvnXgrM8H2EBiXc+0SQyQMKwzuyOylryGTlwHAgMBAAGjUzBRMB0G +A1UdDgQWBBQnUtOCLi35xS7pS+g2bHLQaOLuQTAfBgNVHSMEGDAWgBQnUtOCLi35 +xS7pS+g2bHLQaOLuQTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IC +AQAOxgUGN+ONNqa6D8y9y65K48Bx/uautGs9w5S3V9WfKHvtPEMglKSBigBzYe99 +da8Z2ILHtRWc0Fh82WI+A2o9EYtZf10iQ9RiVriP92BRUDos6BNVuaz2Dw7k6Med +lzz8PoqqnMx9SLCe+ZtvJ6Pst5b1Ty0Iew490ILeYJEFaG7/MoTgnIV21182XyeJ +BWCBGQxHWEf57rSdXK3kYTFfK1GFMTWyVQ3rzK2nrM3dqtjHGIy/lCei9Zp87KXN +yJOneLf7pKbJ3S8FPt5WruJDhK/0pLKDf3LhV+iDZvBFKKpHmtTL2v4OIl6qUrmp +FAEhWZSpa6oqUCgB3YtPxiSKOL76R5bfUuisEL9FNeL0CCirQjoFxAoGJD3rQODR +P8tUDuYxmNROuhAy/SmiU/Hb0MIw07LHTRo6YgVra5HEuwp9wUjEouDYACxmyH5e +dXs3daU0+Hkv3LW3V4Ri9KmkdDDFc1/ZuUlcxv6Xm5ZGGt+6Xzb2FxIaXowRCHMd +2lXdT39/9vG4ew12NTQ0ilX1PTIQnXTctDHMoex7sy1p6bgDKe4GSbKU7IIian9E +lC14At7mB3ayNfxj4Evh7deSvcZYEIAatvtm2pinSuAPWJp+XqCEdYckP8qNnG7J +OqEvDZEYfryIu2g3+2tB7N7meFO1hOrnQ9bNejeJtKjQLg== +-----END CERTIFICATE----- diff --git a/service/deployment/haproxy/spike.asu.edu.key b/service/deployment/haproxy/spike.asu.edu.key new file mode 100644 index 00000000..ec1a2c07 --- /dev/null +++ b/service/deployment/haproxy/spike.asu.edu.key @@ -0,0 +1,52 @@ +-----BEGIN PRIVATE KEY----- +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 +8M3dYpATk43YgJuacAIQqsIRGHnUCks= +-----END PRIVATE KEY----- diff --git a/service/deployment/haproxy/spike.asu.edu.pem b/service/deployment/haproxy/spike.asu.edu.pem new file mode 100644 index 00000000..1dc9683a --- /dev/null +++ b/service/deployment/haproxy/spike.asu.edu.pem @@ -0,0 +1,84 @@ +-----BEGIN CERTIFICATE----- +MIIFjjCCA3agAwIBAgIJAKGXxyS8E2+MMA0GCSqGSIb3DQEBCwUAMFwxCzAJBgNV +BAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCU0YxGzAZBgNVBAoMElNjaWRh +c2ggRGV2IFNlcnZlcjEWMBQGA1UEAwwNc3Bpa2UuYXN1LmVkdTAeFw0xOTAzMTEx +NjM3NDBaFw0yOTAzMDgxNjM3NDBaMFwxCzAJBgNVBAYTAlVTMQswCQYDVQQIDAJD +QTELMAkGA1UEBwwCU0YxGzAZBgNVBAoMElNjaWRhc2ggRGV2IFNlcnZlcjEWMBQG +A1UEAwwNc3Bpa2UuYXN1LmVkdTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC +ggIBAK1uDC37LGfkPvXECXEYOZIObmGpPqrsXbJG0vGXJ9Bn4CqQt3SfrK+NjV92 +syzpVY6E+QDsd11qTeCF2ZCmMx636tjnDVA8UebN7x00YIHQktCtgyiJ7Qr0r8pg +/4y/DRfp3xP78PmRQ7PG9e6KYpIjL0icKza5qCpk4DlXvsYNnleoSUHuK4lxchjC +Wjm5sKYiPGAetSo9+hWSyGUo/fAdNJ4WwMm/bETYqtOvTiJAhwFlWyzGTxSEbtZV +KzlwPC2ZVNd3yLKlE4o5iR2Rscq+Pr8SGXWUFe+ZOGkDlhmcjD52Ue3i6K/2HQ7w +hzS1safX4LUYvz0F0Dc+wsDTEiXwCqsVE7TZ1X5T6nhRSjG6eucvHZiahGsEs3gh +xYStwFZToa9PcG+wYqtTAdpARtdfJdXdaX9Ap2/go8HVRVlIkFrY8fK+K6NQSU4A +dxfao6hBs9p1JRKPRUpmgG4iQHNGUk2K1vDvMzr8eff+lzKxdc5n6AbFvt0a47o1 +vhVMkjTNwbgrXbpQbkp48Ya8rNfrDR+BAROnI7BOGFN/nzMhTzR4z/HRamjfzNi3 +8z84kQhxAmh/0RZyvcX9Qd5A3eWPQK9dZQtT/3ygDBl/bVroq9clooM20sEyBTmM +o1K49AYpONAgvnXgrM8H2EBiXc+0SQyQMKwzuyOylryGTlwHAgMBAAGjUzBRMB0G +A1UdDgQWBBQnUtOCLi35xS7pS+g2bHLQaOLuQTAfBgNVHSMEGDAWgBQnUtOCLi35 +xS7pS+g2bHLQaOLuQTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IC +AQAOxgUGN+ONNqa6D8y9y65K48Bx/uautGs9w5S3V9WfKHvtPEMglKSBigBzYe99 +da8Z2ILHtRWc0Fh82WI+A2o9EYtZf10iQ9RiVriP92BRUDos6BNVuaz2Dw7k6Med +lzz8PoqqnMx9SLCe+ZtvJ6Pst5b1Ty0Iew490ILeYJEFaG7/MoTgnIV21182XyeJ +BWCBGQxHWEf57rSdXK3kYTFfK1GFMTWyVQ3rzK2nrM3dqtjHGIy/lCei9Zp87KXN +yJOneLf7pKbJ3S8FPt5WruJDhK/0pLKDf3LhV+iDZvBFKKpHmtTL2v4OIl6qUrmp +FAEhWZSpa6oqUCgB3YtPxiSKOL76R5bfUuisEL9FNeL0CCirQjoFxAoGJD3rQODR +P8tUDuYxmNROuhAy/SmiU/Hb0MIw07LHTRo6YgVra5HEuwp9wUjEouDYACxmyH5e +dXs3daU0+Hkv3LW3V4Ri9KmkdDDFc1/ZuUlcxv6Xm5ZGGt+6Xzb2FxIaXowRCHMd +2lXdT39/9vG4ew12NTQ0ilX1PTIQnXTctDHMoex7sy1p6bgDKe4GSbKU7IIian9E +lC14At7mB3ayNfxj4Evh7deSvcZYEIAatvtm2pinSuAPWJp+XqCEdYckP8qNnG7J +OqEvDZEYfryIu2g3+2tB7N7meFO1hOrnQ9bNejeJtKjQLg== +-----END CERTIFICATE----- +-----BEGIN PRIVATE KEY----- +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 +8M3dYpATk43YgJuacAIQqsIRGHnUCks= +-----END PRIVATE KEY-----