我已经启动并运行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/