feat: Add APP_NAME env support for branding and deployment

- Make app name configurable via APP_NAME env variable - Update UI,
HTML, Docker, scripts, and k8s to use APP_NAME - Add process-html.sh for
template substitution - Document APP_NAME usage in
docs/APP_NAME_CONFIGURATION.md - Update Dockerfile, compose, and scripts
for dynamic naming - Add index.html.template for environment-based
branding
This commit is contained in:
William Valentin
2025-09-07 12:21:44 -07:00
parent 46d737ed37
commit 585c526a65
13 changed files with 352 additions and 51 deletions

View File

@@ -34,9 +34,10 @@ print_error() {
# Cleanup function
cleanup() {
print_status "Cleaning up test containers..."
docker stop meds-validation-test 2>/dev/null || true
docker rm meds-validation-test 2>/dev/null || true
docker compose -f docker/docker-compose.yaml -p meds-validation down 2>/dev/null || true
APP_NAME_LOWER=$(echo "${APP_NAME:-meds}" | tr '[:upper:]' '[:lower:]')
docker stop ${APP_NAME_LOWER}-validation-test 2>/dev/null || true
docker rm ${APP_NAME_LOWER}-validation-test 2>/dev/null || true
docker compose -f docker/docker-compose.yaml -p ${APP_NAME_LOWER}-validation down 2>/dev/null || true
}
# Set trap for cleanup
@@ -80,6 +81,9 @@ docker buildx use meds-builder
print_status "4. Building multi-platform Docker image with buildx..."
# Convert APP_NAME to lowercase for Docker compatibility
APP_NAME_LOWER=$(echo "${APP_NAME:-meds}" | tr '[:upper:]' '[:lower:]')
# Determine host platform
HOST_ARCH="$(uname -m)"
case "$HOST_ARCH" in
@@ -97,18 +101,19 @@ if [[ "${MULTI_PLATFORM:-0}" == "1" || -n "${CONTAINER_REGISTRY:-}" ]]; then
if [[ -n "${CONTAINER_REGISTRY:-}" && "${CONTAINER_REGISTRY}" != */ ]]; then
CONTAINER_REGISTRY="${CONTAINER_REGISTRY}/"
fi
IMAGE_TAG="${IMAGE_TAG:-${CONTAINER_REGISTRY:-}meds-validation:latest}"
IMAGE_TAG="${IMAGE_TAG:-${CONTAINER_REGISTRY:-}${APP_NAME_LOWER}-validation:latest}"
print_status "Multi-platform build enabled (platforms: $BUILD_PLATFORMS) -> push $IMAGE_TAG"
else
BUILD_PLATFORMS="$HOST_PLATFORM"
EXPORT_MODE="--load"
IMAGE_TAG="${IMAGE_TAG:-meds-validation}"
IMAGE_TAG="${IMAGE_TAG:-${APP_NAME_LOWER}-validation}"
print_status "Single-platform build ($BUILD_PLATFORMS) -> load locally as $IMAGE_TAG"
fi
# Perform build
docker buildx build --no-cache \
--platform "$BUILD_PLATFORMS" \
--build-arg APP_NAME="${APP_NAME:-RxMinder}" \
--build-arg COUCHDB_USER="${COUCHDB_USER:-admin}" \
--build-arg COUCHDB_PASSWORD="${COUCHDB_PASSWORD:-change-this-secure-password}" \
--build-arg VITE_COUCHDB_URL="${VITE_COUCHDB_URL:-http://localhost:5984}" \
@@ -138,16 +143,16 @@ print_status "5. Testing container startup and health..."
# Run container in background
docker run --rm -d \
-p 8083:80 \
--name meds-validation-test \
--name ${APP_NAME_LOWER}-validation-test \
"$IMAGE_TAG"
# Wait for container to start
sleep 5
# Check if container is running
if ! docker ps | grep -q meds-validation-test; then
if ! docker ps | grep -q ${APP_NAME_LOWER}-validation-test; then
print_error "Container failed to start"
docker logs meds-validation-test
docker logs ${APP_NAME_LOWER}-validation-test
exit 1
fi
@@ -186,17 +191,17 @@ print_success "Docker Compose build successful"
# Test docker-compose with validation project name
print_status "8. Testing Docker Compose deployment..."
docker compose -f docker/docker-compose.yaml -p meds-validation up -d --build
docker compose -f docker/docker-compose.yaml -p ${APP_NAME_LOWER}-validation up -d --build
# Wait for services to start
sleep 10
# Check service health
if docker compose -f docker/docker-compose.yaml -p meds-validation ps | grep -q "Up"; then
if docker compose -f docker/docker-compose.yaml -p ${APP_NAME_LOWER}-validation ps | grep -q "Up"; then
print_success "Docker Compose services started successfully"
else
print_error "Docker Compose services failed to start"
docker compose -f docker/docker-compose.yaml -p meds-validation logs
docker compose -f docker/docker-compose.yaml -p ${APP_NAME_LOWER}-validation logs
exit 1
fi