diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml index 71ff7436..ab4e4305 100644 --- a/.github/workflows/docker-publish.yml +++ b/.github/workflows/docker-publish.yml @@ -47,7 +47,7 @@ jobs: uses: docker/build-push-action@v5 with: context: . - file: ./Dockerfile.extproc + file: ./tools/docker/Dockerfile.extproc push: ${{ github.event_name != 'pull_request' }} # Only push on merge to main, not on PRs tags: | ${{ inputs.is_nightly == true && format('ghcr.io/{0}/semantic-router/extproc:nightly-{1}', env.REPOSITORY_OWNER_LOWER, steps.date.outputs.date_tag) || format('ghcr.io/{0}/semantic-router/extproc:{1}', env.REPOSITORY_OWNER_LOWER, github.sha) }} @@ -87,8 +87,8 @@ jobs: - name: Build and push llm-katan Docker image uses: docker/build-push-action@v5 with: - context: ./e2e-tests/llm-katan - file: ./e2e-tests/llm-katan/Dockerfile + context: . + file: ./tools/docker/Dockerfile.llm-katan push: ${{ github.event_name != 'pull_request' }} # Only push on merge to main, not on PRs tags: | ${{ inputs.is_nightly == true && format('ghcr.io/{0}/semantic-router/llm-katan:nightly-{1}', env.REPOSITORY_OWNER_LOWER, steps.date.outputs.date_tag) || format('ghcr.io/{0}/semantic-router/llm-katan:{1}', env.REPOSITORY_OWNER_LOWER, github.sha) }} diff --git a/.github/workflows/docker-release.yml b/.github/workflows/docker-release.yml index d9dcf084..91e7f424 100644 --- a/.github/workflows/docker-release.yml +++ b/.github/workflows/docker-release.yml @@ -34,7 +34,7 @@ jobs: uses: docker/build-push-action@v5 with: context: . - file: ./Dockerfile.extproc + file: ./tools/docker/Dockerfile.extproc push: true tags: | ghcr.io/${{ env.REPOSITORY_OWNER_LOWER }}/semantic-router/extproc:${{ steps.extract_tag.outputs.tag }} @@ -73,8 +73,8 @@ jobs: - name: Build and push llm-katan Docker image uses: docker/build-push-action@v5 with: - context: ./e2e-tests/llm-katan - file: ./e2e-tests/llm-katan/Dockerfile + context: . + file: ./tools/docker/Dockerfile.llm-katan push: true tags: | ghcr.io/${{ env.REPOSITORY_OWNER_LOWER }}/semantic-router/llm-katan:${{ steps.extract_tag.outputs.tag }} diff --git a/.github/workflows/precommit-publish.yml b/.github/workflows/precommit-publish.yml index c74992b2..5fadee2b 100644 --- a/.github/workflows/precommit-publish.yml +++ b/.github/workflows/precommit-publish.yml @@ -3,10 +3,10 @@ name: Create and publish Precommit Image on: push: paths: - - 'Dockerfile.precommit' + - 'tools/docker/Dockerfile.precommit' pull_request: paths: - - 'Dockerfile.precommit' + - 'tools/docker/Dockerfile.precommit' jobs: build_and_push: @@ -38,7 +38,7 @@ jobs: uses: docker/build-push-action@v5 with: context: . - file: ./Dockerfile.precommit + file: ./tools/docker/Dockerfile.precommit push: ${{ github.event_name != 'pull_request' }} # Only push on merge to main, not on PRs tags: | ${{ inputs.is_nightly != true && format('ghcr.io/{0}/semantic-router/precommit:latest', env.REPOSITORY_OWNER_LOWER) || '' }} diff --git a/docker-compose.yml b/docker-compose.yml index 2d01d200..7496a64f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ services: semantic-router: build: context: . - dockerfile: Dockerfile.extproc + dockerfile: tools/docker/Dockerfile.extproc container_name: semantic-router ports: - "50051:50051" @@ -48,8 +48,8 @@ services: # Mock vLLM service for testing profile mock-vllm: build: - context: ./tools/mock-vllm - dockerfile: Dockerfile + context: . + dockerfile: tools/docker/Dockerfile.mock-vllm container_name: mock-vllm profiles: ["testing"] ports: @@ -96,8 +96,8 @@ services: # LLM Katan service for testing llm-katan: build: - context: ./e2e-tests/llm-katan - dockerfile: Dockerfile + context: . + dockerfile: tools/docker/Dockerfile.llm-katan container_name: llm-katan profiles: ["testing", "llm-katan"] ports: diff --git a/Dockerfile b/tools/docker/Dockerfile similarity index 100% rename from Dockerfile rename to tools/docker/Dockerfile diff --git a/Dockerfile.extproc b/tools/docker/Dockerfile.extproc similarity index 100% rename from Dockerfile.extproc rename to tools/docker/Dockerfile.extproc diff --git a/e2e-tests/llm-katan/Dockerfile b/tools/docker/Dockerfile.llm-katan similarity index 84% rename from e2e-tests/llm-katan/Dockerfile rename to tools/docker/Dockerfile.llm-katan index 9e29080e..1907c65d 100644 --- a/e2e-tests/llm-katan/Dockerfile +++ b/tools/docker/Dockerfile.llm-katan @@ -16,13 +16,13 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* # Copy requirements first for better layer caching -COPY requirements.txt ./ +COPY e2e-tests/llm-katan/requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # Copy the llm_katan package -COPY llm_katan/ ./llm_katan/ -COPY pyproject.toml ./ -COPY README.md ./ +COPY e2e-tests/llm-katan/llm_katan/ ./llm_katan/ +COPY e2e-tests/llm-katan/pyproject.toml ./ +COPY e2e-tests/llm-katan/README.md ./ # Install the package in development mode RUN pip install -e . diff --git a/tools/mock-vllm/Dockerfile b/tools/docker/Dockerfile.mock-vllm similarity index 79% rename from tools/mock-vllm/Dockerfile rename to tools/docker/Dockerfile.mock-vllm index c11141d1..a8866af4 100644 --- a/tools/mock-vllm/Dockerfile +++ b/tools/docker/Dockerfile.mock-vllm @@ -6,10 +6,10 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ && rm -rf /var/lib/apt/lists/* -COPY requirements.txt ./ +COPY tools/mock-vllm/requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt -COPY app.py ./ +COPY tools/mock-vllm/app.py ./ EXPOSE 8000 diff --git a/Dockerfile.precommit b/tools/docker/Dockerfile.precommit similarity index 100% rename from Dockerfile.precommit rename to tools/docker/Dockerfile.precommit diff --git a/tools/make/docker.mk b/tools/make/docker.mk index 8c1ea494..4c9908f9 100644 --- a/tools/make/docker.mk +++ b/tools/make/docker.mk @@ -15,19 +15,19 @@ docker-build-all: docker-build-extproc docker-build-llm-katan docker-build-preco docker-build-extproc: @$(LOG_TARGET) @echo "Building extproc Docker image..." - @$(CONTAINER_RUNTIME) build -f Dockerfile.extproc -t $(DOCKER_REGISTRY)/extproc:$(DOCKER_TAG) . + @$(CONTAINER_RUNTIME) build -f tools/docker/Dockerfile.extproc -t $(DOCKER_REGISTRY)/extproc:$(DOCKER_TAG) . # Build llm-katan Docker image docker-build-llm-katan: @$(LOG_TARGET) @echo "Building llm-katan Docker image..." - @$(CONTAINER_RUNTIME) build -f e2e-tests/llm-katan/Dockerfile -t $(DOCKER_REGISTRY)/llm-katan:$(DOCKER_TAG) e2e-tests/llm-katan/ + @$(CONTAINER_RUNTIME) build -f tools/docker/Dockerfile.llm-katan -t $(DOCKER_REGISTRY)/llm-katan:$(DOCKER_TAG) . # Build precommit Docker image docker-build-precommit: @$(LOG_TARGET) @echo "Building precommit Docker image..." - @$(CONTAINER_RUNTIME) build -f Dockerfile.precommit -t $(DOCKER_REGISTRY)/precommit:$(DOCKER_TAG) . + @$(CONTAINER_RUNTIME) build -f tools/docker/Dockerfile.precommit -t $(DOCKER_REGISTRY)/precommit:$(DOCKER_TAG) . # Test llm-katan Docker image locally docker-test-llm-katan: diff --git a/website/docs/troubleshooting/network-tips.md b/website/docs/troubleshooting/network-tips.md index 88610311..d9e97630 100644 --- a/website/docs/troubleshooting/network-tips.md +++ b/website/docs/troubleshooting/network-tips.md @@ -68,9 +68,9 @@ PY ## 2. Build with Go mirrors (Dockerfile override) -When building `Dockerfile.extproc`, the Go stage may hang on `proxy.golang.org`. Create an override Dockerfile that enables mirrors without touching the original. +When building `tools/docker/Dockerfile.extproc`, the Go stage may hang on `proxy.golang.org`. Create an override Dockerfile that enables mirrors without touching the original. -1) Create `Dockerfile.extproc.cn` at repo root with this content: +1) Create `tools/docker/Dockerfile.extproc.cn` with this content: ```Dockerfile # syntax=docker/dockerfile:1 @@ -124,14 +124,14 @@ ENTRYPOINT ["/app/entrypoint.sh"] services: semantic-router: build: - dockerfile: Dockerfile.extproc.cn + dockerfile: tools/docker/Dockerfile.extproc.cn ``` ## 3. Mock vLLM (PyPI mirror via Dockerfile override) For the optional testing profile, create an override Dockerfile to configure pip mirrors. -1) Create `tools/mock-vllm/Dockerfile.cn`: +1) Create `tools/docker/Dockerfile.mock-vllm.cn`: ```Dockerfile FROM python:3.11-slim @@ -156,7 +156,7 @@ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"] services: mock-vllm: build: - dockerfile: Dockerfile.cn + dockerfile: tools/docker/Dockerfile.mock-vllm.cn ``` ## 4. Build and run