JAA-ATS-Tool / Dockerfile
saitejatirunagari's picture
fix(ui+docker): persist wizard state across steps, disable webpack in nest-cli
e42000f
Raw
History Blame
2.22 kB
FROM python:3.11-slim
# System deps for Playwright + Node.js + git
RUN apt-get update && apt-get install -y \
wget curl gnupg ca-certificates git \
libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 \
libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 libxrandr2 \
libgbm1 libasound2 libxshmfence1 libx11-xcb1 \
libxcb-dri3-0 libpango-1.0-0 libcairo2 libfontconfig1 \
fonts-liberation libappindicator3-1 xdg-utils \
&& rm -rf /var/lib/apt/lists/*
# Install Node.js 20 LTS (needed to run ever-jobs NestJS API)
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& apt-get install -y nodejs \
&& rm -rf /var/lib/apt/lists/*
# Create non-root user (HF Spaces requirement)
RUN useradd -m -u 1000 user
USER user
ENV HOME=/home/user PATH=/home/user/.local/bin:$PATH
WORKDIR /app
# Install Python deps (separate layer — cached unless requirements.txt changes)
COPY --chown=user requirements.txt .
RUN pip install --no-cache-dir --upgrade pip \
&& pip install --no-cache-dir -r requirements.txt
# Install Playwright Chromium browser
RUN playwright install chromium
# Clone ever-jobs and install Node deps (separate layer — cached unless repo changes)
# vendor/ is in .dockerignore so it never comes from the build context
# nest-cli.json forces webpack which isn't installed; ts-node (nest start) is used at runtime instead
RUN git clone https://github.com/ever-jobs/ever-jobs.git vendor/ever-jobs --depth=1 \
&& cd vendor/ever-jobs \
&& npm install --legacy-peer-deps \
&& sed -i 's/"webpack": true/"webpack": false/g' nest-cli.json
# Copy app code (this layer re-runs on every code change, which is expected)
COPY --chown=user . .
# Create required runtime directories
RUN mkdir -p data/resume data/output/resumes data/output/reports \
data/research_cache data/logs data/output/run_history
# Make startup script executable
RUN chmod +x start.sh
# Expose Streamlit port
EXPOSE 7860
ENV STREAMLIT_SERVER_PORT=7860 \
STREAMLIT_SERVER_ADDRESS=0.0.0.0 \
STREAMLIT_SERVER_HEADLESS=true \
STREAMLIT_BROWSER_GATHER_USAGE_STATS=false
# start.sh boots ever-jobs on port 3001, then launches Streamlit on 7860
CMD ["./start.sh"]