unoffical wafrn mirror
wafrn.net
atproto
social-network
activitypub
1# Build stage
2FROM node:24-alpine AS builder
3
4ARG DOMAIN_NAME
5ARG PDS_DOMAIN_NAME
6ARG CACHE_DOMAIN
7ARG MEDIA_DOMAIN
8ARG ACME_EMAIL
9ARG DOMAIN_NAME
10
11ARG FRONTEND_SHORT_TITLE
12ARG FRONTEND_LONG_TITLE
13ARG FRONTEND_DESCRIPTION
14
15ARG CACHE_HOST
16
17RUN apk add --no-cache perl curl tini bash
18
19WORKDIR /app/packages/frontend
20
21COPY package.json /app
22COPY package-lock.json /app
23
24COPY packages/frontend/package.json .
25
26# install dependencies
27RUN npm install
28
29COPY packages/frontend .
30
31# Override frontend files with files put here. Allows easy overriding of assets, and potentially actual code as well
32RUN cp -af /app/packages/frontend/overrides/* /app/packages/frontend/src || true
33
34# ngsw config
35RUN cp /app/packages/frontend/ngsw-config.json.example /app/packages/frontend/ngsw-config.json
36
37RUN perl -pi -e 's/\$\{\{([_A-Z]+):-(.*)\}\}/$ENV{$1}||$2/ge' /app/packages/frontend/ngsw-config.json && \
38 perl -pi -e 's/\$\{\{([_A-Z]+)\}\}/$ENV{$1}/g' /app/packages/frontend/ngsw-config.json
39
40# copy the frontend environment file
41RUN rm -rf src/environments/environment.prod.ts && mv src/environments/environment.docker.ts src/environments/environment.prod.ts
42
43ENV NODE_ENV=production
44
45RUN npm run build
46
47RUN mv dist/wafrn/browser /app/frontend
48
49COPY packages/frontend/Caddyfile.example /app/Caddyfile
50
51RUN perl -pi -e 's/\$\{\{([_A-Z]+):-(.*)\}\}/$ENV{$1}||$2/ge' /app/Caddyfile && \
52 perl -pi -e 's/\$\{\{([_A-Z]+)\}\}/$ENV{$1}/g' /app/Caddyfile
53
54RUN perl -pi -e 's/\$\{\{([_A-Z]+):-(.*)\}\}/$ENV{$1}||$2/ge' /app/frontend/index.html && \
55 perl -pi -e 's/\$\{\{([_A-Z]+)\}\}/$ENV{$1}/g' /app/frontend/index.html
56
57FROM caddy:2
58
59COPY packages/frontend/entrypoint.sh /entrypoint.sh
60COPY --from=builder /app/Caddyfile /etc/caddy/Caddyfile
61COPY --from=builder /app/frontend/ /app/frontend
62
63ENTRYPOINT [ "/entrypoint.sh" ]
64
65CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]