问题是在容器中仅执行一个命令。当您在
docker-compose.yml其中指定命令时,它将覆盖默认命令,该默认命令应用于启动容器。所以你有两个选择
手动运行命令
services: tmp-db: image: microsoft/mssql-server-linux:latest environment: ACCEPT_EULA: Y SA_PASSWORD: yourStrong(!)Password ports: - 1433:1433
然后你可以执行
docker-compose exec tmp-db /opt/mssql-tools/bin/sqlcmd -U sa -P yourStrong(!)Password -Q "SELECt [name] FROM sys.databases"
有两项服务-一项用于服务器,一项用于数据加载
services: load-db: image: microsoft/mssql-server-linux:latest command: sh -c 'sleep 10 && /opt/mssql-tools/bin/sqlcmd -U sa -P yourStrong(!)Password -Q "SELECt [name] FROM sys.databases"' network_mode: service:tmp-db tmp-db: image: microsoft/mssql-server-linux:latest environment: ACCEPT_EULA: Y SA_PASSWORD: yourStrong(!)Password ports: - 1433:1433
在这种方法中,我们使用命令加载数据来启动另一个容器,然后在数据库服务器容器的网络上运行它。这样做只是为了避免使用数据库的主机名,如果您愿意,也可以将主机名作为传递,
tmp-db并删除
network_mode: service:tmp-db。



