This commit is contained in:
Rizky 2024-01-25 16:19:55 +07:00
parent 57b4bf9c24
commit 994ba5e608
4 changed files with 94 additions and 37 deletions

View File

@ -12,8 +12,11 @@ RUN apt-get install nodejs -yq
RUN npm i -g @parcel/watcher node-gyp-build-optional-packages node-gyp pnpm
RUN PATH="/usr/lib/node_modules/npm/bin:$PATH"
COPY . .
COPY dockerzip .
RUN unzip -o dockerzip
RUN bun install
COPY . .
RUN bun run build
EXPOSE 4550/tcp

BIN
dockerzip Normal file

Binary file not shown.

View File

@ -13,62 +13,63 @@ import { createId } from "@paralleldrive/cuid2";
import { prepareApiRoutes } from "./server/api/api-scan";
import { writeAsync } from "fs-jetpack";
import { dir } from "dir";
import "../docker-prep";
g.status = "init";
await writeAsync(
dir.path("app/web/timestamp.ts"),
`export const version = "${createId().substring(0, 7)}";`,
dir.path("app/web/timestamp.ts"),
`export const version = "${createId().substring(0, 7)}";`
);
if (!g.Y) {
g.Y = await import("yjs");
g.syncronize = (await import("y-pojo")).syncronize;
g.Y = await import("yjs");
g.syncronize = (await import("y-pojo")).syncronize;
await createLogger();
g.api = {};
g.mode = process.argv.includes("dev") ? "dev" : "prod";
g.datadir = g.mode == "prod" ? "../data" : "data";
g.port = parseInt(process.env.PORT || "4550");
await createLogger();
g.api = {};
g.mode = process.argv.includes("dev") ? "dev" : "prod";
g.datadir = g.mode == "prod" ? "../data" : "data";
g.port = parseInt(process.env.PORT || "4550");
g.log.info(g.mode === "dev" ? "DEVELOPMENT" : "PRODUCTION");
if (g.mode === "dev") {
await startDevWatcher();
}
g.log.info(g.mode === "dev" ? "DEVELOPMENT" : "PRODUCTION");
if (g.mode === "dev") {
await startDevWatcher();
}
/** init lmdb */
user.conf.init();
snapshot.init();
/** init lmdb */
user.conf.init();
snapshot.init();
}
const db = g.db;
if (!db) {
await preparePrisma();
await ensureNotRunning();
const db = g.db;
if (db) {
db.$connect()
.catch((e: any) => {
g.log.error(`[DB ERROR]\n${e.message}`);
})
.then(() => {
g.log.info("Database connected");
});
}
await preparePrisma();
await ensureNotRunning();
const db = g.db;
if (db) {
db.$connect()
.catch((e: any) => {
g.log.error(`[DB ERROR]\n${e.message}`);
})
.then(() => {
g.log.info("Database connected");
});
}
}
if (!g.apiPrepared) {
await initSrv();
await syncActionDefinition();
g.log.info("WS Action defined");
await prepareApiRoutes();
await prepareAPITypes();
g.log.info("API Prepared");
g.apiPrepared = true;
await initSrv();
await syncActionDefinition();
g.log.info("WS Action defined");
await prepareApiRoutes();
await prepareAPITypes();
g.log.info("API Prepared");
g.apiPrepared = true;
}
if (!g.parcel) {
await parcelBuild();
await parcelBuild();
}
const { createServer } = await import("./server/create");

53
pkgs/docker-prep.ts Normal file
View File

@ -0,0 +1,53 @@
import { $ } from "execa";
import fs from "fs";
import {
copyAsync,
dirAsync,
existsAsync,
removeAsync
} from "fs-jetpack";
import path from "path";
const dir = {
path(...allpath: any[]) {
return path.join(process.cwd(), ...allpath);
},
read(dirPath: string, baseDir?: string[]): Record<string, string> {
const result: Record<string, string> = {};
const contents = fs.readdirSync(dirPath);
for (const item of contents) {
const itemPath = path.join(dirPath, item);
const stats = fs.statSync(itemPath);
if (stats.isFile()) {
// const content = fs.readFileSync(itemPath, "utf-8");
result[[...(baseDir || []), item].join("/")] = "";
} else if (stats.isDirectory()) {
if (item !== "node_modules" && item !== ".git") {
const subdirResult = dir.read(itemPath, [...(baseDir || []), item]);
Object.assign(result, subdirResult);
}
}
}
return result;
},
};
if (!(await existsAsync(dir.path("_tmp_docker")))) {
for (const file of Object.keys(dir.read(dir.path``))) {
if (file.endsWith("package.json")) {
await dirAsync(dir.path("_tmp_docker", path.dirname(file)));
await copyAsync(dir.path(file), dir.path("_tmp_docker", file), {
overwrite: true,
});
}
}
await copyAsync(dir.path("bun.lockb"), dir.path("_tmp_docker", "bun.lockb"));
await $({ cwd: dir.path("_tmp_docker") })`zip -r ../docker .`;
await $`mv docker.zip dockerzip`;
await removeAsync(dir.path("_tmp_docker"));
}