tailhook / vagga

Vagga is a containerization tool without daemons
http://vagga.readthedocs.org
MIT License
1.86k stars 96 forks source link

Moving containers out of project dir #477

Closed nlyubchich closed 6 years ago

nlyubchich commented 6 years ago

Is there a way not to store containers in project's directory, maybe somewhere at ~/.vagga?

Use case: My team uses Intellij IDEA-based IDE, that by default indexes all nested directories in project' dir including .vagga/.

If user forgot to exclude container folder from indexing, IDEA just hangs up (just in case hardware isn't old).

tailhook commented 6 years ago

Does storage-dir solve the problem?

Also, I would report it to Injellij too, because there is a whole lot of things in project directory that does not make sense to index. On the other side, .vagga dir does not contain anything special, just a bit more files than are usually present in project dir. There was a similar bug in cargo and it got fixed.

nlyubchich commented 6 years ago

Does storage-dir solve the problem?

AFAIK it creates symlinks to the target dir, so IDE still tries to index all the stuff inside it

On the other side, .vagga dir does not contain anything special, just a bit more files than are usually present in project dir

Doesn't container stores all the OS internals (/bin, /var etc.) in itself?

Also I suppose (didn't use them for a long time) that IDE-like text editors (atom, sublime) are also trying to index the .vagga/, so reporting this problems to all editors maintainers seems too hard to be, even without mention forward compatibility.

P.S. A little off-topic. I use Vagga for it's write system once, run anywhere ideology (git clone && vagga run ), but it doesn't fully correspond to reality: wanna use Vagga? Here's .vagga.yaml that enables all the nice stuff like mirror prioritizing and hard linking the same binaries in containers. also don't forget to exclude .vagga from indexing by your lovely text editor).

I know it's hard to develop and maintain such a complex system, but it's why webpack's now is the JS build system of choice.

nlyubchich commented 6 years ago

Oh, I found an existing issue with this problem #279. Sorry for duplicate, closing now

tailhook commented 6 years ago

Well, #279 not exactly for this problem.

Also I suppose (didn't use them for a long time) that IDE-like text editors (atom, sublime) are also trying to index the .vagga/

It's hard to fix bug in every software project in vagga itself. We are already fixing bugs in yarn, slowness in dpkg, caching in every other package managers, and so on.

And I haven't heard such problems with any other editor yet.

On the other hand, if you can't make symlink, you can't also:

  1. Look at the container contents in .vagga/container_name
  2. Point your IDE to the modules in .vagga/container_name/usr/lib/python3

(that is apart from technical problems, like, how is vagga supposed to find directory that belongs to this project, a using a text file instead of symlink?)

Another thing to consider:

If user forgot to exclude container folder from indexing, IDEA just hangs up

It's definitely a problem with IDEA's UI. If it indexes for a long time it's okay, but why it hangs up? Also most of the time node_modules in typical project are much larger (in number of files) than typical ubuntu container (without node_modules). So I think IDEA either indexes directories twice by following every symlink to a same container, or tries to read files that aren't files (i.e. pipes). This is just a guess, though.

P.S. A little off-topic. I use Vagga for it's write system once, run anywhere ideology (git clone && vagga run ), but it doesn't fully correspond to reality: wanna use Vagga? Here's .vagga.yaml that enables all the nice stuff like mirror prioritizing

Unfortunately, ubuntu can't choose good mirror by itself. Its default crashes too much. It's hard to fix without rewriting half of apt-get :(

and hard linking the same binaries in containers.

This is an expert feature. You don't need it to start. You need it when you have lots of large containers. It might be enabled by default in the future, thought.

also don't forget to exclude .vagga from indexing by your lovely text editor).

Do you file an issue into git to ignore your .idea and .vagga directories?

but it's why webpack's now is the JS build system of choice.

Not sure it's relevant, but webpack is not a good example of ease of configuration :)