File size: 2,389 Bytes
b778f8d
5341e74
 
 
9f97180
db9f671
5341e74
a240151
 
b778f8d
a240151
 
b778f8d
5341e74
 
c6d4e5d
da9dd3b
5341e74
 
a240151
 
 
 
 
 
 
 
 
 
5341e74
b778f8d
da9dd3b
a240151
da9dd3b
 
 
 
 
 
 
 
 
 
 
5341e74
a240151
 
 
 
 
bd58e89
da9dd3b
bd58e89
 
da9dd3b
 
 
 
 
 
b778f8d
 
 
 
5341e74
 
 
9f97180
b778f8d
 
 
a240151
 
 
 
b778f8d
 
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
FROM ubuntu:22.04

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

# Set environment variables
ENV HOME=/home/user \
    PATH=/home/user/.local/bin:$PATH \
    JWT_ALGORITHM=RS256 \
    API_AUTH_TOKEN=secret \
    DASHBOARD_USERNAME=dashboard \
    DASHBOARD_PASSWORD=secret \
    SECRET_KEY_BASE=secret-key-base
# Install minimal dependencies
RUN apt-get update && apt-get install -y \
    curl \
    nginx \
    && rm -rf /var/lib/apt/lists/*

# 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 $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 auth service files
COPY --chown=user:user auth-service.js $HOME/app/auth/
COPY --chown=user:user package.json $HOME/app/auth/

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

# Install auth service dependencies
RUN cd $HOME/app/auth && pnpm install

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

# Expose port 4000 for AI Assistant
EXPOSE 4000

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