version: "3.3" #Due to a bug in moby's libnetwork DNS resolver single domains like `gazebo` # don't get resolved properly, even when we have ndots set to 0 like we're # supposed to. So we need to reference `gazebo.compose-name_network-name`. # We explicitly set the name variable so that changing folders doesn't break # the install. This only applies when using docker-in-docker name: "spiri-sdk" volumes: user-home: dockeradmin: docker-cache: services: drone-stack: #The drone runs docker, so ultimately our drone stack is just a docker-in-docker container. ## This can make it difficult to deal with GPU acceleration, but remember that ROS *is* ## distributed. You don't need to run your GPU-accelerated rosnode on the drone-stack, ## just make sure you can contact the ROS_MASTER. runtime: sysbox-runc image: docker:24-dind command: dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 --tls=false healthcheck: test: docker info start_interval: 1s ports: - "127.0.0.1:5760:5760" #Ground control - "127.0.0.1:4560:4560" # Simulation - "127.0.0.1:14560:14560" # Simulation - "127.0.0.1:11311:11311" #Ros master volumes: - docker-cache:/var/lib/docker/ #Madness, setting a low ulimit here fixes memory leaks # https://answers.ros.org/question/336963/rosout-high-memory-usage/ ulimits: nofile: soft: 1024 hard: 524288 gazebo: image: git.spirirobotics.com/spiri/gazebo-classic:main # command: gzserver --verbose /usr/share/gazebo-11/worlds/empty.world command: gzserver --verbose /usr/share/gazebo-11/worlds/citadel_hill_world.world ports: - "127.0.0.1:11345:11345" #Ros master desktop: image: git.spirirobotics.com/spiri/spiri-sdk-desktop:master runtime: sysbox-runc tty: true environment: DOCKER_HOST: tcp://drone-stack:2375 ROS_MASTER_URI: http://drone-stack:11311 GAZEBO_MASTER_URI: http://gazebo.spiri-sdk_default:11345 ports: - "127.0.0.1:8466:8466" volumes: - ./spiri-sdk-home:/home/spiri depends_on: drone-stack: condition: service_healthy