Skip to content

Commit

Permalink
#5: Finished demo container launcher script, some config extended to …
Browse files Browse the repository at this point in the history
…configure editor containers, added local certificates
  • Loading branch information
Inaki Anduaga committed May 6, 2015
1 parent 20e3b22 commit a873245
Show file tree
Hide file tree
Showing 6 changed files with 146 additions and 21 deletions.
28 changes: 14 additions & 14 deletions config/users.example
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,26 @@
# Users definitions list example
#
# - Users (must be prefix by `USER_` string)
#
# - Webserver image suffix
# The image cloud-webserver-<SUFFIX> will be used for this user
# Leave empty for no webserver
#
# - Editor image suffix
# The image cloud-editor-<SUFFIX> will be used for this user
# Leave empty for no editor
# - User Webserver properties: Prefixed by WEBSERVER_
# - User Editor properties: Prefix by EDITOR_
#

USER_CLARK_KENT=1
WEBSERVER_CLARK_KENT=php
WEBSERVER_CLARK_KENT_PORT=80
WEBSERVER_CLARK_KENT_VOLUME=/var/www/html
WEBSERVER_CLARK_KENT_DOCKER_CMD_EXTRAS=
EDITOR_CLARK_KENT=codebox
USER_CLARK_KENT=1 # user name and id (prefix USER_)
WEBSERVER_CLARK_KENT=php # the webserver container image suffix
WEBSERVER_CLARK_KENT_PORT=80 # webserver internal listening port
WEBSERVER_CLARK_KENT_VOLUME=/var/www/html # webserver internal app volume path
WEBSERVER_CLARK_KENT_DOCKER_CMD_EXTRAS= # webserver extra docker run
EDITOR_CLARK_KENT=codebox # editor container image suffix
EDITOR_CLARK_KENT_PORT=8000 # editor internal listening port
EDITOR_CLARK_KENT_VOLUME=/var/www # editor internal app volume
EDITOR_CLARK_KENT_DOCKER_CMD_EXTRAS= # editor extra docker run

USER_BRUCE_WAYNE=2
WEBSERVER_BRUCE_WAYNE=nodejs
WEBSERVER_BRUCE_WAYNE_PORT=3000
WEBSERVER_BRUCE_WAYNE_VOLUME=/app
WEBSERVER_BRUCE_WAYNE_DOCKER_CMD_EXTRAS=
EDITOR_BRUCE_WAYNE=codebox
EDITOR_BRUNCE_WAYNE_PORT=8000
EDITOR_BRUNCE_WAYNE_VOLUME=/var/www
EDITOR_BRUNCE_WAYNE_DOCKER_CMD_EXTRAS=
52 changes: 45 additions & 7 deletions demo/bootstrap/launch_containers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,25 @@ function getDockerBridgeIp()
echo $(ip route | awk '/docker0/ { print $NF }')
}

# Stop a docker container
function stopDockerContainer()
{
docker stop $1 > /dev/null 2>&1
docker rm $1 > /dev/null 2>&1
}


#
# Launch frontend proxy
#
cloud_frontend_proxy='cloud-frontend-proxy'
certs_path="${PWD}../certs"
base_hostname=$(getConfigKey BASE_HOSTNAME)

$(stopDockerContainer $cloud_frontend_proxy)
docker run -d -p 80:80 -p 443:443 -v $certs_path:/etc/nginx/certs -e BASE_HOSTNAME=$base_hostname -e PROXY_HOST=$(getDockerBridgeIp) --name $cloud_frontend_proxy $cloud_frontend_proxy


