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