Switch to Base images (#7654)

Signed-off-by: Andrey Sobolev <haiodo@gmail.com>
This commit is contained in:
Andrey Sobolev
2025-01-14 12:12:15 +07:00
committed by GitHub
parent 582766bc63
commit 379c92716e
51 changed files with 88 additions and 714 deletions
+1 -1
View File
@@ -1 +1 @@
v20.13 v22
+1
View File
@@ -453,6 +453,7 @@
"sourceMaps": true, "sourceMaps": true,
"cwd": "${workspaceRoot}/services/github/pod-github", "cwd": "${workspaceRoot}/services/github/pod-github",
"protocol": "inspector", "protocol": "inspector",
"attachSimplePort": 0,
"outputCapture": "std" "outputCapture": "std"
}, },
{ {
+59 -27
View File
@@ -25,7 +25,8 @@
__webpack_require__.r(__webpack_exports__); __webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ isVariableSetInNpmrcFile: () => (/* binding */ isVariableSetInNpmrcFile), /* harmony export */ isVariableSetInNpmrcFile: () => (/* binding */ isVariableSetInNpmrcFile),
/* harmony export */ syncNpmrc: () => (/* binding */ syncNpmrc) /* harmony export */ syncNpmrc: () => (/* binding */ syncNpmrc),
/* harmony export */ trimNpmrcFileLines: () => (/* binding */ trimNpmrcFileLines)
/* harmony export */ }); /* harmony export */ });
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ 179896); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! fs */ 179896);
/* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var fs__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(fs__WEBPACK_IMPORTED_MODULE_0__);
@@ -46,7 +47,7 @@ __webpack_require__.r(__webpack_exports__);
// create a global _combinedNpmrc for cache purpose // create a global _combinedNpmrc for cache purpose
const _combinedNpmrcMap = new Map(); const _combinedNpmrcMap = new Map();
function _trimNpmrcFile(options) { function _trimNpmrcFile(options) {
const { sourceNpmrcPath, linesToPrepend, linesToAppend } = options; const { sourceNpmrcPath, linesToPrepend, linesToAppend, supportEnvVarFallbackSyntax } = options;
const combinedNpmrcFromCache = _combinedNpmrcMap.get(sourceNpmrcPath); const combinedNpmrcFromCache = _combinedNpmrcMap.get(sourceNpmrcPath);
if (combinedNpmrcFromCache !== undefined) { if (combinedNpmrcFromCache !== undefined) {
return combinedNpmrcFromCache; return combinedNpmrcFromCache;
@@ -62,6 +63,21 @@ function _trimNpmrcFile(options) {
npmrcFileLines.push(...linesToAppend); npmrcFileLines.push(...linesToAppend);
} }
npmrcFileLines = npmrcFileLines.map((line) => (line || '').trim()); npmrcFileLines = npmrcFileLines.map((line) => (line || '').trim());
const resultLines = trimNpmrcFileLines(npmrcFileLines, process.env, supportEnvVarFallbackSyntax);
const combinedNpmrc = resultLines.join('\n');
//save the cache
_combinedNpmrcMap.set(sourceNpmrcPath, combinedNpmrc);
return combinedNpmrc;
}
/**
*
* @param npmrcFileLines The npmrc file's lines
* @param env The environment variables object
* @param supportEnvVarFallbackSyntax Whether to support fallback values in the form of `${VAR_NAME:-fallback}`
* @returns
*/
function trimNpmrcFileLines(npmrcFileLines, env, supportEnvVarFallbackSyntax) {
var _a;
const resultLines = []; const resultLines = [];
// This finds environment variable tokens that look like "${VAR_NAME}" // This finds environment variable tokens that look like "${VAR_NAME}"
const expansionRegExp = /\$\{([^\}]+)\}/g; const expansionRegExp = /\$\{([^\}]+)\}/g;
@@ -80,10 +96,35 @@ function _trimNpmrcFile(options) {
const environmentVariables = line.match(expansionRegExp); const environmentVariables = line.match(expansionRegExp);
if (environmentVariables) { if (environmentVariables) {
for (const token of environmentVariables) { for (const token of environmentVariables) {
// Remove the leading "${" and the trailing "}" from the token /**
const environmentVariableName = token.substring(2, token.length - 1); * Remove the leading "${" and the trailing "}" from the token
// Is the environment variable defined? *
if (!process.env[environmentVariableName]) { * ${nameString} -> nameString
* ${nameString-fallbackString} -> name-fallbackString
* ${nameString:-fallbackString} -> name:-fallbackString
*/
const nameWithFallback = token.substring(2, token.length - 1);
let environmentVariableName;
let fallback;
if (supportEnvVarFallbackSyntax) {
/**
* Get the environment variable name and fallback value.
*
* name fallback
* nameString -> nameString undefined
* nameString-fallbackString -> nameString fallbackString
* nameString:-fallbackString -> nameString fallbackString
*/
const matched = nameWithFallback.match(/^([^:-]+)(?:\:?-(.+))?$/);
// matched: [originStr, variableName, fallback]
environmentVariableName = (_a = matched === null || matched === void 0 ? void 0 : matched[1]) !== null && _a !== void 0 ? _a : nameWithFallback;
fallback = matched === null || matched === void 0 ? void 0 : matched[2];
}
else {
environmentVariableName = nameWithFallback;
}
// Is the environment variable and fallback value defined.
if (!env[environmentVariableName] && !fallback) {
// No, so trim this line // No, so trim this line
lineShouldBeTrimmed = true; lineShouldBeTrimmed = true;
break; break;
@@ -100,20 +141,13 @@ function _trimNpmrcFile(options) {
resultLines.push(line); resultLines.push(line);
} }
} }
const combinedNpmrc = resultLines.join('\n'); return resultLines;
//save the cache
_combinedNpmrcMap.set(sourceNpmrcPath, combinedNpmrc);
return combinedNpmrc;
} }
function _copyAndTrimNpmrcFile(options) { function _copyAndTrimNpmrcFile(options) {
const { logger, sourceNpmrcPath, targetNpmrcPath, linesToPrepend, linesToAppend } = options; const { logger, sourceNpmrcPath, targetNpmrcPath } = options;
logger.info(`Transforming ${sourceNpmrcPath}`); // Verbose logger.info(`Transforming ${sourceNpmrcPath}`); // Verbose
logger.info(` --> "${targetNpmrcPath}"`); logger.info(` --> "${targetNpmrcPath}"`);
const combinedNpmrc = _trimNpmrcFile({ const combinedNpmrc = _trimNpmrcFile(options);
sourceNpmrcPath,
linesToPrepend,
linesToAppend
});
fs__WEBPACK_IMPORTED_MODULE_0__.writeFileSync(targetNpmrcPath, combinedNpmrc); fs__WEBPACK_IMPORTED_MODULE_0__.writeFileSync(targetNpmrcPath, combinedNpmrc);
return combinedNpmrc; return combinedNpmrc;
} }
@@ -123,7 +157,7 @@ function syncNpmrc(options) {
info: console.log, info: console.log,
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
error: console.error error: console.error
}, createIfMissing = false, linesToAppend, linesToPrepend } = options; }, createIfMissing = false } = options;
const sourceNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(sourceNpmrcFolder, !useNpmrcPublish ? '.npmrc' : '.npmrc-publish'); const sourceNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(sourceNpmrcFolder, !useNpmrcPublish ? '.npmrc' : '.npmrc-publish');
const targetNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(targetNpmrcFolder, '.npmrc'); const targetNpmrcPath = path__WEBPACK_IMPORTED_MODULE_1__.join(targetNpmrcFolder, '.npmrc');
try { try {
@@ -132,13 +166,9 @@ function syncNpmrc(options) {
if (!fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcFolder)) { if (!fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcFolder)) {
fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync(targetNpmrcFolder, { recursive: true }); fs__WEBPACK_IMPORTED_MODULE_0__.mkdirSync(targetNpmrcFolder, { recursive: true });
} }
return _copyAndTrimNpmrcFile({ return _copyAndTrimNpmrcFile(Object.assign({ sourceNpmrcPath,
sourceNpmrcPath,
targetNpmrcPath, targetNpmrcPath,
logger, logger }, options));
linesToAppend,
linesToPrepend
});
} }
else if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcPath)) { else if (fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(targetNpmrcPath)) {
// If the source .npmrc doesn't exist and there is one in the target, delete the one in the target // If the source .npmrc doesn't exist and there is one in the target, delete the one in the target
@@ -150,13 +180,13 @@ function syncNpmrc(options) {
throw new Error(`Error syncing .npmrc file: ${e}`); throw new Error(`Error syncing .npmrc file: ${e}`);
} }
} }
function isVariableSetInNpmrcFile(sourceNpmrcFolder, variableKey) { function isVariableSetInNpmrcFile(sourceNpmrcFolder, variableKey, supportEnvVarFallbackSyntax) {
const sourceNpmrcPath = `${sourceNpmrcFolder}/.npmrc`; const sourceNpmrcPath = `${sourceNpmrcFolder}/.npmrc`;
//if .npmrc file does not exist, return false directly //if .npmrc file does not exist, return false directly
if (!fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath)) { if (!fs__WEBPACK_IMPORTED_MODULE_0__.existsSync(sourceNpmrcPath)) {
return false; return false;
} }
const trimmedNpmrcFile = _trimNpmrcFile({ sourceNpmrcPath }); const trimmedNpmrcFile = _trimNpmrcFile({ sourceNpmrcPath, supportEnvVarFallbackSyntax });
const variableKeyRegExp = new RegExp(`^${variableKey}=`, 'm'); const variableKeyRegExp = new RegExp(`^${variableKey}=`, 'm');
return trimmedNpmrcFile.match(variableKeyRegExp) !== null; return trimmedNpmrcFile.match(variableKeyRegExp) !== null;
} }
@@ -440,7 +470,8 @@ function _resolvePackageVersion(logger, rushCommonFolder, { name, version }) {
(0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({ (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({
sourceNpmrcFolder, sourceNpmrcFolder,
targetNpmrcFolder: rushTempFolder, targetNpmrcFolder: rushTempFolder,
logger logger,
supportEnvVarFallbackSyntax: false
}); });
const npmPath = getNpmPath(); const npmPath = getNpmPath();
// This returns something that looks like: // This returns something that looks like:
@@ -656,7 +687,8 @@ function installAndRun(logger, packageName, packageVersion, packageBinName, pack
(0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({ (0,_utilities_npmrcUtilities__WEBPACK_IMPORTED_MODULE_4__.syncNpmrc)({
sourceNpmrcFolder, sourceNpmrcFolder,
targetNpmrcFolder: packageInstallFolder, targetNpmrcFolder: packageInstallFolder,
logger logger,
supportEnvVarFallbackSyntax: false
}); });
_createPackageJson(packageInstallFolder, packageName, packageVersion); _createPackageJson(packageInstallFolder, packageName, packageVersion);
const command = lockFilePath ? 'ci' : 'install'; const command = lockFilePath ? 'ci' : 'install';
+1 -1
View File
@@ -6,4 +6,4 @@ RUN apt-get install -y \
poppler-utils \ poppler-utils \
html2text \ html2text \
unrtf unrtf
RUN npm install --ignore-scripts=false --verbose sharp@v0.30.2 pdfjs-dist@v2.12.313 --unsafe-perm RUN npm install --ignore-scripts=false --verbose sharp@v0.32.6 pdfjs-dist@v2.12.313 --unsafe-perm
+1 -2
View File
@@ -1,5 +1,4 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
+1 -4
View File
@@ -1,9 +1,6 @@
FROM node:20 FROM hardcoreeng/base
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy msgpackr msgpackr-extract --unsafe-perm
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
CMD [ "bash" ] CMD [ "bash" ]
+1 -11
View File
@@ -1,16 +1,6 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
EXPOSE 3000 EXPOSE 3000
+1 -11
View File
@@ -1,17 +1,7 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
COPY bundle/bundle.js.map ./ COPY bundle/bundle.js.map ./
COPY bundle/model.json ./ COPY bundle/model.json ./
+1 -10
View File
@@ -1,15 +1,6 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
COPY bundle/bundle.js.map ./ COPY bundle/bundle.js.map ./
+1 -12
View File
@@ -1,16 +1,5 @@
FROM node:20 FROM hardcoreeng/front-base:v20250113a
ENV NODE_ENV production
WORKDIR /app WORKDIR /app
RUN npm install --ignore-scripts=false --verbose sharp@v0.32.6 bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
COPY bundle/bundle.js.map ./ COPY bundle/bundle.js.map ./
+1 -11
View File
@@ -1,17 +1,7 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
COPY bundle/bundle.js.map ./ COPY bundle/bundle.js.map ./
COPY bundle/model.json ./ COPY bundle/model.json ./
+1 -10
View File
@@ -1,14 +1,5 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy msgpackr msgpackr-extract --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/model.json ./ COPY bundle/model.json ./
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
+1 -9
View File
@@ -1,14 +1,6 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
EXPOSE 4900 EXPOSE 4900
+1 -11
View File
@@ -1,16 +1,6 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
COPY bundle/bundle.js.map ./ COPY bundle/bundle.js.map ./
-1
View File
@@ -1 +0,0 @@
defaults
-5
View File
@@ -1,5 +0,0 @@
GMAIL_URL=http://localhost:8087
TELEGRAM_URL=http://localhost:8086
FRONT_URL=http://localhost:8080
REKONI_URL=http://localhost:4004
-4
View File
@@ -1,4 +0,0 @@
TELEGRAM_URL = https://telegram.hc.engineering
REKONI_URL = https://rekoni.hc.engineering
GMAIL_URL = https://gmail.hc.engineering
-3
View File
@@ -1,3 +0,0 @@
stats.json
dist/
-9
View File
@@ -1,9 +0,0 @@
FROM node:20
WORKDIR /usr/src/app
COPY bundle/bundle.js ./
COPY dist/ ./dist/
EXPOSE 8080
CMD [ "node", "bundle.js" ]
-5
View File
@@ -1,5 +0,0 @@
{
"ACCOUNTS_URL":"http://localhost:3000",
"UPLOAD_URL":"/files",
"REKONI_URL": "http://localhost:4004"
}
-132
View File
@@ -1,132 +0,0 @@
{
"name": "@hcengineering/prod-tracker",
"version": "1.0.0",
"license": "EPL-2.0",
"scripts": {
"build": "echo 'disabled'",
"*build": "rm -rf ./dist && cross-env NODE_ENV=production webpack --stats-error-details && echo 'done'",
"*bundle": "cp -r ../../server/front/bundle.js .",
"bundle": "echo 'disabled'",
"*docker:build": "docker build -t hardcoreeng/tracker-front .",
"*docker:staging": "../../common/scripts/docker_tag.sh hardcoreeng/tracker-front staging",
"*docker:push": "../../common/scripts/docker_tag.sh hardcoreeng/tracker-front",
"analyze": "cross-env NODE_ENV=production webpack --json > stats.json",
"show": "webpack-bundle-analyzer stats.json dist",
"dev-server": "cross-env CLIENT_TYPE=dev-server webpack serve",
"start": "cross-env NODE_ENV=production webpack serve",
"format": "echo 'Not required'",
"lint": "echo 'Not required'",
"lint:fix": "echo 'Not required'",
"*deploy": "cp -p public/* dist && aws s3 sync dist s3://anticrm-platform --delete --acl public-read"
},
"devDependencies": {
"cross-env": "~7.0.3",
"webpack-cli": "^4.6.0",
"webpack": "^5.32.0",
"mini-css-extract-plugin": "^2.2.0",
"dotenv-webpack": "^7.0.2",
"ts-loader": "^9.2.5",
"svelte-loader": "^3.1.9",
"css-loader": "^5.2.1",
"webpack-dev-server": "^4.7.4",
"style-loader": "^3.2.1",
"file-loader": "^6.2.0",
"sass-loader": "^12.1.0",
"@types/node": "~20.11.16",
"webpack-bundle-analyzer": "^4.4.1",
"svgo-loader": "^3.0.0",
"autoprefixer": "^10.2.6",
"postcss": "^8.3.4",
"postcss-loader": "^6.1.0",
"postcss-load-config": "^3.1.0",
"compression-webpack-plugin": "~9.0.0",
"html-webpack-plugin": "~5.5.0"
},
"dependencies": {
"@hcengineering/platform": "^0.6.8",
"@hcengineering/ui": "^0.6.3",
"@hcengineering/theme": "^0.6.2",
"svelte": "^4.2.5",
"@hcengineering/login": "^0.6.1",
"@hcengineering/login-assets": "^0.6.0",
"@hcengineering/login-resources": "^0.6.2",
"@hcengineering/client": "^0.6.6",
"@hcengineering/workbench": "^0.6.2",
"@hcengineering/workbench-resources": "^0.6.1",
"@hcengineering/view": "^0.6.2",
"@hcengineering/view-assets": "^0.6.0",
"@hcengineering/view-resources": "^0.6.0",
"@hcengineering/contact": "^0.6.11",
"@hcengineering/contact-resources": "^0.6.0",
"@hcengineering/task": "^0.6.1",
"@hcengineering/task-assets": "^0.6.0",
"@hcengineering/task-resources": "^0.6.0",
"@hcengineering/chunter": "^0.6.2",
"@hcengineering/chunter-assets": "^0.6.0",
"@hcengineering/chunter-resources": "^0.6.0",
"@hcengineering/setting": "^0.6.2",
"@hcengineering/setting-assets": "^0.6.0",
"@hcengineering/setting-resources": "^0.6.0",
"@hcengineering/client-resources": "^0.6.4",
"@hcengineering/contact-assets": "^0.6.0",
"@hcengineering/activity": "^0.6.0",
"@hcengineering/activity-assets": "^0.6.0",
"@hcengineering/activity-resources": "^0.6.1",
"@hcengineering/telegram": "^0.6.2",
"@hcengineering/telegram-assets": "^0.6.0",
"@hcengineering/telegram-resources": "^0.6.0",
"@hcengineering/workbench-assets": "^0.6.0",
"@hcengineering/attachment": "^0.6.1",
"@hcengineering/attachment-assets": "^0.6.0",
"@hcengineering/attachment-resources": "^0.6.0",
"@hcengineering/gmail": "^0.6.0",
"@hcengineering/gmail-assets": "^0.6.0",
"@hcengineering/gmail-resources": "^0.6.0",
"@hcengineering/image-cropper": "^0.6.0",
"@hcengineering/image-cropper-resources": "^0.6.0",
"@hcengineering/server-attachment": "^0.6.1",
"@hcengineering/server-attachment-resources": "^0.6.0",
"@hcengineering/server-collaboration": "^0.6.0",
"@hcengineering/server-collaboration-resources": "^0.6.0",
"@hcengineering/server-contact": "^0.6.1",
"@hcengineering/server-contact-resources": "^0.6.0",
"@hcengineering/server-notification": "^0.6.0",
"@hcengineering/server-notification-resources": "^0.6.0",
"@hcengineering/server-setting": "^0.6.0",
"@hcengineering/server-setting-resources": "^0.6.0",
"@hcengineering/templates": "^0.6.0",
"@hcengineering/templates-assets": "^0.6.0",
"@hcengineering/templates-resources": "^0.6.0",
"@hcengineering/notification": "^0.6.5",
"@hcengineering/notification-assets": "^0.6.0",
"@hcengineering/notification-resources": "^0.6.0",
"@hcengineering/preference": "^0.6.2",
"@hcengineering/preference-assets": "^0.6.0",
"@hcengineering/calendar": "^0.6.2",
"@hcengineering/calendar-assets": "^0.6.0",
"@hcengineering/calendar-resources": "^0.6.0",
"@hcengineering/core": "^0.6.21",
"@hcengineering/server-chunter": "^0.6.0",
"@hcengineering/server-chunter-resources": "^0.6.0",
"@hcengineering/server-task": "^0.6.0",
"@hcengineering/server-task-resources": "^0.6.0",
"@hcengineering/server-tracker": "^0.6.0",
"@hcengineering/server-tracker-resources": "^0.6.0",
"@hcengineering/server-calendar": "^0.6.0",
"@hcengineering/server-calendar-resources": "^0.6.0",
"@hcengineering/server-gmail": "^0.6.0",
"@hcengineering/server-gmail-resources": "^0.6.0",
"@hcengineering/server-telegram": "^0.6.0",
"@hcengineering/server-telegram-resources": "^0.6.0",
"@hcengineering/presentation": "^0.6.2",
"@hcengineering/tracker": "^0.6.1",
"@hcengineering/tracker-assets": "^0.6.0",
"@hcengineering/tracker-resources": "^0.6.0",
"@hcengineering/prod": "^1.0.1",
"@hcengineering/text-editor-resources": "^0.6.0",
"@hcengineering/devmodel": "^0.6.0",
"@hcengineering/devmodel-resources": "^0.6.0",
"@hcengineering/front": "^0.6.0",
"svelte-loader": "^3.1.9"
}
}
-5
View File
@@ -1,5 +0,0 @@
module.exports = {
plugins: [
require('autoprefixer')
]
}
-5
View File
@@ -1,5 +0,0 @@
{
"ACCOUNTS_URL":"/account",
"UPLOAD_URL":"/files",
"MODEL_VERSION": null
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

-5
View File
@@ -1,5 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
<circle fill="#FFFFFF" cx="8" cy="8" r="8"/>
<path fill="#C8C8C8" d="M8,0C3.6,0,0,3.6,0,8s3.6,8,8,8s8-3.6,8-8S12.4,0,8,0z M8,15.5c-4.1,0-7.5-3.4-7.5-7.5S3.9,0.5,8,0.5 s7.5,3.4,7.5,7.5S12.1,15.5,8,15.5z"/>
<path d="M5,13.2V3.5h4.4c0.4,0,0.9,0.1,1.2,0.2c0.4,0.1,0.7,0.4,0.9,0.6s0.4,0.6,0.6,1c0.1,0.4,0.2,0.8,0.2,1.2 c0,0.5-0.1,0.9-0.2,1.2s-0.3,0.7-0.6,1s-0.6,0.5-0.9,0.6S9.8,9.5,9.4,9.5H6.8v3.7H5z M6.8,7.9h2.4c0.4,0,0.6-0.1,0.8-0.3 s0.3-0.5,0.3-0.8V6.2c0-0.4-0.1-0.6-0.3-0.8S9.5,5.1,9.2,5.1H6.8V7.9z"/>
</svg>

Before

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 961 B

-20
View File
@@ -1,20 +0,0 @@
<!doctype html>
<html>
<head>
<meta charset="utf8">
<meta name="viewport" content="width=device-width">
<title>Tracker</title>
<link rel="shortcut icon" type="image/x-icon" href="favicon.ico">
<link rel="icon" type="image/svg+xml" sizes="any" href="favicon.svg">
<link rel="icon" type="image/png" sizes="16x16" href="favicon_16.png">
<link rel="icon" type="image/png" sizes="32x32" href="favicon_32.png">
<link rel="icon" type="image/png" sizes="192x192" href="favicon_192.png">
</head>
<body style="margin: 0; overflow: hidden;">
</body>
</html>
-31
View File
@@ -1,31 +0,0 @@
//
// Copyright © 2020, 2021 Anticrm Platform Contributors.
// Copyright © 2021 Hardcore Engineering, Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { createApp } from '@hcengineering/ui'
import { configurePlatform } from './platform'
import { configurePlatformDev, configurePlatformDevServer } from './platform-dev'
configurePlatform().then(() => {
if (process.env.CLIENT_TYPE === 'dev') {
configurePlatformDev()
}
if (process.env.CLIENT_TYPE === 'dev-server' || process.env.CLIENT_TYPE === 'dev-production') {
configurePlatformDevServer()
}
createApp(document.body)
})
-22
View File
@@ -1,22 +0,0 @@
//
// Copyright © 2020, 2021 Anticrm Platform Contributors.
// Copyright © 2021 Hardcore Engineering, Inc.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { createApp } from '@hcengineering/ui'
import { configurePlatform } from './platform'
configurePlatform().then(() => {
createApp(document.body)
})
-30
View File
@@ -1,30 +0,0 @@
//
// Copyright © 2020 Anticrm Platform Contributors.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { addLocation } from '@hcengineering/platform'
import login from '@hcengineering/login'
import { setMetadata } from '@hcengineering/platform'
import devmodel, { devModelId } from '@hcengineering/devmodel'
import client from '@hcengineering/client'
export function configurePlatformDevServer() {
// Set devmodel to hook client to be able to present all activity
enableDevModel()
}
function enableDevModel() {
setMetadata(client.metadata.ClientHook, devmodel.hook.Hook)
addLocation(devModelId, () => import(/* webpackChunkName: "devmodel" */ '@hcengineering/devmodel-resources'))
}
-108
View File
@@ -1,108 +0,0 @@
//
// Copyright © 2020 Anticrm Platform Contributors.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
import { addLocation } from '@hcengineering/platform'
import login, { loginId } from '@hcengineering/login'
import workbench, { workbenchId } from '@hcengineering/workbench'
import uiPlugin from '@hcengineering/ui'
import { viewId } from '@hcengineering/view'
import { taskId } from '@hcengineering/task'
import contact, { contactId } from '@hcengineering/contact'
import { chunterId } from '@hcengineering/chunter'
import { activityId } from '@hcengineering/activity'
import { settingId } from '@hcengineering/setting'
import telegram, { telegramId } from '@hcengineering/telegram'
import { attachmentId } from '@hcengineering/attachment'
import client, { clientId } from '@hcengineering/client'
import gmail, { gmailId } from '@hcengineering/gmail'
import { imageCropperId } from '@hcengineering/image-cropper'
import { templatesId } from '@hcengineering/templates'
import { notificationId } from '@hcengineering/notification'
import { calendarId } from '@hcengineering/calendar'
import { trackerId } from '@hcengineering/tracker'
import '@hcengineering/login-assets'
import '@hcengineering/task-assets'
import '@hcengineering/view-assets'
import '@hcengineering/chunter-assets'
import '@hcengineering/attachment-assets'
import '@hcengineering/contact-assets'
import '@hcengineering/activity-assets'
import '@hcengineering/setting-assets'
import '@hcengineering/telegram-assets'
import '@hcengineering/gmail-assets'
import '@hcengineering/workbench-assets'
import '@hcengineering/templates-assets'
import '@hcengineering/notification-assets'
import '@hcengineering/preference-assets'
import '@hcengineering/tracker-assets'
import presentation, { presentationId } from '@hcengineering/presentation'
import { coreId } from '@hcengineering/core'
import { textEditorId } from '@hcengineering/text-editor'
import { setMetadata } from '@hcengineering/platform'
export async function configurePlatform() {
const config = await (await fetch('/config.json')).json()
console.log('loading configuration', config)
setMetadata(login.metadata.AccountsUrl, config.ACCOUNTS_URL)
if (config.MODEL_VERSION != null) {
console.log('Minimal Model version requirement', config.MODEL_VERSION)
setMetadata(presentation.metadata.RequiredVersion, config.MODEL_VERSION)
}
setMetadata(telegram.metadata.TelegramURL, process.env.TELEGRAM_URL ?? 'http://localhost:8086')
setMetadata(telegram.metadata.BotUrl, process.TELEGRAM_BOT_URL ?? 'http://localhost:4020')
setMetadata(gmail.metadata.GmailURL, process.env.GMAIL_URL ?? 'http://localhost:8087')
setMetadata(uiPlugin.metadata.DefaultApplication, workbench.component.WorkbenchApp)
setMetadata(workbench.metadata.ExcludedApplications, [contact.app.Contacts])
setMetadata(
uiPlugin.metadata.Routes,
new Map([
[workbenchId, workbench.component.WorkbenchApp],
[loginId, login.component.LoginApp]
])
)
addLocation(coreId, async () => ({ default: async () => ({}) }))
addLocation(presentationId, async () => ({ default: async () => ({}) }))
addLocation(clientId, () => import(/* webpackChunkName: "client" */ '@hcengineering/client-resources'))
addLocation(loginId, () => import(/* webpackChunkName: "login" */ '@hcengineering/login-resources'))
addLocation(workbenchId, () => import(/* webpackChunkName: "workbench" */ '@hcengineering/workbench-resources'))
addLocation(viewId, () => import(/* webpackChunkName: "view" */ '@hcengineering/view-resources'))
addLocation(taskId, () => import(/* webpackChunkName: "task" */ '@hcengineering/task-resources'))
addLocation(contactId, () => import(/* webpackChunkName: "contact" */ '@hcengineering/contact-resources'))
addLocation(chunterId, () => import(/* webpackChunkName: "chunter" */ '@hcengineering/chunter-resources'))
addLocation(activityId, () => import(/*webpackChunkName: "activity" */ '@hcengineering/activity-resources'))
addLocation(settingId, () => import(/* webpackChunkName: "setting" */ '@hcengineering/setting-resources'))
addLocation(telegramId, () => import(/* webpackChunkName: "telegram" */ '@hcengineering/telegram-resources'))
addLocation(attachmentId, () => import(/* webpackChunkName: "attachment" */ '@hcengineering/attachment-resources'))
addLocation(gmailId, () => import(/* webpackChunkName: "gmail" */ '@hcengineering/gmail-resources'))
addLocation(imageCropperId, () => import(/* webpackChunkName: "image-cropper" */ '@hcengineering/image-cropper-resources'))
addLocation(templatesId, () => import(/* webpackChunkName: "templates" */ '@hcengineering/templates-resources'))
addLocation(notificationId, () => import(/* webpackChunkName: "notification" */ '@hcengineering/notification-resources'))
addLocation(calendarId, () => import(/* webpackChunkName: "calendar" */ '@hcengineering/calendar-resources'))
addLocation(trackerId, () => import(/* webpackChunkName: "tracker" */ '@hcengineering/tracker-resources'))
addLocation(textEditorId, () => import(/* webpackChunkName: "text-editor" */ '@hcengineering/text-editor-resources'))
setMetadata(uiPlugin.metadata.PlatformTitle, 'Tracker')
setMetadata(workbench.metadata.PlatformTitle, 'Tracker')
setMetadata(client.metadata.FilterModel, 'ui')
}
-16
View File
@@ -1,16 +0,0 @@
{
"compilerOptions": {
"outDir": "./dist/",
"module": "esnext",
"target": "es2016",
"allowJs": true,
"sourceMap": true,
"moduleResolution": "node",
"skipLibCheck": true,
"allowSyntheticDefaultImports": true,
"lib": [
"es2016",
"dom"
]
}
}
-36
View File
@@ -1,36 +0,0 @@
//
// Copyright © 2020 Anticrm Platform Contributors.
//
// Licensed under the Eclipse Public License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License. You may
// obtain a copy of the License at https://www.eclipse.org/legal/epl-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONSe OF ANY KIND, either express or implied.
//
// See the License for the specific language governing permissions and
// limitations under the License.
//
const path = require('path')
const prodModule = require('@hcengineering/prod/webpack.config')
module.exports = {
...prodModule,
output: {
path: __dirname + '/dist',
filename: '[name].[contenthash].js',
chunkFilename: '[name].[contenthash].js',
publicPath: '/'
},
devServer: {
...prodModule.devServer,
static: {
directory: path.resolve(__dirname, "public"),
publicPath: "/",
serveIndex: true,
watch: true,
}
}
}
+2 -2
View File
@@ -16,7 +16,7 @@
* path segment in the "$schema" field for all your Rush config files. This will ensure * path segment in the "$schema" field for all your Rush config files. This will ensure
* correct error-underlining and tab-completion for editors such as VS Code. * correct error-underlining and tab-completion for editors such as VS Code.
*/ */
"rushVersion": "5.140.1", "rushVersion": "5.148.0",
/** /**
* The next field selects which package manager should be installed and determines its version. * The next field selects which package manager should be installed and determines its version.
@@ -26,7 +26,7 @@
* Specify one of: "pnpmVersion", "npmVersion", or "yarnVersion". See the Rush documentation * Specify one of: "pnpmVersion", "npmVersion", or "yarnVersion". See the Rush documentation
* for details about these alternatives. * for details about these alternatives.
*/ */
"pnpmVersion": "8.15.9", "pnpmVersion": "9.15.3",
// "npmVersion": "4.5.0", // "npmVersion": "4.5.0",
// "yarnVersion": "1.9.4", // "yarnVersion": "1.9.4",
+1 -9
View File
@@ -1,15 +1,7 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
EXPOSE 3078 EXPOSE 3078
+1 -10
View File
@@ -1,14 +1,5 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
RUN npm install -g pnpm RUN npm install -g pnpm
+1 -10
View File
@@ -1,14 +1,5 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
COPY assets/avatar.png ./ COPY assets/avatar.png ./
@@ -1,14 +1,5 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
+1 -9
View File
@@ -1,15 +1,7 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
EXPOSE 8095 EXPOSE 8095
+1 -11
View File
@@ -1,17 +1,7 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
COPY bundle/bundle.js.map ./ COPY bundle/bundle.js.map ./
+1 -10
View File
@@ -1,15 +1,6 @@
FROM hardcoreeng/base:v20250113a
FROM node:20
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
EXPOSE 8087 EXPOSE 8087
+1 -10
View File
@@ -1,15 +1,6 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
+1 -17
View File
@@ -1,22 +1,6 @@
FROM node:20 FROM hardcoreeng/print-base:v20250113a
# We don't need the standalone Chromium
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
# Set executable path for puppeteer
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
# Install Chromium and fonts
# https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md?plain=1#L397
RUN apt-get update && \
apt-get install -y gnupg wget dumb-init && \
apt-get install -y fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 && \
apt-get install -y chromium-common/stable chromium/stable --no-install-recommends && \
apt-get clean
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
CMD [ "dumb-init", "node", "bundle.js" ] CMD [ "dumb-init", "node", "bundle.js" ]
+1 -18
View File
@@ -1,22 +1,5 @@
FROM node:20 AS runtime FROM hardcoreeng/rekoni-base:v20250113a
RUN apt-get update
RUN apt-get install -y \
coreutils \
antiword \
poppler-utils \
html2text \
unrtf
ENV NODE_ENV=production
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose sharp@v0.30.2 pdfjs-dist@v2.12.313 --unsafe-perm
RUN apt-get update
RUN apt-get install -y libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
EXPOSE 4004 EXPOSE 4004
+1 -11
View File
@@ -1,15 +1,5 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./
EXPOSE 8089 EXPOSE 8089
CMD [ "node", "bundle.js" ] CMD [ "node", "bundle.js" ]
+1 -12
View File
@@ -1,18 +1,7 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
RUN apt-get update && apt-get install dumb-init
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN npm install --ignore-scripts=false --verbose bufferutil utf-8-validate @mongodb-js/zstd snappy --unsafe-perm
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
CMD [ "dumb-init", "node", "bundle.js" ] CMD [ "dumb-init", "node", "bundle.js" ]
@@ -1,14 +1,6 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
EXPOSE 4020 EXPOSE 4020
+1 -9
View File
@@ -1,15 +1,7 @@
FROM node:20 FROM hardcoreeng/base:v20250113a
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN apt-get update
RUN apt-get install libjemalloc2
RUN apt-get clean
ENV LD_PRELOAD=libjemalloc.so.2
ENV MALLOC_CONF=dirty_decay_ms:1000,narenas:2,background_thread:true
COPY bundle/bundle.js ./ COPY bundle/bundle.js ./
EXPOSE 8086 EXPOSE 8086