#!/bin/sh # Default values CONTAINER_NAME="t11" CONTAINER_IMAGE="t18" PORT="3002" SHARED_NETWORK="main_netwok" LOG_DIR="/rdata/logs" VOLUMES="" # Parse command-line arguments while [ $# -gt 0 ]; do case "$1" in --name) CONTAINER_NAME="$2"; shift; shift ;; --image) CONTAINER_IMAGE="$2"; shift; shift ;; --port) PORT="$2"; shift; shift ;; --network) SHARED_NETWORK="$2"; shift; shift ;; --log-dir) LOG_DIR="$2"; shift; shift ;; -v) VOLUMES="$VOLUMES -v \"$2\""; shift; shift ;; *) echo "Unknown parameter passed: $1"; exit 1 ;; esac done # Remove existing container if it exists docker ps -a --filter "name=$CONTAINER_NAME" --format "{{.ID}}" | xargs -r docker rm -f # Check if network exists, create if not if ! docker network inspect "$SHARED_NETWORK" > /dev/null 2>&1; then echo "Creating network: $SHARED_NETWORK" docker network create "$SHARED_NETWORK" fi # Start the container in detached mode docker run -d -p "$PORT:3000" \ --name="$CONTAINER_NAME" \ -e HOST=0.0.0.0 \ -e WDS_SOCKET_HOST=0.0.0.0 \ -e WDS_SOCKET_PORT=$PORT \ -v "$LOG_DIR/containers/$CONTAINER_NAME:/app_logs" \ -v "/rdata/entrypoint/entrypoint.sh:/entrypoint.sh" \ -v "/rdata/runs/t14/src:/app/src" \ -v "/rdata/runs/t14/public:/app/public" \ "$CONTAINER_IMAGE" # Redirect container logs to a file mkdir -p "$LOG_DIR/containers/$CONTAINER_NAME" docker exec -it "$CONTAINER_NAME" sh /entrypoint.sh docker exec -it "$CONTAINER_NAME" sh -c 'echo "" > /etc/motd' echo "\nStarting virtual machine ..." > "$LOG_DIR/containers/$CONTAINER_NAME/log.log" echo "Reserving virtual disk and RAM space ...\n\n" | tee -a "$LOG_DIR/containers/$CONTAINER_NAME/log.log" docker logs -f "$CONTAINER_NAME" | tee -a "$LOG_DIR/containers/$CONTAINER_NAME/log.log" 2>&1 &