This commit is contained in:
bipproduction
2025-10-06 17:19:16 +08:00
parent 25923dcea4
commit 371feb4f05
2 changed files with 33 additions and 11 deletions

View File

@@ -173,7 +173,27 @@ function handleCompose(name?: string): void {
return; return;
} }
compose(name); if (!args.env) {
console.error("❌ Compose env (staging/prod) is required");
return;
}
if (args.env !== "staging" && args.env !== "prod") {
console.error("❌ Compose env (staging/prod) is required");
return;
}
if (!args.port) {
console.error("❌ Compose port is required");
return;
}
if(args.port.length !== 2) {
console.error("❌ Compose port must be 2 digits");
return;
}
compose(name, args.env, Number(args.port));
console.log(`✅ Compose file generated for ${name}`); console.log(`✅ Compose file generated for ${name}`);
} }

View File

@@ -78,7 +78,7 @@ networks:
` `
} }
const generate = (name: string) => { const generate = (name: string, env: "staging" | "prod", port: number) => {
return ` return `
#!/bin/bash #!/bin/bash
@@ -86,7 +86,9 @@ echo "Generating directory..."
mkdir -p data data/app data/postgres data/frpc data/ssh mkdir -p data data/app data/postgres data/frpc data/ssh
echo "Generating authorized_keys..." echo "Generating authorized_keys..."
touch data/ssh/authorized_keys cat << EOF > data/ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDfXPd7ab21qdKtKKdv2bLxIa9hEqq2oLLj7c3i/rN2f bip@bips-Air
EOF
echo "Generating frpc.toml..." echo "Generating frpc.toml..."
touch data/frpc/frpc.toml touch data/frpc/frpc.toml
@@ -102,31 +104,31 @@ transport.tls.enable = true
auth_token = "" auth_token = ""
[ssh-cld-dkr-staging-${name}.wibudev.com] [ssh-cld-dkr-${env}-${name}.wibudev.com]
type = tcp type = tcp
local_ip = ${name}-dev local_ip = ${name}-dev
local_port = 22 local_port = 22
remote_port = 5102 remote_port = 51${port}
[postgres-cld-dkr-staging-${name}.wibudev.com] [postgres-cld-dkr-${env}-${name}.wibudev.com]
type = tcp type = tcp
local_ip = ${name}-postgres local_ip = ${name}-postgres
local_port = 5432 local_port = 5432
remote_port = 5202 remote_port = 52${port}
[cld-dkr-staging-${name}.wibudev.com] [cld-dkr-${env}-${name}.wibudev.com]
type = http type = http
local_ip = ${name}-prod local_ip = ${name}-prod
local_port = 3000 local_port = 3000
custom_domains = "cld-dkr-staging-${name}.wibudev.com" custom_domains = "cld-dkr-${env}-${name}.wibudev.com"
EOF EOF
` `
} }
async function compose(name: string) { async function compose(name: string, env: "staging" | "prod", port: number) {
const composeFile = text(name); const composeFile = text(name);
await fs.writeFile(`./compose.yml`, composeFile); await fs.writeFile(`./compose.yml`, composeFile);
Bun.spawnSync(["bash", "-c", generate(name)]); Bun.spawnSync(["bash", "-c", generate(name, env, port)]);
console.log("✅ Compose file generated"); console.log("✅ Compose file generated");
} }