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;
}
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}`);
}

View File

@@ -78,7 +78,7 @@ networks:
`
}
const generate = (name: string) => {
const generate = (name: string, env: "staging" | "prod", port: number) => {
return `
#!/bin/bash
@@ -86,7 +86,9 @@ echo "Generating directory..."
mkdir -p data data/app data/postgres data/frpc data/ssh
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..."
touch data/frpc/frpc.toml
@@ -102,31 +104,31 @@ transport.tls.enable = true
auth_token = ""
[ssh-cld-dkr-staging-${name}.wibudev.com]
[ssh-cld-dkr-${env}-${name}.wibudev.com]
type = tcp
local_ip = ${name}-dev
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
local_ip = ${name}-postgres
local_port = 5432
remote_port = 5202
remote_port = 52${port}
[cld-dkr-staging-${name}.wibudev.com]
[cld-dkr-${env}-${name}.wibudev.com]
type = http
local_ip = ${name}-prod
local_port = 3000
custom_domains = "cld-dkr-staging-${name}.wibudev.com"
custom_domains = "cld-dkr-${env}-${name}.wibudev.com"
EOF
`
}
async function compose(name: string) {
async function compose(name: string, env: "staging" | "prod", port: number) {
const composeFile = text(name);
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");
}