elasticsearch - docker-compose 将文件复制为文件夹

标签 elasticsearch docker docker-compose

我正在尝试使用 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 设置并配置共享驱动器:

https://docs.docker.com/docker-for-windows/#shared-drives

关于elasticsearch - docker-compose 将文件复制为文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44944632/

相关文章:

azure - 无法从服务器外部访问 ElasticSearch 实例 - Azure Windows 2012

docker推送到注册表不起作用

docker - 我可以为docker swarm容器分配核心吗?

docker - Docker Stack Swarm-服务副本未传播到多服务堆栈

ruby-on-rails - 从 DBeaver 连接到 Docker 容器中的 PostgreSQL 数据库

elasticsearch - 如何从重命名的 Elasticsearch 集群中恢复数据?

json - 在couchdb中使用elasticsearch索引json中的名称

elasticsearch - Elasticsearch顶级聚合/搜索主体元数据

docker - Gitlab-runner + Docker + Windows - 卷规范无效

docker - Docker InfluxDB在UTC时区运行