81 lines
1.9 KiB
TypeScript
81 lines
1.9 KiB
TypeScript
import {
|
|
Output,
|
|
randomPassword,
|
|
randomString,
|
|
Services,
|
|
} from "~templates-utils";
|
|
import { Input } from "./meta";
|
|
|
|
export function generate(input: Input): Output {
|
|
const services: Services = [];
|
|
const appPassword = input.appPassword || randomPassword();
|
|
const databasePassword = randomPassword();
|
|
const encryptionKey = randomString(64);
|
|
|
|
services.push({
|
|
type: "app",
|
|
data: {
|
|
serviceName: input.databaseServiceName,
|
|
env: [`SURREAL_EXPERIMENTAL_GRAPHQL=true`].join("\n"),
|
|
source: {
|
|
type: "image",
|
|
image: input.databaseServiceImage,
|
|
},
|
|
deploy: {
|
|
command: [
|
|
"start",
|
|
"--log info",
|
|
"--user root",
|
|
`--pass ${databasePassword}`,
|
|
"--bind 0.0.0.0:8000",
|
|
"rocksdb:/mydata/mydatabase.db",
|
|
].join(" "),
|
|
},
|
|
mounts: [
|
|
{
|
|
type: "volume",
|
|
name: "surreal-data",
|
|
mountPath: "/mydata",
|
|
},
|
|
],
|
|
},
|
|
});
|
|
|
|
services.push({
|
|
type: "app",
|
|
data: {
|
|
serviceName: input.appServiceName,
|
|
env: [
|
|
`API_URL=https://$(PRIMARY_DOMAIN)`,
|
|
`INTERNAL_API_URL=http://localhost:5055`,
|
|
`OPEN_NOTEBOOK_ENCRYPTION_KEY=${encryptionKey}`,
|
|
`OPEN_NOTEBOOK_PASSWORD=${appPassword}`,
|
|
`SURREAL_URL=ws://$(PROJECT_NAME)_${input.databaseServiceName}:8000/rpc`,
|
|
`SURREAL_USER=root`,
|
|
`SURREAL_PASSWORD=${databasePassword}`,
|
|
`SURREAL_NAMESPACE=open_notebook`,
|
|
`SURREAL_DATABASE=open_notebook`,
|
|
].join("\n"),
|
|
source: {
|
|
type: "image",
|
|
image: input.appServiceImage,
|
|
},
|
|
domains: [
|
|
{
|
|
host: "$(EASYPANEL_DOMAIN)",
|
|
port: 8502,
|
|
},
|
|
],
|
|
mounts: [
|
|
{
|
|
type: "volume",
|
|
name: "notebook-data",
|
|
mountPath: "/app/data",
|
|
},
|
|
],
|
|
},
|
|
});
|
|
|
|
return { services };
|
|
}
|