#!/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}}'