-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
69 lines (54 loc) · 2.41 KB
/
Dockerfile
File metadata and controls
69 lines (54 loc) · 2.41 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
FROM node:lts-alpine as builder
ARG APP_HOST=localhost
ENV APP_HOST ${APP_HOST}
ARG APP_SETUP_PASSWORD
ENV APP_SETUP_PASSWORD ${APP_SETUP_PASSWORD}
ARG APP_ADMIN_EMAIL
ENV APP_ADMIN_EMAIL ${APP_ADMIN_EMAIL}
ARG APP_JWT_SECRET ${APP_JWT_SECRET}
ARG MONGO_INITDB_ROOT_USERNAME=pluma
ENV MONGO_INITDB_ROOT_USERNAME ${MONGO_INITDB_ROOT_USERNAME}
ARG MONGO_INITDB_ROOT_PASSWORD
ENV MONGO_INITDB_ROOT_PASSWORD ${MONGO_INITDB_ROOT_PASSWORD}
ARG MONGO_INITDB_DATABASE=pluma
ENV MONGO_INITDB_DATABASE ${MONGO_INITDB_DATABASE}
ARG DATABASE_URL=mongdb://${MONGO_INITDB_ROOT_USERNAME}:${MONGO_INITDB_ROOT_PASSWORD}@database:27017/${MONGO_INITDB_DATABASE}
ENV DATABASE_URL ${DATABASE_URL}
ARG REDIS_HOST=redis
ENV REDIS_HOST ${REDIS_HOST}
ARG REDIS_PORT=6379
ENV REDIS_PORT ${REDIS_PORT}
ENV ENV production
ENV PATH /app/node_modules/.bin/:/usr/local/bin:$PATH
ENV CPPFLAGS "-DPNG_ARM_NEON_OPT=0"
WORKDIR /app
COPY . .
RUN apk add zlib zlib-dev optipng pkgconfig autoconf automake libtool nasm build-base python3 && \
npm install -g npm pnpm @angular/cli @nestjs/cli && \
chown -R node:node /app && \
pnpm config set store-dir /app/.pnpm-store && \
NODE_ENV="development" pnpm install --no-optional --unsafe-perm --strict-peer-dependencies=false && \
pnpm run build
FROM node:lts-alpine
ENV ENV production
ENV PATH /app/node_modules/.bin/:/usr/local/bin:$PATH
WORKDIR /app
RUN npm i -g npm pnpm && \
pnpm config set store-dir /app/.pnpm-store && \
pnpm install argon2 @prisma/client graphql-ws graphql && \
chown -R node:node /app && \
chmod -R 2755 /app
USER node
COPY --from=builder --chown=node:node /app/dist /app/dist
COPY --from=builder --chown=node:node /app/prisma /app/prisma
COPY --from=builder --chown=node:node /app/package.json /app/package.json
COPY --from=builder --chown=node:node /app/pnpm-lock.yaml /app/pnpm-lock.yaml
COPY --from=builder --chown=node:node /app/docker-entry.sh /app/docker-entry.sh
# COPY --from=builder --chown=node:node /app/node_modules/.pnpm/dockerode@* /app/node_modules/.pnpm/
# COPY --from=builder --chown=node:node /app/node_modules/dockerode /app/node_modules/
# COPY --from=builder --chown=node:node /app/node_modules/.pnpm/ssh2@* /app/node_modules/.pnpm
RUN mkdir -p /app/dist/pluma-online/server/ && \
ln -s /app/prisma/schema.prisma /app/dist/pluma-online/server/schema.prisma
EXPOSE 4200
HEALTHCHECK CMD curl --fail http://localhost:4200/api/healthz || exit 1
ENTRYPOINT ["./docker-entry.sh"]