owpengram-server/build.sh
Astra f8f2c4bad4 build: create the pod with its port mappings if missing
Instead of erroring when the owpengram pod is absent, build.sh now creates it
with the MTProto (2398), admin (2600), extra TCP (2400) and RTC/UDP port
mappings.
2026-09-09 15:07:25 +01:00

55 lines
1.9 KiB
Bash
Executable file

#!/usr/bin/env bash
# Build the owpengram-server container image (stamping the current git state into
# the binary - .containerignore excludes .git, so go build can't see the repo and
# the values are passed in here), then recreate and start the pod containers.
#
# Usage: ./build.sh [extra podman build args...]
# IMAGE=my/tag ./build.sh override the image tag (default: owpengram-server)
# POD=name ./build.sh override the pod name (default: owpengram)
# NO_DEPLOY=1 ./build.sh build the image only, don't touch containers
set -euo pipefail
cd "$(dirname "$0")"
IMAGE="${IMAGE:-owpengram-server}"
POD="${POD:-owpengram}"
podman build \
--build-arg GIT_COMMIT="$(git rev-parse HEAD)" \
--build-arg GIT_BRANCH="$(git rev-parse --abbrev-ref HEAD)" \
--build-arg GIT_TREE_STATE="$(git diff --quiet && echo clean || echo dirty)" \
--build-arg BUILD_TIME="$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
-t "$IMAGE" \
-f Containerfile \
"$@" \
.
if [ "${NO_DEPLOY:-0}" = "1" ]; then
echo "built $IMAGE (NO_DEPLOY=1, containers unchanged)"
exit 0
fi
if ! podman pod exists "$POD"; then
echo "pod '$POD' does not exist - creating it"
podman pod create --name "$POD" \
-p 2398:2398 \
-p 127.0.0.1:2600:2600 \
-p 2400:2400 \
-p 12399:12399/udp \
-p 12400:12400/udp \
-p 12500-12999:12500-12999/udp
fi
if [ ! -f .env ]; then
echo "error: .env not found (containers are created with --env-file .env)" >&2
exit 1
fi
podman create --replace --pod "$POD" --name owpengram-server --restart unless-stopped \
--pull never --env-file .env -v owpengram_serverdata:/data \
"$IMAGE"
podman create --replace --pod "$POD" --name owpengram-admin --restart unless-stopped \
--pull never --env-file .env --entrypoint /app/telesrv-admin \
"$IMAGE"
podman start owpengram-server owpengram-admin
podman ps --pod --filter "pod=$POD" --format 'table {{.Names}} {{.Status}} {{.Image}}'