Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dockerfile Improvements #17965

Merged
merged 4 commits into from Mar 28, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
55 changes: 26 additions & 29 deletions Dockerfile
@@ -1,56 +1,53 @@
# syntax=docker/dockerfile:1.4

####################################################################################################
## Prepare Workspace
## Build Packages
rijkvanzanten marked this conversation as resolved.
Show resolved Hide resolved

FROM node:18-alpine AS workspace
WORKDIR /workspace
FROM node:18-alpine AS builder
WORKDIR /directus

ENV NODE_OPTIONS=--max-old-space-size=8192

COPY pnpm-lock.yaml .
RUN corepack enable && corepack prepare pnpm@7.30.0 --activate
rijkvanzanten marked this conversation as resolved.
Show resolved Hide resolved

COPY pnpm-lock.yaml .
RUN pnpm fetch
COPY . .
RUN pnpm install --recursive --offline --frozen-lockfile

####################################################################################################
## Create Deployment

FROM workspace AS pruned
WORKDIR /workspace
ENV NODE_OPTIONS=--max-old-space-size=8192

RUN pnpm --recursive --workspace-concurrency=1 run build
RUN pnpm --filter directus deploy --prod pruned
RUN cd pruned \
RUN : \
rijkvanzanten marked this conversation as resolved.
Show resolved Hide resolved
&& pnpm --recursive --workspace-concurrency=1 run build \
&& pnpm --filter directus deploy --prod dist \
&& cd dist \
&& pnpm pack \
&& tar -zxvf *.tgz package/package.json \
&& mv package/package.json package.json \
&& rm -r *.tgz package \
&& mkdir database extensions uploads
&& mkdir -p database extensions uploads \
;

####################################################################################################
## Create Production Image

FROM node:18-alpine
FROM node:18-alpine AS runtime

WORKDIR /directus

EXPOSE 8055

ENV DB_CLIENT="sqlite3"
ENV DB_FILENAME="/directus/database/database.sqlite"
ENV EXTENSIONS_PATH="/directus/extensions"
ENV STORAGE_LOCAL_ROOT="/directus/uploads"
ENV NODE_ENV="production"
ENV NPM_CONFIG_UPDATE_NOTIFIER="false"

COPY --from=pruned --chown=node:node /workspace/pruned .
ENV \
DB_CLIENT="sqlite3" \
DB_FILENAME="/directus/database/database.sqlite" \
EXTENSIONS_PATH="/directus/extensions" \
STORAGE_LOCAL_ROOT="/directus/uploads" \
NODE_ENV="production" \
NPM_CONFIG_UPDATE_NOTIFIER="false"

VOLUME /directus/database
VOLUME /directus/extensions
VOLUME /directus/uploads
rijkvanzanten marked this conversation as resolved.
Show resolved Hide resolved
COPY --from=builder --chown=node:node /directus/dist .

USER node

CMD node ./dist/cli/run.js bootstrap \
&& node ./dist/cli/run.js start
CMD : \
&& node /directus/dist/cli/run.js bootstrap \
&& node /directus/dist/cli/run.js start \
;