Fix docker container

This commit is contained in:
Ajay
2022-05-04 01:46:41 -04:00
parent 5b177a3e53
commit 5f53859c94
4 changed files with 26 additions and 22 deletions

View File

@@ -1,13 +1,15 @@
FROM node:16-alpine as builder FROM node:16-alpine as builder
RUN apk add --no-cache --virtual .build-deps python make g++ RUN apk add --no-cache --virtual .build-deps python3 make g++
COPY package.json package-lock.json tsconfig.json entrypoint.sh ./ COPY package.json package-lock.json tsconfig.json entrypoint.sh ./
COPY src src COPY src src
RUN npm ci && npm run tsc RUN npm ci && npm run tsc
FROM node:16-alpine as app FROM node:16-alpine as app
WORKDIR /usr/src/app WORKDIR /usr/src/app
COPY --from=builder node_modules . RUN apk add git
COPY --from=builder dist ./dist COPY --from=builder ./node_modules ./node_modules
COPY --from=builder ./dist ./dist
COPY ./.git ./.git
COPY entrypoint.sh . COPY entrypoint.sh .
COPY databases/*.sql databases/ COPY databases/*.sql databases/
EXPOSE 8080 EXPOSE 8080

View File

@@ -4,9 +4,9 @@ echo 'Entrypoint script'
cd /usr/src/app cd /usr/src/app
# blank config, use defaults # blank config, use defaults
cp /etc/sponsorblock/config.json . || cat <<EOF > config.json cat <<EOF > config.json
{ {
} }
EOF EOF
node dist/index.js node dist/src/index.js

View File

@@ -9,8 +9,6 @@ const configFile = process.env.TEST_POSTGRES ? "ci.json"
: "config.json"; : "config.json";
export const config: SBSConfig = JSON.parse(fs.readFileSync(configFile).toString("utf8")); export const config: SBSConfig = JSON.parse(fs.readFileSync(configFile).toString("utf8"));
loadFromEnv(config);
migrate(config);
addDefaults(config, { addDefaults(config, {
port: 8080, port: 8080,
behindProxy: "X-Forwarded-For", behindProxy: "X-Forwarded-For",
@@ -74,7 +72,7 @@ addDefaults(config, {
maxRewardTimePerSegmentInSeconds: 600, maxRewardTimePerSegmentInSeconds: 600,
poiMinimumStartTime: 2, poiMinimumStartTime: 2,
postgres: { postgres: {
enabled: null, enabled: false,
user: "", user: "",
host: "", host: "",
password: "", password: "",
@@ -120,7 +118,7 @@ addDefaults(config, {
}, },
crons: null, crons: null,
redis: { redis: {
enabled: null, enabled: false,
socket: { socket: {
host: "", host: "",
port: 0 port: 0
@@ -128,6 +126,8 @@ addDefaults(config, {
disableOfflineQueue: true disableOfflineQueue: true
} }
}); });
loadFromEnv(config);
migrate(config);
// Add defaults // Add defaults
function addDefaults(config: SBSConfig, defaults: SBSConfig) { function addDefaults(config: SBSConfig, defaults: SBSConfig) {
@@ -153,25 +153,27 @@ function migrate(config: SBSConfig) {
config.disableOfflineQueue = !redisConfig.enable_offline_queue; config.disableOfflineQueue = !redisConfig.enable_offline_queue;
} }
if (redisConfig.socket.host && redisConfig.enabled === null) { if (redisConfig.socket?.host && redisConfig.enabled === undefined) {
redisConfig.enabled = true; redisConfig.enabled = true;
} }
} }
if (config.postgres && config.postgres.user && config.postgres.enabled === null) { if (config.postgres && config.postgres.user && config.postgres.enabled === undefined) {
config.postgres.enabled = true; config.postgres.enabled = true;
} }
} }
function loadFromEnv(config: SBSConfig, prefix = "") { function loadFromEnv(config: SBSConfig, prefix = "") {
for (const key in config) { for (const key in config) {
const fullKey = (prefix ? `${prefix}_` : "") + key;
if (typeof config[key] === "object") { if (typeof config[key] === "object") {
loadFromEnv(config[key], (prefix ? `${prefix}.` : "") + key); loadFromEnv(config[key], fullKey);
} else if (process.env[key]) { } else if (process.env[fullKey]) {
const value = process.env[key]; const value = process.env[fullKey];
if (isNumber(value)) { if (isNumber(value)) {
config[key] = parseInt(value, 10); config[key] = parseInt(value, 10);
} else if (isBoolean(value)) { } else if (value.toLowerCase() === "true" || value.toLowerCase() === "false") {
config[key] = value === "true"; config[key] = value === "true";
} else { } else {
config[key] = value; config[key] = value;

View File

@@ -16,13 +16,13 @@ interface RedisSB {
} }
let exportClient: RedisSB = { let exportClient: RedisSB = {
get: () => new Promise((resolve, reject) => reject()), get: () => new Promise((resolve) => resolve(null)),
set: () => new Promise((resolve, reject) => reject()), set: () => new Promise((resolve) => resolve(null)),
setEx: () => new Promise((resolve, reject) => reject()), setEx: () => new Promise((resolve) => resolve(null)),
del: () => new Promise((resolve, reject) => reject()), del: () => new Promise((resolve) => resolve(null)),
increment: () => new Promise((resolve, reject) => reject()), increment: () => new Promise((resolve) => resolve(null)),
sendCommand: () => new Promise((resolve, reject) => reject()), sendCommand: () => new Promise((resolve) => resolve(null)),
quit: () => new Promise((resolve, reject) => reject()), quit: () => new Promise((resolve) => resolve(null)),
}; };
if (config.redis?.enabled) { if (config.redis?.enabled) {