Git Product home page Git Product logo

ctk-hq / ctk Goto Github PK

View Code? Open in Web Editor NEW
279.0 9.0 18.0 1.79 MB

Visual composer for container based workloads

Home Page: https://ctk.dev

License: GNU Affero General Public License v3.0

Makefile 0.74% Dockerfile 0.56% Shell 0.25% Python 10.22% JavaScript 0.42% TypeScript 86.68% HTML 0.18% CSS 0.94%
docker docker-compose kubernetes containers ecs python react no-code composer visualization aws openshift

ctk's Introduction

Container ToolKit

Visually generate docker compose & kubernetes manifests.

Alt text

Local setup and development

On a Mac/Linux/Windows you need Docker, Docker Compose installed. Optionally GCC to run make commands for convenience, or just run the commands from the Makefile by hand.

To get the tool working locally, just run:

make up
make local_server_init
make dev_server
cd services/frontend && npm i && npm run start

Server

make up
make local_server_init
make dev_server

... this command will bring up the backend, the database, sync migrations,

Docs

ctk's People

Contributors

corpulent avatar itssamuelrowe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ctk's Issues

Service objects with same name

Description:
When creating service objects with the same name, they're visible on the GUI but not in the compose file. Creating multiple service objects with the same name shouldn't be possible via the GUI. When adding a new object from the same image appending a "1", "2", ... suffix should be considered.

Steps to reproduce:
Add multiple service objects from same image

Screenshots:
image

Empty environment variables create invalid compose file

Description:
If you add environment variables with blank input, it creates an invalid compose file filing "!!null '':" to the environment section. To fix this delete blank fields in "environment" tab.

Steps to reproduce:

  1. Create a new service object
  2. Edit service settings
  3. Click on "environment" tab
  4. Click on add with blank values
  5. Close the service object

Screenshots:
image

Devices.

'devices' not importing in any version of compose.

Feature Request: Expose ports

I poked around for a minute, and couldn't find a way to create port mappings between the host and container, or specify the host networking option. Please consider adding this, so I can expose ports to access applications running in containers!

Edit compose files live

It's nice to be able to import am existing compose file, but it's not a good UX to upload a file somewhere and provide an import URL.

A much better approach would be to just be able to live to edit the compose files to simplify importing via copy/paste.

Make visual connections more obvious.

It's confusing that the green needs to be attached to the purple.

  • Maybe when dragging from the green then only show the yellow bubble and make the yellow a bit bigger.
  • When dragging from the green show an aura around other nodes unto which an arrow can be dropped. This means endpoint surrounds the node and is not anchored to a single point like it is now.

Dark mode!

Because you know someone will ask for it sooner or later... Discord like colors would be nice. And of course, a toggle for those that do like the current theme.

Feature request: support additional capabilities

Make it so we can add additional capabilities. It would look like this in a docker-compose.yml file:

version: "3"

services:
  supercoolservice:
    image: node:latest
    ports:
      - "80:80/tcp"
    environment:
      TZ: 'America/Chicago'
    cap_add:         # THIS
      - NET_ADMIN    # THIS
    restart: unless-stopped

Enhancement: Offsetting new containers

When creating new containers, it would be helpful to offset new blocks in the center view. I was confused at first that the block was getting overridden upon creating the new container until I realized that they were getting stacked on top of each other.

Better handling of multiple commands.

When bulk adding commands it would be great if you parsed them to show up in the more traditional docker-compose style with each on on a separate line instead of a long string as the formatting makes it very hard to read

Feature request: Presets/templates

This is more than likely a 'further down the road' feature request.

I think it would be nice to add some type of preset/template system to adding new containers. My real use case would include:

  environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
    labels:
      - 'traefik.enable=true'
      - 'traefik.backend=awesomeContainer'
      - 'traefik.docker.network=proxy'
      - 'traefik.frontend.rule=Host:awesomeContainer.${DOMAIN}'
      - 'traefik.port=${AWESOMECONTAINER_PORT}'
      - 'traefik.frontend.entryPoints=https'

