FROM julia:1.10-bookworm # HuggingFace Spaces requires user ID 1000 RUN useradd -m -u 1000 user # Shared Julia depot for package caching ENV JULIA_DEPOT_PATH=/opt/julia-depot RUN mkdir -p /opt/julia-depot && chmod 777 /opt/julia-depot # Copy project file first for dependency caching COPY --chown=user Project.toml /home/user/app/ # Install and precompile Julia packages (NNlib + JLD2 + HTTP + JSON3) RUN julia --project=/home/user/app -e ' \ using Pkg; \ Pkg.instantiate(); \ Pkg.precompile(); \ println("Precompile done")' # Copy application code COPY --chown=user model.jl /home/user/app/ COPY --chown=user checkpoint.jl /home/user/app/ COPY --chown=user server.jl /home/user/app/ # Create checkpoints directory (model downloads from HF at runtime) RUN mkdir -p /home/user/app/checkpoints && chown user:user /home/user/app/checkpoints # Switch to non-root user USER user ENV HOME=/home/user WORKDIR /home/user/app EXPOSE 7860 CMD ["julia", "--project=/home/user/app", "/home/user/app/server.jl"]