指定docker卷不更新使用docker组成

我试图有一个服务来构build我的客户端,然后使用一个命名卷将其共享到服务器。 每次我做一个docker-compose up --build我想让客户端build立并更新指定的卷clientapp: 我怎么做?

泊坞窗,compose.yml

 version: '2' volumes: clientapp: services: database: image: mongo:3.4 volumes: - /data/db - /var/lib/mongodb - /var/log/mongodb client: build: ./client volumes: - clientapp:/usr/src/app/client server: build: ./server ports: - "3000:3000" environment: - DB_1_PORT_27017_TCP_ADDR=database volumes: - clientapp:/usr/src/app/client depends_on: - client - database 

客户端Dockerfile

 FROM node:6 ENV NPM_CONFIG_LOGLEVEL warn RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app RUN npm install COPY . /usr/src/app # builds my application into /client CMD ["npm", "build"] 

根据定义,卷是docker不会触及的持久目录,而不是在空的时候执行初始创build。 如果这是你的代码,它可能不应该是一个音量。

有了这个说法,你可以:

  1. docker-compose down -v删除运行之间的卷,它将被重新创build并在下一个docker-compose up -d上初始化docker-compose up -d

  2. 更改您的容器启动脚本,将映像中其他目录中的文件复制到启动时的卷位置。

  3. 摆脱音量,并直接在图像中包含代码。

我会推荐后者。