无法连接Linux Docker中的SQL Server:远程主机强制关闭连接
连接Docker容器中SQL Server实例时的预登录握手错误
连接运行在Docker容器中的SQL Server实例时,出现以下错误:
A connection was successfully established with the server, but then an error occurred during the pre-login handshake. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)
此前该配置可正常运行,在通过终止WSL调整卷大小及CPU/RAM资源(修改.wslconfig)后出现此问题,使用SSMS或Azure Data Studio连接均报错。
SQL Dockerfile配置
FROM mcr.microsoft.com/mssql/server:2019-latest USER root RUN mkdir /var/opt/sqlserver RUN mkdir /var/opt/sqlserver/sqldata RUN mkdir /var/opt/sqlserver/sqllog RUN mkdir /var/opt/sqlserver/sqlbackups RUN chown -R mssql /var/opt/sqlserver USER mssql CMD /opt/mssql/bin/sqlservr
docker-compose配置
version: '3.7' networks: personal-money-tracker-network: driver: bridge services: api: container_name: personal-money-tracker-api image: ${DOCKER_REGISTRY-}personalmoneytrackerapi environment: - ASPNETCORE_ENVIRONMENT=Development - ASPNETCORE_CONNECTION_STRING=PersonalMoneyTrackerDbDocker - ASPNETCORE_URLS=https://+:443;http://+:80 networks: - personal-money-tracker-network build: context: . dockerfile: ./server/PersonalMoneyTracker.API/Dockerfile depends_on: - db ports: - "8000:80" - "8001:443" volumes: - ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro - ${USERPROFILE}\.aspnet\https:/root/.aspnet/https:ro client: container_name: personal-money-tracker-client stdin_open: true image: ${DOCKER_REGISTRY-}personalmoneytrackerclient build: context: . dockerfile: ./client/Dockerfile.prod environment: - NODE_ENV=production - CHOKIDAR_USEPOLLING=true - VITE_API_URL=https://localhost:8001 networks: - personal-money-tracker-network ports: - "3000:3000" depends_on: - api volumes: - node-modules:/app/node_modules - ./PersonalMoneyTracker.Client/personal-money-tracker:/app db: container_name: personal-money-tracker-db image: ${DOCKER_REGISTRY-}personalmoneytrackerdb ports: - "1401:1433" build: context: . dockerfile: ./devops/sql/Dockerfile env_file: - ./devops/sql/SqlServer.env networks: - personal-money-tracker-network volumes: - sqlsystem:/var/opt/mssql/ - sqldata:/var/opt/sqlserver/sqldata - sqllog:/var/opt/sqlserver/sqllog - sqlbackup:/var/opt/sqlserver/sqlbackups volumes: node-modules: sqlsystem: sqldata: sqllog: sqlbackup:
SQL环境变量文件(SqlServer.env)
MSSQL_SA_PASSWORD=Testing1122! ACCEPT_EULA=Y MSSQL_AGENT_ENABLED=True MSSQL_DATA_DIR=/var/opt/sqlserver/sqldata MSSQL_LOG_DIR=/var/opt/sqlserver/sqllog MSSQL_BACKUP_DIR=/var/opt/sqlserver/sqlbackups MSSQL_PID='Developer' MSSQL_TCP_PORT=1401
内容的提问来源于stack exchange,提问作者Rade Tomovic
相关产品推荐
相关产品推荐

