run
run
Execute a command in a new process
Usage
convox run <service> <command>
Flags
--app: String. Specifies the app name--cpu: Number. Specifies the millicpu units of requests to set for the process--cpu-limit: Number. Specifies the millicpu units of limit to set for the process--detach: Boolean. To run in detach mode--entrypoint: String. Specifies the entrypoint--memory: Number. Specifies the memory megabytes of requests to set for the process--memory-limit: Number. Specifies the memory megabytes of limit to set for the process--rack: String. Specifies the rack name--release: String. Specifies the release--gpu: Number. Specifies the number of GPUs to allocate for the process (requires version >= 3.21.3)--node-labels: String. Specifies node labels for targeting specific node groups (requires version >= 3.21.3)--use-service-volume: Boolean. Attaches all service-configured volumes to the run pod (requires version >= 3.22.3)
Examples
Basic usage:
$ convox run web sh
/usr/src/app #
Run against a specific release:
$ convox run --release RABCDEFGHIJ web sh
/usr/src/app #
GPU Support
The --gpu flag allows you to request GPU resources for one-off processes. This is particularly useful for machine learning tasks, batch processing, or testing GPU-accelerated code without modifying your service definitions.
Request a GPU
$ convox run web python train-model.py --gpu 1
Target GPU-enabled node groups
When you have configured dedicated GPU node groups in your rack, you can ensure your GPU workloads run on the appropriate hardware:
$ convox run web python train-model.py --gpu 1 --node-labels "convox.io/label=gpu-nodes"
This works seamlessly with custom node group configurations. For example, if you've set up GPU nodes:
$ convox rack params set 'additional_node_groups_config=[{"id":201,"type":"g4dn.xlarge","capacity_type":"ON_DEMAND","label":"gpu-nodes"}]' -r rackName
GPU Use Cases
- Development Testing: Quickly test GPU-accelerated code without redeploying
- Model Training: Run ML training jobs on demand
- Batch Processing: Process computationally intensive workloads occasionally
- Diagnostics: Run GPU diagnostics or benchmarking tools
Service Volume Support
The --use-service-volume flag enables one-off processes to access the same persistent volumes configured for the service. This ensures data consistency and enables maintenance operations that require access to persistent storage.
Access service volumes
$ convox run web sh -a myapp --use-service-volume
This flag automatically maps all volumes configured in your service definition to the run pod, including:
- EFS volumes for shared storage
- emptyDir volumes for temporary storage
- Any other volume types configured in your
convox.yml
Volume Use Cases
- Database Migrations: Run migration scripts that need access to shared configuration files
- Batch Jobs: Execute jobs that process data stored on persistent volumes
- Debugging: Inspect and troubleshoot volume-mounted data through interactive shells
- Maintenance: Perform cleanup or data manipulation tasks on persistent storage
- Zero-Scale Services: Access volumes for services that are scaled to zero
Example with EFS Volume
If your service is configured with an EFS volume:
services:
web:
volumeOptions:
- awsEfs:
id: "efs-1"
accessMode: ReadWriteMany
mountPath: "/data"
Running with --use-service-volume ensures the /data directory is available in your one-off process:
$ convox run web ls /data --use-service-volume
file1.txt
file2.txt
shared-config.json
Advanced Examples
Combine resource requests with volumes
$ convox run web python process.py --cpu 2000 --memory 4096 --use-service-volume
GPU workload with specific node targeting
$ convox run worker python train.py --gpu 2 --node-labels "convox.io/label=ml-nodes" --memory 8192
Detached process with volumes
$ convox run background-job ./long-running-task.sh --detach --use-service-volume
Version Requirements
- Basic
convox runfunctionality: All versions - GPU support (
--gpu,--node-labels): Requires CLI and rack version >= 3.21.3 - Volume support (
--use-service-volume): Requires CLI and rack version >= 3.22.3