FROM vllm/vllm-openai:v0.30.0-x86_64@sha256:5f5e535216848d0c52159c8c13a0af04be5f6fe1a84e79914300610796f76d40
ENTRYPOINT []
RUN command -v python >/dev/null || ln -s "$(command -v python3)" /usr/local/bin/python
RUN rm -rf /usr/local/lib/python3.12/dist-packages/vllm/vllm_flash_attn/cute /usr/local/lib/python3.12/dist-packages/vllm/third_party/tml_fa4 /usr/local/lib/python3.12/dist-packages/vllm/third_party/fmha_sm100 /usr/local/lib/python3.12/dist-packages/tokenspeed_mla /usr/local/lib/python3.12/dist-packages/flashinfer/cute_dsl /usr/local/lib/python3.12/dist-packages/flashinfer/data/cutlass /usr/local/lib/python3.12/dist-packages/flashinfer/data/include /usr/local/lib/python3.12/dist-packages/flashinfer/data/csrc /usr/local/lib/python3.12/dist-packages/flashinfer/attention /usr/local/lib/python3.12/dist-packages/flashinfer/gdn_kernels /usr/local/lib/python3.12/dist-packages/flashinfer/fused_moe/cute_dsl /usr/local/lib/python3.12/dist-packages/flashinfer_cubin /usr/local/lib/python3.12/dist-packages/flashinfer_jit_cache /usr/local/lib/python3.12/dist-packages/cudnn /usr/local/lib/python3.12/dist-packages/tilelang/3rdparty/cutlass && find /usr/local/lib/python3.12/dist-packages -name __pycache__ -path "*flash_attn*" -prune -exec rm -rf {} + ; ! grep -rlI --include=*.py --include=*.cu --include=*.cuh --include=*.h --include=*.hpp "FlashAttentionForwardSm100\|BlackwellFusedMultiHeadAttentionForward\|Sm100FmhaFwd\|fmha_fwd_mainloop_tma_warpspecialized\|SM100_FMHA" /usr/local/lib/python3.12/dist-packages /usr/local/cuda/include 2>/dev/null | grep . 
RUN (id -u agent >/dev/null 2>&1 || useradd -m -u 1001 -s /bin/bash agent) \
 && printf 'agent soft nproc 4096\nagent hard nproc 4096\nagent hard core 0\nagent hard fsize 16777216\n' > /etc/security/limits.d/90-nodus-agent.conf \
 && if [ -f /etc/pam.d/su ] && ! grep -qsE '^[[:space:]]*session[[:space:]]+[^[:space:]]+[[:space:]]+pam_limits' /etc/pam.d/su; then echo 'session required pam_limits.so' >> /etc/pam.d/su; fi
COPY workspace /workspace
RUN chown -R agent:agent /workspace
WORKDIR /workspace
