Lucas
Lucas

Reputation: 853

Mounting development docker container directory on host

I am using docker for software development, as I can bundle all my dependencies (compilers, libraries, ...) within a nice contained environment, without polluting the host.

The way I usually do things (which I guess is pretty common): I have a directory on the host that only contains the source code, which is mounted into a development container using a docker volume, where my software gets built and executed. Thanks to volumes being in sync, any changes in the source is reflected within the container.

Here is the pitfall: when using a code editor, software dependencies are considered broken as they are not accessible from the host. Therefore linting, etc... does not work.

I would like to be able to mount, let's say /usr/local/include from the container onto the host so that, be correctly configuring my editor, I can fix all the warnings.

I guess docker volume is not the solution here, because it would override the contained file system...

Also, I'm using Windows (no choice here) therefore my flow is:

Windows > Samba > Linux Host > Docker > Container

and I'd prefer not switching IDE (VS Code).

Any ideas? Thank you!

Upvotes: 4

Views: 2875

Answers (2)

Cody
Cody

Reputation: 608

I use https://forums.docker.com/t/how-to-mount-docker-volume-along-with-subfolders-on-the-host/120482/13 to expose python libraries from inside the container to a folder locally so that neovim can read the libraries for autocomplete/jump to definitions.

Upvotes: 1

Reactgular
Reactgular

Reputation: 54811

You basically wish you could reverse mount a volume from the container to the host. This is unfortunately not possible with Docker, and there are variants of this question here: How to mount a directory in docker container to host

You're stuck with copying the files from the container to the host. As far as the host path matching /usr/local/include or having to use a different folder depends upon your setup.

The easiest solution which would not require changing the docker image would be to use docker cp to copy the files.

Otherwise, you could automate this by having the image on entry (after installing all dependencies) copy the files to /tmp/include and mount a host volume to that location.

Upvotes: 6

Related Questions