mirror of
https://github.com/willfarrell/docker-crontab.git
synced 2025-04-19 20:59:56 +02:00
Merge pull request #2 from SimplicityGuy/additional-fixes
fix: additional fixes
This commit is contained in:
commit
c530324db3
8
.gitignore
vendored
8
.gitignore
vendored
@ -1,6 +1,10 @@
|
|||||||
.idea
|
.idea
|
||||||
*.iml
|
*.iml
|
||||||
|
|
||||||
config.json
|
|
||||||
.vscode
|
.vscode
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
|
config.json
|
||||||
|
config.working.json
|
||||||
|
|
||||||
|
jobs/
|
||||||
|
projects/
|
||||||
|
@ -16,7 +16,7 @@ fi
|
|||||||
mkdir -p "${HOME_DIR}"/jobs "${HOME_DIR}"/projects
|
mkdir -p "${HOME_DIR}"/jobs "${HOME_DIR}"/projects
|
||||||
|
|
||||||
if [ -z "${DOCKER_HOST}" ] && [ -a "${DOCKER_PORT_2375_TCP}" ]; then
|
if [ -z "${DOCKER_HOST}" ] && [ -a "${DOCKER_PORT_2375_TCP}" ]; then
|
||||||
export DOCKER_HOST='tcp://docker:2375'
|
export DOCKER_HOST="tcp://docker:2375"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${LOG_FILE}" == "" ]; then
|
if [ "${LOG_FILE}" == "" ]; then
|
||||||
@ -37,7 +37,7 @@ normalize_config() {
|
|||||||
elif [ -f "${HOME_DIR}/config.yaml" ]; then
|
elif [ -f "${HOME_DIR}/config.yaml" ]; then
|
||||||
JSON_CONFIG="$(rq -y <<< "$(cat "${HOME_DIR}"/config.yaml)")"
|
JSON_CONFIG="$(rq -y <<< "$(cat "${HOME_DIR}"/config.yaml)")"
|
||||||
fi
|
fi
|
||||||
jq -r 'map(.)' <<< "${JSON_CONFIG}" > "${HOME_DIR}"/config.working.json
|
jq -r 'to_entries | map_values(.value + { name: .key })' <<< "${JSON_CONFIG}" > "${HOME_DIR}"/config.working.json
|
||||||
}
|
}
|
||||||
|
|
||||||
ensure_docker_socket_accessible() {
|
ensure_docker_socket_accessible() {
|
||||||
@ -67,19 +67,19 @@ slugify() {
|
|||||||
|
|
||||||
make_image_cmd() {
|
make_image_cmd() {
|
||||||
DOCKERARGS=$(echo "${1}" | jq -r .dockerargs)
|
DOCKERARGS=$(echo "${1}" | jq -r .dockerargs)
|
||||||
VOLUMES=$(echo "${1}" | jq -r '.volumes | map(" -v " + .) | join("")')
|
if [ "${DOCKERARGS}" == "null" ]; then DOCKERARGS=; fi
|
||||||
PORTS=$(echo "${1}" | jq -r '.ports | map(" -p " + .) | join("")')
|
VOLUMES=$(echo "${1}" | jq -r 'select(.volumes != null) | .volumes | map(" -v " + .) | join("")')
|
||||||
EXPOSE=$(echo "${1}" | jq -r '.expose | map(" --expose " + .) | join("")')
|
PORTS=$(echo "${1}" | jq -r 'select(.ports != null) | .ports | map(" -p " + .) | join("")')
|
||||||
|
EXPOSE=$(echo "${1}" | jq -r 'select(.expose != null) | .expose | map(" --expose " + .) | join("")')
|
||||||
NAME=$(echo "${1}" | jq -r 'select(.name != null) | .name')
|
NAME=$(echo "${1}" | jq -r 'select(.name != null) | .name')
|
||||||
NETWORK=$(echo "${1}" | jq -r 'select(.network != null) | .network')
|
NETWORK=$(echo "${1}" | jq -r 'select(.network != null) | .network')
|
||||||
ENVIRONMENT=$(echo "${1}" | jq -r '.environment | map(" -e " + .) | join("")')
|
ENVIRONMENT=$(echo "${1}" | jq -r 'select(.environment != null) | .environment | map(" -e " + .) | join("")')
|
||||||
if [ "${DOCKERARGS}" == "null" ]; then DOCKERARGS=; fi
|
if [ -n "${NAME}" ]; then DOCKERARGS+=" --rm --name ${NAME} "; fi
|
||||||
if [ -n "${NAME}" ]; then DOCKERARGS="${DOCKERARGS} --rm --name ${NAME} "; fi
|
if [ -n "${NETWORK}" ]; then DOCKERARGS+=" --network ${NETWORK} "; fi
|
||||||
if [ -n "${NETWORK}" ]; then DOCKERARGS="${DOCKERARGS} --network ${NETWORK} "; fi
|
if [ -n "${VOLUMES}" ]; then DOCKERARGS+="${VOLUMES}"; fi
|
||||||
if [ -n "${VOLUMES}" ]; then DOCKERARGS="${DOCKERARGS}${VOLUMES}"; fi
|
if [ -n "${ENVIRONMENT}" ]; then DOCKERARGS+="${ENVIRONMENT}"; fi
|
||||||
if [ -n "${ENVIRONMENT}" ]; then DOCKERARGS="${DOCKERARGS}${ENVIRONMENT}"; fi
|
if [ -n "${PORTS}" ]; then DOCKERARGS+="${PORTS}"; fi
|
||||||
if [ -n "${PORTS}" ]; then DOCKERARGS="${DOCKERARGS}${PORTS}"; fi
|
if [ -n "${EXPOSE}" ]; then DOCKERARGS+="${EXPOSE}"; fi
|
||||||
if [ -n "${EXPOSE}" ]; then DOCKERARGS="${DOCKERARGS}${EXPOSE}"; fi
|
|
||||||
IMAGE=$(echo "${1}" | jq -r .image | envsubst)
|
IMAGE=$(echo "${1}" | jq -r .image | envsubst)
|
||||||
TMP_COMMAND=$(echo "${1}" | jq -r .command)
|
TMP_COMMAND=$(echo "${1}" | jq -r .command)
|
||||||
echo "docker run ${DOCKERARGS} ${IMAGE} ${TMP_COMMAND}"
|
echo "docker run ${DOCKERARGS} ${IMAGE} ${TMP_COMMAND}"
|
||||||
@ -104,8 +104,8 @@ cat << EOF > "${HOME_DIR}"/projects/"${SCRIPT_NAME}".sh
|
|||||||
set -e
|
set -e
|
||||||
|
|
||||||
CONTAINERS=\$(docker ps --format '{{.Names}}' | grep -E "^${PROJECT}_${CONTAINER}.[0-9]+")
|
CONTAINERS=\$(docker ps --format '{{.Names}}' | grep -E "^${PROJECT}_${CONTAINER}.[0-9]+")
|
||||||
for CONTAINER_NAME in \$CONTAINERS; do
|
for CONTAINER_NAME in \${CONTAINERS}; do
|
||||||
docker exec ${DOCKERARGS} \${CONTAINER_NAME} ${TMP_COMMAND}
|
docker exec "${DOCKERARGS} \${CONTAINER_NAME} ${TMP_COMMAND}"
|
||||||
done
|
done
|
||||||
EOF
|
EOF
|
||||||
echo "/bin/bash ${HOME_DIR}/projects/${SCRIPT_NAME}.sh"
|
echo "/bin/bash ${HOME_DIR}/projects/${SCRIPT_NAME}.sh"
|
||||||
@ -186,23 +186,26 @@ function build_crontab() {
|
|||||||
|
|
||||||
ONSTART=()
|
ONSTART=()
|
||||||
while read -r i ; do
|
while read -r i ; do
|
||||||
|
|
||||||
SCHEDULE=$(jq -r .["$i"].schedule "${CONFIG}" | sed 's/\*/\\*/g')
|
SCHEDULE=$(jq -r .["$i"].schedule "${CONFIG}" | sed 's/\*/\\*/g')
|
||||||
if [ "${SCHEDULE}" == "null" ]; then
|
if [ "${SCHEDULE}" == "null" ]; then
|
||||||
echo "Schedule Missing: $(jq -r .["$i"].schedule "${CONFIG}")"
|
echo "'schedule' missing: $(jq -r .["$i"].schedule "${CONFIG}")"
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
SCHEDULE=$(parse_schedule "${SCHEDULE}" | sed 's/\\//g')
|
SCHEDULE=$(parse_schedule "${SCHEDULE}" | sed 's/\\//g')
|
||||||
|
|
||||||
COMMAND=$(jq -r .["$i"].command "${CONFIG}")
|
COMMAND=$(jq -r .["$i"].command "${CONFIG}")
|
||||||
if [ "${COMMAND}" == "null" ]; then
|
if [ "${COMMAND}" == "null" ]; then
|
||||||
echo "Command Missing: '${COMMAND}'"
|
echo "'command' missing: '${COMMAND}'"
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
COMMENT=$(jq -r .["$i"].comment "${CONFIG}")
|
COMMENT=$(jq -r .["$i"].comment "${CONFIG}")
|
||||||
if [ "${COMMENT}" != "null" ]; then
|
if [ "${COMMENT}" != "null" ]; then
|
||||||
echo "# ${COMMENT}" >> ${CRONTAB_FILE}
|
COMMENT=" ${COMMENT}"
|
||||||
|
echo "#${COMMENT}" >> ${CRONTAB_FILE}
|
||||||
|
else
|
||||||
|
# Reset COMMENT to empty rather than keep the 'null' value.
|
||||||
|
COMMENT=" "
|
||||||
fi
|
fi
|
||||||
|
|
||||||
SCRIPT_NAME=$(jq -r .["$i"].name "${CONFIG}")
|
SCRIPT_NAME=$(jq -r .["$i"].name "${CONFIG}")
|
||||||
@ -216,8 +219,7 @@ cat << EOF > "${HOME_DIR}"/jobs/"${SCRIPT_NAME}".sh
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "Start Cronjob **${SCRIPT_NAME}** ${COMMENT}"
|
echo "start cron job **${SCRIPT_NAME}**${COMMENT}"
|
||||||
|
|
||||||
$(make_cmd "$(jq -c .["$i"] "${CONFIG}")")
|
$(make_cmd "$(jq -c .["$i"] "${CONFIG}")")
|
||||||
EOF
|
EOF
|
||||||
TRIGGER=$(jq -r .["$i"].trigger "${CONFIG}")
|
TRIGGER=$(jq -r .["$i"].trigger "${CONFIG}")
|
||||||
@ -225,14 +227,14 @@ EOF
|
|||||||
while read -r j ; do
|
while read -r j ; do
|
||||||
TRIGGER_COMMAND=$(jq .["$i"].trigger["$j"].command "${CONFIG}")
|
TRIGGER_COMMAND=$(jq .["$i"].trigger["$j"].command "${CONFIG}")
|
||||||
if [ "${TRIGGER_COMMAND}" == "null" ]; then
|
if [ "${TRIGGER_COMMAND}" == "null" ]; then
|
||||||
echo "Command Missing: '${TRIGGER_COMMAND}'"
|
echo "'command' missing: '${TRIGGER_COMMAND}'"
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
make_cmd "${TRIGGER_COMMAND}" >> "${HOME_DIR}"/jobs/"${SCRIPT_NAME}".sh
|
make_cmd "${TRIGGER_COMMAND}" >> "${HOME_DIR}"/jobs/"${SCRIPT_NAME}".sh
|
||||||
done < <(jq -r '.['"$i"'].trigger|keys[]' "${CONFIG}")
|
done < <(jq -r '.['"$i"'].trigger|keys[]' "${CONFIG}")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "echo \"End Cronjob **${SCRIPT_NAME}** ${COMMENT}\"" >> "${HOME_DIR}"/jobs/"${SCRIPT_NAME}".sh
|
echo "echo \"end cron job **${SCRIPT_NAME}**${COMMENT}\"" >> "${HOME_DIR}"/jobs/"${SCRIPT_NAME}".sh
|
||||||
|
|
||||||
echo "${SCHEDULE} ${COMMAND}" >> ${CRONTAB_FILE}
|
echo "${SCHEDULE} ${COMMAND}" >> ${CRONTAB_FILE}
|
||||||
|
|
||||||
@ -255,7 +257,7 @@ start_app() {
|
|||||||
normalize_config
|
normalize_config
|
||||||
export CONFIG=${HOME_DIR}/config.working.json
|
export CONFIG=${HOME_DIR}/config.working.json
|
||||||
if [ ! -f "${CONFIG}" ]; then
|
if [ ! -f "${CONFIG}" ]; then
|
||||||
echo "Unable to find ${CONFIG}."
|
echo "generated ${CONFIG} missing."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [ "${1}" == "crond" ]; then
|
if [ "${1}" == "crond" ]; then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user