Docker上的Asp.Net Core + SQL Server – 启动数据库的睡眠

我注意到,当我第一次尝试运行docker-compose up命令时出现错误:

Starting mssql ... Starting mssql ... done Recreating api ... Recreating api ... done Attaching to mssql, api api exited with code 1 

因为api尝试从数据库获取数据,但MSSQL尚未启动。

所以,我的问题是有可能以某种方式等待数据库,然后运行API?

这是我的docker-compose和dockerfile

docker-compose:version:'3.3'

服务:

  api: image: api container_name: api build: context: . dockerfile: Dockerfile ports: - "8000:80" depends_on: - db db: image: "microsoft/mssql-server-linux" container_name: mssql environment: SA_PASSWORD: "testtest3030!" ACCEPT_EULA: "Y" MSSQL_PID: "Express" ports: - "8001:1433" 

dockerfile:

 # Build Stage FROM microsoft/aspnetcore-build as build-env WORKDIR /source COPY . . RUN dotnet restore RUN dotnet publish -o /publish --configuration Release # Publish Stage FROM microsoft/aspnetcore WORKDIR /app COPY --from=build-env /publish . ENTRYPOINT ["dotnet", "Api.dll"] 

我也注意到在日志中:

 2017-11-17 22:12:42.67 Logon Error: 18456, Severity: 14, State: 38. 2017-11-17 22:12:42.67 Logon Login failed for user 'sa'. Reason: Failed to open the explicitly specified database 'MyDb'. [CLIENT: 172.26.0.3]