这是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
答案 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: {}