Skip to content

Commit e473473

Browse files
committed
Merge branch 'feat/docker-compose-to-kubernetes' into chore/all-my-stuffs
# Conflicts: # components.d.ts # package.json # pnpm-lock.yaml # src/tools/index.ts
2 parents 8e37a86 + 690bb19 commit e473473

File tree

4 files changed

+81
-3
lines changed

4 files changed

+81
-3
lines changed

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
"@guyplusplus/turndown-plugin-gfm": "^1.0.7",
4343
"@huggingface/transformers": "3.0.0-alpha.14",
4444
"@date-fns/utc": "^1.2.0",
45+
"@guolao/vue-monaco-editor": "^1.5.1",
4546
"@it-tools/bip39": "^0.0.4",
4647
"@it-tools/oggen": "^1.3.0",
4748
"@regexper/render": "^1.0.0",
@@ -139,6 +140,7 @@
139140
"dompurify": "^3.0.6",
140141
"email-bounce-parser-browser": "^1.1",
141142
"date-holidays": "^3.23.12",
143+
"docker2kube": "^0.0.14",
142144
"dompurify": "^3.0.6",
143145
"duration-fns": "^3.0.2",
144146
"email-normalizer": "^1.0.0",
@@ -324,6 +326,4 @@
324326
"zx": "^7.2.1"
325327
},
326328
"packageManager": "[email protected]"
327-
}
328-
}
329-
}
329+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<script setup lang="ts">
2+
import { convert as docker2kube } from 'docker2kube';
3+
import TextareaCopyable from '@/components/TextareaCopyable.vue';
4+
5+
const dockerCompose = ref(
6+
`version: '3.3'
7+
services:
8+
nginx:
9+
ports:
10+
- '80:80'
11+
volumes:
12+
- '/var/run/docker.sock:/tmp/docker.sock:ro'
13+
restart: always
14+
image: nginx`,
15+
);
16+
17+
const conversionResult = computed(() => {
18+
try {
19+
return { kubeYaml: docker2kube(dockerCompose.value.trim()), errors: [] };
20+
}
21+
catch (e: any) {
22+
return { kubeYaml: '#see error messages', errors: e.toString().split('\n') };
23+
}
24+
});
25+
26+
const errors = computed(() => conversionResult.value.errors);
27+
const kubeYaml = computed(() => conversionResult.value.kubeYaml);
28+
29+
const MONACO_EDITOR_OPTIONS = {
30+
automaticLayout: true,
31+
formatOnType: true,
32+
formatOnPaste: true,
33+
};
34+
</script>
35+
36+
<template>
37+
<div>
38+
<c-label label="Paste your Docker Compose file content:">
39+
<div relative w-full>
40+
<c-monaco-editor
41+
v-model:value="dockerCompose"
42+
theme="vs-dark"
43+
language="yaml"
44+
height="250px"
45+
:options="MONACO_EDITOR_OPTIONS"
46+
/>
47+
</div>
48+
</c-label>
49+
50+
<div v-if="errors.length > 0">
51+
<n-alert title="The following errors occured" type="error" mt-5>
52+
<ul>
53+
<li v-for="(message, index) of errors" :key="index">
54+
{{ message }}
55+
</li>
56+
</ul>
57+
</n-alert>
58+
</div>
59+
60+
<n-divider />
61+
62+
<TextareaCopyable :value="kubeYaml" language="yaml" copy-placement="outside" />
63+
</div>
64+
</template>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import { BrandDocker } from '@vicons/tabler';
2+
import { defineTool } from '../tool';
3+
4+
export const tool = defineTool({
5+
name: 'Docker compose to kubernetes',
6+
path: '/docker-compose-to-kubernetes',
7+
description: 'Docker Compose to Kubernetes manifests',
8+
keywords: ['docker', 'compose', 'convert', 'kubernetes'],
9+
component: () => import('./docker-compose-to-kubernetes.vue'),
10+
icon: BrandDocker,
11+
createdAt: new Date('2024-02-18'),
12+
});

src/tools/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ import { tool as asciiTextDrawer } from './ascii-text-drawer';
6262
import { tool as daysCalculator } from './days-calculator';
6363
import { tool as dateDurationCalculator } from './date-duration-calculator';
6464
import { tool as macAddressConverter } from './mac-address-converter';
65+
import { tool as dockerComposeToKubernetesConverter } from './docker-compose-to-kubernetes';
6566
import { tool as textToUnicode } from './text-to-unicode';
6667
import { tool as certificateKeyParser } from './certificate-key-parser';
6768
import { tool as crcCalculator } from './crc-calculator';
@@ -343,6 +344,7 @@ export const toolsByCategory: ToolCategory[] = [
343344
chmodCalculator,
344345
dockerRunToDockerComposeConverter,
345346
dockerComposeToDockerRunConverter,
347+
dockerComposeToKubernetesConverter,
346348
xmlFormatter,
347349
xsltTester,
348350
yamlViewer,

0 commit comments

Comments
 (0)