- Add build/load script for image management - Use .env config for image naming and PHP version - Switch to www-data user in Dockerfile - Update compose.yaml to use pre-built images - Add .dockerignore - Simplify entrypoint script
63 lines
1.8 KiB
Bash
Executable File
63 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Help
|
|
if [[ $# -eq 0 ]]; then
|
|
echo "Usage: $0 {build|load} [source]"
|
|
echo " build - Build image and save archive"
|
|
echo " load [source] - Load image from:"
|
|
echo " (no arg) - Use archive or build from source"
|
|
echo " URL - download from URL then load"
|
|
echo " file - load from specified file via docker load command"
|
|
echo ""
|
|
echo "Archive location: \${IMAGE_NAME}_\$IMAGE_TAG.tar.gz in current directory"
|
|
exit 0
|
|
fi
|
|
|
|
# Load config
|
|
[[ ! -f .env ]] && cp .env.example .env
|
|
source .env
|
|
|
|
# Validate
|
|
if [[ -z "${IMAGE_NAME:-}" ]] || [[ -z "${IMAGE_TAG:-}" ]] || [[ -z "${PHP_VERSION:-}" ]]; then
|
|
echo "Error: IMAGE_NAME or IMAGE_TAG or PHP_VERSION not set in .env"
|
|
echo "Please add to .env (check vars in .env.example):"
|
|
echo "PHP_VERSION=8.3-fpm # Used in Dockerfile"
|
|
echo "IMAGE_NAME=your-image-name"
|
|
echo "IMAGE_TAG=\${PHP_VERSION} # Or custom tag"
|
|
exit 1
|
|
fi
|
|
|
|
IMAGE="$IMAGE_NAME:$IMAGE_TAG"
|
|
TAR_FILE="${IMAGE_NAME}_$IMAGE_TAG.tar.gz"
|
|
|
|
ACTION="${1:-}"
|
|
SOURCE="${2:-}"
|
|
|
|
case "$ACTION" in
|
|
build)
|
|
docker build -f docker/Dockerfile --build-arg PHP_VERSION=$PHP_VERSION -t "$IMAGE" .
|
|
docker save "$IMAGE" | gzip > "$TAR_FILE"
|
|
;;
|
|
load)
|
|
if [[ -f "$TAR_FILE" ]]; then
|
|
docker load < "$TAR_FILE"
|
|
elif [[ -n "$SOURCE" ]]; then
|
|
if [[ "$SOURCE" =~ ^https?:// ]]; then
|
|
curl -L "$SOURCE" -o "$TAR_FILE"
|
|
docker load < "$TAR_FILE"
|
|
else
|
|
# Handle local file path
|
|
docker load < "$SOURCE"
|
|
fi
|
|
else
|
|
docker build -f docker/Dockerfile --build-arg PHP_VERSION=$PHP_VERSION -t "$IMAGE" .
|
|
fi
|
|
;;
|
|
*)
|
|
echo "Error: Unknown action '$ACTION'"
|
|
echo "Usage: $0 {build|load} [source]"
|
|
exit 1
|
|
;;
|
|
esac
|