Docker-compose MS SQL attach_dbs

Dan*_*ion 2 sql-server docker docker-compose

我的 docker-compose 需要启动三个不同的容器:1 个 MS SQL 和三个 Web 应用程序。这是我的 docker-compose.yml:

    version: "3"

services: 

  gwammssql:
    image: microsoft/mssql-server-windows-express
    container_name: mssql-gwam
    networks:
      - gwam_net
    ports:
      - "1433:1433"  
    environment:
      - sa_password=Password01
      - ACCEPT_EULA=Y
      - attach_dbs="[{'dbName':'GWAM','dbFiles':['C:\\temp\\GWAM.mdf','C:\\temp\\GWAM.ldf']}]"
    volumes:
      - C:/temp/:C:/temp/

  gwam-app:
    image: myrepo/web-app
    container_name: gwamapp1
    ports:
      - 6001:6001
    depends_on:
      - gwammssql
    environment:
      - ASPNETCORE_URLS=http://*:6001
      - App__DatabaseInfo__ConnectionString=Data Source=gwammssql;Initial Catalog='GWAM';User ID='sa';Password='Password01';Connect Timeout=30;Pooling=false;
      - App__DatabaseInfo__SelectTopValue=15
      - App__SecretsKeys__TokenHashingKey=iraiadsafAiDailgattaBaL
      - App__ExternalServices__MQServerUrl=localhost
      - App__ExternalServices__MQUserName=guest
      - App__ExternalServices__MQPassword=guest
      - App__ExternalServices__MQPort=5672
    networks:
      - gwam_net

  gwam-login:
    image: myrepo/micro-login
    container_name: gwamlogin1
    ports:
      - 6002:6002
    depends_on:
      - gwammssql
    environment:
      - ASPNETCORE_URLS=http://*:6002
      - App__DatabaseInfo__ConnectionString=Data Source=gwammssql;Initial Catalog='GWAM';User ID='sa';Password='Password01';Connect Timeout=30;Pooling=false;
      - App__DatabaseInfo__SelectTopValue=15
      - App__SecretsKeys__TokenHashingKey=iraihgnAiDailgattaBaL
      - App__ExternalServices__MQServerUrl=localhost
      - App__ExternalServices__MQUserName=guest
      - App__ExternalServices__MQPassword=guest
      - App__ExternalServices__MQPort=5672
    networks:
      - gwam_net

  gwam-account:
    image: myrepo/micro-account
    container_name: gwamaccount1
    ports:
      - 6003:6003
    depends_on:
      - gwammssql
    environment:
      - ASPNETCORE_URLS=http://*:6003
      - App__DatabaseInfo__ConnectionString=Data Source=gwammssql;Initial Catalog='GWAM';User ID='sa';Password='Password01';Connect Timeout=30;Pooling=false;
      - App__DatabaseInfo__SelectTopValue=15
      - App__SecretsKeys__TokenHashingKey=iradgnAgilgattaBaL
      - App__ExternalServices__MQServerUrl=localhost
      - App__ExternalServices__MQUserName=guest
      - App__ExternalServices__MQPassword=guest
      - App__ExternalServices__MQPort=5672
    networks:
      - gwam_net

networks:
  gwam_net:
    external:
      name: nat
Run Code Online (Sandbox Code Playgroud)

问题是 attach_dbs 环境变量。我需要附加一个 .mdf 和 ldf 文件,但每次运行撰写文件时,我都会收到相同的输出,但未附加数据库...

附加dbs输出

小智 7

我希望你解决了你的问题,但以防万一其他人点击这个线程。我有相同或至少非常相似的问题。我在 Windows 10 Enterprise 上运行 Windows 容器。

这有效:

 docker run --rm --name mssql -d -p 1433:1433 -e sa_password=myPassword -v ./data:C:/db/ -e ACCEPT_EULA=Y -e attach_dbs="[{'dbName':'myDB','dbFiles': ['c:\\db\\DB_Data.MDF', 'c:\\db\\DB_Log.LDF']}]" microsoft/mssql-server-windows-developer
Run Code Online (Sandbox Code Playgroud)

但是在我的 docker-compose 中它没有,我得到了同样的错误:

截屏

version: '3.7'
services:
 mssql:
  image: microsoft/mssql-server-windows-developer
  environment:
   - ACCEPT_EULA=Y
   - SA_PASSWORD=myPassword
   - MSSQL_PID=Enterprise
   - attach_dbs="[{'dbName':'myDB','dbFiles'['c:\\db\\DB_Data.MDF','c:\\db\\DB_Log.LDF']}]"
  ports:
   - '1433:1433'
  volumes:
   - d:\dockershare\data:c:/db
Run Code Online (Sandbox Code Playgroud)

我搜索了很长一段时间,但没有发现任何人有类似的问题,大多数线程我都找到了有关“ConvertFrom-Json:无法识别的转义序列”内容的错误的地方。购买意外我看到一个 docker-compose 文件,其中 attach_db 没有封装在“”中。也许任何人都可以澄清原因。

我改变了这一行:

- attach_dbs="[{'dbName':'myDB','dbFiles'['c:\\db\\DB_Data.MDF','c:\\db\\DB_Log.LDF']}]"
Run Code Online (Sandbox Code Playgroud)

对此:

- attach_dbs=[{"dbName":"myDB","dbFiles"["c:\\db\\DB_Data.MDF","c:\\db\\DB_Log.LDF"]}]
Run Code Online (Sandbox Code Playgroud)

现在它起作用了。