我正在开发一个使用 .NET 6 与 React 集成的项目,并尝试使用 Docker 将其容器化。运行 docker-compose build 时,遇到以下错误:
无法解决:无法处理“.”]“:在查找匹配的双引号时语句意外结束
# 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"]
# 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.stack.imgur.com/ikHNO.png)
dockerfile: Dockerfile
ports:
- "7175:80"
web:
build:
context: ./ClientApp
dockerfile: Dockerfile
ports:
- "44482:80"
depends_on:
- api
您应该将
ENTRYPOINT ["dotnet", "LIA_TEST.dll"]
更改为 ENTRYPOINT [ "dotnet", "LIA_TEST.dll" ]
,将 CMD ["nginx", "-g", "daemon off;"]
更改为 CMD [ "nginx", "-g", "daemon off;" ]
。