.NET 6+React项目Docker Compose构建失败:语句意外终止错误
.NET 6 + React项目Docker容器化构建报错排查
执行docker-compose build时出现语法相关报错,具体信息如下:
server: error reading preface from client //./pipe/docker_engine: file has already been closed failed to solve: failed to process "."]": unexpected end of statement while looking for matching double-quote
相关配置文件内容
后端Dockerfile
# Backend FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base WORKDIR /app EXPOSE 80 EXPOSE 443 FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build WORKDIR /src COPY ["LIA_TEST/LIA_TEST.csproj", "LIA_TEST/"] RUN dotnet restore "LIA_TEST/LIA_TEST.csproj" COPY . . WORKDIR "/src/LIA_TEST" RUN dotnet build "LIA_TEST.csproj" -c Release -o /app/build FROM build AS publish RUN dotnet publish "LIA_TEST.csproj" -c Release -o /app/publish /p:UseAppHost=false FROM base AS final WORKDIR /app COPY --from=publish /app/publish . ENTRYPOINT ["dotnet", "LIA_TEST.dll"]
前端Dockerfile
# Frontend FROM node:alpine as web-build WORKDIR /app COPY LIA_TEST/ClientApp/package*.json ./ RUN npm install COPY LIA_TEST/ClientApp/. . RUN npm run build FROM nginx:alpine as web COPY --from=web-build /app/build /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
docker-compose.yml(原始错误版本)
version: '3.4' services: api: build: context: .[enter image description here](https://i.sstatic.net/ikHNO.png) dockerfile: Dockerfile ports: - "7175:80" web: build: context: ./ClientApp dockerfile: Dockerfile ports: - "44482:80" depends_on: - api
问题原因及修复方法
报错根源在docker-compose.yml的api服务配置中,context行被错误插入了无效的图片描述内容,导致YAML语法解析失败。
将api服务的context行修改为:
context: .
修改后的api服务配置片段:
api: build: context: . dockerfile: Dockerfile ports: - "7175:80"
修复后重新执行docker-compose build即可解决语法报错问题,连带出现的pipe相关错误也会因语法解析正常而消失。
内容的提问来源于stack exchange,提问作者chackoch
相关产品推荐
相关产品推荐

