作为一个例子,我有一个简单的Node.js / Typescript应用程序定义如下:
Dockerfile
FROM node:6.2
RUN npm install --global typings@1.3.1
COPY package.json /app/package.json
WORKDIR /app
RUN npm install
COPY typings.json /app/typings.json
RUN typings install
预先安装了节点包和打字图像。默认情况下,node_modules
和typings
文件夹仅存在于正在运行的容器中。
搬运工-compose.yml
node-app:
...
volumes:
- .:/app
- /app/node_modules
- /app/typings
我将当前文件夹从主机安装到容器,这会从/app
的现有文件夹创建卷。它们被安装回容器,因此应用程序可以使用它们。问题是我希望在主机系统上看到typings
文件夹作为只读文件夹(因为某些IDE可以显示可以在此文件夹中找到的类型提示)。根据我测试的内容,我运行容器后在主机上创建了这些文件夹(node_modules
和typings
),但它们始终为空。是否有可能只在容器运行时以某种方式从容器卷中看到它们的内容(最好只读)?
答案 0 :(得分:2)
您无法从Compose将主机目录设为只读目录。撰写编排容器,而不是主机系统。
如果要与主机共享目录,请先在主机上创建目录,然后将它们作为绑定卷挂载(就像您使用.:/app
完成的那样)