I have to do this for every container of mine that I want to access outside of my network (which is 95% of mine. It got so repetitive that I made a snippet in VS Code just to keep from copy/pasting.

If you do a 'user account' system at some point, this would be a good thing to tie in to an account.

import existing compose file

I already have my compose files written and I'd like to be able to import them and visualize them. Having a way to import the existing code would be great

Line breaks on container titles fail sometimes

It seems that when a contianer name is too long. It will break the title into a new line, but it seems like it fails for some which ends up looking like this:
image

I'm guessing it's the use of underscore instead of dash in the name. But not 100% sure

Feature Request: dockerhub link

It would be nice if the non-custom containers would have a link to their dockerhub page; this way it would be easy to check out the available environment variables.
Something like below (sorry for my quick drawing skills :-))

image

Enhancement: Mobile support

The application is currently not optimized for mobile. It would be nice to have a response layout, so mobile work ist possible.

Visual network connections.

It would also be great to add a new connection point so you can visually connect different containers via networks.

Docker Swarm Support

It would be cool to add support for docker swarm mode :).
I am not very good with docker (still learning) and i realy like Composer.

Adding a image - its direct on top of the other

I would properly add a 10px top and 10px left margin when adding a new image, so its possible to see there is a image below it.

Better would ofcourse move them so they are never on top of each other at all, so you dont need to move them around.

Require a different method to set a specific Tag/Version

I suspect in most containers this isn't an issue, but take the openjdk as an example of the problem.
I want a specific container (12-oracle), but look how many there are...

ezgif com-video-to-gif

And I haven't got to the end of the 15's let alone all the 14's, 13's 12's etc...

Maybe one of these 2 options?

  1. allow manual entry (potentially prone to error)
  2. load all versions on edit and not by page

Feature Request: Networks

I have been poking around a little bit and do not see a way to add a network to containers. I like how you have the volumes set up so I personally think something like that would work well for a network as well.

Feature Request: User accounts

I would like to see user accounts for this program. I think it would benefit in a lot of ways including being able to edit setups and a couple of feature requests I have in mind. This would probably be something to do sooner rather than later so if you do decide to implement an account system, you wouldn't have to do a lot of rework coding in the future.

Feature Request: Labels

Traefik uses labels a lot when setting up containers. Being able to generate the labels here should be especially useful.

Enhancement: Cursor change on hover

Small and quick change:

.node[_ngcontent-cxv-c100]:hover {
  cursor: all-scroll;
}

This would change the cursor to the all scroll icon (arrows pointing in all directions) when hovering over one of the cards instead of keeping the default cursor. To me, it better represents that you can move the cards around.

A few "depends on" issues

  • Its not that UX that you need to add a green to yellow - it actually took me around a minute that the green needs to be attached to the yellow. Maybe when dragging from the green then only show the yellow bubble and make the yellow a bit bigger.
  • When removing a "depends on" attachment in the creator (remove the green line) it does not updates the schema, not even when pressing the schema refresh button.
  • Only allow 1 connection between two of the same nodes so you dont end up with
---
version: 3
 
services:
  php:
    image: php:latest
    depends_on:
      - nginx
      - nginx
      - nginx
 
  nginx:
    image: nginx:latest

External Image Configuration Support

It would be better to support specifying custom images manually when adding a container. For example, in the case of Windows container, Microsoft pushes mainstream images on their own registry, not to docker hub. But despite this, docker hub syndicates image information to mcr.microsoft.com.

Feature Request: Commonly used environment variables

When creating a new container, it would be nice if the commonly used environment variables were shown. Also the commonly used paths and such..

When people use the app, we could capture the used "options" (not the value itself, only the used variable) and could how often it is used.
Then, when a certain threshold of inputs is passed, you could suggest these if for example more then 80% of people use these variables.

Ex:
I add a mariadb container.
I get the suggestions to create environment variables for a user, user password, root password, default databasename, ...
But also a suggestion to create a volume or relative path to "/var/lib/mysql"

This speeds things up and helps us, so we don't forget something. (or at lease less likely to forget something)

Feature Request: "Shared" or reusable variables

I find that i am reusing a few things across a lot of templates

Examples

  • Volume paths (logging, base data path)
  • Standard variable values (ex: Time Zone, PGUID, PUID, etc.)
  • Root domain name

It would be really great if there was a way to define something like a set of global variables that could then be applied to templates when a compose file was generated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.