2016-07-13 7 views
2

Als Beispiel habe ich eine einfache Node.js/Maschinenschrift-Anwendung wie folgt definiert:Ist es möglich, einen Ordner vom Container zum Host-Rechner zu kopieren?

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 Pakete und Typisierungen werden dem Bild vorinstalliert. node_modules und typings Ordner sind standardmäßig nur in laufenden Container vorhanden.

Docker-compose.yml

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

I aktuelle Ordner vom Host zum Behälter montieren, die Volumina von vorhandenen Ordnern aus /app erstellt. Diese werden zurück in den Container geladen, damit die Anwendung mit ihnen arbeiten kann. Das Problem ist, dass ich den Ordner typings auf dem Host-System als schreibgeschützten Ordner sehen möchte (weil einige IDEs Ihnen Typhinweise anzeigen können, die in diesem Ordner gefunden werden können). Von dem, was ich getestet habe, werden diese Ordner (node_modules und typings) auf Host-Computer erstellt, nachdem ich den Container ausgeführt habe, aber sie sind immer leer. Ist es möglich, den Inhalt (vorzugsweise nur Lesezugriff) von Container-Volumes nur dann zu sehen, wenn der Container gerade ausgeführt wird?

Antwort

2

Sie können ein Host-Verzeichnis nicht schreibgeschützt von Compose erstellen. Compose orchestriert Container, nicht das Host-System.

Wenn Sie Verzeichnisse mit dem Host teilen, erstellen sie auf dem Host erste und montieren sie als Bindevolumen (wie Sie mit .:/app getan haben)