jetson-containers

GitHub

Machine Learning Containers for NVIDIA Jetson and JetPack-L4T

RAW Compose
1. Pull Image docker pull pypiserver/pypiserver
2. 1-Click Launch Command docker run -d -p 8126:8126 --name jetson-containers pypiserver/pypiserver:edge
3. Compose Deployment docker compose up -d
docker-compose.yaml
Download .yml
# -----------------------------------------------------------------------------
# Docker Compose Stack: Local PyPI & APT Servers
#
# This stack provides:
#   - Multiple local PyPI servers (cu126, cu129, cu130) for Jetson CUDA variants
#     with a fallback to Jetson Community PyPI Registry (https://pypi.jetson-ai-lab.io)
#   - A local APT server for hosting debian packages (cu126, cu129, cu130)
#     with a dallback to Jetson Community APT Registry (https://apt.jetson-ai-lab.io)
#
# Designed for compatibility with:
#   - jetson-containers
#
# Usage:
#   - Local wheel/distribution packages are stored under /home/${SCP_UPLOAD_USER}/dist/pypi/{jpX,sbsa}/cuXXX
#   - Local debian packages are stored under /home/${SCP_UPLOAD_USER}/dist/apt/{jpX,sbsa}/cuXXX/{22.04,24.04}
#
# Services automatically fallback to the Jetson Community Registry when needed.
# -----------------------------------------------------------------------------

x-common: &common
  restart: unless-stopped
  healthcheck:
    interval: 30s
    timeout: 10s
    start_period: 10s
    retries: 3
    test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/').status"]

name: jetson-containers-local
services:
  pypi_cu126: # CUDA 12.6 / Orin (default)
    image: pypiserver/pypiserver:edge
    command: >
      run
      --overwrite
      --verbose
      --authenticate .
      --passwords .
      --hash-algo off
      --fallback-url https://pypi.jetson-ai-lab.io/jp6/cu126
      --server gunicorn
      /data/packages
    <<: *common
    container_name: pypi_cu126
    hostname: pypi_cu126
    volumes:
      - /home/${SCP_UPLOAD_USER}/dist/pypi/jp6/cu126:/data/packages:rw
    ports:
      - "8126:8080"

  pypi_cu129: # CUDA 12.9 / Orin
    image: pypiserver/pypiserver:edge
    command: >
      run
      --overwrite
      --verbose
      --authenticate .
      --passwords .
      --hash-algo off
      --fallback-url https://pypi.jetson-ai-lab.io/jp6/cu129
      --server gunicorn
      /data/packages
    <<: *common
    container_name: pypi_cu129
    hostname: pypi_cu129
    volumes:
      - /home/${SCP_UPLOAD_USER}/dist/pypi/jp6/cu129:/data/packages:rw
    ports:
      - "8129:8080"

  pypi_cu130: # CUDA 13.0 / Thor
    image: pypiserver/pypiserver:edge
    command: >
      run
      --overwrite
      --verbose
      --authenticate .
      --passwords .
      --hash-algo off
      --fallback-url https://pypi.jetson-ai-lab.io/sbsa/cu130
      --server gunicorn
      /data/packages
    <<: *common
    container_name: pypi_cu130
    hostname: pypi_cu130
    volumes:
      - /home/${SCP_UPLOAD_USER}/dist/pypi/sbsa/cu130:/data/packages:rw
    ports:
      - "8130:8080"

  apt-server:
    image: python:3-slim
    <<: *common
    container_name: apt-server
    hostname: apt-server
    command: python -m http.server 8080 --bind 0.0.0.0 --directory /dist/apt
    ports:
      - "${LOCAL_DIST_APT_PORT:-8034}:8080"
    volumes:
      - /home/${SCP_UPLOAD_USER}/dist/apt:/dist/apt:rw