2022-10-20 18:21:11 +08:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2023-12-23 19:50:32 +08:00
|
|
|
SCRIPT_PATH=$(cd "$(dirname "$0")" && pwd)
|
|
|
|
. "$SCRIPT_PATH/common.sh"
|
2022-10-20 18:21:11 +08:00
|
|
|
|
|
|
|
function docker_run() {
|
2023-08-11 18:54:00 +08:00
|
|
|
local timeout=${TIMEOUT:-10}
|
2023-12-23 19:50:32 +08:00
|
|
|
local network=${NETWORK:-"none"}
|
|
|
|
local memory=${MEMORY:-"256m"}
|
2023-08-11 18:54:00 +08:00
|
|
|
local log_file=${LOG_FILE:-"/dev/stderr"}
|
|
|
|
local log_limit=${LOG_LIMIT:-4K}
|
|
|
|
log_info "$DOCKER run with timeout $timeout"
|
|
|
|
CONTAINER_NAME=$(uuidgen)
|
|
|
|
(
|
|
|
|
sleep "$timeout"
|
|
|
|
$DOCKER kill "$CONTAINER_NAME"
|
|
|
|
) &
|
2023-12-23 19:50:32 +08:00
|
|
|
$DOCKER run --rm --name "$CONTAINER_NAME" --network "$network" --memory "$memory" "$@" 2>&1 | head -c "$log_limit" >"$log_file"
|
2023-08-11 18:54:00 +08:00
|
|
|
pkill -P $$
|
|
|
|
$DOCKER kill "$CONTAINER_NAME" >/dev/null 2>&1
|
|
|
|
return 0
|
2022-10-20 18:21:11 +08:00
|
|
|
}
|