【发布时间】:2016-07-02 22:21:32
【问题描述】:
docker-compose 文件https://docs.docker.com/compose/compose-file/#/volumes-volume-driver 显示了相对于 compose 文件挂载主机子目录的各种方法。
例如:
volumes:
# Just specify a path and let the Engine create a volume
- /var/lib/mysql
# Specify an absolute path mapping
- /opt/data:/var/lib/mysql
# Path on the host, relative to the Compose file
- ./cache:/tmp/cache
# User-relative path
- ~/configs:/etc/configs/:ro
# Named volume
- datavolume:/var/lib/mysql
是否可以在特定位置安装命名卷的子目录?例如,我尝试过以下类似的方法,但似乎不起作用。
# Named volume
- datavolume/sql_data:/var/lib/mysql
我假设我可以通过将数据卷安装到像 /data 这样的位置来管理这个问题,然后在每个容器的 Dockerfiles 中,创建从子目录到这些位置的符号链接。
例如在 docker-compose.yml 文件中
volumes:
- datavolume:/data
然后在容器Dockerfile中
RUN ln -s /data/sql_data /var/lib/mysql
我开始走这条路,但它变得一团糟并且无法正常工作。在我放弃这种方法或花时间调试它之前,我想确保没有办法只指定命名卷的子目录。
【问题讨论】:
-
你不能把它挂载到像 datavolume:/var/datavolume 这样的地方并在容器中做
ln -s /var/datavolume/dql_data /var/lib/mysql吗? -
我已编辑 my answer 以包含解决方法。
标签: docker docker-compose dockerfile