From d6d5bfd77307c19660a0c494b84e465ca483b901 Mon Sep 17 00:00:00 2001 From: Jean LESUR Date: Sat, 1 Nov 2025 00:00:56 +0100 Subject: [PATCH] feat: added docker support --- .dockerignore | 5 ++++ .github/workflows/docker.yml | 54 ++++++++++++++++++++++++++++++++++++ Dockerfile | 26 +++++++++++++++++ 3 files changed, 85 insertions(+) create mode 100644 .dockerignore create mode 100644 .github/workflows/docker.yml create mode 100644 Dockerfile diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..f07d1d7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +* + +!droidrun +!pyproject.toml +!README.md \ No newline at end of file diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..60df903 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,54 @@ +name: Publish Docker Image 🐳 + +on: + push: + tags: + - "v*" + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + push-image: + runs-on: ubuntu-latest + + permissions: + contents: read + packages: write + attestations: write + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v5 + + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 + with: + platforms: all + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + - name: Build and push multi-arch Docker image + uses: docker/build-push-action@v6 + with: + context: . + push: true + platforms: linux/amd64,linux/arm64 + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f8454fa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM python:3.12.12 + +RUN groupadd -g 1000 droidrun \ + && useradd -m -u 1000 -g 1000 -s /bin/bash droidrun + +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + android-tools-adb \ + && rm -rf /var/lib/apt/lists/* + +USER droidrun + +WORKDIR /droidrun + +RUN curl -LsSf https://astral.sh/uv/install.sh | sh + +ENV PATH="/home/droidrun/.local/bin:${PATH}" + +COPY . . + +RUN uv venv && \ + uv pip install .[google,anthropic,openai,deepseek,ollama,openrouter] + +ENTRYPOINT [".venv/bin/droidrun"] + +CMD ["setup"] \ No newline at end of file