k8s-deploy-helper 1.4.0 → 1.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/init/generateFiles.js +12 -15
- package/src/init/initProject.js +20 -7
- package/src/preflight/checkFiles.js +16 -6
package/package.json
CHANGED
|
@@ -1,42 +1,39 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
|
|
3
|
-
export function generateDockerfiles() {
|
|
4
|
-
const hasServer = fs.existsSync('server');
|
|
5
|
-
const hasClient = fs.existsSync('client');
|
|
6
|
-
|
|
3
|
+
export function generateDockerfiles({ frontendDir, backendDir }) {
|
|
7
4
|
// Backend Dockerfile
|
|
8
|
-
if (
|
|
5
|
+
if (backendDir && !fs.existsSync('Dockerfile.backend')) {
|
|
9
6
|
const backendDockerfile = `
|
|
10
7
|
FROM node:18-alpine
|
|
11
8
|
|
|
12
9
|
WORKDIR /app
|
|
13
10
|
|
|
14
|
-
COPY
|
|
11
|
+
COPY ${backendDir}/package*.json ./
|
|
15
12
|
RUN npm install
|
|
16
13
|
|
|
17
|
-
COPY
|
|
14
|
+
COPY ${backendDir} .
|
|
18
15
|
|
|
19
16
|
EXPOSE 5000
|
|
20
17
|
CMD ["npm", "start"]
|
|
21
18
|
`.trim();
|
|
22
19
|
|
|
23
20
|
fs.writeFileSync('Dockerfile.backend', backendDockerfile);
|
|
24
|
-
console.log(
|
|
25
|
-
} else if (
|
|
21
|
+
console.log(`✅ Backend Dockerfile created (Dockerfile.backend) using /${backendDir}`);
|
|
22
|
+
} else if (backendDir) {
|
|
26
23
|
console.log('ℹ️ Backend Dockerfile already exists. Skipping.');
|
|
27
24
|
}
|
|
28
25
|
|
|
29
26
|
// Frontend Dockerfile
|
|
30
|
-
if (
|
|
27
|
+
if (frontendDir && !fs.existsSync('Dockerfile.frontend')) {
|
|
31
28
|
const frontendDockerfile = `
|
|
32
29
|
FROM node:18-alpine AS build
|
|
33
30
|
|
|
34
31
|
WORKDIR /app
|
|
35
32
|
|
|
36
|
-
COPY
|
|
33
|
+
COPY ${frontendDir}/package*.json ./
|
|
37
34
|
RUN npm install
|
|
38
35
|
|
|
39
|
-
COPY
|
|
36
|
+
COPY ${frontendDir} .
|
|
40
37
|
RUN npm run build
|
|
41
38
|
|
|
42
39
|
FROM nginx:alpine
|
|
@@ -47,13 +44,13 @@ CMD ["nginx", "-g", "daemon off;"]
|
|
|
47
44
|
`.trim();
|
|
48
45
|
|
|
49
46
|
fs.writeFileSync('Dockerfile.frontend', frontendDockerfile);
|
|
50
|
-
console.log(
|
|
51
|
-
} else if (
|
|
47
|
+
console.log(`✅ Frontend Dockerfile created (Dockerfile.frontend) using /${frontendDir}`);
|
|
48
|
+
} else if (frontendDir) {
|
|
52
49
|
console.log('ℹ️ Frontend Dockerfile already exists. Skipping.');
|
|
53
50
|
}
|
|
54
51
|
}
|
|
55
52
|
|
|
56
|
-
export function generateK8sConfig() {
|
|
53
|
+
export function generateK8sConfig({ backendDir }) {
|
|
57
54
|
if (fs.existsSync('k8s.config.json')) {
|
|
58
55
|
console.log('ℹ️ k8s.config.json already exists. Skipping.');
|
|
59
56
|
return;
|
package/src/init/initProject.js
CHANGED
|
@@ -4,18 +4,31 @@ import { generateDockerfiles, generateK8sConfig } from './generateFiles.js';
|
|
|
4
4
|
export function initProject() {
|
|
5
5
|
console.log('\n🔧 Initializing project for Kubernetes deployment...\n');
|
|
6
6
|
|
|
7
|
-
const
|
|
8
|
-
const
|
|
7
|
+
const frontendDir = detectFrontendDir();
|
|
8
|
+
const backendDir = detectBackendDir();
|
|
9
9
|
|
|
10
|
-
if (!
|
|
11
|
-
console.error('❌ No
|
|
10
|
+
if (!frontendDir && !backendDir) {
|
|
11
|
+
console.error('❌ No frontend or backend directory detected.');
|
|
12
|
+
console.error('👉 Supported names: frontend, client, backend, server');
|
|
12
13
|
console.error('👉 Run this command from the project root.');
|
|
13
14
|
process.exit(1);
|
|
14
15
|
}
|
|
15
16
|
|
|
16
|
-
generateDockerfiles();
|
|
17
|
-
generateK8sConfig();
|
|
17
|
+
generateDockerfiles({ frontendDir, backendDir });
|
|
18
|
+
generateK8sConfig({ backendDir });
|
|
18
19
|
|
|
19
20
|
console.log('\n✅ Initialization completed successfully.');
|
|
20
|
-
console.log('👉 Review generated files before
|
|
21
|
+
console.log('👉 Review generated files before deploying.\n');
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function detectFrontendDir() {
|
|
25
|
+
if (fs.existsSync('frontend')) return 'frontend';
|
|
26
|
+
if (fs.existsSync('client')) return 'client';
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function detectBackendDir() {
|
|
31
|
+
if (fs.existsSync('backend')) return 'backend';
|
|
32
|
+
if (fs.existsSync('server')) return 'server';
|
|
33
|
+
return null;
|
|
21
34
|
}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
|
|
3
3
|
export function checkRequiredFiles() {
|
|
4
|
+
const dockerfileExists =
|
|
5
|
+
fs.existsSync('Dockerfile') ||
|
|
6
|
+
fs.existsSync('Dockerfile.backend');
|
|
7
|
+
|
|
8
|
+
const configExists = fs.existsSync('k8s.config.json');
|
|
9
|
+
|
|
4
10
|
const missing = [];
|
|
5
11
|
|
|
6
|
-
if (!
|
|
7
|
-
|
|
12
|
+
if (!dockerfileExists) {
|
|
13
|
+
missing.push('Dockerfile or Dockerfile.backend');
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
if (!configExists) {
|
|
17
|
+
missing.push('k8s.config.json');
|
|
18
|
+
}
|
|
8
19
|
|
|
9
|
-
if (missing.length) {
|
|
20
|
+
if (missing.length > 0) {
|
|
10
21
|
console.error('\n❌ Missing required files:');
|
|
11
|
-
missing.forEach(
|
|
12
|
-
|
|
13
|
-
console.error('\n👉 Run: k8s-deploy init');
|
|
22
|
+
missing.forEach(file => console.error(` - ${file}`));
|
|
23
|
+
console.error('\n👉 Run: k8s-deploy init\n');
|
|
14
24
|
process.exit(1);
|
|
15
25
|
}
|
|
16
26
|
}
|