62 lines
1.7 KiB
Bash
Executable File
62 lines
1.7 KiB
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
# Load environment variables
|
|
source "$(dirname "$0")/../load-env.sh" 2>/dev/null || true
|
|
|
|
# Display usage information
|
|
usage() {
|
|
echo "Usage: $(basename "$0") <container-name> [version]"
|
|
echo
|
|
echo "Build and push a container image to the local registry from Dockerfile in containers/<container-name>"
|
|
echo
|
|
echo "Arguments:"
|
|
echo " container-name The name of the container (must exist in containers/ directory)"
|
|
echo " version Version tag for the image (default: latest)"
|
|
echo
|
|
echo "Example:"
|
|
echo " $(basename "$0") nextcloud"
|
|
echo " $(basename "$0") nextcloud 25.0.4-custom"
|
|
exit 1
|
|
}
|
|
|
|
# Check if required arguments are provided
|
|
if [ $# -lt 1 ]; then
|
|
usage
|
|
fi
|
|
|
|
CONTAINER_NAME="$1"
|
|
VERSION="${2:-latest}"
|
|
REGISTRY=$DOCKER_REGISTRY_HOST
|
|
CONTAINER_DIR="/data/repos/wild-cloud/containers/${CONTAINER_NAME}"
|
|
IMAGE_NAME="${REGISTRY}/${CONTAINER_NAME}:${VERSION}"
|
|
|
|
# Check if container directory exists
|
|
if [ ! -d "$CONTAINER_DIR" ]; then
|
|
echo "Error: Container directory not found: $CONTAINER_DIR"
|
|
echo "Available containers:"
|
|
ls -1 /data/repos/wild-cloud/containers/
|
|
exit 1
|
|
fi
|
|
|
|
# Check if Dockerfile exists
|
|
if [ ! -f "${CONTAINER_DIR}/Dockerfile" ]; then
|
|
echo "Error: Dockerfile not found in ${CONTAINER_DIR}"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Building container: ${CONTAINER_NAME}"
|
|
echo "Dockerfile path: ${CONTAINER_DIR}/Dockerfile"
|
|
echo "Target image: ${IMAGE_NAME}"
|
|
echo
|
|
|
|
# Build the Docker image
|
|
echo "Building image..."
|
|
docker build -t "${IMAGE_NAME}" -f "${CONTAINER_DIR}/Dockerfile" "${CONTAINER_DIR}"
|
|
|
|
# Push the image to the registry
|
|
echo "Pushing image to registry: ${REGISTRY}..."
|
|
docker push "${IMAGE_NAME}"
|
|
|
|
echo
|
|
echo "Successfully built and pushed: ${IMAGE_NAME}" |