Jan*_*ana 6 docker docker-compose asp.net-core-webapi
我使用 Sql 服务器创建了一个 asp.net core web api。通过运行 docker compose 文件,我需要创建一个数据库和表。我的解决方案如下
Dockerfile
FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base
WORKDIR /app
EXPOSE 80
FROM microsoft/dotnet:2.2-sdk AS build
WORKDIR /src
COPY StarterPackMSSQL.StarterPackMSSQL.csproj StarterPackMSSQL/
RUN dotnet restore StarterPackMSSQL/StarterPackMSSQL.csproj
COPY . .
WORKDIR /src/StarterPackMSSQL
RUN dotnet build StarterPackMSSQL.csproj -c Release -o /app
FROM build AS publish
RUN dotnet publish StarterPackMSSQL.csproj -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "StarterPackMSSQL.dll"]
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml
version: '3.5'
networks :
localdev:
name: localdev
services:
starterpackmssql:
image: ${DOCKER_REGISTRY-}mssql
restart: always
build:
context: .
dockerfile:StarterPackMSSQL/Dockerfile
ports:
- "5001:80"
depends_on:
- db-server
networks:
- localdev
db-server:
image: microsoft/mssql-server-linux
container_name: db-server
environment:
- ACCEPT_EULA=Y
- MSSQL_SA_PASSWORD=password123
- MSSQL_TCP_PORT=1433
ports:
- "1400:1433"
networks:
- localdev
Run Code Online (Sandbox Code Playgroud)
SQL脚本
CREATE DATABASE [StarterPacksDB]
GO
USE [StarterPacksDB]
GO
/****** Object: Table [dbo].[Users] Script Date: 10/18/2019 10:42:39 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[User](
[id] [int] IDENTITY(1,1) NOT NULL,
[handle] [varchar](50) NOT NULL,
CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)
我只需要在运行时自动创建数据库和表docker-compose up
而且它应该可以在 Mac 和 Windows 上运行。
对于 MySQL 和 Postgress 等,所有数据库映像都附带开箱即用的方便入口点脚本,用于执行数据库初始化等任务,但 MSSQL docker 映像没有入口点。因此,我建议使用官方推荐的方法,因为您当前的脚本将无法按照您的预期工作。
\n\n\n但官方图像建议您还可以使用\nentrypoint.sh 脚本中的工具来执行创建数据库或登录、\n附加数据库、导入数据或其他设置任务等操作。请参阅此示例,\n使用entrypoint.sh 脚本创建数据库和架构,并\nbcp 某些数据。
\n
入口点 CMD,在运行时执行import-data.sh脚本,以使用 sqlcmd 执行 .sql 脚本来创建数据库并填充初始架构到其中。
\n现在,使上述入口点正常工作的第二件事是,您应该使用 MS 更新的最新推荐的图像。因为当前图像已被弃用。
\n\n\n\n
microsoft/mssql-server-linux作者:microsoft \xe2\x80\xa2 更新于 10 个月前 已弃用 Linux 上的 SQL Server\n容器存储库。请参阅下面的更多细节。
\n我们正在迁移到 mcr.microsoft.com,您可以在其中获取 Linux 容器上的最新 SQL\nServer 2017 和 SQL Server 2019。我们将不再\n使用更新来更新此容器存储库,并且我们最终\n将从此存储库中删除所有容器映像。
\n请访问我们的新 Docker Hub 页面\n https://hub.docker.com/r/microsoft/mssql-server
\n
https://hub.docker.com/r/microsoft/mssql-server-linux/
\n| 归档时间: |
|
| 查看次数: |
19577 次 |
| 最近记录: |