144 lines
5.0 KiB
Bash
144 lines
5.0 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
OMC_CONTAINER_NAME="omc"
|
|
MYSQL_CONTAINER_NAME="omc_mariadb"
|
|
REDIS_CONTAINER_NAME="omc_keydb"
|
|
|
|
# usage
|
|
usage() {
|
|
echo "Usage: bash omc-docker.sh [install|uninstall|restart|start|stop]"
|
|
exit 1
|
|
}
|
|
|
|
# install
|
|
install(){
|
|
echo "====================== Install container omc service ====================="
|
|
echo "Install mysql and redis service program, default N (Y/N):"
|
|
read DB_SERVICE
|
|
DB_SERVICE=${DB_SERVICE:-"N"}
|
|
echo "Select the image in the tar directory (omc_{version}-{system}-{arch}.tar):"
|
|
read OMC_FILE
|
|
OMC_FILE=${OMC_FILE:-"omc_{version}-{system}-{arch}.tar"}
|
|
echo "Container time zone (Asia/Shanghai):"
|
|
read OMC_TZ
|
|
OMC_TZ=${OMC_TZ:-"Asia/Shanghai"}
|
|
echo "Container service http port (80):"
|
|
read OMC_HTTP_PORT
|
|
OMC_HTTP_PORT=${OMC_HTTP_PORT:-"80"}
|
|
echo "Container service https port (443):"
|
|
read OMC_HTTPS_PORT
|
|
OMC_HTTPS_PORT=${OMC_HTTPS_PORT:-"443"}
|
|
echo "Container name ($OMC_CONTAINER_NAME):"
|
|
read OMC_CONTAINER_NAME
|
|
OMC_CONTAINER_NAME=${OMC_CONTAINER_NAME:-"omc"}
|
|
sed -i "s/^OMC_CONTAINER_NAME=.*/OMC_CONTAINER_NAME=\"$OMC_CONTAINER_NAME\"/" ./omc-docker.sh
|
|
echo "===================== Start ====================="
|
|
|
|
echo "==> Checking Docker version"
|
|
if sudo docker -v > /dev/null 2>&1; then
|
|
sudo docker -v
|
|
else
|
|
echo "Docker is not available or sudo privileges are not granted."
|
|
exit 1
|
|
fi
|
|
|
|
echo "==> Created service network"
|
|
NETWORK="omcnet"
|
|
if ! docker network ls --filter name=$NETWORK -q | grep -q .; then
|
|
docker network create $NETWORK
|
|
echo "Network '$NETWORK' created."
|
|
else
|
|
echo "Network '$NETWORK' already exists."
|
|
fi
|
|
|
|
echo "==> Install service mysql and redis container"
|
|
if [[ "$DB_SERVICE" =~ ^[Yy]$ ]]; then
|
|
# MySQL Config
|
|
mysql_container=$(docker ps --filter "name=$MYSQL_CONTAINER_NAME" --format "{{.Names}}")
|
|
if [[ -z "$mysql_container" ]]; then
|
|
echo "MySQL container is not running. Installing MySQL container..."
|
|
|
|
docker load --input $(pwd)/tar/mariadb_10.6.21_{arch}.tar
|
|
MYSQL_IMAGE="mariadb-{arch}:10.6.21"
|
|
MYSQL_ROOT_PASSWORD="1000omc@kp!"
|
|
MYSQL_DATA=/usr/local/etc/$MYSQL_CONTAINER_NAME/data
|
|
mkdir -p $MYSQL_DATA && chmod 777 $MYSQL_DATA
|
|
docker run --privileged=true --restart=always -e TZ="$OMC_TZ" \
|
|
-e MARIADB_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD \
|
|
-e MARIADB_DATABASE=omc_db \
|
|
-v $MYSQL_DATA:/var/lib/mysql \
|
|
--network $NETWORK \
|
|
--name $MYSQL_CONTAINER_NAME \
|
|
-d $MYSQL_IMAGE
|
|
else
|
|
echo "MySQL container is already running: $mysql_container"
|
|
fi
|
|
|
|
# Redis Config
|
|
redis_container=$(docker ps --filter "name=$REDIS_CONTAINER_NAME" --format "{{.Names}}")
|
|
if [[ -z "$redis_container" ]]; then
|
|
echo "Redis container is not running. Installing Redis container..."
|
|
docker load --input $(pwd)/tar/keydb_6.3.4_{arch}.tar
|
|
REDIS_IMAGE="keydb-{arch}:6.3.4"
|
|
REDIS_PASSWORD="helloearth"
|
|
REDIS_DATA=/usr/local/etc/$REDIS_CONTAINER_NAME/data
|
|
mkdir -p $REDIS_DATA && chmod 777 $REDIS_DATA
|
|
docker run --privileged=true --restart=always -e TZ="$OMC_TZ" \
|
|
-e KEYDB_PASSWORD=$REDIS_PASSWORD \
|
|
-v $REDIS_DATA:/bitnami/keydb/data \
|
|
--network $NETWORK \
|
|
--name $REDIS_CONTAINER_NAME \
|
|
-d $REDIS_IMAGE
|
|
else
|
|
echo "Redis container is already running: $redis_container"
|
|
fi
|
|
else
|
|
echo "You chose not to install MySQL and Redis containers."
|
|
fi
|
|
|
|
echo "==> Loading service omc container"
|
|
docker load --input $(pwd)/tar/$OMC_FILE
|
|
OMC_IMAGE=$(echo "$OMC_FILE" | sed -e 's/_/:/' -e 's/\.tar$//')
|
|
docker run --privileged=true --restart=always -m 512M \
|
|
-e TZ=$OMC_TZ \
|
|
-p $OMC_HTTP_PORT:80 \
|
|
-p $OMC_HTTPS_PORT:443 \
|
|
--network $NETWORK \
|
|
--name $OMC_CONTAINER_NAME \
|
|
-d $OMC_IMAGE
|
|
|
|
echo "Running service $OMC_CONTAINER_NAME container http port $OMC_HTTP_PORT / https port $OMC_HTTPS_PORT"
|
|
}
|
|
|
|
# uninstall
|
|
uninstall(){
|
|
docker stop $OMC_CONTAINER_NAME && docker rm $OMC_CONTAINER_NAME
|
|
docker stop $REDIS_CONTAINER_NAME && docker rm $REDIS_CONTAINER_NAME
|
|
docker stop $MYSQL_CONTAINER_NAME && docker rm $MYSQL_CONTAINER_NAME
|
|
}
|
|
|
|
# According to the input parameters, the corresponding method will be selected for execution, and the instructions will be executed without input.
|
|
case "$1" in
|
|
"install")
|
|
install
|
|
;;
|
|
"uninstall")
|
|
uninstall
|
|
;;
|
|
"restart")
|
|
echo "restart container $OMC_CONTAINER_NAME"
|
|
docker restart $OMC_CONTAINER_NAME
|
|
;;
|
|
"start")
|
|
echo "start container $OMC_CONTAINER_NAME"
|
|
docker start $OMC_CONTAINER_NAME
|
|
;;
|
|
"stop")
|
|
echo "stop container $OMC_CONTAINER_NAME"
|
|
docker stop $OMC_CONTAINER_NAME
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|