Skip to content

Commit a10caaa

Browse files
committed
feat(new-tool): Docker Run command(s) to Kubernetes manifests
Fix CorentinTh#883
1 parent 377d6ec commit a10caaa

File tree

6 files changed

+172
-14
lines changed

6 files changed

+172
-14
lines changed

components.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ declare module '@vue/runtime-core' {
7070
DeviceInformation: typeof import('./src/tools/device-information/device-information.vue')['default']
7171
DiffViewer: typeof import('./src/tools/json-diff/diff-viewer/diff-viewer.vue')['default']
7272
DockerRunToDockerComposeConverter: typeof import('./src/tools/docker-run-to-docker-compose-converter/docker-run-to-docker-compose-converter.vue')['default']
73+
DockerRunToKubernetes: typeof import('./src/tools/docker-run-to-kubernetes/docker-run-to-kubernetes.vue')['default']
7374
DynamicValues: typeof import('./src/tools/benchmark-builder/dynamic-values.vue')['default']
7475
Editor: typeof import('./src/tools/html-wysiwyg-editor/editor/editor.vue')['default']
7576
EmojiCard: typeof import('./src/tools/emoji-picker/emoji-card.vue')['default']

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@
5050
"bcryptjs": "^2.4.3",
5151
"change-case": "^4.1.2",
5252
"colord": "^2.9.3",
53+
"composerize": "^1.6.6",
5354
"composerize-ts": "^0.6.2",
5455
"country-code-lookup": "^0.1.0",
5556
"cron-validator": "^1.3.1",
5657
"cronstrue": "^2.26.0",
5758
"crypto-js": "^4.1.1",
5859
"date-fns": "^2.29.3",
60+
"docker2kube": "^0.0.13",
5961
"dompurify": "^3.0.6",
6062
"emojilib": "^3.0.10",
6163
"figue": "^1.2.0",

pnpm-lock.yaml

Lines changed: 105 additions & 14 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<script setup lang="ts">
2+
import { convert as docker2kube } from 'docker2kube';
3+
import composerize from 'composerize';
4+
import TextareaCopyable from '@/components/TextareaCopyable.vue';
5+
6+
const dockerRuns = ref(
7+
'docker run -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always nginx',
8+
);
9+
10+
const conversionResult = computed(() => {
11+
try {
12+
return { yaml: docker2kube(composerize(dockerRuns.value.trim())), errors: [] };
13+
}
14+
catch (e: any) {
15+
return { yaml: '#see error messages', errors: e.toString().split('\n') };
16+
}
17+
});
18+
19+
const kuebYaml = computed(() => conversionResult.value.yaml);
20+
const errors = computed(() => conversionResult.value.errors);
21+
</script>
22+
23+
<template>
24+
<div>
25+
<c-input-text
26+
v-model:value="dockerRuns"
27+
label="Your docker run command(s):"
28+
style="font-family: monospace"
29+
multiline
30+
raw-text
31+
monospace
32+
placeholder="Your docker run command(s) to convert..."
33+
rows="4"
34+
/>
35+
36+
<n-divider />
37+
38+
<TextareaCopyable :value="kuebYaml" language="yaml" />
39+
40+
<div v-if="errors.length > 0">
41+
<n-alert title="The following errors occured" type="error" mt-5>
42+
<ul>
43+
<li v-for="(message, index) of errors" :key="index">
44+
{{ message }}
45+
</li>
46+
</ul>
47+
</n-alert>
48+
</div>
49+
</div>
50+
</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 run to kubernetes',
6+
path: '/docker-run-to-kubernetes',
7+
description: 'Docker run command(s) to Kubernetes manifests',
8+
keywords: ['docker', 'run', 'convert', 'kubernetes'],
9+
component: () => import('./docker-run-to-kubernetes.vue'),
10+
icon: BrandDocker,
11+
createdAt: new Date('2024-02-18'),
12+
});

0 commit comments

Comments
 (0)