| # ============================================================================ | |
| # Build and push the ASCAD worker Docker image | |
| # Run this on a machine with Docker access (e.g., Vast.ai instance) | |
| # ============================================================================ | |
| # Usage: DOCKER_PAT=xxx bash build_docker.sh | |
| # ============================================================================ | |
| set -euo pipefail | |
| IMAGE_NAME="lemousehunter/ascad-worker:latest" | |
| echo "=== Building Docker image ===" | |
| cat > /tmp/Dockerfile <<'DOCKERFILE' | |
| FROM tensorflow/tensorflow:2.16.2-gpu | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| wget \ | |
| unzip \ | |
| screen \ | |
| && rm -rf /var/lib/apt/lists/* | |
| RUN pip3 install --no-cache-dir \ | |
| h5py \ | |
| numpy \ | |
| scipy \ | |
| scikit-learn \ | |
| requests \ | |
| pyyaml \ | |
| wandb \ | |
| huggingface_hub | |
| RUN mkdir -p /tmp/ascad_data /root/ascad-training-pipeline | |
| WORKDIR /root | |
| DOCKERFILE | |
| docker build -t "$IMAGE_NAME" -f /tmp/Dockerfile /tmp | |
| echo "=== Logging in to Docker Hub ===" | |
| echo "${DOCKER_PAT}" | docker login -u lemousehunter --password-stdin | |
| echo "=== Pushing image ===" | |
| docker push "$IMAGE_NAME" | |
| echo "=== Done! Image pushed: $IMAGE_NAME ===" | |