|
1 | 1 | #!/bin/bash |
2 | 2 | set -e |
3 | 3 | DOCKER_IMAGE_NAME='isaac_arena' |
| 4 | +DOCKER_VERSION_TAG='latest' |
4 | 5 |
|
5 | 6 | SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) |
6 | 7 |
|
@@ -47,6 +48,7 @@ while getopts ":d:m:e:hn:rn:Rn:vn:gn:G:" OPTION; do |
47 | 48 | ;; |
48 | 49 | g) |
49 | 50 | INSTALL_GROOT="true" |
| 51 | + DOCKER_VERSION_TAG='cuda_gr00t' |
50 | 52 | ;; |
51 | 53 | G) |
52 | 54 | GROOT_DEPS_GROUP=${OPTARG} |
|
86 | 88 | shift $((OPTIND-1)) |
87 | 89 |
|
88 | 90 | # Display the values being used |
89 | | -echo "Using Docker image: $DOCKER_IMAGE_NAME" |
| 91 | +echo "Using Docker image: $DOCKER_IMAGE_NAME:$DOCKER_VERSION_TAG" |
90 | 92 |
|
91 | 93 | # Build the Docker image with the specified or default name |
92 | 94 | echo "Building Docker image with GR00T installation: $INSTALL_GROOT" |
93 | 95 | if [ "$INSTALL_GROOT" = "true" ]; then |
94 | 96 | echo "GR00T dependency group: $GROOT_DEPS_GROUP" |
95 | 97 | fi |
96 | 98 |
|
97 | | -if [ "$(docker images -q $DOCKER_IMAGE_NAME 2> /dev/null)" ] && \ |
| 99 | +if [ "$(docker images -q $DOCKER_IMAGE_NAME:$DOCKER_VERSION_TAG 2> /dev/null)" ] && \ |
98 | 100 | [ "$FORCE_REBUILD" = false ]; then |
99 | | - echo "Docker image $DOCKER_IMAGE_NAME already exists. Not rebuilding." |
| 101 | + echo "Docker image $DOCKER_IMAGE_NAME:$DOCKER_VERSION_TAG already exists. Not rebuilding." |
100 | 102 | echo "Use -r option to force the rebuild." |
101 | 103 | else |
102 | 104 | docker build --pull \ |
103 | 105 | $NO_CACHE \ |
104 | 106 | --build-arg WORKDIR="${WORKDIR}" \ |
105 | 107 | --build-arg INSTALL_GROOT=$INSTALL_GROOT \ |
106 | 108 | --build-arg GROOT_DEPS_GROUP=$GROOT_DEPS_GROUP \ |
107 | | - -t ${DOCKER_IMAGE_NAME} \ |
| 109 | + -t ${DOCKER_IMAGE_NAME}:${DOCKER_VERSION_TAG} \ |
108 | 110 | --file $SCRIPT_DIR/Dockerfile.isaac_arena \ |
109 | 111 | $SCRIPT_DIR/.. |
110 | 112 | fi |
111 | 113 |
|
112 | 114 | # Remove any exited containers |
113 | | -if [ "$(docker ps -a --quiet --filter status=exited --filter name=$DOCKER_IMAGE_NAME)" ]; then |
114 | | - docker rm $DOCKER_IMAGE_NAME > /dev/null |
| 115 | +if [ "$(docker ps -a --quiet --filter status=exited --filter name=$DOCKER_IMAGE_NAME-$DOCKER_VERSION_TAG)" ]; then |
| 116 | + docker rm $DOCKER_IMAGE_NAME-$DOCKER_VERSION_TAG > /dev/null |
115 | 117 | fi |
116 | 118 |
|
117 | 119 | # If container is running, attach to it, otherwise start |
118 | | -if [ "$( docker container inspect -f '{{.State.Running}}' $DOCKER_IMAGE_NAME 2>/dev/null)" = "true" ]; then |
| 120 | +if [ "$( docker container inspect -f '{{.State.Running}}' $DOCKER_IMAGE_NAME'-'$DOCKER_VERSION_TAG 2>/dev/null)" = "true" ]; then |
119 | 121 | echo "Container already running. Attaching." |
120 | | - docker exec -it $DOCKER_IMAGE_NAME su $(id -un) |
| 122 | + docker exec -it $DOCKER_IMAGE_NAME-$DOCKER_VERSION_TAG su $(id -un) |
121 | 123 | else |
122 | | - DOCKER_RUN_ARGS=("--name" "$DOCKER_IMAGE_NAME" |
| 124 | + DOCKER_RUN_ARGS=("--name" "$DOCKER_IMAGE_NAME-$DOCKER_VERSION_TAG" |
123 | 125 | "--privileged" |
124 | 126 | "--ulimit" "memlock=-1" |
125 | 127 | "--ulimit" "stack=-1" |
@@ -166,8 +168,12 @@ else |
166 | 168 | fi |
167 | 169 | fi |
168 | 170 |
|
| 171 | + # if gr00t is installed, mount the gr00t directory in case anything needs to change there |
| 172 | + if [ "$INSTALL_GROOT" = "true" ]; then |
| 173 | + DOCKER_RUN_ARGS+=("-v" "./submodules/Isaac-GR00T:${WORKDIR}/submodules/Isaac-GR00T") |
| 174 | + fi |
169 | 175 | # Allow X11 connections |
170 | 176 | xhost +local:docker > /dev/null |
171 | 177 |
|
172 | | - docker run "${DOCKER_RUN_ARGS[@]}" --interactive --rm --tty ${DOCKER_IMAGE_NAME} "${@}" |
| 178 | + docker run "${DOCKER_RUN_ARGS[@]}" --interactive --rm --tty ${DOCKER_IMAGE_NAME}:${DOCKER_VERSION_TAG} "${@}" |
173 | 179 | fi |
0 commit comments