为什么入口点设置为' bin / true'在docker-compose.yml中

时间:2017-08-30 10:19:39

标签: docker docker-compose

这是MEAN.js中的docker-compose.yml文件。任何人都可以解释为什么entrypoint被设置为/bin/true的网络数据和数据库数据?这有必要吗?如果我删除会发生什么?非常感谢。

version: '2'
services:
  web:
    restart: always
    build: .
    container_name: meanjs
    ports:
     - "3000:3000"
     - "5858:5858"
     - "8080:8080"
     - "35729:35729"
    environment:
     - NODE_ENV=development
     - DB_1_PORT_27017_TCP_ADDR=db
    depends_on:
     - db
    volumes_from:
     - web-data
  web-data:
    build: .
    entrypoint: /bin/true
    volumes:
     - ./:/opt/mean.js
     - /opt/mean.js/node_modules
     - /opt/mean.js/public
     - /opt/mean.js/uploads
  db:
    image: mongo:3.2
    restart: always
    ports:
     - "27017:27017"
    volumes_from:
      - db-data
  db-data:
    image: mongo:3.2
    volumes:
      - /data/db
      - /var/lib/mongodb
      - /var/log/mongodb
    entrypoint: /bin/true

1 个答案:

答案 0 :(得分:3)

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

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

  db-data:
    image: mongo:3.2
    volumes:
      - /data/db
      - /var/lib/mongodb
      - /var/log/mongodb
    entrypoint: /bin/true

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

      - /data/db
      - /var/lib/mongodb
      - /var/log/mongodb

然后mongo使用volumes_from将数据存储在此容器中

  db:
    image: mongo:3.2
    restart: always
    ports:
     - "27017:27017"
    volumes_from:
      - db-data
Compose 3.X中不推荐使用

volumes_from,不应使用它。相反,您应该使用匿名卷的命名。

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

匿名卷

version: '3.3'
....
  db:
    image: mongo:3.2
    restart: always
    ports:
     - "27017:27017"
    volumes:
      - /data/db
      - /var/lib/mongodb
      - /var/log/mongodb

命名卷

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: {}