# 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: ../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: 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.0.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 service adds a ROS2 Humble # installation on top of the base image isaac-lab-ros2: profiles: [ "ros2" ] env_file: - .env.base - .env.ros2 build: context: ../ dockerfile: docker/Dockerfile.ros2 args: # ROS2_APT_PACKAGE will default to NONE. This is to # avoid a warning message when building only the base profile # with the .env.base file - ROS2_APT_PACKAGE=${ROS2_APT_PACKAGE:-NONE} # Make sure that the correct Docker Name Suffix is being passed to the dockerfile, to know which base image to # start from. - DOCKER_NAME_SUFFIX=${DOCKER_NAME_SUFFIX-} image: isaac-lab-ros2${DOCKER_NAME_SUFFIX-} container_name: isaac-lab-ros2${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: 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: