# Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md). # All rights reserved. # # SPDX-License-Identifier: BSD-3-Clause # Here we set the parts that would # be reused between services to an # extension field # https://docs.docker.com/compose/compose-file/compose-file-v3/#extension-fields x-default-isaac-lab-volumes: &default-isaac-lab-volumes # These volumes follow from this page # https://docs.omniverse.nvidia.com/app_isaacsim/app_isaacsim/install_faq.html#save-isaac-sim-configs-on-local-disk - type: volume source: isaac-cache-kit target: ${DOCKER_ISAACSIM_ROOT_PATH:-/isaac-sim}/kit/cache - type: volume source: isaac-data-kit target: ${DOCKER_ISAACSIM_ROOT_PATH:-/isaac-sim}/kit/data - type: volume source: isaac-cache-ov target: ${DOCKER_USER_HOME}/.cache/ov - type: volume source: isaac-cache-pip target: ${DOCKER_USER_HOME}/.cache/pip - type: volume source: isaac-cache-gl target: ${DOCKER_USER_HOME}/.cache/nvidia/GLCache - type: volume source: isaac-cache-compute target: ${DOCKER_USER_HOME}/.nv/ComputeCache - type: volume source: isaac-logs target: ${DOCKER_USER_HOME}/.nvidia-omniverse/logs - type: volume source: isaac-carb-logs target: ${DOCKER_ISAACSIM_ROOT_PATH:-/isaac-sim}/kit/logs/Kit/Isaac-Sim - type: volume source: isaac-data target: ${DOCKER_USER_HOME}/.local/share/ov/data - type: volume source: isaac-docs target: ${DOCKER_USER_HOME}/Documents # This overlay allows changes on the local files to # be reflected within the container immediately - type: bind source: ../source target: ${DOCKER_ISAACLAB_PATH}/source - type: bind source: ../scripts target: ${DOCKER_ISAACLAB_PATH}/scripts - type: bind source: ../apps target: ${DOCKER_ISAACLAB_PATH}/apps - type: volume source: isaac-cache-uv target: ${DOCKER_USER_HOME}/.cache/uv - type: volume source: isaac-cache-warp target: ${DOCKER_USER_HOME}/.cache/warp - type: bind source: ../docs target: ${DOCKER_ISAACLAB_PATH}/docs - type: bind source: ../tools target: ${DOCKER_ISAACLAB_PATH}/tools # The effect of these volumes is twofold: # 1. Prevent generated files from flooding the _build and logs dir # on the host machine # 2. Preserve the artifacts in persistent volumes for later copying # to the host machine - type: volume source: isaac-lab-docs target: ${DOCKER_ISAACLAB_PATH}/docs/_build - type: volume source: isaac-lab-logs target: ${DOCKER_ISAACLAB_PATH}/logs - type: volume source: isaac-lab-data target: ${DOCKER_ISAACLAB_PATH}/data_storage # This volume is used to store the history of the bash shell - type: bind source: .isaac-lab-docker-history target: ${DOCKER_USER_HOME}/.bash_history # The kit-less image has no Isaac Sim installation, so keep its mounts free of # Kit paths and Isaac Sim caches. x-kitless-isaac-lab-volumes: &kitless-isaac-lab-volumes - type: volume source: isaac-cache-uv target: ${DOCKER_USER_HOME}/.cache/uv - type: volume source: isaac-cache-warp target: ${DOCKER_USER_HOME}/.cache/warp - type: bind source: ../source target: ${DOCKER_ISAACLAB_PATH}/source - type: bind source: ../scripts target: ${DOCKER_ISAACLAB_PATH}/scripts - type: bind source: ../apps target: ${DOCKER_ISAACLAB_PATH}/apps - type: bind source: ../tools target: ${DOCKER_ISAACLAB_PATH}/tools - type: bind source: ../docs target: ${DOCKER_ISAACLAB_PATH}/docs - type: volume source: isaac-lab-docs target: ${DOCKER_ISAACLAB_PATH}/docs/_build - type: volume source: isaac-lab-logs target: ${DOCKER_ISAACLAB_PATH}/logs - type: volume source: isaac-lab-data target: ${DOCKER_ISAACLAB_PATH}/data_storage - type: bind source: .isaac-lab-docker-history target: ${DOCKER_USER_HOME}/.bash_history x-default-isaac-lab-environment: &default-isaac-lab-environment - ISAACSIM_PATH=${DOCKER_ISAACLAB_PATH}/_isaac_sim x-default-isaac-lab-deploy: &default-isaac-lab-deploy resources: reservations: devices: - driver: nvidia count: all capabilities: [ gpu ] services: # This service is the base Isaac Lab image isaac-lab-base: init: true profiles: [ "base" ] env_file: .env.base build: context: ../ dockerfile: docker/Dockerfile.base args: - ISAACSIM_BASE_IMAGE_ARG=${ISAACSIM_BASE_IMAGE:-nvcr.io/nvidia/isaac-sim} - ISAACSIM_VERSION_ARG=${ISAACSIM_VERSION:-6.2.0} - ISAACSIM_ROOT_PATH_ARG=${DOCKER_ISAACSIM_ROOT_PATH:-/isaac-sim} - ISAACLAB_PATH_ARG=${DOCKER_ISAACLAB_PATH} - DOCKER_USER_HOME_ARG=${DOCKER_USER_HOME} image: isaac-lab-base${DOCKER_NAME_SUFFIX-} container_name: isaac-lab-base${DOCKER_NAME_SUFFIX-} environment: *default-isaac-lab-environment volumes: *default-isaac-lab-volumes network_mode: host deploy: *default-isaac-lab-deploy # This is the entrypoint for the container entrypoint: bash stdin_open: true tty: true # This standalone service provides the kit-less Isaac Lab image. isaac-lab-kitless: init: true profiles: [ "kitless" ] env_file: .env.kitless build: context: ../ dockerfile: docker/Dockerfile.kitless args: - BASE_IMAGE_ARG=${KITLESS_BASE_IMAGE:-ubuntu:24.04} - ISAACLAB_PATH_ARG=${DOCKER_ISAACLAB_PATH} - DOCKER_USER_HOME_ARG=${DOCKER_USER_HOME} image: isaac-lab-kitless${DOCKER_NAME_SUFFIX-} container_name: isaac-lab-kitless${DOCKER_NAME_SUFFIX-} volumes: *kitless-isaac-lab-volumes network_mode: host deploy: *default-isaac-lab-deploy entrypoint: bash stdin_open: true tty: true volumes: # isaac-sim isaac-cache-kit: isaac-data-kit: isaac-cache-ov: isaac-cache-pip: isaac-cache-gl: isaac-cache-compute: isaac-logs: isaac-carb-logs: isaac-data: isaac-docs: # kit-less isaac-cache-uv: isaac-cache-warp: # isaac-lab isaac-lab-docs: isaac-lab-logs: isaac-lab-data: