MCPcopy
hub / github.com/composerize/composerize

github.com/composerize/composerize @v1.7.6 sqlite

repository ↗ · DeepWiki ↗ · release v1.7.6 ↗
63 symbols 154 edges 51 files 0 documented · 0%
README

composerize

Build Status npm Follow @mark_larah ShareVB on GitHub

http://composerize.com - Turns docker run commands into compose.yaml files and even merge with existing compose.yaml!

Looking for the reverse : http://decomposerize.com / Decomposerize

Want to convert from Docker compose file formats : http://composeverter.com / Composeverter

Demo

CLI

composerize can be run in the cli.

npm install composerize -g to install, and run as such:

$ composerize docker run -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock:ro --restart always --log-opt max-size=1g nginx

See composerize --help for more options.

Docker image

A docker image of composerize, decomposerize and composeverter websites is available here: https://github.com/Oaklight/composerize-minimal/blob/master/README_en.md (thanks to @Oaklight)

How to use with node.js

Make sure to install the composerize package in your project by running:

npm install composerize

With the following code, you can easily integrate Composerize into your Node.js project and generate Docker Compose configurations from Docker run commands.

const composerize = require('composerize');

const dockerRunCommand = 'docker run -d -p 8080:80 --name my-web-app nginx:latest';

// Convert the Docker run command to a Docker Compose configuration
const composeConfig = composerize(dockerRunCommand);

console.log(composeConfig);

You can also merge docker run command(s) with an existing Docker Compose file content :

const composerize = require('composerize');

const dockerRunCommand = 'docker run -d -p 8080:80 --name my-web-app nginx:latest';

// An existing Docker Compose configuration as a string
const existingComposeConfig = `
version: '3'
services:
  existing-service:
    image: my-existing-image:latest
    ports:
      - '8000:80'
`;

// Convert the Docker run command to a Docker Compose configuration and merge with provided docker compose
const composeConfig = composerize(dockerRunCommand, existingComposeConfig);

console.log(composeConfig);

You can also choose which version of Docker compose V2, you target : 2.x, 3.x or Common Specification by specifying a third parameter composeVersion on convertDockerRunToCompose : - 'v2x' - 'v3x' - 'latest'

const composerize = require('composerize');

const dockerRunCommand = 'docker run -d -p 8080:80 --name my-web-app nginx:latest';

// Convert the Docker run command to a Docker Compose configuration for 2.x
const composeConfig = composerize(dockerRunCommand, null, 'v2x');

console.log(composeConfig);

You can also choose indentation level by specifying a fourth parameter indent on convertDockerRunToCompose : - 'v2x' - 'v3x' - 'latest'

const composerize = require('composerize');

const dockerRunCommand = 'docker run -d -p 8080:80 --name my-web-app nginx:latest';

// Convert the Docker run command to a Docker Compose configuration for 2.x
const composeConfig = composerize(dockerRunCommand, null, 'latest', 2);

console.log(composeConfig);

Contributing

  • Clone a fork of the repo and install the project dependencies by running yarn
  • Make your changes, and build the project by running make build
  • Test your changes with make test

Maintainers

Core symbols most depended-on inside this repo

getMapping
called by 85
packages/composerize/src/mappings.js
formatPath
called by 8
packages/composerize/cli-merge.js
isPlainObject
called by 6
packages/composerize/cli-merge.js
updateConversion
called by 4
packages/composerize-website/src/Main.js
normalizeForCompare
called by 3
packages/composerize/cli-merge.js
canKeepBoth
called by 3
packages/composerize/cli-merge.js
fromEntries
called by 3
packages/composerize/src/logic.js
stripQuotes
called by 3
packages/composerize/src/logic.js

Shape

Function 37
Method 18
Class 8

Languages

TypeScript100%

Modules by API surface

packages/composerize/cli-merge.js19 symbols
packages/composerize-website/src/Main.js9 symbols
packages/composerize-website/src/components/Copy.js7 symbols
packages/composerize/src/logic.js6 symbols
packages/composerize-website/src/components/Results.js6 symbols
packages/composerize/src/index.js5 symbols
packages/composerize-website/src/components/TextInput.js4 symbols
packages/composerize-website/src/components/LinedTextInput.js2 symbols
packages/composerize/src/mappings.js1 symbols
packages/composerize/cli.js1 symbols
packages/composerize/__tests__/cli-merge.test.js1 symbols
packages/composerize-website/src/registerServiceWorker.js1 symbols

Used by 1 indexed graphs manifest dependencies, hub-wide

Dependencies from manifests, versioned

@babel/cli7.x · 1×
@babel/core7.x · 1×
@babel/eslint-parser7.x · 1×
@babel/plugin-proposal-private-property-in-object7.x · 1×
@babel/plugin-transform-nullish-coalescing-operator7.x · 1×
@babel/preset-env7.x · 1×
@babel/preset-flow7.x · 1×
@babel/preset-react7.x · 1×
@rollup/plugin-babel6.x · 1×
@rollup/plugin-commonjs28.x · 1×
@rollup/plugin-json6.0.1 · 1×
@rollup/plugin-node-resolve15.x · 1×

For agents

$ claude mcp add composerize \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact