docker-compose并使用已安装卷的本地映像

时间:2018-10-16 10:36:45

标签: docker docker-compose

我有一个使用Dockerfile创建的映像

FROM mhart/alpine-node:latest

WORKDIR /app
COPY package*.json ./
RUN npm install
COPY src /app

现在在docker-compose.yml中,我创建此图像

version: '3.7'
services:
  enginetonic:
    build:
      context: .
    image: enginetonic:compose

  mongodb:
    image: mongo:latest
    container_name: 'mongodb'
    ports:
      - 27017:27017
    restart: always


  monitor-service:
    image: enginetonic:compose
    container_name: monitorService
    command: nodemon monitor/monitor.js
    restart: on-failure

  #common services
  access-token-service:
    image: enginetonic:compose
    container_name: accessTokenService
    command: nodemon service/access-token-service/access-token-service.js
    restart: on-failure
    depends_on:
      - mongodb

在要绑定的所有文档中:装载或使用我发现的卷,它与其他docker命令一起使用

示例

$ docker service create \
     --mount 'type=volume,src=<VOLUME-NAME>,dst=<CONTAINER-PATH>,volume-driver=local,volume-opt=type=nfs,volume-opt=device=<nfs-server>:<nfs-path>,"volume-opt=o=addr=<nfs-address>,vers=4,soft,timeo=180,bg,tcp,rw"'
    --name myservice \
    <IMAGE>

如何使用卷,以便每个服务覆盖整个/src/目录,以便我以nodemon开头的每个服务都反映整个源代码中更改的文件?

1 个答案:

答案 0 :(得分:1)

我会像这样在docker-compose.yml中进行体积映射:

volumes:
  - ./app/monitor:/path/to/your/workdir/monitor

并调整命令以使用文件监控器(例如nodemon)在文件发生任何更改时重新启动服务:

command: ["nodemon", "/path/to/your/workdir/monitor/monitor.js"]

您可能需要根据需要调整nodemon参数或配置。

PS。您无需标记/推送图像。只需直接在docker-compose#build

中构建它