簡體   English   中英

使Dockerfile VOLUME的行為類似於docker-compose卷

[英]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命令含義略有不同:

  1. 無法在Dockerfile中定義已裝入的卷
  2. 它僅用於指定容器間卷

所以在您的Dockerfile中, VOLUME ./:/app/ VOLUME /app/必須更改為VOLUME /app/ 您的docker-compose定義將告訴docker掛載本地目錄. 到容器中的/app


-v選項和docker-composevolumes標簽以相同的方式工作。 主機目錄安裝到容器目錄。 容器目錄中映像中存在的任何文件都將被主機目錄中的文件替換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM