directus

Форк
0
/
Dockerfile 
66 строк · 1.6 Кб
1
# syntax=docker/dockerfile:1.4
2

3
####################################################################################################
4
## Build Packages
5

6
FROM node:18-alpine AS builder
7
WORKDIR /directus
8

9
ARG TARGETPLATFORM
10

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

13
RUN <<EOF
14
  if [ "$TARGETPLATFORM" = 'linux/arm64' ]; then
15
  	apk --no-cache add python3 build-base
16
  	ln -sf /usr/bin/python3 /usr/bin/python
17
  fi
18
EOF
19

20
COPY package.json .
21
RUN corepack enable && corepack prepare
22

23
COPY pnpm-lock.yaml .
24
RUN pnpm fetch
25

26
COPY . .
27
RUN <<EOF
28
	pnpm install --recursive --offline --frozen-lockfile
29
	npm_config_workspace_concurrency=1 pnpm run build
30
	pnpm --filter directus deploy --prod dist
31
	cd dist
32
	# Regenerate package.json file with essential fields only
33
	# (see https://github.com/directus/directus/issues/20338)
34
	node -e '
35
		const f = "package.json", {name, version, type, exports, bin} = require(`./${f}`), {packageManager} = require(`../${f}`);
36
		fs.writeFileSync(f, JSON.stringify({name, version, type, exports, bin, packageManager}, null, 2));
37
	'
38
	mkdir -p database extensions uploads
39
EOF
40

41
####################################################################################################
42
## Create Production Image
43

44
FROM node:18-alpine AS runtime
45

46
RUN npm install --global pm2@5
47

48
USER node
49

50
WORKDIR /directus
51

52
EXPOSE 8055
53

54
ENV \
55
	DB_CLIENT="sqlite3" \
56
	DB_FILENAME="/directus/database/database.sqlite" \
57
	NODE_ENV="production" \
58
	NPM_CONFIG_UPDATE_NOTIFIER="false"
59

60
COPY --from=builder --chown=node:node /directus/ecosystem.config.cjs .
61
COPY --from=builder --chown=node:node /directus/dist .
62

63
CMD : \
64
	&& node cli.js bootstrap \
65
	&& pm2-runtime start ecosystem.config.cjs \
66
	;
67

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.