Browse Source

permanent db in docker

aguryev 3 years ago
parent
commit
056491eac7

+ 12 - 0
Readme.md

@@ -85,3 +85,15 @@ docker run -d --name rq-worker... -e DATABASE_URL=<url_of_baangt_testrun_RESULTS
 docker run -d --name baangt-api... -e DATABASE_URL=<url_of_baangt_testrun_RESULTS_database>...
 docker run -d --name baangt-ui... -e DATABASE_URL=<url_of_baangt_testrun_DEFINITIONS_database>...
 ```
+As an example you may try the `run_services_db_permanent.sh` script. It builds `baangt-postgres:latest` image and runs `baangt-postgres` container with **two** databases:
+* `definition` holds *baangt* Testrun definitions
+* `execution` holds *baangt* Testrun results
+
+The container is run without `--rm` flag and could be reused again on the next execution of the `run_services_db_permanent.sh` script.
+
+![#f03c15](https://via.placeholder.com/15/f03c15/000000?text=+)  **IMPORTANT!!!**  
+Using the command
+```bash
+docker container prune
+```
+will **delete** the `baangt-postgres` when it is stopped.

BIN
api/app/uploads/2bc8adcf-33fa-4f97-bdde-31f149bf86ee


BIN
api/app/uploads/CompleteBaangtWebdemo.xlsx


+ 7 - 0
postgres/Dockerfile

@@ -0,0 +1,7 @@
+FROM postgres:10.12
+
+ADD init.sql /docker-entrypoint-initdb.d
+
+#EXPOSE 3306
+
+#ENTRYPOINT ["/entrypoint.sh", "mysqld"]

+ 5 - 0
postgres/init.sql

@@ -0,0 +1,5 @@
+CREATE DATABASE definition;
+CREATE DATABASE execution;
+CREATE USER baangt WITH PASSWORD '12345';
+GRANT ALL ON DATABASE "definition" TO baangt;
+GRANT ALL ON DATABASE "execution" TO baangt;

+ 2 - 0
postgres/run_mysql.sh

@@ -0,0 +1,2 @@
+docker build -t mysql-baangt:latest .
+docker run --name mysql -p 3305:3306 -d -e MYSQL_RANDOM_ROOT_PASSWORD=yes mysql-baangt:latest

+ 108 - 0
run_services_db_permanent.sh

@@ -0,0 +1,108 @@
+#!/bin/bash
+
+# default ports
+#       UI    API    DF     RD     PS
+ports=("80" "5000" "5050" "6380" "5430")
+# default flag for bulding docker images 
+b=true
+
+# parse arguments
+args=("$@")
+
+i=0
+while [ $i -lt $# ]
+do
+	case ${args[$i]} in
+		"-ui")
+			ports[0]=${args[$i+1]}
+			;;
+		"-api")
+			ports[1]=${args[$i+1]}
+			;;
+		"-df")
+			ports[2]=${args[$i+1]}
+			;;
+		"-rd")
+			ports[3]=${args[$i+1]}
+			;;
+		"-mysql")
+			ports[4]=${args[$i+1]}
+			;;
+		"-b")
+			b=false
+			let i--
+			;;
+		"stop")
+			echo
+			echo Stopping containers...
+			docker stop baangt-ui baangt-api baangt-file rq-worker redis baangt-postgres
+			exit 1
+			;;
+	esac
+	let i=$i+2
+done
+
+# building docker images
+if [ $b = true ]
+then
+	# postgres
+	# building docker images
+	echo
+	echo Building PostgreSQL image...
+	docker build -t baangt-postgres:latest postgres
+	# UI Service
+	echo
+	echo Building UI Service...
+	docker build -t baangt-ui:latest ui
+	# File Servise
+	echo
+	echo Building DataFile Service...
+	docker build -t baangt-file:latest files
+	# API Service
+	echo
+	echo Building Execution API Service...
+	docker build -t baangt-api:latest api
+fi
+
+# running containers
+
+# Redis
+echo
+echo Starting Redis...
+docker run -d -p ${ports[3]}:6379 --name redis --rm redis:5-alpine
+
+# RQ Worker
+echo
+echo Starting Redis Worker...
+docker run -d --name rq-worker  \
+    -e BAANGT_DATAFILE_HOST=172.17.0.1:${ports[2]} --rm \
+    -e DATABASE_URL=postgresql://baangt:12345@172.17.0.1:${ports[4]}/execution \
+    -e REDIS_URL=redis://172.17.0.1:${ports[3]}/0 --entrypoint rq \
+    baangt-api:latest worker -u redis://172.17.0.1:${ports[3]}/0 baangt-tasks
+
+# postgres
+echo
+echo Starting PostgreSQL container...
+docker run -d -p ${port}:5432 --name baangt-postgres -e POSTGRES_PASSWORD=12345 baangt-postgres:latest
+docker start baangt-postgres
+
+# Data Files
+echo
+echo Starting Data File Service...
+docker run -d -p ${ports[2]}:5000 --name baangt-file --rm baangt-file:latest
+
+# UI Service
+echo
+echo Starting UI Service...
+docker run -d -p ${ports[0]}:5000 --name baangt-ui  \
+    -e DATABASE_URL=postgresql://baangt:12345@172.17.0.1:${ports[4]}/definition \
+    -e BAANGT_DATAFILE_HOST=172.17.0.1:${ports[2]} \
+    -e BAANGT_API_HOST=172.17.0.1:${ports[1]} --rm baangt-ui:latest
+
+# API Service
+echo
+echo Starting Execution API Service...
+docker run -d -p ${ports[1]}:5000 --name baangt-api  \
+    -e BAANGT_DATAFILE_HOST=172.17.0.1:${ports[2]}  \
+    -e DATABASE_URL=postgresql://baangt:12345@172.17.0.1:${ports[4]}/execution \
+    -e REDIS_URL=redis://172.17.0.1:${ports[3]}/0 --rm baangt-api:latest

+ 28 - 0
start_postgres_db.sh

@@ -0,0 +1,28 @@
+#!/bin/bash
+
+# default mysql port
+port="5430"
+
+# parse arguments
+args=("$@")
+
+if [ $# -gt 0 ]
+then
+	port=${args[0]}
+fi
+
+echo ${args}
+echo $#
+echo Port: ${port}
+
+# building docker images
+echo
+echo Building PostgreSQL image...
+docker build -t baangt-postgres:latest postgres
+
+# running docker container
+echo
+echo Starting PostgreSQL container...
+#docker run --name mysql -p ${port}:3306 -d -e MYSQL_RANDOM_ROOT_PASSWORD=yes --rm mysql-baangt:latest
+docker run -d -p ${port}:5432 --name baangt-postgres -e POSTGRES_PASSWORD=12345 baangt-postgres:latest
+docker start baangt-postgres