diff options
author | 2023-03-27 17:31:13 +0200 | |
---|---|---|
committer | 2023-03-27 17:31:13 +0200 | |
commit | ffb99579bac0035c304cd4a66db63a97cc01fe17 (patch) | |
tree | a123fabc2abae9783f0dae2302b126eaec4c1324 /src/tools/docker-run-to-docker-compose-converter/docker-run-to-docker-compose-converter.vue | |
parent | f512d092275844c30a474ac9f8fc3de7617b9cd9 (diff) | |
download | it-tools-ffb99579bac0035c304cd4a66db63a97cc01fe17.tar.gz it-tools-ffb99579bac0035c304cd4a66db63a97cc01fe17.tar.zst it-tools-ffb99579bac0035c304cd4a66db63a97cc01fe17.zip |
feat(new-tool): add a docker run to docker compose converter (#291)
* Integrate composerize (https://github.com/magicmark/composerize) into it-tools
* Fix Prettier errors
* Fix Prettier errors
* Fix code according to suggestions
* Added syntax highlighting to TextareaCopyable component, some ui adjustments in docker-run-to-docker-compose-converter.vue
Diffstat (limited to 'src/tools/docker-run-to-docker-compose-converter/docker-run-to-docker-compose-converter.vue')
-rw-r--r-- | src/tools/docker-run-to-docker-compose-converter/docker-run-to-docker-compose-converter.vue | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/tools/docker-run-to-docker-compose-converter/docker-run-to-docker-compose-converter.vue b/src/tools/docker-run-to-docker-compose-converter/docker-run-to-docker-compose-converter.vue new file mode 100644 index 0000000..583bd58 --- /dev/null +++ b/src/tools/docker-run-to-docker-compose-converter/docker-run-to-docker-compose-converter.vue @@ -0,0 +1,39 @@ +<template> + <div> + <n-form-item label="Your docker run command:" :show-feedback="false"> + <n-input + v-model:value="dockerRun" + style="font-family: monospace" + type="textarea" + placeholder="Your docker run command to convert..." + rows="3" + /> + </n-form-item> + + <n-divider /> + + <textarea-copyable :value="dockerCompose" language="yaml" /> + <br /> + <br /> + <n-space justify="center"> + <n-button :disabled="dockerCompose === ''" secondary @click="download"> Download docker-compose.yml </n-button> + </n-space> + </div> +</template> + +<script setup lang="ts"> +import { computed, ref } from 'vue'; +import { withDefaultOnError } from '@/utils/defaults'; +import { useDownloadFileFromBase64 } from '@/composable/downloadBase64'; +import { textToBase64 } from '@/utils/base64'; +import TextareaCopyable from '@/components/TextareaCopyable.vue'; + +import composerize from 'composerize'; + +const dockerRun = ref( + 'docker run -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always --log-opt max-size=1g nginx', +); +const dockerCompose = computed(() => withDefaultOnError(() => composerize(dockerRun.value), '')); +const dockerComposeBase64 = computed(() => 'data:application/yaml;base64,' + textToBase64(dockerCompose.value)); +const { download } = useDownloadFileFromBase64({ source: dockerComposeBase64, filename: 'docker-compose.yml' }); +</script> |