我正在尝试使用 docker-compose volumes 选项将启用了 CORS 的 elasticsearch.yml 从我的主机复制到容器中。 但是当我复制 config 文件夹时,它会将其中的 elasticsearch.yml 文件复制为一个文件夹。
这是我的 docker-compose 文件:
version: "3"
services:
elasticsearch1:
container_name: my_container_name
image: elasticsearch
environment:
- "ES_JAVA_OPTS=-Xms1024m -Xmx1024m"
volumes:
- /config/:/usr/share/elasticsearch/config/
ports:
- '9200:9200'
- '9300:9300'
这是我在运行 docker-compose up 时收到的错误消息:
Exception in thread "main" SettingsException[Failed to load settings from /usr/share/elasticsearch/config/elasticsearch.yml]; nested: IOException[Is a directory];
我也尝试复制到 tmp 文件夹,文件被列为文件夹:
drwxr-xr-x 2 root root 40 Jul 6 08:25 elasticsearch.yml
我做错了什么?
最佳答案
使用适用于 Windows 的 Docker 和适用于 Mac 的 Docker,您可以在 VM 内部运行 docker 并将目录从该 VM 内部安装到您的容器中。当文件或目录不存在于 VM 中时,Docker 会将其挂载为一个空文件夹作为默认行为(此行为似乎随着 swarm 模式而改变)。
要从 Windows 主机获取文件夹到 VM,然后将其映射到容器,您需要进入 docker 设置并配置共享驱动器:
关于elasticsearch - docker-compose 将文件复制为文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44944632/