【问题标题】:Docker Compose & Volumes issuesDocker Compose 和 Volumes 问题
【发布时间】:2021-04-18 10:27:38
【问题描述】:

我已经尝试运行我的 docker-compose.yml 文件 2-3 天,并且花了很多时间在互联网上查找修复程序,但似乎没有任何效果。主机为Windows 10,Docker 计算机为Linux。

使用此命令创建卷: docker volume create --driver local --opt type=none --opt device='C:\Users\Kishan\Desktop\db' --opt o=bind mssqldb

以下是我的 docker-compose.yml 文件

version: '3.8'

services:
   db:
     image: mcr.microsoft.com/mssql/server:2017-latest
     volumes:
       - mssqldb:/opt/var/mssql/data
     environment:
       - ACCEPT_EULA=Y
       - SA_PASSWORD=yourStrong@Password
       - COMPOSE_CONVERT_WINDOWS_PATHS=1
     restart: always
     ports:
       - "1433:1433"

   api:
     depends_on:
       - db
     entrypoint: ["./wait_for.sh", "db:1433", "-t", "3600", "--", "execute", "api"]
     image: api:latest
     ports:
       - "80:80"
     restart: always

volumes:
    mssqldb:
        external: true

我不确定它的运行是否没有任何错误,但我没有看到在我的 C:\Users\Kishan\Desktop\db 中创建数据库文件(MDF 和 LDF 文件)。有人可以帮帮我吗?

【问题讨论】:

  • 对于你正在做的事情(试图向你的容器公开一个特定的主机目录),我认为绑定挂载会比 docker 卷更好。不幸的是,我无法访问 Windows 系统,因此我无法重现您的问题或验证我的解决方案是否有效。
  • \ 在 Linux 中是一种转义,因此如果在 bash shell 或 Linux Docker 引擎中解析命令,则路径变为:C:UsersKishanDesktopdb。 Linux 路径分隔符是/,我不认为你想要:,所以它可能是/c/Users/Kishan/Desktop/db通过哪个 Windows 安装(例如 WSL2 与 HyperV VM)。
  • 感谢您的回答,但两个答案都没有帮助。

标签: docker docker-compose docker-volume


【解决方案1】:

将卷目标从 - mssqldb:/opt/var/mssql/data 更改为 - mssqldb:/var/opt/mssql

【讨论】:

  • 您的建议有效,但我要做的唯一更改就是在路径中添加数据。所以我的最终路径变成了/var/opt/mssql/data
  • 您可以通过重新创建卷再试一次吗? docker volume rm mssqldb 和 docker volume create --driver local --opt type=none --opt device=C:/Users/Kishan/Desktop/db --opt o=bind mssqldb
  • 我不必创建任何外部卷。我将卷线更改为C:\Users\Kishan\Desktop\db:/var/opt/mssql/data 并且它正在工作。
  • 你的解决方案更简单,干得好!
猜你喜欢
  • 1970-01-01
  • 2022-10-25
  • 2019-08-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
相关资源
最近更新 更多