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