agent v0.3.8: fix crash UI notifications, auto Podman machine DNS, WordPress 7.0.0 ready template
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
-- AlterTable
|
||||
ALTER TABLE "Template" ADD COLUMN "initScript" TEXT;
|
||||
@@ -91,6 +91,7 @@ model Template {
|
||||
type String
|
||||
dockerImage String
|
||||
composeConfig String
|
||||
initScript String?
|
||||
isPublic Boolean @default(true)
|
||||
establishmentId String?
|
||||
establishment Establishment? @relation(fields: [establishmentId], references: [id], onDelete: Cascade)
|
||||
|
||||
+66
-2
@@ -1,5 +1,7 @@
|
||||
import { PrismaClient } from "@prisma/client";
|
||||
import bcrypt from "bcryptjs";
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
|
||||
const prisma = new PrismaClient();
|
||||
|
||||
@@ -19,6 +21,11 @@ async function main() {
|
||||
},
|
||||
});
|
||||
|
||||
const wpReadyInitScript = fs.readFileSync(
|
||||
path.join(__dirname, "../templates/wordpress-ready/wp-init.sh"),
|
||||
"utf-8"
|
||||
);
|
||||
|
||||
const templates = [
|
||||
{
|
||||
name: "WordPress latest vierge",
|
||||
@@ -50,6 +57,30 @@ async function main() {
|
||||
dbPassword: "wordpress",
|
||||
dbRootPassword: "rootpassword",
|
||||
},
|
||||
{
|
||||
name: "WordPress latest prêt à l'emploi",
|
||||
type: "wordpress-ready",
|
||||
dockerImage: "wordpress:latest",
|
||||
dbImage: "mariadb:10.11",
|
||||
dbName: "wordpress",
|
||||
dbUser: "wordpress",
|
||||
dbPassword: "wordpress",
|
||||
dbRootPassword: "rootpassword",
|
||||
ready: true,
|
||||
initScript: wpReadyInitScript,
|
||||
},
|
||||
{
|
||||
name: "WordPress 7.0.0 prêt à l'emploi",
|
||||
type: "wordpress-ready",
|
||||
dockerImage: "wordpress:7.0.0-php8.3",
|
||||
dbImage: "mariadb:10.11",
|
||||
dbName: "wordpress",
|
||||
dbUser: "wordpress",
|
||||
dbPassword: "wordpress",
|
||||
dbRootPassword: "rootpassword",
|
||||
ready: true,
|
||||
initScript: wpReadyInitScript,
|
||||
},
|
||||
{
|
||||
name: "PrestaShop 9 vierge (edubox)",
|
||||
type: "prestashop",
|
||||
@@ -66,6 +97,7 @@ async function main() {
|
||||
const dbHost = "db";
|
||||
const dbPort = "3306";
|
||||
const isPrestaShop = t.type === "prestashop";
|
||||
const isWordPressReady = (t as any).ready === true;
|
||||
|
||||
const appEnv = isPrestaShop
|
||||
? ` DB_SERVER: ${dbHost}
|
||||
@@ -93,6 +125,12 @@ async function main() {
|
||||
WORDPRESS_DB_PREFIX: wp_
|
||||
# No hardcoded WP_HOME/WP_SITEURL so WordPress auto-detects from the Host header`;
|
||||
|
||||
const appDNS = isWordPressReady
|
||||
? ` dns:
|
||||
- 8.8.8.8
|
||||
- 1.1.1.1`
|
||||
: "";
|
||||
|
||||
const appVolumes = isPrestaShop
|
||||
? ` volumes:
|
||||
- app_data:/var/www/html`
|
||||
@@ -100,6 +138,28 @@ async function main() {
|
||||
- app_data:/var/www/html
|
||||
- {MU_PLUGINS_DIR}/edubox-public-url.php:/var/www/html/wp-content/mu-plugins/edubox-public-url.php:ro`;
|
||||
|
||||
const wpInitService = isWordPressReady
|
||||
? ` wp-init:
|
||||
image: wordpress:cli
|
||||
user: "0:0"
|
||||
environment:
|
||||
WORDPRESS_DB_HOST: ${dbHost}:${dbPort}
|
||||
WORDPRESS_DB_NAME: ${t.dbName}
|
||||
WORDPRESS_DB_USER: ${t.dbUser}
|
||||
WORDPRESS_DB_PASSWORD: ${t.dbPassword}
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
app:
|
||||
condition: service_started
|
||||
volumes:
|
||||
- app_data:/var/www/html
|
||||
- ./wp-init.sh:/wp-init.sh:ro
|
||||
restart: "no"
|
||||
entrypoint: ["/bin/sh", "/wp-init.sh"]
|
||||
`
|
||||
: "";
|
||||
|
||||
const composeConfig = `services:
|
||||
db:
|
||||
image: ${t.dbImage}
|
||||
@@ -123,24 +183,28 @@ async function main() {
|
||||
environment:
|
||||
${appEnv}
|
||||
INSTANCE_ID: {INSTANCE_ID}
|
||||
${appDNS}
|
||||
depends_on:
|
||||
db:
|
||||
condition: service_healthy
|
||||
${appVolumes}
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
${wpInitService}volumes:
|
||||
db_data:
|
||||
app_data:
|
||||
`;
|
||||
const initScript = isWordPressReady ? wpReadyInitScript : null;
|
||||
|
||||
await prisma.template.upsert({
|
||||
where: { id: `${t.type}-${t.dockerImage.replace(/[:\/]/g, "-")}` },
|
||||
update: { composeConfig },
|
||||
update: { composeConfig, initScript },
|
||||
create: {
|
||||
id: `${t.type}-${t.dockerImage.replace(/[:\/]/g, "-")}`,
|
||||
name: t.name,
|
||||
type: t.type,
|
||||
dockerImage: t.dockerImage,
|
||||
composeConfig,
|
||||
initScript,
|
||||
isPublic: true,
|
||||
createdBy: "system",
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user