java - Docker 卷映射 + windows = 令人难以置信的慢?

标签 java postgresql docker docker-compose docker-for-windows

我目前正在尝试将数据从在 docker 容器中运行的 postgres 复制到我的 Windows 主机。为此,我实现了一个 java 应用程序(也在 docker 容器中),它使用 postgres-jdbc 驱动程序及其 CopyManager,以便将特定数据复制到映射卷中的主机。

问题:当我将数据复制到映射的 windows 目录时,它变得非常慢。 (写入 1 GB 的数据大约需要 40 分钟 - 没有卷映射只需 1 分钟)

Docker 撰写:

  exportservice:
    build: ./services/exportservice
    volumes:
      - samplePath:/export_data

我已经读到这是一个已知问题,但我还没有找到合适的解决方案。 我的服务必须在基于 Windows 的生产环境中运行。 那么解决这个问题的方法是什么? WSL2?

期待您的建议!

最佳答案

无论您如何操作,将 Windows 文件夹安装到 Docker 容器中总是很慢。在这方面,WSL2 甚至比 WSL1 慢。

最好的解决方案是安装 WSL2,将所有项目文件复制到 Linux 文件系统(安装在 Windows 中的 \\wsl$\<distro>\ ),从那里运行容器并相应地安装 Linux 目录。这会绕过任何 Windows 文件交互。

我写了一个 Docker for Web Developers 书籍和视频类(class),因为我找不到解释如何创建本地开发环境的入门教程。它包括 Hyper-V 和 WSL2 说明和建议。使用优惠码dock30享受 30% 的折扣。

关于java - Docker 卷映射 + windows = 令人难以置信的慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65285379/

相关文章:

http - Docker容器http请求限制

php - 使用 Docker 容器运行 PHP 脚本

java - 看不懂Java普通类库的用法

java - 有没有更好的方法来设置 JPanel 图形的初始位置?)

ruby-on-rails - rspec - PG::UnableToSend:server 意外关闭连接这可能意味着服务器异常终止

ruby-on-rails - 你如何访问你的 heroku 数据库(特别是 postgres)?

java - 如何使用进程构建器运行 .sh 文件?

java - 将字符串从 thymeleaf 传递到 Controller

postgresql - 列中的空值违反了非空约束 PostgreSQL

ubuntu - 在 Mac OSX 中的 Ubuntu 中运行 VirtualBox,无法启动