【发布时间】:2021-09-23 07:47:19
【问题描述】:
我有两个实体。 我的 asp.net 应用程序和它从中获取数据的数据库。
我的 Dockerfile 如下:
FROM mcr.microsoft.com/dotnet/aspnet:6.0
COPY bin/Debug/net6.0/ ./
COPY /DBinit.sql ./
COPY /entrypoint.sh ./
WORKDIR ./
ENTRYPOINT ["dotnet", "Server.dll"]
EXPOSE 80/tcp
RUN chmod +x ./entrypoint.sh
CMD /bin/bash ./entrypoint.sh
我的 entrypoint.sh 如下:
#!/bin/bash
set -e
run_cmd="dotnet run --server.urls http://*:80"
until dotnet ef database update; do
>&2 echo "SQL Server is starting up"
sleep 1
done
>&2 echo "SQL Server is up - executing command"
$run_cmd
sleep 30s
/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Your_password123 -d master -i /DBinit.sql
我的 Docker Compose 是:
version: "3.9"
services:
web:
build: .
ports:
- "8000:80"
depends_on:
- db
db:
image: "mcr.microsoft.com/mssql/server"
environment:
SA_PASSWORD: "Your_password123"
ACCEPT_EULA: "Y"
我的应用程序运行正常。 server_db 和 server_web 都已启动。 我的问题是数据库本身是空的,我的 DBinit.sql 脚本没有被执行。
从我能看到的地方。我的问题是这个 DBinit.sql 文件没有被复制到 server_db 中。 如果我将在 server_web 中打开 / 的 ls -la。这个初始化脚本在那里(但它甚至不应该是我的网络应用程序的一部分)
如果我会在 server_db 中做同样的事情。里面没有sql脚本。 我对所有这些 Docker 实体感到非常困惑。
有人能给我指出一个解决方案吗?
【问题讨论】:
标签: sql-server docker docker-compose yaml