我已经启动并运行Linux VM Docker Image,但是遇到了一个难题。

找不到我的wwwroot文件夹中的所有 Assets



我已经包括

 "webroot": "wwwroot"

在project.json文件中,但不能解决问题。还有一件事是,从VS 2015(在ISS Express上)运行时,一切正常—在Dockerfile中也应该包含一些东西吗?

编辑:

我将VOLUME添加到docker文件中,但这没有帮助:
FROM microsoft/aspnet

COPY . /app
WORKDIR /app
RUN ["kpm", "restore"]

VOLUME ["/wwwroot"]

EXPOSE 5004
ENTRYPOINT ["k", "kestrel"]

最佳答案

您是否正在通过以下示例进行工作:asp?我对ASP不太了解,但是,我认为您非常接近。首先,我认为您不需要修改Dockerfile。您可以始终挂载卷,VOLUME关键字只是在必要时声明它。但是,您确实需要像显示的那样修改project.json文件,但有一个区别:

"webroot": "/webroot"

我假设名称是“webroot”,要查找的目录(针对该项目)是“/ webroot”。然后,构建它,如示例所示:
docker build -t myapp .

因此,当您运行此命令时,请执行以下操作:
docker run -t -v $(pwd)/webroot:/webroot -d -p 80:5004 myapp

该docker run命令的作用是从当前目录($ pwd)中获取您的webroot目录,并将其安装在容器中,并调用安装/ webroot的操作。换句话说,您的容器必须引用/ webroot(不是webroot,这与我认为的WORKDIR相关)。

我认为最重要的是,这里发生了两件事。第一个是“构建”图像,第二个是运行图像。运行它时,请提供要挂载的卷。只要您的应用程序将project.json文件的“webroot”值作为查找网页的位置,那么它将起作用。

关于docker - 在Docker镜像上找不到wwwroot的 Assets ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30093808/

10-11 08:30