Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Development vs Production

Development Setup (rover service)

Use for: Active development, debugging, testing

  • Source code mounted as volumes (../src:/home/workspace/src)
  • Manual building required (colcon build)
  • Interactive environment
  • Code changes immediately available

Workflow:

./run.sh rover --dev
# or attach to the running container:
docker exec -it rover bash
# inside the container:
colcon build && source install/setup.bash
ros2 launch gorm_bringup bringup_teleop.launch.py

Production Setup (rover-deploy service)

Use for: Autonomous operation, field deployment, competitions

  • Source code copied during image build
  • Pre-built workspace (no manual building needed)
  • Runs continuously in background with restart: unless-stopped
  • Production-ready and stable

Workflow:

./build.sh
./run.sh rover --prod  # starts the production deploy image in background
# or using docker compose directly:
# docker compose -f docker/docker-compose.yaml up -d rover-deploy

Key Differences

AspectDevelopmentProduction
Source CodeVolume mountedCopied during build
BuildingManualAutomatic during image build
OperationManual start/stopContinuous background operation
UpdatesEdit files directlyRebuild image
Use CaseDevelopment & testingDeployment & autonomous operation

Important: Production deployment runs continuously in the background and will automatically restart if it crashes, unless manually stopped.