作为 docker 新手,还没有能够实践用到顶级卷的地方.大致了解了下可能是用于各容器之间共享目录的.不知道对不对.
根据这个 docker-compose.yml 示例中,有两个命名卷 database 和 chevereto_images ,而最后三行是顶级卷吧?不太懂有什么用...
作为处女座我的希望这 2 个目录放在 docker-compose.yml 的当前目录下.并且 chevereto_images 改为 images.于是改为 ./database
和 ./images
,然后把最后一行 chevereto_images
也改为 images
了..
按理说那目前就不是命名卷,而是挂载目录了..那最后那三行还有意义吗?会不会有什么影响?
version: '3'
services:
db:
image: mariadb
volumes:
- database:/var/lib/mysql:rw
restart: always
networks:
- private
environment:
MYSQL_ROOT_PASSWORD: chevereto_root
MYSQL_DATABASE: chevereto
MYSQL_USER: chevereto
MYSQL_PASSWORD: chevereto
chevereto:
depends_on:
- db
image: nmtan/chevereto
restart: always
networks:
- private
environment:
CHEVERETO_DB_HOST: db
CHEVERETO_DB_USERNAME: chevereto
CHEVERETO_DB_PASSWORD: chevereto
CHEVERETO_DB_NAME: chevereto
CHEVERETO_DB_PREFIX: chv_
volumes:
- chevereto_images:/var/www/html/images:rw
ports:
- 8080:80
networks:
private:
volumes:
database:
chevereto_images:
1
dcalsky 2020-02-13 00:45:21 +08:00 1
1. 有两个命名卷 database 和 chevereto_images ,而最后三行是顶级卷吧: 是,主要用处是 Service 之间共享文件。
2. 作为处女座我的希望这 2 个目录放在 docker-compose.yml 的当前目录下: 如果是 Top-level Volume 可以用 driver 和 driver_opt,但是不推荐。所以推荐你取消这两个 Top-level Volumes,改为 Service Volume,这样可以存在本地。 3. 并且 chevereto_images 改为 images.于是改为 ./database 和 ./images ,然后把最后一行 chevereto_images 也改为 images: 可以。 4. 查文档和自己动手操作一下都能找到答案,而 V2EX 一小时都不会回答你。 ```yaml version: '3' services: db: image: mariadb volumes: -./database:/var/lib/mysql:rw restart: always networks: - private environment: MYSQL_ROOT_PASSWORD: chevereto_root MYSQL_DATABASE: chevereto MYSQL_USER: chevereto MYSQL_PASSWORD: chevereto chevereto: depends_on: - db image: nmtan/chevereto restart: always networks: - private environment: CHEVERETO_DB_HOST: db CHEVERETO_DB_USERNAME: chevereto CHEVERETO_DB_PASSWORD: chevereto CHEVERETO_DB_NAME: chevereto CHEVERETO_DB_PREFIX: chv_ volumes: -./images:/var/www/html/images:rw ports: - 8080:80 networks: private: ``` |