- Enable additional environments in Docker
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
# Exit on any error
|
||||
set -e
|
||||
|
||||
. ./docker_env_switch.sh dev
|
||||
source ./docker_env_switch.sh dev
|
||||
|
||||
# Load environment variables
|
||||
source .env
|
||||
|
||||
@@ -1,59 +1,129 @@
|
||||
#!/bin/bash
|
||||
#!/bin/zsh
|
||||
# or use #!/usr/bin/env zsh
|
||||
|
||||
# Function to display usage information
|
||||
usage() {
|
||||
echo "Usage: source $0 [dev|prod]"
|
||||
echo " dev : Switch to development environment"
|
||||
echo " prod : Switch to production environment"
|
||||
echo "Usage: source $0 <environment> [version]"
|
||||
echo " environment: The environment to use (dev, prod, test, integration, bugfix)"
|
||||
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
|
||||
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
|
||||
# Script is being executed directly from terminal
|
||||
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
|
||||
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
|
||||
usage
|
||||
return 1
|
||||
fi
|
||||
|
||||
ENVIRONMENT=$1
|
||||
VERSION=${2:-latest} # Default to latest if not specified
|
||||
|
||||
# Set variables based on the environment
|
||||
case $1 in
|
||||
case $ENVIRONMENT in
|
||||
dev)
|
||||
DOCKER_CONTEXT="default"
|
||||
COMPOSE_FILE="compose_dev.yaml"
|
||||
VERSION="latest" # Always use latest for dev
|
||||
;;
|
||||
prod)
|
||||
DOCKER_CONTEXT="mxz536.stackhero-network.com"
|
||||
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
|
||||
return 1
|
||||
;;
|
||||
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
|
||||
echo "Switching to Docker context: $DOCKER_CONTEXT"
|
||||
docker context use $DOCKER_CONTEXT
|
||||
|
||||
# Set the COMPOSE_FILE environment variable
|
||||
# Set environment variables
|
||||
export COMPOSE_FILE=$COMPOSE_FILE
|
||||
export EVEAI_VERSION=$VERSION
|
||||
export DOCKER_ACCOUNT=$DOCKER_ACCOUNT
|
||||
|
||||
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
|
||||
alias docker-compose="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 dcps="docker compose -f $COMPOSE_FILE ps"
|
||||
alias dclogs="docker compose -f $COMPOSE_FILE logs"
|
||||
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 "You can now use 'docker-compose', 'dc', 'dcup', 'dcdown', 'dcps', 'dclogs' , dcpull or dcrefresh commands"
|
||||
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"
|
||||
Reference in New Issue
Block a user