gpt4 book ai didi

sql-server - 无法登录到在 Azure 上的 Ubuntu VM 上通过 Docker-compose 启动的容器中运行的 SqlServer

转载 作者:行者123 更新时间:2023-12-04 18:44:11 24 4
gpt4 key购买 nike

如果我仅使用 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: Error: Microsoft ODBC Driver 17 for SQL Server : Login failed for user '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"

我还检查了容器是否运行正常:

enter image description here

这让我相信我的 docker-compose 文件有问题。我不确定是什么。

编辑:

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 虚拟机上的文件夹结构:

enter image description here

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"]

最佳答案

对于您的问题,您只需更改环境设置,如下所示:

    environment: 
- ACCEPT_EULA=Y
- SA_PASSWORD=1StrongPwdclear

然后就可以正常工作了。你可以看看environment在 docker-compose 中。

更新:

我没有你使用的其他东西,所以我只能测试sqlserver的docker-compose。 Dockerfile 在这里:

FROM mcr.microsoft.com/mssql/server:2017-latest AS build
ENV ACCEPT_EULA=Y
ENV MSSQL_SA_PASSWORD=1StrongPwdclear

FROM mcr.microsoft.com/mssql/server:2017-latest AS release

ENV ACCEPT_EULA=Y

这里是 docker-compose 文件:

version: '3.3'

services:
sqlserver-1:
build:
context: .
ports:
- "1433:1433"
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=1StrongPwdclear

然后我也可以使用以下命令连接到sqlserver:

sqlcmd -S localhost -U sa -P 1StrongPwdclear

关于sql-server - 无法登录到在 Azure 上的 Ubuntu VM 上通过 Docker-compose 启动的容器中运行的 SqlServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60995532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com