start.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #!/bin/sh
  2. # Default values
  3. CONTAINER_NAME="t11"
  4. CONTAINER_IMAGE="t18"
  5. PORT="3002"
  6. SHARED_NETWORK="main_netwok"
  7. LOG_DIR="/rdata/logs"
  8. VOLUMES=""
  9. # Parse command-line arguments
  10. while [ $# -gt 0 ]; do
  11. case "$1" in
  12. --name) CONTAINER_NAME="$2"; shift; shift ;;
  13. --image) CONTAINER_IMAGE="$2"; shift; shift ;;
  14. --port) PORT="$2"; shift; shift ;;
  15. --network) SHARED_NETWORK="$2"; shift; shift ;;
  16. --log-dir) LOG_DIR="$2"; shift; shift ;;
  17. -v) VOLUMES="$VOLUMES -v \"$2\""; shift; shift ;;
  18. *) echo "Unknown parameter passed: $1"; exit 1 ;;
  19. esac
  20. done
  21. # Remove existing container if it exists
  22. docker ps -a --filter "name=$CONTAINER_NAME" --format "{{.ID}}" | xargs -r docker rm -f
  23. # Check if network exists, create if not
  24. if ! docker network inspect "$SHARED_NETWORK" > /dev/null 2>&1; then
  25. echo "Creating network: $SHARED_NETWORK"
  26. docker network create "$SHARED_NETWORK"
  27. fi
  28. # Start the container in detached mode
  29. docker run -d -p "$PORT:3000" \
  30. --name="$CONTAINER_NAME" \
  31. -e HOST=0.0.0.0 \
  32. -e WDS_SOCKET_HOST=0.0.0.0 \
  33. -e WDS_SOCKET_PORT=$PORT \
  34. -v "$LOG_DIR/containers/$CONTAINER_NAME:/app_logs" \
  35. -v "/rdata/entrypoint/entrypoint.sh:/entrypoint.sh" \
  36. -v "/rdata/runs/t14/src:/app/src" \
  37. -v "/rdata/runs/t14/public:/app/public" \
  38. "$CONTAINER_IMAGE"
  39. # Redirect container logs to a file
  40. mkdir -p "$LOG_DIR/containers/$CONTAINER_NAME"
  41. docker exec -it "$CONTAINER_NAME" sh /entrypoint.sh
  42. docker exec -it "$CONTAINER_NAME" sh -c 'echo "" > /etc/motd'
  43. echo "\nStarting virtual machine ..." > "$LOG_DIR/containers/$CONTAINER_NAME/log.log"
  44. echo "Reserving virtual disk and RAM space ...\n\n" | tee -a "$LOG_DIR/containers/$CONTAINER_NAME/log.log"
  45. docker logs -f "$CONTAINER_NAME" | tee -a "$LOG_DIR/containers/$CONTAINER_NAME/log.log" 2>&1 &