-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbuild.sh
More file actions
executable file
·139 lines (125 loc) · 3.71 KB
/
build.sh
File metadata and controls
executable file
·139 lines (125 loc) · 3.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#!/bin/bash
# Script to build KumbiaPHP application with Docker
set -e
# Load configuration
if [ -f config.env ]; then
set -a # Export all variables
source config.env
set +a # Stop exporting
fi
# Function to show help
show_help() {
echo "Usage: ./build.sh [options]"
echo ""
echo "Options:"
echo " -k, --kumbiaphp-version VERSION KumbiaPHP version (default: $KUMBIAPHP_VERSION)"
echo " -m, --mysql-version VERSION MySQL version (default: $MYSQL_VERSION)"
echo " -p, --php-version VERSION PHP version (default: $PHP_VERSION)"
echo " -w, --webserver TYPE Web server type: apache|nginx (default: $WEBSERVER)"
echo " -r, --replicas NUMBER Number of replicas (default: $REPLICAS)"
echo " --no-cache Build without cache"
echo " -h, --help Show this help"
echo ""
echo "Examples:"
echo " ./build.sh # Use default values"
echo " ./build.sh -k v1.2.1 -m 8.0 -p 8.2 # Specific versions"
echo " ./build.sh -w nginx -p 8.2 # Use Nginx with PHP 8.2"
echo " ./build.sh --no-cache # Rebuild from scratch"
}
# Default values from config.env
KUMBIAPHP_VERSION=${KUMBIAPHP_VERSION:-1.2.1}
MYSQL_VERSION=${MYSQL_VERSION:-8.0}
PHP_VERSION=${PHP_VERSION:-8.4.1}
WEBSERVER=${WEBSERVER:-apache}
REPLICAS=${REPLICAS:-3}
NO_CACHE=""
# Process arguments
while [[ $# -gt 0 ]]; do
case $1 in
-k|--kumbiaphp-version)
KUMBIAPHP_VERSION="$2"
shift 2
;;
-m|--mysql-version)
MYSQL_VERSION="$2"
shift 2
;;
-p|--php-version)
PHP_VERSION="$2"
shift 2
;;
-w|--webserver)
WEBSERVER="$2"
if [[ "$WEBSERVER" != "apache" && "$WEBSERVER" != "nginx" ]]; then
echo "Error: Web server must be 'apache' or 'nginx'"
exit 1
fi
shift 2
;;
-r|--replicas)
REPLICAS="$2"
shift 2
;;
--no-cache)
NO_CACHE="--no-cache"
shift
;;
-h|--help)
show_help
exit 0
;;
*)
echo "Unknown option: $1"
show_help
exit 1
;;
esac
done
echo "Building KumbiaPHP application..."
echo "KumbiaPHP Version: $KUMBIAPHP_VERSION"
echo "MySQL Version: $MYSQL_VERSION"
echo "PHP Version: $PHP_VERSION"
echo "Web Server: $WEBSERVER"
echo "Replicas: $REPLICAS"
# Create necessary directories for bind mounts
echo "Creating necessary directories..."
if [ ! -d "app" ]; then
mkdir -p app
echo "Created app/ directory"
else
echo "app/ directory already exists"
fi
mkdir -p mysql/data
echo "Directories ready: app/, mysql/data/"
# Update config.env with new versions
cat > config.env << EOF
# Version configuration
KUMBIAPHP_VERSION=$KUMBIAPHP_VERSION
MYSQL_VERSION=$MYSQL_VERSION
PHP_VERSION=$PHP_VERSION
WEBSERVER=$WEBSERVER
# Database configuration
MYSQL_ROOT_PASSWORD=kumbia_root_pass
MYSQL_DATABASE=kumbia_db
MYSQL_USER=kumbia_user
MYSQL_PASSWORD=kumbia_pass
# Application configuration
APP_NAME=kumbia-app
APP_PORT=8180
MYSQL_PORT=8181
PHPMYADMIN_PORT=8182
# Docker Swarm configuration
REPLICAS=$REPLICAS
NETWORK_NAME=kumbia_network
EOF
# Build image
echo "Building Docker image..."
docker build $NO_CACHE \
--build-arg PHP_VERSION=$PHP_VERSION \
--build-arg KUMBIAPHP_VERSION=$KUMBIAPHP_VERSION \
--build-arg WEBSERVER=$WEBSERVER \
-t kumbia-app:latest .
echo "Build completed!"
echo ""
echo "To deploy on Docker Swarm, run:"
echo " ./deploy.sh"