k8s-deploy-helper 1.3.0 → 1.4.0
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 +47 -8
- package/src/init/initProject.js +15 -5
package/package.json
CHANGED
|
@@ -1,33 +1,72 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
|
|
3
|
-
export function
|
|
4
|
-
|
|
3
|
+
export function generateDockerfiles() {
|
|
4
|
+
const hasServer = fs.existsSync('server');
|
|
5
|
+
const hasClient = fs.existsSync('client');
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
// Backend Dockerfile
|
|
8
|
+
if (hasServer && !fs.existsSync('Dockerfile.backend')) {
|
|
9
|
+
const backendDockerfile = `
|
|
7
10
|
FROM node:18-alpine
|
|
11
|
+
|
|
8
12
|
WORKDIR /app
|
|
13
|
+
|
|
9
14
|
COPY server/package*.json ./
|
|
10
15
|
RUN npm install
|
|
16
|
+
|
|
11
17
|
COPY server .
|
|
18
|
+
|
|
12
19
|
EXPOSE 5000
|
|
13
20
|
CMD ["npm", "start"]
|
|
14
21
|
`.trim();
|
|
15
22
|
|
|
16
|
-
|
|
17
|
-
|
|
23
|
+
fs.writeFileSync('Dockerfile.backend', backendDockerfile);
|
|
24
|
+
console.log('✅ Backend Dockerfile created (Dockerfile.backend)');
|
|
25
|
+
} else if (hasServer) {
|
|
26
|
+
console.log('ℹ️ Backend Dockerfile already exists. Skipping.');
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
// Frontend Dockerfile
|
|
30
|
+
if (hasClient && !fs.existsSync('Dockerfile.frontend')) {
|
|
31
|
+
const frontendDockerfile = `
|
|
32
|
+
FROM node:18-alpine AS build
|
|
33
|
+
|
|
34
|
+
WORKDIR /app
|
|
35
|
+
|
|
36
|
+
COPY client/package*.json ./
|
|
37
|
+
RUN npm install
|
|
38
|
+
|
|
39
|
+
COPY client .
|
|
40
|
+
RUN npm run build
|
|
41
|
+
|
|
42
|
+
FROM nginx:alpine
|
|
43
|
+
COPY --from=build /app/build /usr/share/nginx/html
|
|
44
|
+
|
|
45
|
+
EXPOSE 80
|
|
46
|
+
CMD ["nginx", "-g", "daemon off;"]
|
|
47
|
+
`.trim();
|
|
48
|
+
|
|
49
|
+
fs.writeFileSync('Dockerfile.frontend', frontendDockerfile);
|
|
50
|
+
console.log('✅ Frontend Dockerfile created (Dockerfile.frontend)');
|
|
51
|
+
} else if (hasClient) {
|
|
52
|
+
console.log('ℹ️ Frontend Dockerfile already exists. Skipping.');
|
|
53
|
+
}
|
|
18
54
|
}
|
|
19
55
|
|
|
20
56
|
export function generateK8sConfig() {
|
|
21
|
-
if (fs.existsSync('k8s.config.json'))
|
|
57
|
+
if (fs.existsSync('k8s.config.json')) {
|
|
58
|
+
console.log('ℹ️ k8s.config.json already exists. Skipping.');
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
22
61
|
|
|
23
62
|
const config = {
|
|
24
63
|
appName: 'my-app',
|
|
25
64
|
namespace: 'default',
|
|
26
65
|
docker: {
|
|
27
|
-
image: 'your-docker-username/my-app',
|
|
66
|
+
image: 'your-docker-username/my-app-backend',
|
|
28
67
|
tag: 'latest',
|
|
29
68
|
context: '.',
|
|
30
|
-
dockerfile: 'Dockerfile'
|
|
69
|
+
dockerfile: 'Dockerfile.backend'
|
|
31
70
|
},
|
|
32
71
|
kubernetes: {
|
|
33
72
|
replicas: 1,
|
package/src/init/initProject.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
|
-
import
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import { generateDockerfiles, generateK8sConfig } from './generateFiles.js';
|
|
2
3
|
|
|
3
4
|
export function initProject() {
|
|
4
|
-
console.log('🔧 Initializing project for Kubernetes deployment...\n');
|
|
5
|
+
console.log('\n🔧 Initializing project for Kubernetes deployment...\n');
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
const hasClient = fs.existsSync('client');
|
|
8
|
+
const hasServer = fs.existsSync('server');
|
|
9
|
+
|
|
10
|
+
if (!hasClient && !hasServer) {
|
|
11
|
+
console.error('❌ No client/ or server/ directory found.');
|
|
12
|
+
console.error('👉 Run this command from the project root.');
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
generateDockerfiles();
|
|
7
17
|
generateK8sConfig();
|
|
8
18
|
|
|
9
|
-
console.log('\n
|
|
10
|
-
console.log('👉
|
|
19
|
+
console.log('\n✅ Initialization completed successfully.');
|
|
20
|
+
console.log('👉 Review generated files before running deployment.\n');
|
|
11
21
|
}
|