From 646279100535c9e7e198dc379af6180c5beba046 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 10:36:25 +0000 Subject: [PATCH 01/16] first version --- .github/workflows/build-gpu.yml | 101 ++++++++++++++++++++++++++++++++ README.md | 2 + gpu/Dockerfile | 24 ++++++++ gpu/README.md | 66 +++++++++++++++++++++ gpu/requirements.txt | 43 ++++++++++++++ 5 files changed, 236 insertions(+) create mode 100644 .github/workflows/build-gpu.yml create mode 100644 gpu/Dockerfile create mode 100644 gpu/README.md create mode 100644 gpu/requirements.txt diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml new file mode 100644 index 0000000..c063e55 --- /dev/null +++ b/.github/workflows/build-gpu.yml @@ -0,0 +1,101 @@ +name: Build and Push to AWS ECR Public + +on: + push: + branches: + - master + paths: + - 'gpu/**' + - '.github/workflows/build-gpu.yml' + pull_request: + branches: + - master + paths: + - 'gpu/**' + - '.github/workflows/build-gpu.yml' + workflow_dispatch: + inputs: + tag: + description: 'Image tag' + required: false + default: 'latest' + +env: + AWS_REGION: us-east-1 + REPOSITORY_NAME: jupyter-docker + IMAGE_NAME: codio/codio-jupyter + TAG_PREFIX: gpu-cuda + ECR_REGISTRY: public.ecr.aws/o0g3m8o6 + +jobs: + build-and-push: + runs-on: ubuntu-latest + permissions: + id-token: write + contents: read + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@main + with: + aws-region: us-east-1 + role-to-assume: arn:aws:iam::878986216776:role/Github/GithubECRPublicUploadRole_${{ env.REPOSITORY_NAME }} + role-session-name: GithubAction + + - name: Login to Amazon ECR Public + id: login-ecr-public + run: | + aws ecr-public get-login-password --region ${{ env.AWS_REGION }} | docker login --username AWS --password-stdin public.ecr.aws + + - name: Set image tags + id: meta + run: | + ECR_REGISTRY="${{ env.ECR_REGISTRY }}" + IMAGE_TAG="${{ env.TAG_PREFIX }}-${{ github.event.inputs.tag || 'latest' }}" + TIMESTAMP=${env.TAG_PREFIX}-$(date +%Y%m%d) + SHA_SHORT=${env.TAG_PREFIX}-$(echo ${{ github.sha }} | cut -c1-7) + + echo "ecr_registry=${ECR_REGISTRY}" >> $GITHUB_OUTPUT + echo "image_tag=${IMAGE_TAG}" >> $GITHUB_OUTPUT + echo "timestamp=${TIMESTAMP}" >> $GITHUB_OUTPUT + echo "sha_short=${SHA_SHORT}" >> $GITHUB_OUTPUT + + TAGS="${ECR_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" + TAGS="${TAGS},${ECR_REGISTRY}/${IMAGE_NAME}:${TIMESTAMP}" + TAGS="${TAGS},${ECR_REGISTRY}/${IMAGE_NAME}:${SHA_SHORT}" + + echo "tags=${TAGS}" >> $GITHUB_OUTPUT + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: ./gpu + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + cache-from: type=gha + cache-to: type=gha,mode=max + platforms: linux/amd64 + + - name: Image summary + if: github.event_name != 'pull_request' + run: | + echo "### Docker Image Published :rocket:" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Registry:** ${{ steps.meta.outputs.ecr_registry }}" >> $GITHUB_STEP_SUMMARY + echo "**Image:** ${IMAGE_NAME}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Tags:**" >> $GITHUB_STEP_SUMMARY + echo "- \`${{ steps.meta.outputs.image_tag }}\`" >> $GITHUB_STEP_SUMMARY + echo "- \`${{ steps.meta.outputs.timestamp }}\`" >> $GITHUB_STEP_SUMMARY + echo "- \`${{ steps.meta.outputs.sha_short }}\`" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "**Pull command:**" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY + echo "docker pull ${{ steps.meta.outputs.ecr_registry }}/${IMAGE_NAME}:${{ steps.meta.outputs.image_tag }}" >> $GITHUB_STEP_SUMMARY + echo "\`\`\`" >> $GITHUB_STEP_SUMMARY diff --git a/README.md b/README.md index 2af5b97..e7336d9 100644 --- a/README.md +++ b/README.md @@ -1 +1,3 @@ # jupyter-docker + +Docker images build for jupyter environments usind in sandboxes diff --git a/gpu/Dockerfile b/gpu/Dockerfile new file mode 100644 index 0000000..7e3c373 --- /dev/null +++ b/gpu/Dockerfile @@ -0,0 +1,24 @@ +FROM quay.io/jupyter/base-notebook:latest + +USER root + +# Install system dependencies +RUN apt-get update && apt-get install -y \ + git \ + wget \ + build-essential \ + && apt-get clean \ + && rm -rf /var/lib/apt/lists/* + +USER ${NB_UID} + +# Install PyTorch with CUDA 12.1 support +# RUN pip install --no-cache-dir \ +# torch torchvision --index-url https://download.pytorch.org/whl/cu121 + +# Copy requirements and install Python packages +COPY --chown=${NB_UID}:${NB_GID} requirements.txt /tmp/ +RUN pip install --no-cache-dir -r /tmp/requirements.txt + +# Expose Jupyter port +EXPOSE 8888 diff --git a/gpu/README.md b/gpu/README.md new file mode 100644 index 0000000..fa9c005 --- /dev/null +++ b/gpu/README.md @@ -0,0 +1,66 @@ +# Jupyter GPU Docker Image + +Docker image for Jupyter Notebook with PyTorch CUDA support and LLM/Data Science libraries. + +## Base Image +- `quay.io/jupyter/base-notebook:latest` + +## Included Libraries +- **PyTorch** with CUDA 12.1 support +- **Hugging Face**: transformers==4.37.2, datasets, accelerate, tokenizers +- **Data Science**: pandas, numpy, matplotlib, seaborn, scikit-learn +- **LLM Tools**: tiktoken, einops, wandb, tensorboard +- **NLP**: nltk, spacy + +## GitHub Actions Setup + +### AWS IAM Role Configuration +The workflow uses OIDC to authenticate with AWS. Ensure you have: +1. An IAM role named `GithubECRUploadRole_jupyter-docker` in account `878986216776` +2. Trust relationship configured for GitHub OIDC provider +3. Permissions to push to ECR Public + +### GitHub Secrets +Add this secret to your repository (Settings → Secrets and variables → Actions): +- `ECR_REGISTRY` - Your ECR public registry URL (e.g., `public.ecr.aws/your-alias`) + +### Workflow Triggers +- Push to `master` or `main` branch with changes in `gpu/` directory +- Pull requests (builds but doesn't push) +- Manual trigger via workflow_dispatch + +## Running the Image + +### Local with GPU +```bash +docker run --gpus all -p 8888:8888 \ + -v $(pwd)/notebooks:/home/jovyan/work \ + public.ecr.aws/your-alias/jupyter-gpu:latest +``` + +### Pull from ECR +```bash +# Pull image +docker pull public.ecr.aws/your-alias/jupyter-gpu:latest + +# Or use specific version +docker pull public.ecr.aws/your-alias/jupyter-gpu:20260120-123456 +``` + +## Local Development + +### Build locally +```bash +cd gpu +docker build -t jupyter-gpu:latest . +``` + +### Test locally +```bash +docker run --gpus all -p 8888:8888 \ + -v $(pwd)/notebooks:/home/jovyan/work \ + jupyter-gpu:latest +``` + +## Customization +Edit `requirements.txt` to add or modify Python packages, then push to trigger the workflow. diff --git a/gpu/requirements.txt b/gpu/requirements.txt new file mode 100644 index 0000000..76cd45e --- /dev/null +++ b/gpu/requirements.txt @@ -0,0 +1,43 @@ +--extra-index-url https://download.pytorch.org/whl/cu130 + +torch +torchvision +torchaudio + +# Hugging Face Libraries +transformers==4.37.2 +huggingface_hub<0.21 +datasets +accelerate +sentencepiece +tokenizers +safetensors + +# Data Science Libraries +pandas +numpy +matplotlib +seaborn +scikit-learn +scipy + +# Deep Learning Utilities +tqdm +wandb +tensorboard + +# NLP & LLM Tools +nltk +spacy +tiktoken +einops + +# Jupyter Extensions +ipywidgets +jupyter-contrib-nbextensions + +# Other Utilities +Pillow +requests +pyyaml +python-dotenv From b012063c7c106809089c95a2321260c383b14ca7 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 10:37:53 +0000 Subject: [PATCH 02/16] fix login --- .github/workflows/build-gpu.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index c063e55..4cd8ecd 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -48,10 +48,9 @@ jobs: role-to-assume: arn:aws:iam::878986216776:role/Github/GithubECRPublicUploadRole_${{ env.REPOSITORY_NAME }} role-session-name: GithubAction - - name: Login to Amazon ECR Public - id: login-ecr-public - run: | - aws ecr-public get-login-password --region ${{ env.AWS_REGION }} | docker login --username AWS --password-stdin public.ecr.aws + - name: Login to Amazon ECR + id: login-ecr + uses: aws-actions/amazon-ecr-login@v2 - name: Set image tags id: meta From 17d861c1d53086ff14b68e116d5beec2843b2fcc Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 10:48:41 +0000 Subject: [PATCH 03/16] build fixes --- .github/workflows/build-gpu.yml | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index 4cd8ecd..516a6be 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -36,10 +36,9 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: actions/checkout@v5 + with: + fetch-depth: 0 - name: Configure AWS Credentials uses: aws-actions/configure-aws-credentials@main @@ -51,6 +50,11 @@ jobs: - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v2 + with: + registry-type: public + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - name: Set image tags id: meta @@ -75,11 +79,11 @@ jobs: uses: docker/build-push-action@v5 with: context: ./gpu - push: ${{ github.event_name != 'pull_request' }} + push: true tags: ${{ steps.meta.outputs.tags }} - cache-from: type=gha - cache-to: type=gha,mode=max - platforms: linux/amd64 + builder: ga-builder + cache-from: type=registry,ref=${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:cache + cache-to: type=registry,mode=max,image-manifest=true,oci-mediatypes=true,ref=${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:cache - name: Image summary if: github.event_name != 'pull_request' From f94988de5a0a7da894adcb6df6adc59ef0319804 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 10:53:46 +0000 Subject: [PATCH 04/16] fixes --- .github/workflows/build-gpu.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index 516a6be..59d3570 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -61,8 +61,8 @@ jobs: run: | ECR_REGISTRY="${{ env.ECR_REGISTRY }}" IMAGE_TAG="${{ env.TAG_PREFIX }}-${{ github.event.inputs.tag || 'latest' }}" - TIMESTAMP=${env.TAG_PREFIX}-$(date +%Y%m%d) - SHA_SHORT=${env.TAG_PREFIX}-$(echo ${{ github.sha }} | cut -c1-7) + TIMESTAMP=${{ env.TAG_PREFIX }}-$(date +%Y%m%d) + SHA_SHORT=${{ env.TAG_PREFIX }}-$(echo ${{ github.sha }} | cut -c1-7) echo "ecr_registry=${ECR_REGISTRY}" >> $GITHUB_OUTPUT echo "image_tag=${IMAGE_TAG}" >> $GITHUB_OUTPUT @@ -82,8 +82,8 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} builder: ga-builder - cache-from: type=registry,ref=${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:cache - cache-to: type=registry,mode=max,image-manifest=true,oci-mediatypes=true,ref=${{ steps.login-ecr.outputs.registry }}/${{ env.ECR_REPOSITORY }}:cache + cache-from: type=registry,ref=${{ steps.login-ecr.outputs.registry }}/${{ env.IMAGE_NAME }}:cache + cache-to: type=registry,mode=max,image-manifest=true,oci-mediatypes=true,ref=${{ steps.login-ecr.outputs.registry }}/${{ env.IMAGE_NAME }}:cache - name: Image summary if: github.event_name != 'pull_request' From 9d59325e13755d2110ad2760e4c13443693b6c34 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 10:54:46 +0000 Subject: [PATCH 05/16] ga-builder --- .github/workflows/build-gpu.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index 59d3570..f8a9ca8 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -56,6 +56,10 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 + - name: Create and use a new builder instance + run: | + docker buildx create --name ga-builder --use + - name: Set image tags id: meta run: | From 0ba135687a16c7cc262dcd3f311ef446f883f06c Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 11:07:54 +0000 Subject: [PATCH 06/16] PR tags should be branch and SHA, avoid timestamp --- .github/workflows/build-gpu.yml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index f8a9ca8..1ce269d 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -64,18 +64,25 @@ jobs: id: meta run: | ECR_REGISTRY="${{ env.ECR_REGISTRY }}" - IMAGE_TAG="${{ env.TAG_PREFIX }}-${{ github.event.inputs.tag || 'latest' }}" - TIMESTAMP=${{ env.TAG_PREFIX }}-$(date +%Y%m%d) SHA_SHORT=${{ env.TAG_PREFIX }}-$(echo ${{ github.sha }} | cut -c1-7) + if [ "${{ github.event_name }}" == "pull_request" ]; then + IMAGE_TAG="${{ env.TAG_PREFIX }}-${{ github.event.pull_request.head.ref }}" + else + IMAGE_TAG="${{ env.TAG_PREFIX }}-${{ github.event.inputs.tag || 'latest' }}" + TIMESTAMP=${{ env.TAG_PREFIX }}-$(date +%Y%m%d) + echo "timestamp=${TIMESTAMP}" >> $GITHUB_OUTPUT + fi + echo "ecr_registry=${ECR_REGISTRY}" >> $GITHUB_OUTPUT echo "image_tag=${IMAGE_TAG}" >> $GITHUB_OUTPUT - echo "timestamp=${TIMESTAMP}" >> $GITHUB_OUTPUT echo "sha_short=${SHA_SHORT}" >> $GITHUB_OUTPUT - TAGS="${ECR_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" - TAGS="${TAGS},${ECR_REGISTRY}/${IMAGE_NAME}:${TIMESTAMP}" - TAGS="${TAGS},${ECR_REGISTRY}/${IMAGE_NAME}:${SHA_SHORT}" + TAGS="${ECR_REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG},${ECR_REGISTRY}/${IMAGE_NAME}:${SHA_SHORT}" + + if [ "${{ github.event_name }}" != "pull_request" ]; then + TAGS="${TAGS},${ECR_REGISTRY}/${IMAGE_NAME}:${TIMESTAMP}" + fi echo "tags=${TAGS}" >> $GITHUB_OUTPUT From 5d445e28ff65b719b440f294ea0015e27e48b3c2 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 11:14:02 +0000 Subject: [PATCH 07/16] ? --- .github/workflows/build-gpu.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index 1ce269d..68dc6db 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -25,7 +25,6 @@ env: REPOSITORY_NAME: jupyter-docker IMAGE_NAME: codio/codio-jupyter TAG_PREFIX: gpu-cuda - ECR_REGISTRY: public.ecr.aws/o0g3m8o6 jobs: build-and-push: @@ -53,6 +52,7 @@ jobs: with: registry-type: public + - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 @@ -63,7 +63,7 @@ jobs: - name: Set image tags id: meta run: | - ECR_REGISTRY="${{ env.ECR_REGISTRY }}" + ECR_REGISTRY="${{ steps.login-ecr.outputs.registry }}" SHA_SHORT=${{ env.TAG_PREFIX }}-$(echo ${{ github.sha }} | cut -c1-7) if [ "${{ github.event_name }}" == "pull_request" ]; then @@ -88,6 +88,7 @@ jobs: - name: Build and push Docker image uses: docker/build-push-action@v5 + timeout-minutes: 30 with: context: ./gpu push: true From cb4e2b9bd77fa34087a4c26f4c7673083029e515 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 11:26:47 +0000 Subject: [PATCH 08/16] correct ecr repo --- .github/workflows/build-gpu.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index 68dc6db..be73092 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -25,6 +25,7 @@ env: REPOSITORY_NAME: jupyter-docker IMAGE_NAME: codio/codio-jupyter TAG_PREFIX: gpu-cuda + ECR_REGISTRY: public.ecr.aws/o0g3m8o6 jobs: build-and-push: @@ -63,7 +64,7 @@ jobs: - name: Set image tags id: meta run: | - ECR_REGISTRY="${{ steps.login-ecr.outputs.registry }}" + ECR_REGISTRY="${{ env.ECR_REGISTRY }}" SHA_SHORT=${{ env.TAG_PREFIX }}-$(echo ${{ github.sha }} | cut -c1-7) if [ "${{ github.event_name }}" == "pull_request" ]; then @@ -94,8 +95,8 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} builder: ga-builder - cache-from: type=registry,ref=${{ steps.login-ecr.outputs.registry }}/${{ env.IMAGE_NAME }}:cache - cache-to: type=registry,mode=max,image-manifest=true,oci-mediatypes=true,ref=${{ steps.login-ecr.outputs.registry }}/${{ env.IMAGE_NAME }}:cache + cache-from: type=registry,ref=${{ steps.meta.outputs.ecr_registry }}/${{ env.IMAGE_NAME }}:cache + cache-to: type=registry,mode=max,image-manifest=true,oci-mediatypes=true,ref=${{ steps.meta.outputs.ecr_registry }}/${{ env.IMAGE_NAME }}:cache - name: Image summary if: github.event_name != 'pull_request' From bd86bacb0eacd8755a4540ec61039d1527cc2bd3 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 11:44:14 +0000 Subject: [PATCH 09/16] more info out --- .github/workflows/build-gpu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index be73092..f67b4d7 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -99,9 +99,9 @@ jobs: cache-to: type=registry,mode=max,image-manifest=true,oci-mediatypes=true,ref=${{ steps.meta.outputs.ecr_registry }}/${{ env.IMAGE_NAME }}:cache - name: Image summary - if: github.event_name != 'pull_request' run: | echo "### Docker Image Published :rocket:" >> $GITHUB_STEP_SUMMARY + echo "event name: ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Registry:** ${{ steps.meta.outputs.ecr_registry }}" >> $GITHUB_STEP_SUMMARY echo "**Image:** ${IMAGE_NAME}" >> $GITHUB_STEP_SUMMARY From a7092a60b7dbb3529932db89feb1a73a6e266c4c Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 11:56:23 +0000 Subject: [PATCH 10/16] new requirement --- gpu/requirements.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gpu/requirements.txt b/gpu/requirements.txt index 76cd45e..6e7d449 100644 --- a/gpu/requirements.txt +++ b/gpu/requirements.txt @@ -1,12 +1,12 @@ ---extra-index-url https://download.pytorch.org/whl/cu130 +--extra-index-url https://download.pytorch.org/whl/cu121 torch torchvision torchaudio # Hugging Face Libraries -transformers==4.37.2 -huggingface_hub<0.21 +transformers>=4.38.0 +huggingface_hub>=0.21.0 datasets accelerate sentencepiece From 4c12774795dc023f13ec66f1a37b8c7a6ce8f6df Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 12:01:16 +0000 Subject: [PATCH 11/16] versions update --- gpu/Dockerfile | 2 +- gpu/requirements.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gpu/Dockerfile b/gpu/Dockerfile index 7e3c373..937f6cb 100644 --- a/gpu/Dockerfile +++ b/gpu/Dockerfile @@ -1,4 +1,4 @@ -FROM quay.io/jupyter/base-notebook:latest +FROM quay.io/jupyter/base-notebook:x86_64-python-3.13 USER root diff --git a/gpu/requirements.txt b/gpu/requirements.txt index 6e7d449..bc45dff 100644 --- a/gpu/requirements.txt +++ b/gpu/requirements.txt @@ -1,4 +1,4 @@ ---extra-index-url https://download.pytorch.org/whl/cu121 +--extra-index-url https://download.pytorch.org/whl/cu126 torch torchvision From 01536a3091d52e9d88cb760a08c2f0e7cd030144 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 12:40:57 +0000 Subject: [PATCH 12/16] fix info --- .github/workflows/build-gpu.yml | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index f67b4d7..0853ab1 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -100,18 +100,20 @@ jobs: - name: Image summary run: | - echo "### Docker Image Published :rocket:" >> $GITHUB_STEP_SUMMARY - echo "event name: ${{ github.event_name }}" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Registry:** ${{ steps.meta.outputs.ecr_registry }}" >> $GITHUB_STEP_SUMMARY - echo "**Image:** ${IMAGE_NAME}" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Tags:**" >> $GITHUB_STEP_SUMMARY - echo "- \`${{ steps.meta.outputs.image_tag }}\`" >> $GITHUB_STEP_SUMMARY - echo "- \`${{ steps.meta.outputs.timestamp }}\`" >> $GITHUB_STEP_SUMMARY - echo "- \`${{ steps.meta.outputs.sha_short }}\`" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "**Pull command:**" >> $GITHUB_STEP_SUMMARY - echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY - echo "docker pull ${{ steps.meta.outputs.ecr_registry }}/${IMAGE_NAME}:${{ steps.meta.outputs.image_tag }}" >> $GITHUB_STEP_SUMMARY - echo "\`\`\`" >> $GITHUB_STEP_SUMMARY + { + echo "### Docker Image Published :rocket:" + echo "event name: ${{ github.event_name }}" + echo "" + echo "**Registry:** ${{ steps.meta.outputs.ecr_registry }}" + echo "**Image:** ${IMAGE_NAME}" + echo "" + echo "**Tags:**" + echo "- \`${{ steps.meta.outputs.image_tag }}\`" + echo "- \`${{ steps.meta.outputs.timestamp | default('Timestamp tag is not available for PR') }}\`" + echo "- \`${{ steps.meta.outputs.sha_short }}\`" + echo "" + echo "**Pull command:**" + echo "\`\`\`bash" + echo "docker pull ${{ steps.meta.outputs.ecr_registry }}/${IMAGE_NAME}:${{ steps.meta.outputs.image_tag }}" + echo "\`\`\`" + } | tee -a $GITHUB_STEP_SUMMARY From 837f3cd0f0f53330c47383d1d554e1d1cbfffaac Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Wed, 21 Jan 2026 12:41:37 +0000 Subject: [PATCH 13/16] fix --- .github/workflows/build-gpu.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu.yml index 0853ab1..a276a55 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu.yml @@ -109,7 +109,7 @@ jobs: echo "" echo "**Tags:**" echo "- \`${{ steps.meta.outputs.image_tag }}\`" - echo "- \`${{ steps.meta.outputs.timestamp | default('Timestamp tag is not available for PR') }}\`" + echo "- \`${{ steps.meta.outputs.timestamp || 'Timestamp tag is not available for PR' }}\`" echo "- \`${{ steps.meta.outputs.sha_short }}\`" echo "" echo "**Pull command:**" From 1d87f3dd8ccf82285024b2634130bf66f306fa4e Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Fri, 23 Jan 2026 16:09:34 +0000 Subject: [PATCH 14/16] rename --- .../workflows/{build-gpu.yml => build-gpu-cuda.yml} | 10 +++++----- {gpu => gpu-cuda}/Dockerfile | 0 {gpu => gpu-cuda}/README.md | 0 {gpu => gpu-cuda}/requirements.txt | 0 4 files changed, 5 insertions(+), 5 deletions(-) rename .github/workflows/{build-gpu.yml => build-gpu-cuda.yml} (95%) rename {gpu => gpu-cuda}/Dockerfile (100%) rename {gpu => gpu-cuda}/README.md (100%) rename {gpu => gpu-cuda}/requirements.txt (100%) diff --git a/.github/workflows/build-gpu.yml b/.github/workflows/build-gpu-cuda.yml similarity index 95% rename from .github/workflows/build-gpu.yml rename to .github/workflows/build-gpu-cuda.yml index a276a55..0f7d6d3 100644 --- a/.github/workflows/build-gpu.yml +++ b/.github/workflows/build-gpu-cuda.yml @@ -5,14 +5,14 @@ on: branches: - master paths: - - 'gpu/**' - - '.github/workflows/build-gpu.yml' + - 'gpu-cuda/**' + - '.github/workflows/build-gpu-cuda.yml' pull_request: branches: - master paths: - - 'gpu/**' - - '.github/workflows/build-gpu.yml' + - 'gpu-cuda/**' + - '.github/workflows/build-gpu-cuda.yml' workflow_dispatch: inputs: tag: @@ -91,7 +91,7 @@ jobs: uses: docker/build-push-action@v5 timeout-minutes: 30 with: - context: ./gpu + context: ./gpu-cuda push: true tags: ${{ steps.meta.outputs.tags }} builder: ga-builder diff --git a/gpu/Dockerfile b/gpu-cuda/Dockerfile similarity index 100% rename from gpu/Dockerfile rename to gpu-cuda/Dockerfile diff --git a/gpu/README.md b/gpu-cuda/README.md similarity index 100% rename from gpu/README.md rename to gpu-cuda/README.md diff --git a/gpu/requirements.txt b/gpu-cuda/requirements.txt similarity index 100% rename from gpu/requirements.txt rename to gpu-cuda/requirements.txt From c91ae11147dca790518d802cdadf59ac99a9df61 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Tue, 27 Jan 2026 14:16:02 +0000 Subject: [PATCH 15/16] checkout v6 --- .github/workflows/build-gpu-cuda.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-gpu-cuda.yml b/.github/workflows/build-gpu-cuda.yml index 0f7d6d3..a1314a3 100644 --- a/.github/workflows/build-gpu-cuda.yml +++ b/.github/workflows/build-gpu-cuda.yml @@ -36,7 +36,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 From a26f4f26f494b94f53c7e4f1ff1b9ae7265eaac0 Mon Sep 17 00:00:00 2001 From: Max Kraev Date: Tue, 27 Jan 2026 14:19:53 +0000 Subject: [PATCH 16/16] build v6 --- .github/workflows/build-gpu-cuda.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-gpu-cuda.yml b/.github/workflows/build-gpu-cuda.yml index a1314a3..2f6dd7c 100644 --- a/.github/workflows/build-gpu-cuda.yml +++ b/.github/workflows/build-gpu-cuda.yml @@ -88,7 +88,7 @@ jobs: echo "tags=${TAGS}" >> $GITHUB_OUTPUT - name: Build and push Docker image - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v6 timeout-minutes: 30 with: context: ./gpu-cuda