muvon / yoda Goto Github PK
View Code? Open in Web Editor NEWSimple tool to dockerize and manage deployment of your project
Home Page: https://yoda.muvon.io
Simple tool to dockerize and manage deployment of your project
Home Page: https://yoda.muvon.io
Dont start docker build command if that image already was built.
Now there is only one YML template for container. But what if in development you need to add volumes of source code and dont need it in production?
When you press enter after deploy its rerender only since Elapsed block. Rerender whole screen is better
BASH version check executes in yoda main file now. Its better to move it into Makefile.
Add possibility to pass regexp values to --host parameter on yoda deploy command. It will allow to deploy on bunch of servers by custom pattern.
Its checking docker images -q [image_id]
on each iteration of images to build.
Simplify this iteration to get built image once and rebuild only needed without unnecesery checks
Echo errors from executing scripts to stderr instead of stdout.
Sometimes you have do magic thing to prepare node. Add prepare command that allow to override it and do things on first node init
Now there is env.sh only for all environments. Think about customization it with using extra environment files like env.dev.sh and env.production.sh and so on. Extra files should extend common env.sh file
Now if version does not match you get big bad error message. Make it better to understand for humans.
When run yoda and [container...] it creates container structure but dont add it to Envfile.
Add or remove container build row in Buildfile on adding or removing container from project.
Sometimes you need to rebuild Dockerfile without using any cache, not like --rebuild. think about adding this parameter or change rebuild behaviour
Add --force flag to deploy and start command
Make it possible to use shortcut for image name in container.yml. We can take real image name from Buildfile to siimplify
To rollback now you have to know previous commit that were deployed. Need to make it simplier.
Environment can have namespace followed after dot, for example: production.master to allow make different nodes with different bunch of services running on it.
Use compose file 2.1 and docker-compose 1.9+
Now if we have all containers described in flow of Startfile we also do docker-compose up for rest of containers, so it runs all containers at once with message like 'up to date'.
When you do first deploy on host its good idea to automate yoda installation on node.
Write formula for brew package manager
Lock file before run custom script on build command.
Before installation check if docker and docker-compose have supported versions
Sometimes on deploy error "wait: pid 15757 is not a child of this shell" occurs
When you init one project with custom Yoda version and Yoda is updated. You could have conflicts.
So its good idea to do it more clever. So when you run Yoda inside current project you just check project version and switch yoda git path to this tag and fork again with right version.
When you deploy same node with different projects same time it can be a problem while each project uses own yoda version. It needs to change that behavior using installation of specified version with yoda and use this bin file on each deploy
Its better to make hostname immutable like container_name in container.yml. Because it has all parts HOSTNAME prefix and container name
Make README file more informative. Describe all features.
Sometimes its buggy when using deploy command. It displays with broken new lines without refreshing old ones. Its better to replace escaping characters with tput command to fix cursor position and refresh screen on change.
PATH=\$PATH:~/.yoda ENV=$env GIT_BRANCH=$git_branch REVISION=$rev $custom_args yoda start
Its possible to simplify this call when you switching to selected revision or branch GIT_BRANCH and REVISION could be found automatic using .yodarc definition
When you deploy and deploy fails you dont know where is to find log. Add hint with log path to CLI command output
For example:
in container.yml
image: some_image_name_that_is_in_my_Byildfile
in another file container.dev.yml
image: some_another_image_name_that_also_in_my_Byildfile
Output from yoda compose command will be like this
image: ${COMPOSE_PROJECT_NAME}/some_image_name_that_is_in_my_Byildfile:${REVISION}
image: some_another_image_name_that_also_in_my_Byildfile
Redefining can be done by passing multiple compose files for each docker-compose commandс
And this solution has some cool feature like deep-merge for incoming compose files:
compose.first.yml
environment:
FOO: foo
BAR: bar
compose.second.yml
environment:
BAR: baz
docker-compose -f compose.first.yml -f compose.second.yml ...
will use this file
environment:
FOO: foo
BAR: baz
In start.sh we using ${ENV%%.*}. Its unclear because there is no information in documentation. Think about it and make it more clear that we can have environment and subenv for changing services and number of its services
We should validate flow in Startfile before anything else cuz we can use undefined containers names there and affect starting
Add possibility to update version of Yoda in existing project displaying backwards compatibility as changes plain list on command execution.
Make --force argument passed to build command rebuild image not depended on if it exists on not.
Display status of deploy process in realtime in deploy command.
Add colors for deploy statuses displayed in terminal
You can start all services using yoda start. But you cant stop it and remove all services that was created for current project.
Yoda builds now every image on node also if this image will not be used. Build only images that will be used on current node with selected containers to run as services.
When you create image inside project that inherti previous image created you can get bug when you cant build it cuz wrong sequence of building in that case
You can start one container using yoda start container.0 now. But its better way to start all types of containers for current environment just using its name. For example yoda start container that will start all extra containers with same type too.
When you init yoda in current project all files goes to docker folder and its hardcoded. Make it customizable and defaults to 'yoda'.
If you create custom script to wrap some command flow you will go into recursive call when calling original command inside it. Need to fix it.
While upgrading from 1.0 to 1.1 and if it needs container to be removed docker compose hangs on removing orphan container stage.
Sometimes you need control start / restart flow of container. For example, restart each one by one not once on deploy. Allow this possibility with configurable Startfile config
On compose stage comments starting with # replace with sequence and break syntax of docker-compose config
Describe each command flow of Yoda in details. For example what exactly happens when deploy command called.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.