From 2f1c6757c858913ee0cc31393cfd22600213a6b9 Mon Sep 17 00:00:00 2001 From: Nick Yeoman Date: Fri, 26 Jul 2024 11:06:27 -0700 Subject: [PATCH] Builder Changes to get Mariadb working --- _builder/dc-env.sh | 29 +++++++++++------------------ _builder/dc-new.sh | 4 ++-- _builder/getdir.bash | 2 -- _builder/parse.bash | 4 ++-- mariadb/README.md | 1 + mariadb/docker-compose.yml | 16 ++++++---------- mariadb/sample-extends.yml | 10 +++++----- mariadb/sample.env | 16 ++++++++-------- 8 files changed, 35 insertions(+), 47 deletions(-) diff --git a/_builder/dc-env.sh b/_builder/dc-env.sh index a836d72..22a3768 100644 --- a/_builder/dc-env.sh +++ b/_builder/dc-env.sh @@ -8,12 +8,14 @@ process_env_vars() { # Loop through each environment variable while IFS= read -r env_var; do # Split into name and value parts based on '=' - var_name="${env_var%%=*}" # Variable name - var_value="${env_var#*=}" # Variable value + var_name="${env_var%%:*}" # Variable name (split by colon for YAML) + var_value="${env_var#*: }" # Variable value (remove leading space) - # Check if the variable value contains a reference to another variable with the format ${VAR_NAME:-default} - if [[ "$var_value" == *'${'*':'*'}'* ]]; then - # Extract the variable inside the ${} braces + # Handle variables without existing braces (not previously processed) + if [[ "$var_value" != *'${'* ]]; then + modified_var="${var_name}: \${${APP_NAME}_${var_name}:-${var_value}}" + else + # Handle variables already having ${} and possible default ref_var="${var_value#\$\{}" ref_var="${ref_var%%[:-]*}" @@ -23,20 +25,11 @@ process_env_vars() { # Check if the reference variable already contains APP_NAME_ prefix if [[ "$ref_var" == ${APP_NAME}_* ]]; then - # If it already contains the prefix, use it as is - modified_var="${var_name}=\${${ref_var}:-${default_value}}" + # Use the reference variable as is if it already contains the prefix + modified_var="${var_name}: \${${ref_var}:-${default_value}}" else - # If not, add the APP_NAME_ prefix - modified_var="${var_name}=\${${APP_NAME}_${ref_var}:-${default_value}}" - fi - else - # For variables without ${VAR_NAME} references - if [[ "$var_name" == ${APP_NAME}_* ]]; then - # If the variable name already starts with APP_NAME_, do not prefix again - modified_var="${var_name}=${var_value}" - else - # Add APP_NAME_ prefix for consistency - modified_var="${var_name}=\${${APP_NAME}_${var_name}:-${var_value}}" + # Add APP_NAME_ prefix to reference variable + modified_var="${var_name}: \${${APP_NAME}_${ref_var}:-${default_value}}" fi fi diff --git a/_builder/dc-new.sh b/_builder/dc-new.sh index 3aa73ad..025448a 100644 --- a/_builder/dc-new.sh +++ b/_builder/dc-new.sh @@ -4,10 +4,10 @@ BLDR_IMAGE_VAR="\${${BLDR_APP^^}_IMAGE:-$BLDR_DC_IMAGE}" # Generate Docker Compose content and save it to a variable BLDR_NEW_DCF=$(cat </dev/null) + # Use yq to extract the environment variables in 'key: value' format + env_vars=$(echo "$compose_content" | yq eval '.services.*.environment | to_entries | .[] | "\(.key): \(.value)"' - 2>/dev/null) echo "$env_vars" } diff --git a/mariadb/README.md b/mariadb/README.md index 497575d..faa673f 100644 --- a/mariadb/README.md +++ b/mariadb/README.md @@ -1,6 +1,7 @@ # Mariadb Dockerhub: https://hub.docker.com/_/mariadb +Proxy Port: 3306 It will be quite uncommon to just use this compose file, it's likely you are extending this from another project. That's the main context of this container. diff --git a/mariadb/docker-compose.yml b/mariadb/docker-compose.yml index ee25000..0b9b4f0 100644 --- a/mariadb/docker-compose.yml +++ b/mariadb/docker-compose.yml @@ -1,17 +1,13 @@ -version: '3.8' # or any version you prefer +version: '3.8' services: mariadb: image: ${MARIADB_IMAGE:-mariadb:latest} + restart: unless-stopped environment: - MARIADB_ROOT_PASSWORD: ${MARIADB_ROOT_PASSWORD:-ChangeThisPassword} - MARIADB_DATABASE: ${MARIADB_DATABASE:-mydb} - MARIADB_USER: ${MARIADB_USER:-dbuser} - MARIADB_PASSWORD: ${MARIADB_PASSWORD:-AlsoChangeThisPassword} + - MARIADB_DATABASE: ${MARIADB_MARIADB_DATABASE:-mydb} + - MARIADB_PASSWORD: ${MARIADB_MARIADB_PASSWORD:-AlsoChangeThisPassword} + - MARIADB_ROOT_PASSWORD: ${MARIADB_MARIADB_ROOT_PASSWORD:-ChangeThisPassword} + - MARIADB_USER: ${MARIADB_MARIADB_USER:-dbuser} volumes: - ${VOL_PATH:-./data/}mariadb_data:/var/lib/mysql - ports: - - "3306:3306" - networks: - - mariadb_network - diff --git a/mariadb/sample-extends.yml b/mariadb/sample-extends.yml index dbce636..22f977a 100644 --- a/mariadb/sample-extends.yml +++ b/mariadb/sample-extends.yml @@ -1,7 +1,7 @@ version: '3.4' -services: - mariadb: - extends: - file: ${COOKBOOK}/mariadb/docker-compose.yml - service: mariadb \ No newline at end of file +services: + mariadb: + extends: + file: ${COOKBOOK}/mariadb/docker-compose.yml + service: mariadb diff --git a/mariadb/sample.env b/mariadb/sample.env index 9928991..970c0b2 100644 --- a/mariadb/sample.env +++ b/mariadb/sample.env @@ -1,9 +1,9 @@ -# Mariadb -PRODDIR=/var/www/stashdomain-com/ #HELP: project_path -COOKBOOK=/home/user/git/docker-compose-cookbooks #HELP: cookbooks -VOL_PATH=/project-dir/project-name/data #HELP: volpath + +COOKBOOK=/git/docker-compose-cookbooks #HELP: cookbooks +# mariadb MARIADB_IMAGE=mariadb:latest -MARIADB_ROOT_PASSWORD=ChangeThisPassword #HELP: gen32 -MARIADB_DATABASE=mydb -MARIADB_USER=dbuser -MARIADB_PASSWORD=AlsoChangeThisPassword #HELP: gen32 \ No newline at end of file +MARIADB_MARIADB_DATABASE=mydb +MARIADB_MARIADB_PASSWORD=AlsoChangeThisPassword #HELP: gen32 +MARIADB_MARIADB_ROOT_PASSWORD=ChangeThisPassword #HELP: gen32 +MARIADB_MARIADB_USER=dbuser +VOL_PATH=./data/ #HELP: volpath