Add GoldPi Email-Forwarder test container deploy
This commit is contained in:
parent
91e52aecd0
commit
8a6160817b
8 changed files with 143 additions and 0 deletions
|
|
@ -0,0 +1,51 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
set -a
|
||||||
|
source ./config.env
|
||||||
|
set +a
|
||||||
|
|
||||||
|
mkdir -p "$APP_DIR/data" "$APP_DIR/backup" "$APP_DIR/build" "$APP_DIR/export"
|
||||||
|
|
||||||
|
if [ ! -d "$BUILD_SRC" ]; then
|
||||||
|
echo "BUILD_SRC missing: $BUILD_SRC" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
podman exec -w /work/Email-Forwarder "$DEVOP_CONTAINER" bash -lc '
|
||||||
|
set -euo pipefail
|
||||||
|
mkdir -p frontend-js/dist
|
||||||
|
if [ ! -f frontend-js/dist/htmx.min.js ]; then
|
||||||
|
curl -fsSL https://unpkg.com/htmx.org@1.9.12/dist/htmx.min.js -o frontend-js/dist/htmx.min.js
|
||||||
|
fi
|
||||||
|
go mod tidy
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -ldflags "-s -w" -o emailforwarder .
|
||||||
|
'
|
||||||
|
|
||||||
|
install -m0755 "$BUILD_SRC/emailforwarder" "$APP_DIR/build/emailforwarder"
|
||||||
|
if [ ! -f "$APP_DIR/config.json" ]; then
|
||||||
|
install -m0644 "$APP_DIR/config.json.example" "$APP_DIR/config.json"
|
||||||
|
fi
|
||||||
|
install -m0644 "$APP_DIR/config.json" "$APP_DIR/build/config.json"
|
||||||
|
install -m0644 "$APP_DIR/Containerfile" "$APP_DIR/build/Containerfile"
|
||||||
|
|
||||||
|
podman build -t "$IMAGE_NAME" -f "$APP_DIR/build/Containerfile" "$APP_DIR/build"
|
||||||
|
|
||||||
|
podman rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||||
|
podman pod rm -f "$POD_NAME" >/dev/null 2>&1 || true
|
||||||
|
podman pod create --name "$POD_NAME" --network "$NETWORK" -p "$HOST_BIND:$APP_PORT:$APP_PORT" >/dev/null
|
||||||
|
podman run -d --name "$CONTAINER_NAME" --pod "$POD_NAME" \
|
||||||
|
--restart=unless-stopped \
|
||||||
|
-v "$APP_DIR/data:/app/data:Z" \
|
||||||
|
-v "$APP_DIR/backup:/app/backup:Z" \
|
||||||
|
"$IMAGE_NAME" >/dev/null
|
||||||
|
|
||||||
|
for _ in {1..20}; do
|
||||||
|
if curl -fsS "http://$HOST_BIND:$APP_PORT/" >/dev/null 2>&1; then
|
||||||
|
echo "Email-Forwarder reachable at http://$HOST_BIND:$APP_PORT/"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
|
||||||
|
curl -fsS "http://$HOST_BIND:$APP_PORT/" >/dev/null
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
./01-install-Email-Forwarder-Pod.sh
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
set -a
|
||||||
|
source ./config.env
|
||||||
|
set +a
|
||||||
|
|
||||||
|
BUNDLE="${1:-}"
|
||||||
|
if [ -z "$BUNDLE" ] || [ ! -f "$BUNDLE" ]; then
|
||||||
|
echo "Usage: $0 <export.tar.gz>" >&2
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
tar -xzf "$BUNDLE" -C "$APP_DIR"
|
||||||
|
echo "Imported $BUNDLE into $APP_DIR"
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
set -a
|
||||||
|
source ./config.env
|
||||||
|
set +a
|
||||||
|
|
||||||
|
mkdir -p "$APP_DIR/export"
|
||||||
|
TS="$(date +%Y%m%d-%H%M%S)"
|
||||||
|
OUT="$APP_DIR/export/email-forwarder-pod-$TS.tar.gz"
|
||||||
|
|
||||||
|
tar -czf "$OUT" \
|
||||||
|
config.env \
|
||||||
|
config.json \
|
||||||
|
Containerfile \
|
||||||
|
01-install-Email-Forwarder-Pod.sh \
|
||||||
|
02-reconf-Email-Forwarder-Pod.sh \
|
||||||
|
03-import-Email-Forwarder-Pod.sh \
|
||||||
|
04-export-Email-Forwarder-Pod.sh \
|
||||||
|
05-uninstall-Email-Forwarder-Pod.sh \
|
||||||
|
data \
|
||||||
|
backup
|
||||||
|
|
||||||
|
sha256sum "$OUT" > "$OUT.sha256"
|
||||||
|
echo "$OUT"
|
||||||
|
cat "$OUT.sha256"
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
set -a
|
||||||
|
source ./config.env
|
||||||
|
set +a
|
||||||
|
|
||||||
|
podman rm -f "$CONTAINER_NAME" >/dev/null 2>&1 || true
|
||||||
|
podman pod rm -f "$POD_NAME" >/dev/null 2>&1 || true
|
||||||
|
echo "Runtime removed. Persistent data kept at $APP_DIR/data and $APP_DIR/backup"
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
FROM docker.io/library/debian:stable-slim
|
||||||
|
RUN apt-get update \
|
||||||
|
&& apt-get install -y --no-install-recommends ca-certificates \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
WORKDIR /app
|
||||||
|
COPY emailforwarder /app/emailforwarder
|
||||||
|
COPY config.json /app/config.json
|
||||||
|
RUN chmod 0755 /app/emailforwarder \
|
||||||
|
&& mkdir -p /app/data /app/backup
|
||||||
|
EXPOSE 8087
|
||||||
|
VOLUME ["/app/data", "/app/backup"]
|
||||||
|
ENTRYPOINT ["/app/emailforwarder"]
|
||||||
10
deploy/goldpi-test-container/email-forwarder-pod/config.env
Normal file
10
deploy/goldpi-test-container/email-forwarder-pod/config.env
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
SERVICE_NAME=Email-Forwarder
|
||||||
|
POD_NAME=email-forwarder-pod
|
||||||
|
CONTAINER_NAME=email-forwarder
|
||||||
|
IMAGE_NAME=localhost/email-forwarder:test
|
||||||
|
NETWORK=base-net
|
||||||
|
HOST_BIND=127.0.0.1
|
||||||
|
APP_PORT=8087
|
||||||
|
BUILD_SRC=/mnt/DATA/Build/Email-Forwarder
|
||||||
|
DEVOP_CONTAINER=DevOp-Pod-build
|
||||||
|
APP_DIR=/mnt/DATA/Containers/Test-Container/Email-Forwarder-Pod
|
||||||
|
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
"bind": "0.0.0.0",
|
||||||
|
"port": "8087",
|
||||||
|
"admin_user": "vAdmin@golddata.eu",
|
||||||
|
"admin_pass": "CHANGE-ME-lokal",
|
||||||
|
"db_path": "/app/data/emailforwarder.db",
|
||||||
|
"mbox_root": "/app/backup",
|
||||||
|
"forward_smtp": {
|
||||||
|
"host": "",
|
||||||
|
"port": 587,
|
||||||
|
"user": "",
|
||||||
|
"pass": "",
|
||||||
|
"from": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue