[英]Node modules not found with Dockerfile and docker-compose due to bind mount
[英]Make Dockerfile VOLUME behave like docker-compose volumes
我正在嘗試設置Dockerfile
以將我的主機目錄掛載到指定的Dockerfile
容器目錄(因此代碼更改將立即反映)。 當我運行docker run -p 3000:3000 -d -v ~/Projects/test:/app test
,文件已經掛載,一切正常。 但是,一旦我關閉容器,文件更改不會保留在容器內,就像我從docker-compose
文件中運行volumes
。
這是我的Dockerfile:
FROM node:onbuild
EXPOSE 3000
RUN mkdir /app
VOLUME ./:/app/
WORKDIR /app/
RUN npm install -g nodemon
CMD nodemon server.js
這是一個有效的docker-compose.yml:
test:
build: ./
volumes:
- ./:/app/
working_dir: /app/
command: npm start
ports:
- "3000:3000"
Dockerfile中的VOLUME
命令含義略有不同:
所以在您的Dockerfile中, VOLUME ./:/app/
VOLUME /app/
必須更改為VOLUME /app/
。 您的docker-compose
定義將告訴docker掛載本地目錄.
到容器中的/app
。
-v
選項和docker-compose
的volumes
標簽以相同的方式工作。 主機目錄安裝到容器目錄。 容器目錄中映像中存在的任何文件都將被主機目錄中的文件替換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.