From 6729de1d73844308078b5676c91fc52f85b24cee Mon Sep 17 00:00:00 2001 From: Riccardo Di Dato Date: Mon, 19 Sep 2022 21:52:12 +0200 Subject: [PATCH] Production deploy script --- cicd/docker-compose/production.yml | 78 ++++++++++++++++++++++++++++++ scripts/core.sh | 18 ++++++- 2 files changed, 95 insertions(+), 1 deletion(-) create mode 100644 cicd/docker-compose/production.yml diff --git a/cicd/docker-compose/production.yml b/cicd/docker-compose/production.yml new file mode 100644 index 0000000..50facd0 --- /dev/null +++ b/cicd/docker-compose/production.yml @@ -0,0 +1,78 @@ +version: "3" +services: + mongo: + image: mongo:3 + restart: "on-failure:5" + networks: + db-network: + volumes: + - ./persistence/database/mongodb:/usr/local/mongodb + logging: + driver: "json-file" + options: + max-file: "5" + max-size: "50m" + webserver: + image: §PROJECT_REPOSITORY§/§PROJECT_GROUP§/§PROJECT_BUILDNAME§:§TAG_NAME§-debug + env_file: + - environments/common/webserver.env + - environments/production/webserver.env + depends_on: + - db + - memcached + restart: "on-failure:3" + ports: + - "80:80" + networks: + db-network: + §PROJECT_BUILDNAME§-network: + links: + - mongo:database + volumes: + - ./persistence/webserver/storage:/home/§PROJECT_AUTHOR§/storage/§PROJECT_BUILDNAME§ + - §PROJECT_BUILDNAME§-ws-log:/var/log/§PROJECT_AUTHOR§/ + - §PROJECT_BUILDNAME§-job-comms:/jobComunication/ + logging: + driver: "json-file" + options: + max-file: "5" + max-size: "150m" + # worker: + # image: 662348923997.dkr.ecr.eu-west-1.amazonaws.com/§PROJECT_GROUP§/edenlandia-worker:§TAG_NAME§ + # env_file: worker.env + # restart: "no" + # networks: + # db-network: + # §PROJECT_BUILDNAME§-network: + # links: + # - mongo:database + # volumes: + # - §PROJECT_BUILDNAME§-storage:/home/asdynamics/storage/edenlandia-worker + # - edenlandia-worker-log:/var/log/asdynamics/ + # - ~/workspace-azzurro/webapps/edenlandia-worker/app/private:/home/asdynamics/private/§PROJECT_BUILDNAME§:ro + # - §PROJECT_BUILDNAME§-job-comms:/jobComunication/ + memcached: + image: memcached:1.6.9-alpine + restart: "on-failure:3" + networks: + §PROJECT_BUILDNAME§-network: + logging: + driver: "json-file" + options: + max-file: "5" + max-size: "10m" + +networks: + nginx-network: + external: + name: + nginx-network + db-network: + §PROJECT_BUILDNAME§-network: + + +volumes: + §PROJECT_BUILDNAME§-ws-log: + # edenlandia-worker-log: + §PROJECT_BUILDNAME§-db-persist: + §PROJECT_BUILDNAME§-job-comms: \ No newline at end of file diff --git a/scripts/core.sh b/scripts/core.sh index 0a62872..acef254 100755 --- a/scripts/core.sh +++ b/scripts/core.sh @@ -22,6 +22,7 @@ usage() { echo " -u: Unit tests locally" 1>&2; echo " -d: Run debug vesion locally" 1>&2; echo " -p: Publish (requires a version)" 1>&2; + echo " -x: Production Deploy (requires a version)" 1>&2; echo " -t: Software version, this will be used for the docker tag (default: local)" 1>&2; echo " -v: Verbose" 1>&2; exit 1; @@ -30,11 +31,12 @@ usage() { UNIT_MODE=0 DEBUG_MODE=0 PUBLISH_MODE=0 +DEPLOY_MODE=0 SELECTED_MODES=0 TAG="local" -while getopts "t:hvudp" o; do +while getopts "t:hvudpx" o; do case "${o}" in u) UNIT_MODE=1 @@ -48,6 +50,10 @@ while getopts "t:hvudp" o; do PUBLISH_MODE=1 SELECTED_MODES+=1 ;; + x) + DEPLOY_MODE=1 + SELECTED_MODES+=1 + ;; t) TAG=${OPTARG} @@ -127,3 +133,13 @@ if [[ $DEBUG_MODE -eq 1 ]]; then xdg-open "$DDNINJA_PUBLIC_URL" fi + + +if [[ $DEPLOY_MODE -eq 1 ]]; then + OUT_FOLDER="/home/$PROJECT_AUTHOR/$PROJECT_BUILDNAME/local" + mkdir -p $OUT_FOLDER + ./generateComposeFolder.sh -p -o "$OUT_FOLDER" -t $TAG + + cd "$OUT_FOLDER" + docker-compose up -d +fi