38 lines
1.3 KiB
Bash
38 lines
1.3 KiB
Bash
#!/usr/bin/env sh
|
|||
|
|
#
|
||
|
|
# Injects useful arguments for running mjlab in docker.
|
||
|
|
# See docs/source/installation.rst for usage.
|
||
|
|
#
|
||
|
|
# Patterned after the uv-in-docker example:
|
||
|
|
# https://github.com/astral-sh/uv-docker-example/blob/5748835918ec293d547bbe0e42df34e140aca1eb/run.sh
|
||
|
|
#
|
||
|
|
# Key arguments:
|
||
|
|
# --rm Remove the container after exiting
|
||
|
|
# --runtime=nvidia Use NVIDIA Container runtime to give GPU access
|
||
|
|
# --gpus all Expose all GPUs by default
|
||
|
|
# -v .:/app Mount current directory to /app (code changes don't require rebuild)
|
||
|
|
# -v /app/.venv Mount venv separately (keeps developer's environment out of container)
|
||
|
|
# -p 8080:8080 Publish port 8080 for viewing mjlab web interface on the host
|
||
|
|
# -it (conditional) Launch in interactive mode if running in a terminal
|
||
|
|
# (Note: if running training, there's a blocking wandb prompt before training begins)
|
||
|
|
# docker build Build and launch the image (tag matches the Makefile)
|
||
|
|
# "$@" Forward all arguments to the docker image
|
||
|
|
|
||
|
|
|
||
|
|
if [ -t 1 ]; then
|
||
|
|
INTERACTIVE="-it"
|
||
|
|
else
|
||
|
|
INTERACTIVE=""
|
||
|
|
fi
|
||
|
|
|
||
|
|
docker run \
|
||
|
|
--rm \
|
||
|
|
--runtime=nvidia \
|
||
|
|
--gpus all \
|
||
|
|
--volume .:/app \
|
||
|
|
--volume /app/.venv \
|
||
|
|
--publish 8080:8080 \
|
||
|
|
$INTERACTIVE \
|
||
|
|
$(docker build -qt mjlab .) \
|
||
|
|
"$@"
|