为什么 docker-compose.yml 中的入口点设置为“bin/true”

Pag*_*und 5 docker docker-compose

这是docker-compose.ymlMEAN.js 中的文件。任何人都可以解释为什么将 web-data 和 db-dataentrypoint设置为?/bin/true有这个必要吗?如果我删除它会发生什么?非常感谢。

版本:'2'
服务:
  网址:
    重新启动:始终
    建造: 。
    容器名称:meanjs
    端口:
     - “3000:3000”
     - “5858:5858”
     - “8080:8080”
     - “35729:35729”
    环境:
     - NODE_ENV=开发
     - DB_1_PORT_27017_TCP_ADDR=db
    依赖于取决于:
     - D b
    卷_来自:
     - 网络数据
  网络数据:
    建造: 。
    入口点:/bin/true
    卷:
     - ./:/opt/mean.js
     - /opt/mean.js/node_modules
     - /opt/mean.js/public
     - /opt/mean.js/uploads
  D b:
    图片:蒙戈:3.2
    重新启动:始终
    端口:
     - “27017:27017”
    卷_来自:
      - 数据库数据
  数据库数据:
    图片:蒙戈:3.2
    卷:
      - /数据/数据库
      - /var/lib/mongodb
      - /var/log/mongodb
    入口点:/bin/true

Tar*_*ani 4

这是 Docker-compose 的旧版本。这样做的原因是启动一个容器,该容器创建卷然后退出。

所以下面启动一个容器并存在

  db-data:
    image: mongo:3.2
    volumes:
      - /data/db
      - /var/lib/mongodb
      - /var/log/mongodb
    entrypoint: /bin/true
Run Code Online (Sandbox Code Playgroud)

在该容器内创建这些卷路径。

      - /data/db
      - /var/lib/mongodb
      - /var/log/mongodb
Run Code Online (Sandbox Code Playgroud)

然后mongo用来volumes_from在这个容器中存储数据

  db:
    image: mongo:3.2
    restart: always
    ports:
     - "27017:27017"
    volumes_from:
      - db-data
Run Code Online (Sandbox Code Playgroud)

volumes_fromCompose 3.X 中并未弃用,也不应使用。相反,您应该使用命名或匿名卷。

因此,撰写内容将更改为如下所示

匿名卷

version: '3.3'
....
  db:
    image: mongo:3.2
    restart: always
    ports:
     - "27017:27017"
    volumes:
      - /data/db
      - /var/lib/mongodb
      - /var/log/mongodb
Run Code Online (Sandbox Code Playgroud)

命名卷

version: '3.3'
....
  db:
    image: mongo:3.2
    restart: always
    ports:
     - "27017:27017"
    volumes:
      - mongodata:/data/db
      - mongodata:/var/lib/mongodb
      - mongodata:/var/log/mongodb
volumes:
  mongodata: {}
Run Code Online (Sandbox Code Playgroud)