- Enable additional environments in Docker
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
# Exit on any error
|
# Exit on any error
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
. ./docker_env_switch.sh dev
|
source ./docker_env_switch.sh dev
|
||||||
|
|
||||||
# Load environment variables
|
# Load environment variables
|
||||||
source .env
|
source .env
|
||||||
|
|||||||
@@ -1,59 +1,129 @@
|
|||||||
#!/bin/bash
|
#!/bin/zsh
|
||||||
|
# or use #!/usr/bin/env zsh
|
||||||
|
|
||||||
# Function to display usage information
|
# Function to display usage information
|
||||||
usage() {
|
usage() {
|
||||||
echo "Usage: source $0 [dev|prod]"
|
echo "Usage: source $0 <environment> [version]"
|
||||||
echo " dev : Switch to development environment"
|
echo " environment: The environment to use (dev, prod, test, integration, bugfix)"
|
||||||
echo " prod : Switch to production environment"
|
echo " version : (Optional) Specific release version to deploy"
|
||||||
|
echo " If not specified, uses 'latest' (except for dev environment)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Replace the existing check at the beginning of docker_env_switch.sh
|
||||||
# Check if the script is sourced
|
# Check if the script is sourced
|
||||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||||
|
# Script is being executed directly from terminal
|
||||||
echo "Error: This script must be sourced, not executed directly."
|
echo "Error: This script must be sourced, not executed directly."
|
||||||
echo "Please run: source $0 [dev|prod]"
|
echo "Please run: source $0 <environment> [version]"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
# If we reach here, script is being sourced (either by terminal or another script)
|
||||||
|
|
||||||
# Check if an argument is provided
|
# Check if an environment is provided
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
usage
|
usage
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
ENVIRONMENT=$1
|
||||||
|
VERSION=${2:-latest} # Default to latest if not specified
|
||||||
|
|
||||||
# Set variables based on the environment
|
# Set variables based on the environment
|
||||||
case $1 in
|
case $ENVIRONMENT in
|
||||||
dev)
|
dev)
|
||||||
DOCKER_CONTEXT="default"
|
DOCKER_CONTEXT="default"
|
||||||
COMPOSE_FILE="compose_dev.yaml"
|
COMPOSE_FILE="compose_dev.yaml"
|
||||||
|
VERSION="latest" # Always use latest for dev
|
||||||
;;
|
;;
|
||||||
prod)
|
prod)
|
||||||
DOCKER_CONTEXT="mxz536.stackhero-network.com"
|
DOCKER_CONTEXT="mxz536.stackhero-network.com"
|
||||||
COMPOSE_FILE="compose_stackhero.yaml"
|
COMPOSE_FILE="compose_stackhero.yaml"
|
||||||
;;
|
;;
|
||||||
|
test)
|
||||||
|
DOCKER_CONTEXT="test-environment" # Change to your actual test Docker context
|
||||||
|
COMPOSE_FILE="compose_test.yaml"
|
||||||
|
;;
|
||||||
|
integration)
|
||||||
|
DOCKER_CONTEXT="integration-environment" # Change to your actual integration Docker context
|
||||||
|
COMPOSE_FILE="compose_integration.yaml"
|
||||||
|
;;
|
||||||
|
bugfix)
|
||||||
|
DOCKER_CONTEXT="bugfix-environment" # Change to your actual bugfix Docker context
|
||||||
|
COMPOSE_FILE="compose_bugfix.yaml"
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Invalid environment. Use 'dev' or 'prod'."
|
echo "Invalid environment: $ENVIRONMENT"
|
||||||
usage
|
usage
|
||||||
return 1
|
return 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Set Docker account
|
||||||
|
DOCKER_ACCOUNT="josakola"
|
||||||
|
|
||||||
|
# Check if Docker context exists
|
||||||
|
if ! docker context ls --format '{{.Name}}' | grep -q "^$DOCKER_CONTEXT$"; then
|
||||||
|
echo "Warning: Docker context '$DOCKER_CONTEXT' does not exist."
|
||||||
|
|
||||||
|
# Prompt user if they want to create the context
|
||||||
|
if [[ "$DOCKER_CONTEXT" != "default" ]]; then
|
||||||
|
echo "Do you want to set up this context now? (y/n): "
|
||||||
|
read CREATE_CONTEXT
|
||||||
|
if [[ "$CREATE_CONTEXT" == "y" || "$CREATE_CONTEXT" == "Y" ]]; then
|
||||||
|
# You would add here the specific code to create each context type
|
||||||
|
# For example, for remote contexts you might need SSH settings
|
||||||
|
echo "Please specify the Docker host URL (e.g., ssh://user@remote_host or tcp://remote_host:2375):"
|
||||||
|
read DOCKER_HOST
|
||||||
|
|
||||||
|
docker context create "$DOCKER_CONTEXT" --docker "host=$DOCKER_HOST"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo "Failed to create Docker context. Please create it manually."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "Using default context instead."
|
||||||
|
DOCKER_CONTEXT="default"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if compose file exists
|
||||||
|
if [ ! -f "$COMPOSE_FILE" ]; then
|
||||||
|
echo "Warning: Compose file '$COMPOSE_FILE' does not exist."
|
||||||
|
echo "Do you want to create it based on compose_dev.yaml? (y/n): "
|
||||||
|
read CREATE_FILE
|
||||||
|
if [[ "$CREATE_FILE" == "y" || "$CREATE_FILE" == "Y" ]]; then
|
||||||
|
# Create new compose file based on compose_dev.yaml with version variables
|
||||||
|
sed 's/\(image: josakola\/[^:]*\):latest/\1:${EVEAI_VERSION:-latest}/g' compose_dev.yaml > "$COMPOSE_FILE"
|
||||||
|
echo "Created $COMPOSE_FILE with version placeholders."
|
||||||
|
else
|
||||||
|
echo "Cannot proceed without a valid compose file."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Switch Docker context
|
# Switch Docker context
|
||||||
echo "Switching to Docker context: $DOCKER_CONTEXT"
|
echo "Switching to Docker context: $DOCKER_CONTEXT"
|
||||||
docker context use $DOCKER_CONTEXT
|
docker context use $DOCKER_CONTEXT
|
||||||
|
|
||||||
# Set the COMPOSE_FILE environment variable
|
# Set environment variables
|
||||||
export COMPOSE_FILE=$COMPOSE_FILE
|
export COMPOSE_FILE=$COMPOSE_FILE
|
||||||
|
export EVEAI_VERSION=$VERSION
|
||||||
|
export DOCKER_ACCOUNT=$DOCKER_ACCOUNT
|
||||||
|
|
||||||
echo "Set COMPOSE_FILE to $COMPOSE_FILE"
|
echo "Set COMPOSE_FILE to $COMPOSE_FILE"
|
||||||
|
echo "Set EVEAI_VERSION to $VERSION"
|
||||||
|
echo "Set DOCKER_ACCOUNT to $DOCKER_ACCOUNT"
|
||||||
|
|
||||||
# Define aliases for common Docker commands
|
# Define aliases for common Docker commands
|
||||||
alias docker-compose="docker compose -f $COMPOSE_FILE"
|
alias docker-compose="docker compose -f $COMPOSE_FILE"
|
||||||
alias dc="docker compose -f $COMPOSE_FILE"
|
alias dc="docker compose -f $COMPOSE_FILE"
|
||||||
alias dcup="docker compose -f $COMPOSE_FILE up -d --no-build --remove-orphans"
|
alias dcup="docker compose -f $COMPOSE_FILE up -d --remove-orphans"
|
||||||
alias dcdown="docker compose -f $COMPOSE_FILE down"
|
alias dcdown="docker compose -f $COMPOSE_FILE down"
|
||||||
alias dcps="docker compose -f $COMPOSE_FILE ps"
|
alias dcps="docker compose -f $COMPOSE_FILE ps"
|
||||||
alias dclogs="docker compose -f $COMPOSE_FILE logs"
|
alias dclogs="docker compose -f $COMPOSE_FILE logs"
|
||||||
alias dcpull="docker compose -f $COMPOSE_FILE pull"
|
alias dcpull="docker compose -f $COMPOSE_FILE pull"
|
||||||
alias dcrefresh="docker compose -f $COMPOSE_FILE pull"
|
alias dcrefresh="docker compose -f $COMPOSE_FILE pull && docker compose -f $COMPOSE_FILE up -d --remove-orphans"
|
||||||
|
|
||||||
echo "Docker environment switched to $1"
|
echo "Docker environment switched to $ENVIRONMENT with version $VERSION"
|
||||||
echo "You can now use 'docker-compose', 'dc', 'dcup', 'dcdown', 'dcps', 'dclogs' , dcpull or dcrefresh commands"
|
echo "You can now use 'docker-compose', 'dc', 'dcup', 'dcdown', 'dcps', 'dclogs', 'dcpull' or 'dcrefresh' commands"
|
||||||
Reference in New Issue
Block a user