Docker - ядро ​​ASP.NET и скрипт SQL Server - PullRequest
0 голосов
/ 14 октября 2018

Я пытаюсь использовать ASP.NET Core и SQL Server в контейнере на основе nginx Linux.

Я хочу запустить скрипт базы данных для создания моей таблицы, но я не уверен, как это сделать.Это происходит сбой, и с помощью ENTRY POINT запускается служба, которая запускается даже перед запуском SQL Server и перед выполнением сценария.

Как установить образ ядра ASP.NET и образ SQL Server в одном контейнере?

Мой файл Docker:

FROM microsoft/dotnet:2.1-sdk  AS build
WORKDIR /build
COPY . .
RUN dotnet restore
RUN dotnet publish -c Release -o output
FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY --from=build /build/output .
COPY entrypoint.sh entrypoint.sh
COPY SqlCmdStartup.sh SqlCmdStartup.sh
COPY 01-createSpeakerTable.sql 01-createSpeakerTable.sql
COPY 02-createSponsorTable.sql 02-createSponsorTable.sql
RUN chmod +x SqlCmdStartup.sh
RUN chmod +x entrypoint.sh
CMD ["/bin/bash","entrypoint.sh"]
#CMD /bin/bash entrypoint.sh
ENTRYPOINT["dotnet","ConferenceApp.dll"]

Entrypoint.sh:

/opt/mssql/bin/sqlservr & SqlCmdStartup.sh

SqlCmdStartup.sh:

sleep 20s
export STATUS=0
i=0
while [[ $STATUS -eq 0 ]] || [[ $i -lt 30 ]]; do
    sleep 1
    i=$i+1
    STATUS=$(grep 'Server setup is completed' /var/opt/mssql/log/setup*.log | wc -l)
done

/opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Your_password123 -d master -i 01-createSpeakerTable.sql

createSpeakerTable.sql:

GO
Create DATABASE [DockerDBTest]
GO
USE [DockerDBTest]
GO

/****** Object:  Table [dbo].[Speakers]    Script Date: 13/10/2018 12:41:44 ******/
DROP TABLE IF EXISTS [dbo].[Speakers]
GO

/****** Object:  Table [dbo].[Speakers]    Script Date: 13/10/2018 12:41:44 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[Speakers](
    [Id] [int] NULL,
    [First] [varchar](50) NULL,
    [Last] [varchar](50) NULL,
    [EmailAddress] [varchar](255) NULL
) ON [PRIMARY]
GO

my docker-compose.yml

version: '3'

services :
 api:
   image: conference/api
   container_name: conference_api
   build:
    context: .
   ports:
   - 5000:80
   environment:
     ASPNETCORE_ENVIRONMENT: Production
   depends_on :
    - db
 db:
   image: "microsoft/mssql-server-linux"
   environment:
           SA_PASSWORD: "Your_password123"
           ACCEPT_EULA: "Y"
           MSSQL_PID: Developer
   ports:
    - 5432:5432
    - 1433:1433

Когда я пытаюсь запустить, это говорит / opt / mssql /bin / sqlservr не найден, и он не создает DBase и таблицу

мое приложение sql server и asp.net не работает в одном контейнере?,Я хочу сначала запустить скрипт DB, а затем запустить службу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...