# Loop through each user, and for each launch 4 containers
#
# - Auth for webserver
Expand Down Expand Up @@ -52,23 +71,42 @@ for p in ${USERS///$'\n'} ; do
authentication_container_config_path="${PWD}$(getConfigKey BASE_CLOUD_USERS_FOLDER)${USER}/conf/authentication"

# Remove webserver container and relaunch
docker stop $webserver_container_name > /dev/null 2>&1;
docker rm $webserver_container_name > /dev/null 2>&1
$(stopDockerContainer $webserver_container_name)
docker run -d -p $webserver_container_port:$webserver_port -v $webserver_container_repo_path:$webserver_volume $webserver_docker_run_extras --name $webserver_container_name cloud-webserver-$webserver_type

# Remove authentication container and relaunch
docker stop $authentication_container_name > /dev/null 2>&1;
docker rm $authentication_container_name > /dev/null 2>&1
$(stopDockerContainer $authentication_container_name)
docker run -d -p $authentication_container_webserver_port:8085 --env-file $authentication_container_config_path -e DOORMAN_PROXY_HOST=$(getDockerBridgeIp) -e DOORMAN_PROXY_PORT=$webserver_container_port --name $authentication_container_name cloud-authentication
fi

# Lauch authentication / editor container pair
if [ ! -z $(getUserEditor $USER) ]; then
echo "TODO"

# Editor config
editor_container_name=$(getEditorContainerNameByUser $USER)
editor_container_port=$(getEditorPortByUserId $ID)
editor_container_repo_path="${PWD}$(getConfigKey BASE_CLOUD_USERS_FOLDER)${USER}/repo/"
editor_type=$(getUserEditor $USER)
editor_port=$(getUserEditorPort $USER)
editor_volume=$(getUserEditorVolume $USER)
editor_docker_run_extras=$(getUserEditorDockerCMDExtras $USER)

# Authentication server config
authentication_container_name=$(getEditorAuthenticationContainerNameByUser $USER)
authentication_container_editor_port=$(getAuthenticationEditorPortByUserId $ID)
authentication_container_config_path="${PWD}$(getConfigKey BASE_CLOUD_USERS_FOLDER)${USER}/conf/authentication"

# Remove editor container and relaunch
$(stopDockerContainer $editor_container_name)
docker run -d -p $editor_container_port:$editor_port -v $editor_container_repo_path:$editor_volume $editor_docker_run_extras --name $editor_container_name cloud-editor-$editor_type

# Remove authentication container and relaunch
$(stopDockerContainer $authentication_container_name)
docker run -d -p $authentication_container_editor_port:8085 --env-file $authentication_container_config_path -e DOORMAN_PROXY_HOST=$(getDockerBridgeIp) -e DOORMAN_PROXY_PORT=$editor_container_port --name $authentication_container_name cloud-authentication

fi

done

# Launch frontend proxy
# TODO


23 changes: 23 additions & 0 deletions demo/certificates/cert.crt
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
-----BEGIN CERTIFICATE-----
MIID2TCCAsGgAwIBAgIJAPFMSRd44VePMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYD
VQQGEwJERTEPMA0GA1UECAwGQmF5ZXJuMQ8wDQYDVQQHDAZNdW5pY2gxFjAUBgNV
BAoMDUluYWtpIEFuZHVhZ2ExEjAQBgNVBAMMCWxvY2FsaG9zdDElMCMGCSqGSIb3
DQEJARYWaW5ha2lAaW5ha2lhbmR1YWdhLmNvbTAeFw0xNTA1MDYyMzE4NDlaFw0x
NjA1MDUyMzE4NDlaMIGCMQswCQYDVQQGEwJERTEPMA0GA1UECAwGQmF5ZXJuMQ8w
DQYDVQQHDAZNdW5pY2gxFjAUBgNVBAoMDUluYWtpIEFuZHVhZ2ExEjAQBgNVBAMM
CWxvY2FsaG9zdDElMCMGCSqGSIb3DQEJARYWaW5ha2lAaW5ha2lhbmR1YWdhLmNv
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALVK61OJV8zCN64BMl9g
p2xB94ZIN99KMcSkEZnQp+mkAbc9tNLMp0pe3VO/4l3o2NaGluIYdyArbwe1usNm
3KbGQRFXmhF0SyGYcAHp9t9fjKgI2tLy/jRClJ0Gr4JxP7HeJfkiBC90prAbMDNO
uEh2puhZtl6OxrzbjGv0pEZueUMSPqElhgmbGNLKCTfz3lu/GXdWdLYBP+8EuD7X
Iv/QfgR3pHzBZ3Qgn2dzKJ8kClzBHFtBTt42J8NcKEHQWEfwr8utquFMbttd2Kwy
kTVaBVA83+Pl0ANbmD1A1AORdA2j3mnJ2pcgNkvFn03VKAV21FO7GHT7No2kRsfX
ci0CAwEAAaNQME4wHQYDVR0OBBYEFNYbypBmcg/PeMeglbwLXSouryAfMB8GA1Ud
IwQYMBaAFNYbypBmcg/PeMeglbwLXSouryAfMAwGA1UdEwQFMAMBAf8wDQYJKoZI
hvcNAQELBQADggEBAKLTbkUa8/tjfddb6amoSXZ4MjwjkSA3o02QL36jNbqtPfeD
0q1QPfO97F8dGP+z3xxgiVcoqZJQ5e17fK/RLAyEutKRch4l4pfVG4NmM8OUeUV3
WxSz0CFbSKm/k1qBIofbtrLUkdBUU8GpcZorGYYIPlq9KocFyumziLgr1fkuXNE7
oKscMog60sndu3bNoOG90UvtYnlOF9lG3keW+Np2wjJA/gxLJVPKuiDwPr+hz7+P
dV+a5Az88i5SYK36c14gpP+YG1aYrIFceuS1QKVTg4gao0nsLoJTusLZa2+rB82p
BI3RJu+eA+Q/uKHXptLdfhCVhWpZvxdbZhmtmKA=
-----END CERTIFICATE-----
28 changes: 28 additions & 0 deletions demo/certificates/cert.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC1SutTiVfMwjeu
ATJfYKdsQfeGSDffSjHEpBGZ0KfppAG3PbTSzKdKXt1Tv+Jd6NjWhpbiGHcgK28H
tbrDZtymxkERV5oRdEshmHAB6fbfX4yoCNrS8v40QpSdBq+CcT+x3iX5IgQvdKaw
GzAzTrhIdqboWbZejsa824xr9KRGbnlDEj6hJYYJmxjSygk3895bvxl3VnS2AT/v
BLg+1yL/0H4Ed6R8wWd0IJ9ncyifJApcwRxbQU7eNifDXChB0FhH8K/LrarhTG7b
XdisMpE1WgVQPN/j5dADW5g9QNQDkXQNo95pydqXIDZLxZ9N1SgFdtRTuxh0+zaN
pEbH13ItAgMBAAECggEAXhu59O9CqIPZK3Zrk580ybmkqAwtFLgLBay1hkcOIvaD
/X8GsraR0MVV1vewplcM2K+c+1j/3a8uP65SeMSYneokNMBotc7MgXAEFLpC8MlE
1qViEkcZNj+prameyfPHwKk0xRKnYYsITDqQ1tFyUAtnsQ2A4azz9W1yg0fHTteB
Sej81fxlw3xXrDEPsv/Q+nUVMmrX4EqO6VJ/uciGVjCdR5riM31VRMxYe7SNXaVB
GNPsrCvWsb0Q3WUexNiWr50XB3zLSDjaE8uDVBBsqtRWvQhb2Mn/HX/DzWBdig1Z
T4ndHvJ7LqxShqU5LvpZ3uPto+wS01Yw4POpnn1ZAQKBgQDuIA7bLK56Ii/rIvyP
Gf+S7dTAOwWVtwnDn1ZmstLVOPZvKDbiMkHcHKSA3k+UD1l2LLaqgwBTeT1/6bzZ
YYeRGS7HzcjSU1ioyQsZcebIIVgpzMiLJRkQdiz7ZrGon+/ufIBC5OmL/2cltPnO
AINQ8G+yqgurE2gJy2Jykiat8QKBgQDC5rxsGfH5/tIQ/1nsli1VjlFLAImAfRjn
C+pUduo0zbE/G+INCpl8GFplz9211e9AAzbcZdcRoFw8nZaMPC8qoZ7ZmYMPeq/w
9Ykk6JOZMdvcC4NQbrCiuDQNCsgJU/UNyug3ITAtHOOG3AclVuzRgRpr66bElcpo
F53TOvc7/QKBgQCsDfvN/33d/3+yHShxWW6hwjh74OmLIKLsdt+d+s19hNgCvwLQ
81FE8mkmN/s11tVkHrCpiVgd+DcoikGKq/6hJ5n2gkj9N32TDxh2/SasKfOi2DV6
3IY8r7aWu7/YQB/DqK+gJfhd0F++DgKFBzfarq92X4loxe/hS9RJRjKucQKBgBQy
5YQujC1kg1DPpfom9jvPrA0h2R4/2LzZN0fZqxwd1Si9Mwg2+QErZPL4P/oAWfNA
YgclZsyk2epOSrPt6NV6OoRCrJqGFIXcbIIuuF1AFZEQgGNtlVDH1l0jqOeOk+8C
AF72SY/jVpE7bGIqSBDOWHamzXnCLF/tUqX5jnXhAoGABG9FllF9kNivFfitxIbu
YooXKDQG6QgeKsvE7JFQIrLIvkxEN35VHD566C0G8LMY/5r8vJ/m0oEYx673wnqp
lIcX0Q1KpgdXXL+VynM2l98oni000HQuWkYKMHBfUFr4vGeshtd4Oz9FqB5AjRlG
xZhGERw3HQtcCDUmCAy4i14=
-----END PRIVATE KEY-----
6 changes: 6 additions & 0 deletions demo/config/users
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,16 @@ WEBSERVER_CLARK_KENT_PORT=80
WEBSERVER_CLARK_KENT_VOLUME=/var/www/html
WEBSERVER_CLARK_KENT_DOCKER_CMD_EXTRAS=
EDITOR_CLARK_KENT=codebox
EDITOR_CLARK_KENT_PORT=8000
EDITOR_CLARK_KENT_VOLUME=/var/www
EDITOR_CLARK_KENT_DOCKER_CMD_EXTRAS=

USER_BRUCE_WAYNE=2
WEBSERVER_BRUCE_WAYNE=nodejs
WEBSERVER_BRUCE_WAYNE_PORT=3000
WEBSERVER_BRUCE_WAYNE_VOLUME=/app
WEBSERVER_BRUCE_WAYNE_DOCKER_CMD_EXTRAS=
EDITOR_BRUCE_WAYNE=codebox
EDITOR_BRUCE_WAYNE_PORT=8000
EDITOR_BRUCE_WAYNE_VOLUME=/var/www
EDITOR_BRUCE_WAYNE_DOCKER_CMD_EXTRAS=
30 changes: 30 additions & 0 deletions scripts/user_config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,36 @@ function getUserEditor()
echo $(getUserConfigProperty EDITOR_${1^^})
}

#
# The editor bind port for a given user
# @param string user
# @return int
#
function getUserEditorPort()
{
echo $(getUserConfigProperty EDITOR_${1^^}_PORT)
}

#
# The editor volume mount point for a given user
# @param string user
# @return string
#
function getUserEditorVolume()
{
echo $(getUserConfigProperty EDITOR_${1^^}_VOLUME)
}

#
# The editor docker run command extras for a given user
# @param string user
# @return string
#
function getUserEditorDockerCMDExtras()
{
echo $(getUserConfigProperty EDITOR_${1^^}_DOCKER_CMD_EXTRAS)
}

#
# Gets the starting port for the cloud containers
# @return string
Expand Down

0 comments on commit a873245

Please sign in to comment.