Если я создаю и запускаю контейнер только с Dockerfile (без docker -compose)
sudo docker-compose up --build -d
, а затем запускаю его с:
sudo docker run --hostname sqlserver -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=1StrongPwdclear" -p 1433:1433 -d sql
Я могу
sqlcmd -S localhost -U sa -P 1StrongPwdclear
Но, когда я собираю и запускаю контейнер с docker -compose:
sudo docker-compose up --build
, я получаю:
Sqlcmd: Ошибка: Microsoft ODB C Драйвер 17 для SQL Сервер: Ошибка входа пользователя 'sa' ..
Я не понимаю, почему. Я имею в виду, что я практически использую один и тот же Dockerfile в обоих случаях.
Dockerfile:
FROM mcr.microsoft.com/mssql/server:2017-latest AS build
ENV ACCEPT_EULA=Y
ENV MSSQL_SA_PASSWORD=1StrongPwdclear
WORKDIR /tmp
COPY AdventureWorksLT2017.bak .
COPY restore-backup.sql .
FROM mcr.microsoft.com/mssql/server:2017-latest AS release
ENV ACCEPT_EULA=Y
docker -compose.yml
version: "3"
services:
coreapi:
build:
context: ./theapi
dockerfile: Dockerfile
ports:
- "5000:5000"
sqlserver:
build:
context: ./sqlserver
ports:
- "1433:1433"
environment:
- ACCEPT_EULA="Y"
- SA_PASSWORD="1StrongPwdclear"
angular:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- "4300:4200"
Я также проверил, если контейнер работает нормально:
Это наводит меня на мысль, что что-то не так с моим docker -композиционным файлом. Я не уверен, что.
РЕДАКТИРОВАТЬ:
Docker -compose.yml:
version: "3"
services:
coreapi:
build:
context: ./theapi
dockerfile: Dockerfile
ports:
- "5000:5000"
sqlserver:
build:
context: ./sqlserver
ports:
- "1433:1433"
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=1StrongPwdclear
angular:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- "4300:4200"
Структура папок в Ubuntu VM:
frontend-- Dockerfile:
FROM node:alpine
WORKDIR '/app'
COPY ./package.json .
EXPOSE 4200
RUN npm i
COPY . .
CMD ["npm","start"]
sqlserver- Dockerfile
FROM mcr.microsoft.com/mssql/server:2017-latest AS build
ENV ACCEPT_EULA=Y
ENV MSSQL_SA_PASSWORD=1StrongPwdclear
WORKDIR /tmp
COPY AdventureWorksLT2017.bak .
COPY restore-backup.sql .
FROM mcr.microsoft.com/mssql/server:2017-latest AS release
ENV ACCEPT_EULA=Y
theapi-- dockerfile:
FROM mcr.microsoft.com/dotnet/core/sdk:2.2 AS build-env
WORKDIR /app
# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore
# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2
EXPOSE 80/tcp
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "theapi.dll", "--urls", "http://*:5000"]