This commit is contained in:
Your Name 2025-04-25 11:25:19 +12:00
parent 5e8ec90064
commit 4c0c052f20
16 changed files with 91 additions and 22 deletions

View File

@ -321,10 +321,13 @@ std::vector<int> service_runner::get_ports()
std::cerr << "Error: Server service not initialized" << std::endl; std::cerr << "Error: Server service not initialized" << std::endl;
return ports; return ports;
} }
std::string script_path = mRemote_service_template_path + "/_ports.sh";
// Check if ports script exists // Check if ports script exists
std::string command = "_ports";
if (!template_command_exists(m_service_info.template_name, command)) {
return ports;
}
std::string script_path = mRemote_service_template_path + "/" + command + ".sh";
if (!check_remote_file_exists(script_path)) { if (!check_remote_file_exists(script_path)) {
return ports; return ports;
} }

View File

@ -2,6 +2,9 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME" "LOCAL_DATA_FOLDER"
# Get backup file path from second argument # Get backup file path from second argument
BACKUP_FILE="$2" BACKUP_FILE="$2"
if [ -z "$BACKUP_FILE" ]; then if [ -z "$BACKUP_FILE" ]; then

View File

@ -45,21 +45,24 @@ grey_end() {
} }
create_and_start_container() { create_and_start_container() {
if _is_container_exists $CONTAINER_NAME; then local run_cmd="$1"
_is_container_running $CONTAINER_NAME && return 0 local container_name="$2"
_start_container $CONTAINER_NAME
if _is_container_exists $container_name; then
_is_container_running $container_name && return 0
_start_container $container_name
else else
grey_start grey_start
$1 $run_cmd
grey_end grey_end
fi fi
if ! _is_container_running $CONTAINER_NAME; then if ! _is_container_running $container_name; then
die "Container ${CONTAINER_NAME} failed to start" die "Container ${container_name} failed to start"
fi fi
ID=$(_get_container_id $CONTAINER_NAME) ID=$(_get_container_id $container_name)
echo "Container ${CONTAINER_NAME} is running with ID ${ID}" echo "Container ${container_name} is running with ID ${ID}"
} }
function create_folder() { function create_folder() {
@ -152,3 +155,11 @@ _get_container_logs() {
docker logs $1 docker logs $1
} }
check_required_env_vars() {
local required_vars=("$@")
for var in "${required_vars[@]}"; do
if [ -z "${!var}" ]; then
die "Required environment variable $var is not set in your service.env file"
fi
done
}

View File

@ -2,6 +2,9 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAGE_TAG"
# Test Docker # Test Docker
_check_docker_installed || die "Docker test failed, aborting installation..." _check_docker_installed || die "Docker test failed, aborting installation..."

View File

@ -2,4 +2,7 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
# check_required_env_vars "HOST_PORT"
# echo $HOST_PORT # echo $HOST_PORT

View File

@ -2,6 +2,9 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME"
# check if the service is running # check if the service is running
_is_container_running $CONTAINER_NAME || die "Service is not running - did not find container $CONTAINER_NAME." _is_container_running $CONTAINER_NAME || die "Service is not running - did not find container $CONTAINER_NAME."

View File

@ -2,6 +2,9 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME"
echo "Container ${CONTAINER_NAME} logs:" echo "Container ${CONTAINER_NAME} logs:"
grey_start grey_start
docker logs --tail 100 "${CONTAINER_NAME}" docker logs --tail 100 "${CONTAINER_NAME}"

View File

@ -2,6 +2,9 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME" "HOST_PORT" "CONTAINER_PORT" "LOCAL_DATA_FOLDER"
DOCKER_RUN_CMD="docker run -d \ DOCKER_RUN_CMD="docker run -d \
--restart unless-stopped \ --restart unless-stopped \
--name ${CONTAINER_NAME} \ --name ${CONTAINER_NAME} \
@ -10,7 +13,7 @@ DOCKER_RUN_CMD="docker run -d \
${IMAGE_REGISTRY}/${IMAGE_REPO}:${IMAGE_TAG}" ${IMAGE_REGISTRY}/${IMAGE_REPO}:${IMAGE_TAG}"
if ! create_and_start_container "$DOCKER_RUN_CMD"; then if ! create_and_start_container "$DOCKER_RUN_CMD" "$CONTAINER_NAME"; then
die "Failed to start container ${CONTAINER_NAME}" die "Failed to start container ${CONTAINER_NAME}"
fi fi

View File

@ -2,6 +2,9 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME"
_stop_container $CONTAINER_NAME || die "Failed to stop container ${CONTAINER_NAME}" _stop_container $CONTAINER_NAME || die "Failed to stop container ${CONTAINER_NAME}"
echo "Container ${CONTAINER_NAME} stopped" echo "Container ${CONTAINER_NAME} stopped"

View File

@ -45,21 +45,26 @@ grey_end() {
} }
create_and_start_container() { create_and_start_container() {
if _is_container_exists $CONTAINER_NAME; then local run_cmd="$1"
_is_container_running $CONTAINER_NAME && return 0 local container_name="$2"
_start_container $CONTAINER_NAME
if _is_container_exists $container_name; then
if _is_container_running $container_name; then
return 0
fi
_start_container $container_name
else else
grey_start grey_start
$1 $run_cmd
grey_end grey_end
fi fi
if ! _is_container_running $CONTAINER_NAME; then if ! _is_container_running $container_name; then
die "Container ${CONTAINER_NAME} failed to start" die "Container ${container_name} failed to start"
fi fi
ID=$(_get_container_id $CONTAINER_NAME) ID=$(_get_container_id $container_name)
echo "Container ${CONTAINER_NAME} is running with ID ${ID}" echo "Container ${container_name} is running with ID ${ID}"
} }
function create_folder() { function create_folder() {
@ -152,3 +157,11 @@ _get_container_logs() {
docker logs $1 docker logs $1
} }
check_required_env_vars() {
local required_vars=("$@")
for var in "${required_vars[@]}"; do
if [ -z "${!var}" ]; then
die "Required environment variable $var is not set in your service.env file"
fi
done
}

View File

@ -2,15 +2,20 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME" "IMAGE_REGISTRY" "IMAGE_REPO" "IMAGE_TAG"
# Test Docker # Test Docker
_check_docker_installed || die "Docker test failed, aborting installation..." _check_docker_installed || die "Docker test failed, aborting installation..."
# check can pull image on remote host and exit if fails # check can pull image on remote host and exit if fails
echo "Pulling image ${IMAGE_REGISTRY}/${IMAGE_REPO}:${IMAGE_TAG}"
docker pull "$IMAGE_REGISTRY/$IMAGE_REPO:$IMAGE_TAG" || die "Failed to pull image $IMAGE_REGISTRY/$IMAGE_REPO:$IMAGE_TAG" docker pull "$IMAGE_REGISTRY/$IMAGE_REPO:$IMAGE_TAG" || die "Failed to pull image $IMAGE_REGISTRY/$IMAGE_REPO:$IMAGE_TAG"
# remove and restart, as the env may have changed. # remove and restart, as the env may have changed.
bash ./stop.sh $1 || die "Failed to stop container ${CONTAINER_NAME}" echo "Removing old container ${CONTAINER_NAME}"
_remove_container $CONTAINER_NAME || die "Failed to remove container ${CONTAINER_NAME}" _remove_container $CONTAINER_NAME || die "Failed to remove container ${CONTAINER_NAME}"
echo "Starting container ${CONTAINER_NAME}"
bash ./start.sh $1 || die "Failed to start container ${CONTAINER_NAME}" bash ./start.sh $1 || die "Failed to start container ${CONTAINER_NAME}"
echo "Installation of ${CONTAINER_NAME} complete" echo "Installation of ${CONTAINER_NAME} complete"

View File

@ -2,6 +2,9 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME"
# check if the service is running # check if the service is running
_is_container_running $CONTAINER_NAME || die "Service is not running - did not find container $CONTAINER_NAME." _is_container_running $CONTAINER_NAME || die "Service is not running - did not find container $CONTAINER_NAME."

View File

@ -1,6 +1,8 @@
# Service settings # Service settings
TEMPLATE=watchtower TEMPLATE=watchtower
CONTAINER_NAME=watchtower
# Image settings # Image settings
IMAGE_REGISTRY="docker.io" IMAGE_REGISTRY="docker.io"
IMAGE_REPO="containrrr/watchtower" IMAGE_REPO="containrrr/watchtower"

View File

@ -2,6 +2,9 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME"
echo "Container ${CONTAINER_NAME} logs:" echo "Container ${CONTAINER_NAME} logs:"
grey_start grey_start
docker logs --tail 100 "${CONTAINER_NAME}" docker logs --tail 100 "${CONTAINER_NAME}"

View File

@ -2,13 +2,18 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME"
DOCKER_RUN_CMD="docker run -d \ DOCKER_RUN_CMD="docker run -d \
--restart unless-stopped \ --restart unless-stopped \
--name ${CONTAINER_NAME} \ --name ${CONTAINER_NAME} \
-v /var/run/docker.sock:/var/run/docker.sock \ -v /var/run/docker.sock:/var/run/docker.sock \
${IMAGE_REGISTRY}/${IMAGE_REPO}:${IMAGE_TAG}" ${IMAGE_REGISTRY}/${IMAGE_REPO}:${IMAGE_TAG}"
if ! create_and_start_container "$DOCKER_RUN_CMD"; then if ! create_and_start_container "$DOCKER_RUN_CMD" "$CONTAINER_NAME"; then
echo "RUN_CMD failed:"
echo "$DOCKER_RUN_CMD"
die "Failed to start container ${CONTAINER_NAME}" die "Failed to start container ${CONTAINER_NAME}"
fi fi

View File

@ -2,6 +2,9 @@
source "$(dirname "$0")/_common.sh" source "$(dirname "$0")/_common.sh"
load_env "$1" || die "Failed to load environment variables" load_env "$1" || die "Failed to load environment variables"
# Required environment variables
check_required_env_vars "CONTAINER_NAME"
_stop_container $CONTAINER_NAME || die "Failed to stop container ${CONTAINER_NAME}" _stop_container $CONTAINER_NAME || die "Failed to stop container ${CONTAINER_NAME}"
echo "Container ${CONTAINER_NAME} stopped" echo "Container ${CONTAINER_NAME} stopped"