compose.yml für dockge dazu
This commit is contained in:
60
deploy_citysensor.sh
Executable file
60
deploy_citysensor.sh
Executable file
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
# Deploys laufschrift to docker.citysensor.de by:
|
||||
# 1) building and pushing a multi-platform image
|
||||
# 2) syncing compose/env files to the remote host
|
||||
# 3) pulling and restarting the service remotely
|
||||
|
||||
REMOTE_HOST="${REMOTE_HOST:-docker.citysensor.de}"
|
||||
REMOTE_USER="${REMOTE_USER:-rxf}"
|
||||
REMOTE_PORT="${REMOTE_PORT:-22022}"
|
||||
REMOTE_DIR="${REMOTE_DIR:-/opt/laufschrift}"
|
||||
|
||||
IMAGE_REPO="${IMAGE_REPO:-gitea.fuerst-stuttgart.de/admin/laufschrift}"
|
||||
IMAGE_TAG="${IMAGE_TAG:-$(date +%Y%m%d%H%M)}"
|
||||
PLATFORMS="${PLATFORMS:-linux/amd64,linux/arm64}"
|
||||
|
||||
DEPLOY_ENV_FILE="${DEPLOY_ENV_FILE:-.env}"
|
||||
BUILD_PUSH="${BUILD_PUSH:-1}"
|
||||
|
||||
FULL_IMAGE="${IMAGE_REPO}:${IMAGE_TAG}"
|
||||
REMOTE="${REMOTE_USER}@${REMOTE_HOST}"
|
||||
|
||||
if [[ ! -f "docker-compose.yml" ]]; then
|
||||
echo "ERROR: docker-compose.yml not found in current directory."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ ! -f "${DEPLOY_ENV_FILE}" ]]; then
|
||||
echo "ERROR: ${DEPLOY_ENV_FILE} not found."
|
||||
echo " Create it first, e.g. from .env.example"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "${BUILD_PUSH}" == "1" ]]; then
|
||||
echo "==> Building and pushing multi-platform image: ${FULL_IMAGE}"
|
||||
docker buildx build \
|
||||
--platform "${PLATFORMS}" \
|
||||
-f Dockerfile_laufschrift \
|
||||
-t "${FULL_IMAGE}" \
|
||||
--push \
|
||||
.
|
||||
|
||||
# Keep :latest in sync for simple rollbacks and manual usage.
|
||||
docker buildx imagetools create \
|
||||
-t "${IMAGE_REPO}:latest" \
|
||||
"${FULL_IMAGE}"
|
||||
fi
|
||||
|
||||
echo "==> Syncing compose and env to ${REMOTE}:${REMOTE_DIR}"
|
||||
ssh -p "${REMOTE_PORT}" "${REMOTE}" "mkdir -p '${REMOTE_DIR}'"
|
||||
scp -P "${REMOTE_PORT}" docker-compose.yml "${REMOTE}:${REMOTE_DIR}/docker-compose.yml"
|
||||
scp -P "${REMOTE_PORT}" "${DEPLOY_ENV_FILE}" "${REMOTE}:${REMOTE_DIR}/.env"
|
||||
|
||||
echo "==> Deploying ${FULL_IMAGE} on ${REMOTE_HOST}"
|
||||
ssh -p "${REMOTE_PORT}" "${REMOTE}" "cd '${REMOTE_DIR}' && IMAGE='${FULL_IMAGE}' docker compose pull app && IMAGE='${FULL_IMAGE}' docker compose up -d --no-build --remove-orphans"
|
||||
|
||||
echo "==> Deployment finished"
|
||||
echo " Host: ${REMOTE_HOST}"
|
||||
echo " Image: ${FULL_IMAGE}"
|
||||
Reference in New Issue
Block a user