【发布时间】:2021-01-03 08:41:28
【问题描述】:
我正在尝试对接两个 .net core 3.1 服务(my-api 和 my-db)。 my-db 服务正在使用 mssql 数据库,我正在使用下面的脚本在容器启动后立即创建实际的数据库
docker-compose up --build
服务已启动并正在运行,但是当我使用 api 服务访问数据库时,我得到了 使用与服务器“my-db”上的数据库“mydatabase”的连接时出错。
docker-compose.yml
version: '3.0'
services:
my-db:
build: ./Data/Docker
my-api:
ports:
- "8080:5000"
depends_on:
- my-db
... ommited for clarity
数据/Docker
FROM mcr.microsoft.com/mssql/server:2017-CU17-ubuntu
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN chmod +x /usr/src/app/run-initialization.sh
ENV SA_PASSWORD pass
ENV ACCEPT_EULA Y
ENV MSSQL_PID Express
EXPOSE 1433
CMD /bin/bash ./entrypoint.sh
entrypoint.sh
/usr/src/app/run-initialization.sh & /opt/mssql/bin/sqlservr
run-initialization.sh
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P pass -d master -i create-database.sql
create-database.sql
CREATE DATABASE [mydatabase]
GO
USE [mydatabase]
GO
【问题讨论】:
-
SQL server 服务启动需要一些时间,所以我建议您在尝试连接到
run-initialization.sh中的数据库之前添加 10 秒的睡眠时间 -
有意义,尝试使用 /opt/mssql-tools/bin/sqlcmd sleep 10 -S localhost -U sa -P pass -d master -i create-database.sql 但我有同样的问题。我在这里做错了吗?
标签: sql-server docker .net-core