-
Notifications
You must be signed in to change notification settings - Fork 72
Expand file tree
/
Copy pathDockerfile.caddyfile
More file actions
85 lines (77 loc) · 2.32 KB
/
Dockerfile.caddyfile
File metadata and controls
85 lines (77 loc) · 2.32 KB
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
# Build landing
FROM node:18-alpine AS landing-build
WORKDIR /app
COPY landing/package.json landing/package-lock.json ./
RUN npm ci
COPY landing/ ./
RUN npm run build
# Build sentry dashboard
FROM node:18-alpine AS sentry-dashboard-build
WORKDIR /app
COPY sentry-dashboard/package.json sentry-dashboard/package-lock.json ./
RUN npm ci
COPY sentry-dashboard/ ./
ARG VITE_SOKETI_KEY
ENV VITE_SOKETI_KEY=$VITE_SOKETI_KEY
RUN npm run build
# Build blog
FROM node:20-alpine AS blog-build
WORKDIR /app
COPY blog/package.json blog/package-lock.json ./
RUN npm ci
COPY blog/ ./
RUN npm run build
# Build admin dashboard
FROM node:20-alpine AS admin-build
WORKDIR /app
COPY admin/package.json admin/package-lock.json ./
RUN npm ci
COPY admin/ ./
RUN npm run build
# Build app frontend
FROM node:18-alpine AS app-build
RUN apk add --no-cache python3 make g++ gcc
WORKDIR /app
ARG VITE_SENTRY_DSN_SECRET
ARG VITE_SENTRY_DSN_PROJECT_ID
ARG VITE_SENTRY_AUTH_TOKEN
ARG VITE_SENTRY_ORG
ARG VITE_SENTRY_PROJECT
ARG VITE_SENTRY_URL
ARG VITE_SENTRY_ENABLED
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile --network-timeout 100000
COPY public/ ./public/
COPY src/ ./src/
COPY index.html ./
COPY vite.config.js ./
COPY babel.config.js ./
COPY vue.config.js ./
COPY ads.txt ./
COPY .env* ./
COPY jsconfig.json ./
COPY .firebaserc ./
ENV NODE_ENV=production \
VITE_SENTRY_DSN_SECRET=$VITE_SENTRY_DSN_SECRET \
VITE_SENTRY_DSN_PROJECT_ID=$VITE_SENTRY_DSN_PROJECT_ID \
VITE_SENTRY_AUTH_TOKEN=$VITE_SENTRY_AUTH_TOKEN \
VITE_SENTRY_ORG=$VITE_SENTRY_ORG \
VITE_SENTRY_PROJECT=$VITE_SENTRY_PROJECT \
VITE_SENTRY_URL=$VITE_SENTRY_URL \
VITE_SENTRY_ENABLED=$VITE_SENTRY_ENABLED
RUN yarn build
# Build Caddy with Cloudflare DNS module
FROM caddy:2.9.1-builder AS caddy-build
RUN xcaddy build \
--with github.com/caddy-dns/cloudflare
# Caddy with static files
FROM caddy:2.9.1-alpine
COPY --from=caddy-build /usr/bin/caddy /usr/bin/caddy
COPY Caddyfile /etc/caddy/Caddyfile
COPY --from=landing-build /app/dist /srv/landing
COPY --from=blog-build /app/dist /srv/blog
COPY --from=sentry-dashboard-build /app/dist /srv/sentry-dashboard
COPY --from=admin-build /app/dist /srv/admin
COPY --from=app-build /app/dist /srv/app
COPY --from=app-build /app/ads.txt /srv/app/ads.txt
CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]