From 3ec1fa1a0787f66075115af664389a834dbbf8d6 Mon Sep 17 00:00:00 2001 From: Josh Knapp Date: Tue, 30 Jan 2024 13:34:03 -0800 Subject: [PATCH] Adding script to make it easier to create local development --- local-dev.sh | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100755 local-dev.sh diff --git a/local-dev.sh b/local-dev.sh new file mode 100755 index 0000000..893e970 --- /dev/null +++ b/local-dev.sh @@ -0,0 +1,64 @@ +#!/usr/bin/env bash +name='' +http_port='80' +https_port='443' +root_path="$(pwd)" +verbose='false' + +while getopts 'n:p:s:r:vh' flag; do + case "${flag}" in + n) name="${OPTARG}" ;; + p) http_port="${OPTARG}" ;; + s) https_port="${OPTARG}" ;; + r) root_path="${OPTARG}" ;; + v) verbose='true' ;; + h) echo "Variables" + echo "-n = Name of Container, Required" + echo "-p = Non-https Port Override, default 80" + echo "-s = Https Port Override, default 443" + echo "-r = Root Path for files and database, defaults to current working path" + echo "-v = Enable Verbose Mode" + exit 1 ;; + esac +done + +#Check if Docker is installed +echo "Checking if Docker is Installed..." +check_docker=$(command -v docker) +if [ $? != 0 ]; then + echo "Docker must be installed to run this application" + exit 1 +fi +echo "Docker looks to be installed" +if [ -z "$name" ]; then + echo "Name not set, please set it with -n" + exit 1 +fi +echo "Building Docker Image..." +user=$(whoami) +uid=$(id -u) +if [ ! -d "$root_path/db" ]; then + mkdir -p "$root_path/db"; +fi +if [ ! -d "$root_path/web" ]; then + mkdir -p "$root_path/web"; +fi +$check_docker run -d -p "$http_port":80 -p "$https_port":443 -e PHPVER=82 -e environment=DEV --mount type=bind,source="$root_path"/web,target=/home/"$user"/public_html --mount type=bind,source="$root_path"/db,target=/var/lib/mysql -e uid="$uid" -e user="$user" -e domain="$name-local.dev" --name "$name" public.ecr.aws/s1f6k4w4/cac +echo "Creating management scripts in root directory..." +echo "#!/usr/bin/env bash" > "$root_path/instance_start" +echo "docker start $name" >> "$root_path/instance_start" +echo "#!/usr/bin/env bash" > "$root_path/instance_stop" +echo "docker stop $name" >> "$root_path/instance_stop" +echo "#!/usr/bin/env bash" > "$root_path/instance_logs" +echo "docker exec $name bash -c 'tail -f /etc/httpd/logs/*'" >> "$root_path/instance_logs" +echo "#!/usr/bin/env bash" > "$root_path/instance_db_info" +echo "docker exec $name cat /var/lib/mysql/creds" >> "$root_path/instance_db_info" +chmod +x $root_path/instance_* +echo "Waiting 120 seconds for setup to finish" +sleep 120; +echo "Installing WordPress..." +docker exec $name bash -c "cd /home/$(whoami)/public_html; wp core download; chown -R $(whoami) /home/$(whoami)/public_html" +echo "Local Development Instance Created, to stop run ./instance_stop from within the base directory" +echo "MySQL DB Credentials" +docker exec $name cat /var/lib/mysql/creds +exit 0 \ No newline at end of file -- 2.43.5