From afe46b3eb03153e019a26747268ad5b7dc38887b Mon Sep 17 00:00:00 2001 From: bucde Date: Thu, 23 Sep 2021 19:31:03 +0200 Subject: [PATCH] feat: create setup script --- docker-compose.yml | 9 ++-- setup | 116 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 119 insertions(+), 6 deletions(-) create mode 100755 setup diff --git a/docker-compose.yml b/docker-compose.yml index 844a94f..e098017 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,7 +24,7 @@ services: expose: - 8000 volumes: - - data:/home/inventree/data + - ./data:/home/inventree/data environment: INVENTREE_DEBUG: False INVENTREE_LOG_LEVEL: WARNING @@ -44,7 +44,7 @@ services: depends_on: - core volumes: - - data:/home/inventree/data + - ./data:/home/inventree/data environment: INVENTREE_DEBUG: False INVENTREE_LOG_LEVEL: WARNING @@ -72,7 +72,4 @@ services: # Provide ./nginx.conf file to the container # Refer to the provided example file as a starting point - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro - - data:/var/www - -volumes: - data: + - ./data:/var/www diff --git a/setup b/setup new file mode 100755 index 0000000..71a076c --- /dev/null +++ b/setup @@ -0,0 +1,116 @@ +#!/bin/bash + +echo "####################################################################" +echo "# docker_inventree_setup_script #" +echo "# Dennis Buchhorn - bucde@b-eit.de #" +echo "####################################################################" +echo "# WARNING: password is plain text input! #" +echo "# #" +echo "# Config will be saved in 'config' file. #" +echo "# (everything in plain text, even the password) #" +#echo "# #" +echo "####################################################################" +echo "" + +DATE=$(date +'%y%m%d%H%M%S') + +CONFIG_EXISTS="false" +USE_EXISTING_CONFIG="" +DELETE_CONFIG="" + +INVENTREE_PROJECT_NAME="inventree_${DATE}" +INVENTREE_PROJECT_NAME_SUFFIX="" +INVENTREE_CORE_CONTAINER_NAME="${INVENTREE_PROJECT_NAME}_core" +INVENTREE_WORKER_CONTAINER_NAME="${INVENTREE_PROJECT_NAME}_worker" +INVENTREE_PROXY_CONTAINER_NAME="${INVENTREE_PROJECT_NAME}_proxy" +INVENTREE_VERSION="" +INVENTREE_PROXY_VERSION="" +INVENTREE_HOST_IP_ADDRESS="" +INVENTREE_HOST_PORT="" +INVENTREE_DB_HOST="" +INVENTREE_DB_PORT="" +INVENTREE_DB_NAME="" +INVENTREE_DB_USER="" +INVENTREE_DB_PASSWORD="" + +read -p "Enter inventree project name suffix (leave empty for none): " INVENTREE_PROJECT_NAME_SUFFIX + +if [ -n "$INVENTREE_PROJECT_NAME_SUFFIX" ]; then + INVENTREE_PROJECT_NAME="${INVENTREE_PROJECT_NAME}_${INVENTREE_PROJECT_NAME_SUFFIX}" + INVENTREE_CORE_CONTAINER_NAME="${INVENTREE_CORE_CONTAINER_NAME}_${INVENTREE_PROJECT_NAME_SUFFIX}" + INVENTREE_WORKER_CONTAINER_NAME="${INVENTREE_WORKER_CONTAINER_NAME}_${INVENTREE_PROJECT_NAME_SUFFIX}" + INVENTREE_PROXY_CONTAINER_NAME="${INVENTREE_PROXY_CONTAINER_NAME}_${INVENTREE_PROJECT_NAME_SUFFIX}" +fi + +rm -f .env +touch .env +echo "COMPOSE_PROJECT_NAME="$INVENTREE_PROJECT_NAME >> .env +echo "INVENTREE_CORE_CONTAINER_NAME="$INVENTREE_CORE_CONTAINER_NAME >> .env +echo "INVENTREE_WORKER_CONTAINER_NAME="$INVENTREE_WORKER_CONTAINER_NAME >> .env +echo "INVENTREE_PROXY_CONTAINER_NAME="$INVENTREE_PROXY_CONTAINER_NAME >> .env + +if [ -f "config" ]; then + CONFIG_EXISTS="true" + read -p "Config file 'config' already exists! Would you like to use this? (y/n)" USE_EXISTING_CONFIG +fi + +if [ $CONFIG_EXISTS == "false" ] || [ $USE_EXISTING_CONFIG == "n" ]; then + read -p "Enter inventree version which should be used: " INVENTREE_VERSION + read -p "Enter inventree-proxy (nginx) version which should be used: " INVENTREE_PROXY_VERSION + read -p "Enter host (vm) ip address on which inventree should be accessible: " INVENTREE_HOST_IP_ADDRESS + read -p "Enter host (vm) port on which inventree should be accessible: " INVENTREE_HOST_PORT + read -p "Enter database host for inventree: " INVENTREE_DB_HOST + read -p "Enter database port for inventree: " INVENTREE_DB_PORT + read -p "Enter database name for inventree: " INVENTREE_DB_NAME + read -p "Enter database user name for inventree: " INVENTREE_DB_USER + read -p "Enter database user password for inventree: " INVENTREE_DB_PASSWORD + + rm -f config + touch config + echo "INVENTREE_VERSION="$INVENTREE_VERSION >> config + echo "INVENTREE_PROXY_VERSION="$INVENTREE_PROXY_VERSION >> config + echo "INVENTREE_HOST_IP_ADDRESS="$INVENTREE_HOST_IP_ADDRESS >> config + echo "INVENTREE_HOST_PORT="$INVENTREE_HOST_PORT >> config + echo "INVENTREE_DB_HOST="$INVENTREE_DB_HOST >> config + echo "INVENTREE_DB_PORT="$INVENTREE_DB_PORT >> config + echo "INVENTREE_DB_NAME="$INVENTREE_DB_NAME >> config + echo "INVENTREE_DB_USER="$INVENTREE_DB_USER >> config + echo "INVENTREE_DB_PASSWORD="$INVENTREE_DB_PASSWORD >> config + + echo "Config file 'config' created!" +else + echo "Use existing config file 'config'!" +fi + +cat "config" >> ".env" + +read -p "Should the config file 'config' be deleted after creating the container? (y/n)" DELETE_CONFIG + +rm -f nginx.conf +touch nginx.conf + +while read line; do + echo "${line//'${INVENTREE_CORE_CONTAINER_NAME}'/$INVENTREE_CORE_CONTAINER_NAME}" >> nginx.conf +done < "nginx.conf.orig" + +exit 1 + +mkdir -p data + +docker-compose run $INVENTREE_CORE_CONTAINER_NAME invoke update + +read -p "wait" + +docker-compose run $INVENTREE_CORE_CONTAINER_NAME invoke superuser + +read -p "wait" + +docker-compose up -d + +if [ $DELETE_CONFIG == "y" ]; then + rm -f .env + + echo "Config file '.env' deleted!" +fi + +echo "Done!"