Я пытаюсь использовать 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, а затем запустить службу