繁体   English   中英

ASP.NET 内核 Angular 模板在 Docker 观察文件变化

[英]ASP.NET Core Angular Template in Docker watching file changes

我已经使用dotnet new angular创建了 ASP.NET 核心 Angular 项目,并托管在 Z05B6053C41A2130AFB686 中。

如何在无需重新启动 docker 容器的情况下查找文件更改?

Dockerfile

FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /app

COPY "3_UI/MyAccounts.Web/MyAccounts.Web.csproj" ./myapp/
RUN dotnet restore "./myapp/MyAccounts.Web.csproj"

COPY "3_UI/MyAccounts.Web/." ./myapp/
WORKDIR /app/myapp

# Install Node, NPM and VS Debugger
RUN apt-get update && apt-get install -y curl sudo unzip procps
RUN apt-get install -y --no-install-recommends apt-utils
RUN curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /publish/vsdbg;
RUN sudo apt-get install -y nodejs
RUN curl -L https://npmjs.org/install.sh | sudo sh
RUN echo "NODE Version:" && node --version
RUN echo "NPM Version:" && npm --version

RUN dotnet publish -c Debug -o out

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS runtime
WORKDIR /app
EXPOSE 9000

# Install Node, NPM and VS Debugger
RUN apt-get update && apt-get install -y curl sudo unzip procps
RUN apt-get install -y --no-install-recommends apt-utils
RUN curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /publish/vsdbg;
RUN sudo apt-get install -y nodejs
RUN curl -L https://npmjs.org/install.sh | sudo sh
RUN echo "NODE Version:" && node --version
RUN echo "NPM Version:" && npm --version

# ENV ASPNETCORE_ENVIRONMENT=development
ENV ASPNETCORE_URLS=http://+:9000

COPY --from=build /app/myapp/out .

ENTRYPOINT [ "dotnet", "MyAccounts.Web.dll"]

考虑添加ENV ASPNETCORE_ENVIRONMENT=development将监视客户端应用程序文件的更改,但在容器启动后它会引发以下错误。

app_web_service                      | npmfail: Microsoft.AspNetCore.SpaServices[0]
app_web_service                      |       npm ERR! code ENOENT
app_web_service                      |       
app_web_service                      | fail: Microsoft.AspNetCore.SpaServices[0]
app_web_service                      |       npm ERR! syscall open
app_web_service                      |       
app_web_service                      | fail: Microsoft.AspNetCore.SpaServices[0]
app_web_service                      |       npm ERR! path /app/ClientApp/package.json
app_web_service                      |       
app_web_service                      | fail: Microsoft.AspNetCore.SpaServices[0]
app_web_service                      |       npm ERR! errno -2
app_web_service                      |       
app_web_service                      | fail: Microsoft.AspNetCore.SpaServices[0]
app_web_service                      |       npm ERR! enoent ENOENT: no such file or directory, open '/app/ClientApp/package.json'
app_web_service                      |       
app_web_service                      | fail: Microsoft.AspNetCore.SpaServices[0]
app_web_service                      |       npm ERR! enoent This is related to npm not being able to find a file.
app_web_service                      |       
app_web_service                      | fail: Microsoft.AspNetCore.SpaServices[0]
app_web_service                      |       npm ERR! enoent 
app_web_service                      |       
app_web_service                      | npm ERR!fail: Microsoft.AspNetCore.SpaServices[0]
app_web_service                      |       npm ERR! A complete log of this run can be found in:
app_web_service                      |       
app_web_service                      | fail: Microsoft.AspNetCore.SpaServices[0]
app_web_service                      |       npm ERR!     /root/.npm/_logs/2021-05-08T11_54_23_879Z-debug.log

是否缺少任何其他配置来监视文件更改?

我有这个工作,但仍然不是优化的方式。 我在自己的容器中拆分了 .NET Core 和 Angular 。

Angular ClientApp

# base image
FROM node:alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install and cache app dependencies
COPY package*.json /app/
RUN npm install
RUN npm install -g @angular/cli@11.2.12

# add app
COPY . /app

# start app
CMD ng serve --host 0.0.0.0 --poll 500

.NET 核心应用

FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim as build
ENV DOTNET_USE_POLLING_FILE_WATCHER 1
WORKDIR /app
COPY . .
RUN dotnet restore

RUN apt-get update && apt-get install -y curl sudo unzip procps
RUN apt-get install -y --no-install-recommends apt-utils
RUN curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /publish/vsdbg;

ENTRYPOINT [ "dotnet", "watch", "run", "--urls", "http://+:9000"]

Docker 组成

myaccounts.web:
    container_name: app_web
    build:
      context: ./3_UI/MyAccounts.Web/ClientApp/
      dockerfile: Dockerfile
    volumes: 
      - ./3_UI/MyAccounts.Web/ClientApp/:/app
      - '/app/node_modules'
    ports:
      - 4200:4200
    depends_on: 
        - db


myaccounts.web.service:
    container_name: api_gateway
    build:
      context: ./3_UI/MyAccounts.Web/
      dockerfile: Dockerfile
    volumes:
      - ./3_UI/MyAccounts.Web/:/app
    environment: 
      - ASPNETCORE_URLS=http://localhost:9000
      - ASPNETCORE_ENVIRONMENT=development
    ports:
      - 9000:9000
    depends_on: 
      - db

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM