File size: 3,441 Bytes
5341e74
 
 
 
9f97180
db9f671
5341e74
a240151
 
 
 
 
 
 
9f97180
5341e74
 
c6d4e5d
 
 
5341e74
 
da9dd3b
2917d86
 
 
 
5341e74
 
2917d86
 
 
 
 
a240151
 
 
 
 
 
 
 
 
 
5341e74
2917d86
5341e74
 
da9dd3b
a240151
da9dd3b
 
 
 
 
 
 
 
 
 
 
5341e74
a240151
 
 
 
 
bd58e89
da9dd3b
bd58e89
 
da9dd3b
 
 
 
 
 
5341e74
 
 
9f97180
a240151
 
 
 
 
 
 
 
 
 
9f97180
5341e74
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
FROM nvidia/cuda:12.6.3-devel-ubuntu22.04

# Create non-root user
RUN useradd -m -u 1000 user

# Set environment variables
ENV HOME=/home/user \
    PATH=/home/user/.local/bin:$PATH \
    API_AUTH_TOKEN=secret \
    JWT_ALGORITHM=RS256 \
    DASHBOARD_USERNAME=dashboard \
    DASHBOARD_PASSWORD=secret \
    SECRET_KEY_BASE=secret-key-base \
    JWT_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2gzhmJ9TDanEzWdP1WG+\n0Ecwbe7f3bv6e5UUpvcT5q68IQJKP47AQdBAnSlFVi4X9SaurbWoXdS6jpmPpk24\nQvitzLNFphHdwjFBelTAOa6taZrSusoFvrtK9x5xsW4zzt/bkpUraNx82Z8MwLwr\nt6HlY7dgO9+xBAabj4t1d2t+0HS8O/ed3CB6T2lj6S8AbLDSEFc9ScO6Uc1XJlSo\nrgyJJSPCpNhSq3AubEZ1wMS1iEtgAzTPRDsQv50qWIbn634HLWxTP/UH6YNJBwzt\n3O6q29kTtjXlMGXCvin37PyX4Jy1IiPFwJm45aWJGKSfVGMDojTJbuUtM+8P9Rrn\nAwIDAQAB\n-----END PUBLIC KEY-----"

# Install minimal dependencies
RUN apt-get update && apt-get install -y \
    wget \
    curl \
    unzip \
    clang \
    cuda-toolkit \
    nginx \
    build-essential \
    cmake \
    git \
    libcurl4-openssl-dev \
    && rm -rf /var/lib/apt/lists/*

# Copy llama.cpp server files from official image
COPY --from=ghcr.io/ggerganov/llama.cpp:server-cuda /app/llama-server $HOME/app/llama-server
COPY --from=ghcr.io/ggerganov/llama.cpp:server-cuda /app/*.so* $HOME/app/
RUN chmod +x $HOME/app/llama-server

# Install Node.js and pnpm
RUN curl -fsSL https://deb.nodesource.com/setup_20.x | bash - && \
    apt-get update && \
    apt-get install -y nodejs && \
    npm install -g corepack && \
    rm -rf /var/lib/apt/lists/*

# Enable pnpm
RUN corepack enable && corepack prepare pnpm@latest --activate

# Create directories and set permissions
RUN mkdir -p /tmp/llamacpp && \
    mkdir -p $HOME/models && \
    mkdir -p $HOME/app && \
    mkdir -p $HOME/app/docauth && \
    mkdir -p $HOME/app/aia && \
    mkdir -p /var/cache/nginx && \
    mkdir -p /var/log/nginx && \
    mkdir -p /var/lib/nginx && \
    mkdir -p /run/nginx && \
    touch /var/run/nginx.pid && \
    chown -R user:user $HOME && \
    chown -R user:user /var/cache/nginx && \
    chown -R user:user /var/log/nginx && \
    chown -R user:user /var/lib/nginx && \
    chown -R user:user /var/run/nginx.pid && \
    chown -R user:user /run/nginx

# Copy AI Assistant app
COPY --from=pspdfkit/ai-assistant:nightly /base $HOME/app/aia
COPY --chown=node:node service-config.yml /service-config.yml
RUN chown -R user:user $HOME/app/aia

# Copy nginx configuration and replace license key
COPY nginx.conf /etc/nginx/nginx.conf
RUN --mount=type=secret,id=DOCAUTH_LICENSE_KEY,mode=0444,required=true \
    sed -i "s/\$DOCAUTH_LICENSE_KEY/$(cat /run/secrets/DOCAUTH_LICENSE_KEY)/g" /etc/nginx/nginx.conf

# Copy web files
COPY --chown=user:user index.html $HOME/app/docauth/
COPY --chown=user:user document-authoring.js $HOME/app/docauth/
COPY --chown=user:user Sample.docx $HOME/app/docauth/

# Copy start script
COPY --chown=user:user start-services.sh $HOME/app/
RUN chmod +x $HOME/app/start-services.sh

# Switch to non-root user
USER user
WORKDIR $HOME/app

# Download models
RUN wget -q https://huggingface.co/bartowski/gemma-2-2b-it-GGUF/resolve/main/gemma-2-2b-it-Q8_0.gguf -O $HOME/models/gemma-2b.gguf && \
    wget -q https://huggingface.co/leliuga/all-MiniLM-L6-v2-GGUF/resolve/main/all-MiniLM-L6-v2.F16.gguf -O $HOME/models/embeddings.gguf

# Expose (7860, for Hugging Face, 4000 for AI Assistant)
EXPOSE 7860

CMD ["./start-services.sh"]