#!/bin/bash

# START SCRIPT
# The start script is required for all templates.
# It is used to start the service on the server.
# It is called with the path to the server specific env file as an argument.

source "$(dirname "$0")/_common.sh"
check_required_env_vars "CONTAINER_NAME" "HOST_PORT" "VOLUME_NAME"

# check volume exists.
if ! docker volume inspect "${VOLUME_NAME}" &>/dev/null; then
    die "Docker volume ${VOLUME_NAME} does not exist"
fi

# heredoc for config file. Have to use double quotes to substitute variables.
docker run --rm -v ${VOLUME_NAME}:/data alpine sh -c "\
cat <<EOF > /data/sos_config.json
{
    \"write_tokens\": [
        ${WRITE_TOKENS}
    ],
    \"object_store_path\": \"/data/storage\",
    \"host\": \"0.0.0.0\",
    \"port\": ${HOST_PORT}
}
EOF
"

DOCKER_RUN_CMD="docker run -d \
                --restart unless-stopped \
                --name ${CONTAINER_NAME} \
                -p ${HOST_PORT}:80 \
                -v ${VOLUME_NAME}:/data \
                ${IMAGE_REGISTRY}/${IMAGE_REPO}:${IMAGE_TAG}"


if ! create_and_start_container "$DOCKER_RUN_CMD" "$CONTAINER_NAME"; then
    die "Failed to start container ${CONTAINER_NAME}"
fi

# Check if the container is running
if ! _is_container_running "$CONTAINER_NAME"; then
    die "Container ${CONTAINER_NAME} is not running"
fi

echo "Container ${CONTAINER_NAME} started"