-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
63 lines (46 loc) · 1.61 KB
/
Dockerfile
File metadata and controls
63 lines (46 loc) · 1.61 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
FROM node:20-slim AS development-build
# install pnpm
RUN npm install -g pnpm
WORKDIR /app
# copy package manifests & lockfile
COPY package.json pnpm-lock.yaml* ./
# install deps
RUN pnpm install --frozen-lockfile
# copy the rest of source & build
COPY . .
# Build-time environment variables (for build process)
ARG DATABASE_URL="file:./local.db"
ARG NODE_ENV="production"
ARG VINUMC_SOURCE=release
ARG VINUMC_VERSION=vinumc-v0.1.0-alpha
RUN if [ "$VINUMC_SOURCE" = "release" ]; then \
apt-get update && apt-get install -y curl && \
curl -L "https://github.com/vinumdoc/vinum/releases/download/${VINUMC_VERSION}/vinumc" \
-o /usr/local/bin/vinumc && \
chmod +x /usr/local/bin/vinumc; \
fi
RUN pnpm build
FROM node:20-slim AS production-build
# create app directory
WORKDIR /app
# install only production deps
COPY package.json pnpm-lock.yaml* ./
RUN npm install -g pnpm \
&& pnpm install --prod --frozen-lockfile \
&& pnpm store prune
# copy built output from development-build
COPY --from=development-build /app/build ./build
# copy adapter entrypoint (SvelteKit adapter-node output)
COPY --from=development-build /app/package.json ./package.json
# Build-time environment variables (for build process)
ARG DATABASE_URL="file:./local.db"
ARG NODE_ENV="production"
ARG VINUMC_VERSION=vinumc-v0.1.0-alpha
RUN apt-get update && apt-get install -y curl && \
curl -L "https://github.com/vinumdoc/vinum/releases/download/${VINUMC_VERSION}/vinumc" \
-o /usr/local/bin/vinumc && \
chmod +x /usr/local/bin/vinumc
# expose production port
EXPOSE 3000
# start the Node server
CMD ["node", "build"]