Files
laravel-docker-setup/run.sh
y9938 49b7d83dfa feat(docker): refactor to use pre-built images
- 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
2025-12-10 03:06:02 +03:00

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