# Ultralytics YOLO ๐, AGPL-3.0 license | |
# Builds GitHub actions CI runner image for deployment to DockerHub https://hub.docker.com/r/ultralytics/ultralytics | |
# Image is CUDA-optimized for YOLO11 single/multi-GPU training and inference tests | |
# Start FROM Ultralytics GPU image | |
FROM ultralytics/ultralytics:latest | |
# Set environment variables | |
ENV PYTHONUNBUFFERED=1 \ | |
PYTHONDONTWRITEBYTECODE=1 \ | |
PIP_NO_CACHE_DIR=1 \ | |
PIP_BREAK_SYSTEM_PACKAGES=1 \ | |
RUNNER_ALLOW_RUNASROOT=1 \ | |
DEBIAN_FRONTEND=noninteractive | |
# Set the working directory | |
WORKDIR /actions-runner | |
# Download and unpack the latest runner from https://github.com/actions/runner | |
RUN FILENAME=actions-runner-linux-x64-2.317.0.tar.gz && \ | |
curl -o $FILENAME -L https://github.com/actions/runner/releases/download/v2.317.0/$FILENAME && \ | |
tar xzf $FILENAME && \ | |
rm $FILENAME | |
# Install runner dependencies | |
RUN pip install pytest-cov | |
RUN ./bin/installdependencies.sh && \ | |
apt-get -y install libicu-dev | |
# Inline ENTRYPOINT command to configure and start runner with default TOKEN and NAME | |
ENTRYPOINT sh -c './config.sh --url https://github.com/ultralytics/ultralytics \ | |
--token ${GITHUB_RUNNER_TOKEN:-TOKEN} \ | |
--name ${GITHUB_RUNNER_NAME:-NAME} \ | |
--labels gpu-latest \ | |
--replace && \ | |
./run.sh' | |
# Usage Examples ------------------------------------------------------------------------------------------------------- | |
# Build and Push | |
# t=ultralytics/ultralytics:latest-runner && sudo docker build -f docker/Dockerfile-runner -t $t . && sudo docker push $t | |
# Pull and Run in detached mode with access to GPUs 0 and 1 | |
# t=ultralytics/ultralytics:latest-runner && sudo docker run -d -e GITHUB_RUNNER_TOKEN=TOKEN -e GITHUB_RUNNER_NAME=NAME --ipc=host --gpus '"device=0,1"' $t | |