Download Dockerfile from Apsiknb/Empty: direct link, hf CLI and curl.
- Browser
- Download file 2.64 kB
-
https://huggingface.co/spaces/Apsiknb/Empty/resolve/main/Dockerfile
- Command line
-
hf download hf://spaces/Apsiknb/Empty/Dockerfile
-
curl -L -o Dockerfile https://huggingface.co/spaces/Apsiknb/Empty/resolve/main/Dockerfile
2.64 kB
| # Declare build arguments globally before any FROM statement. | |
| ARG PYTHON_VERSION=3.12.1 | |
| # --------------------------- | |
| # Stage 1: Node build environment | |
| # --------------------------- | |
| FROM node:20-alpine3.16 AS node-builder | |
| WORKDIR /app | |
| # Copy the entire project from the build context. | |
| COPY . . | |
| # Install required Alpine packages. | |
| RUN apk add --no-cache \ | |
| font-noto font-noto-cjk font-noto-extra \ | |
| gcompat libstdc++ libuuid \ | |
| vips-dev build-base jpeg-dev pango-dev cairo-dev \ | |
| imagemagick libssl1.1 && \ | |
| ln -s /lib/libresolv.so.2 /usr/lib/libresolv.so.2 | |
| # Install Node dependencies and install ts-node globally. | |
| RUN npm install && \ | |
| npm install -g ts-node \ | |
| npx playwright install-deps \ | |
| npx playwright install | |
| # --------------------------- | |
| # Stage 2: Python runtime environment | |
| # --------------------------- | |
| FROM python:${PYTHON_VERSION}-slim | |
| # Update apt and install system dependencies AND Node. | |
| RUN apt-get update && \ | |
| apt-get install -y --no-install-recommends \ | |
| fontconfig fonts-dejavu fonts-dejavu-core fonts-dejavu-extra \ | |
| fonts-liberation fonts-noto \ | |
| git curl gnupg && \ | |
| curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \ | |
| apt-get install -y nodejs && \ | |
| rm -rf /var/lib/apt/lists/* | |
| ENV npm_config_cache=/tmp/.npm | |
| # Make sure that directory exists and is writable | |
| RUN mkdir -p /tmp/.npm && chmod -R 777 /tmp/.npm | |
| RUN mkdir -p /tmp/cache_dir && chmod -R 777 /tmp/cache_dir | |
| # Set environment variable. | |
| ENV PORT=7860 | |
| WORKDIR /app | |
| # Copy the entire project from the build context. | |
| COPY . . | |
| # If the environment variables are set, clone the private repository. | |
| RUN --mount=type=secret,id=GITHUB_REPO,required=true \ | |
| --mount=type=secret,id=GITHUB_USERNAME,required=true \ | |
| --mount=type=secret,id=GITHUB_TOKEN,required=true \ | |
| if [ -n "$(cat /run/secrets/GITHUB_USERNAME)" ] && [ -n "$(cat /run/secrets/GITHUB_TOKEN)" ] && [ -n "$(cat /run/secrets/GITHUB_REPO)" ]; then \ | |
| echo "Cloning private repository into 'social_session'"; \ | |
| git clone https://$(cat /run/secrets/GITHUB_USERNAME):$(cat /run/secrets/GITHUB_TOKEN)@github.com/$(cat /run/secrets/GITHUB_USERNAME)/$(cat /run/secrets/GITHUB_REPO).git social_session; \ | |
| else \ | |
| echo "Skipping git clone: GITHUB_USERNAME, TOKEN, or GITHUB_REPO not set"; \ | |
| fi | |
| # Expose the port used by the ASGI server. | |
| EXPOSE 7860 | |
| # Install your Python dependencies from requirements.txt. | |
| RUN pip install -r requirements.txt | |
| # Start the server using hypercorn. | |
| CMD ["python", "-m", "hypercorn", "main:app", "-b", "0.0.0.0:7860", "-w", "8", "--keep-alive", "600"] | |