Ondrej Slinták
Ondrej Slinták

Reputation: 31970

Is it possible to mount folder from container to host machine?

As an example, I have a simple Node.js / Typescript application defined as follows:

Dockerfile

FROM node:6.2

RUN npm install --global [email protected]

COPY package.json /app/package.json

WORKDIR /app

RUN npm install

COPY typings.json /app/typings.json

RUN typings install

Node packages and typings are preinstalled to image. node_modules and typings folders are by default present only in running container.

docker-compose.yml

node-app:
    ...
    volumes:
        - .:/app
        - /app/node_modules
        - /app/typings

I mount current folder from host to container, which creates volumes from existing folders from /app. Those are mounted back to container so the application can work with them. The problem is that I'd like to see typings folder on host system as a read-only folder (because some IDEs can show you type hints that can be found in this folder). From what I've tested, those folders (node_modules and typings) are created on host machine after I run the container, but they are always empty. Is it possible to somehow see their contents (read-only preferably) from container volumes only if the container is running?

Upvotes: 2

Views: 706

Answers (1)

dnephin
dnephin

Reputation: 28170

You can't make a host directory read-only from Compose. Compose orchestrates containers, not the host system.

If you want to share directories with the host, create them on the host first and mount them as bind volumes (like you've done with .:/app)

Upvotes: 2

Related Questions