fix(agent): gère registered silencieusement + nettoie logs heartbeat; feat(seed): MariaDB pour WordPress/PrestaShop

This commit is contained in:
root
2026-06-12 19:05:14 +00:00
parent 6485019785
commit 47ca55adbb
2 changed files with 98 additions and 7 deletions
+5
View File
@@ -33,7 +33,9 @@ func sendMessage(msg WSMessage) error {
if mainConn == nil { if mainConn == nil {
return fmt.Errorf("not connected to server") return fmt.Errorf("not connected to server")
} }
if msg.Action != "heartbeat" {
log.Printf("sendMessage: sending %+v", msg) log.Printf("sendMessage: sending %+v", msg)
}
return mainConn.WriteJSON(msg) return mainConn.WriteJSON(msg)
} }
@@ -164,6 +166,9 @@ func handleMessage(conn *websocket.Conn, msg WSMessage, dataDir, nodeID string)
"action": "activated", "action": "activated",
"studentName": msg.StudentName, "studentName": msg.StudentName,
}) })
case "registered":
// Server acknowledged our register message; nothing to do.
return
case "activation_failed": case "activation_failed":
log.Printf("handleMessage: activation_failed received, error=%s", msg.Error) log.Printf("handleMessage: activation_failed received, error=%s", msg.Error)
notifyUI(map[string]interface{}{ notifyUI(map[string]interface{}{
+92 -6
View File
@@ -20,26 +20,112 @@ async function main() {
}); });
const templates = [ const templates = [
{ name: "WordPress latest vierge", type: "wordpress", dockerImage: "wordpress:latest" }, {
{ name: "WordPress 6.7 vierge", type: "wordpress", dockerImage: "wordpress:6.7" }, name: "WordPress latest vierge",
{ name: "WordPress 6.4 vierge", type: "wordpress", dockerImage: "wordpress:6.4" }, type: "wordpress",
{ name: "PrestaShop latest vierge", type: "prestashop", dockerImage: "prestashop/prestashop:latest" }, dockerImage: "wordpress:latest",
{ name: "PrestaShop 8.1 vierge", type: "prestashop", dockerImage: "prestashop/prestashop:8.1" }, dbImage: "mariadb:10.11",
dbName: "wordpress",
dbUser: "wordpress",
dbPassword: "wordpress",
dbRootPassword: "rootpassword",
},
{
name: "WordPress 6.7 vierge",
type: "wordpress",
dockerImage: "wordpress:6.7",
dbImage: "mariadb:10.11",
dbName: "wordpress",
dbUser: "wordpress",
dbPassword: "wordpress",
dbRootPassword: "rootpassword",
},
{
name: "WordPress 6.4 vierge",
type: "wordpress",
dockerImage: "wordpress:6.4",
dbImage: "mariadb:10.11",
dbName: "wordpress",
dbUser: "wordpress",
dbPassword: "wordpress",
dbRootPassword: "rootpassword",
},
{
name: "PrestaShop latest vierge",
type: "prestashop",
dockerImage: "prestashop/prestashop:latest",
dbImage: "mariadb:10.11",
dbName: "prestashop",
dbUser: "prestashop",
dbPassword: "prestashop",
dbRootPassword: "rootpassword",
},
{
name: "PrestaShop 8.1 vierge",
type: "prestashop",
dockerImage: "prestashop/prestashop:8.1",
dbImage: "mariadb:10.11",
dbName: "prestashop",
dbUser: "prestashop",
dbPassword: "prestashop",
dbRootPassword: "rootpassword",
},
]; ];
for (const t of templates) { for (const t of templates) {
const dbHost = "db";
const dbPort = "3306";
const composeConfig = `services: const composeConfig = `services:
db:
image: ${t.dbImage}
environment:
MYSQL_ROOT_PASSWORD: ${t.dbRootPassword}
MYSQL_DATABASE: ${t.dbName}
MYSQL_USER: ${t.dbUser}
MYSQL_PASSWORD: ${t.dbPassword}
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 5s
timeout: 5s
retries: 10
app: app:
image: ${t.dockerImage} image: ${t.dockerImage}
ports: ports:
- "127.0.0.1:{PORT}:80" - "127.0.0.1:{PORT}:80"
environment: environment:
WORDPRESS_DB_HOST: ${dbHost}:${dbPort}
WORDPRESS_DB_NAME: ${t.dbName}
WORDPRESS_DB_USER: ${t.dbUser}
WORDPRESS_DB_PASSWORD: ${t.dbPassword}
WORDPRESS_DB_PREFIX: wp_
WORDPRESS_CONFIG_EXTRA: |
define('WP_HOME', 'http://localhost:{PORT}');
define('WP_SITEURL', 'http://localhost:{PORT}');
PS_DB_HOST: ${dbHost}:${dbPort}
PS_DB_NAME: ${t.dbName}
PS_DB_USER: ${t.dbUser}
PS_DB_PASSWORD: ${t.dbPassword}
PS_DB_PREFIX: ps_
PS_DOMAIN: localhost:{PORT}
PS_SHOP_NAME: ${t.name}
PS_INSTALL_AUTO: "0"
INSTANCE_ID: {INSTANCE_ID} INSTANCE_ID: {INSTANCE_ID}
depends_on:
db:
condition: service_healthy
volumes:
- app_data:/var/www/html
restart: unless-stopped restart: unless-stopped
volumes:
db_data:
app_data:
`; `;
await prisma.template.upsert({ await prisma.template.upsert({
where: { id: `${t.type}-${t.dockerImage.replace(/[:\/]/g, "-")}` }, where: { id: `${t.type}-${t.dockerImage.replace(/[:\/]/g, "-")}` },
update: {}, update: { composeConfig },
create: { create: {
id: `${t.type}-${t.dockerImage.replace(/[:\/]/g, "-")}`, id: `${t.type}-${t.dockerImage.replace(/[:\/]/g, "-")}`,
name: t.name, name: t.name,