在Docker映像上找不到wwwroot中的资产
我已经启动并运行了Linux VM Docker映像,但我遇到了一个困难 找不到我的wwwroot文件夹中的所有资产 加载资源失败:服务器响应状态为404(未找到) 我包括在Docker映像上找不到wwwroot中的资产,docker,asp.net-core,Docker,Asp.net Core,我已经启动并运行了Linux VM Docker映像,但我遇到了一个困难 找不到我的wwwroot文件夹中的所有资产 加载资源失败:服务器响应状态为404(未找到) 我包括 "webroot": "wwwroot" 但这并不能解决问题。还有一件事是VS 2015(在ISS Express上)运行时一切正常-Dockerfile中是否也应该包含一些内容 编辑: 我将卷添加到docker文件中,但没有帮助: FROM microsoft/aspnet COPY . /app WORKDIR /
"webroot": "wwwroot"
但这并不能解决问题。还有一件事是VS 2015(在ISS Express上)运行时一切正常-Dockerfile中是否也应该包含一些内容
编辑:
我将卷添加到docker文件中,但没有帮助:
FROM microsoft/aspnet
COPY . /app
WORKDIR /app
RUN ["kpm", "restore"]
VOLUME ["/wwwroot"]
EXPOSE 5004
ENTRYPOINT ["k", "kestrel"]
您是否正在完成以下示例:?我对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运行命令的作用是从当前目录($pwd)中获取webroot目录,并将其装载到容器中,然后调用mount/webroot。换句话说,您的容器必须引用/webroot(而不是webroot,我认为这是相对于WORKDIR的)
我认为底线是这里发生了两件事。第一个是“构建”映像,第二个是运行映像。当您运行它时,您提供了要装入的卷。只要您的应用程序将project.json文件的“webroot”值作为查找网页的位置,那么这将起作用。您是否将其声明为卷?(如中所示)不,我没有-我应该考虑更多的声明吗?仅仅将目录声明为卷并不会将任何内容放在那里。您需要将文件放入此目录或使用-v选项将此卷映射到本地目录-我无法从wwwroot文件夹中获取要加载到映像中的文件。。。不幸的是,提供的文档并不能帮助您获取文件,因为您需要先将文件放在那里,并且提供的文档显示了如何将文件放在那里的一种方法。你创建了一个空文件夹,现在抱怨文件夹是空的。在vNext(asp.net 5)中,所有的文件,如.css和javasripts都存储在wwwroot中,但是我尝试了这个命令却没有成功:(docker run-t-v$(pwd)/wwwroot:/webroot-d-p 80:5004 myapp或docker run-t-v$(pwd)/wwwroot:/wwwroot-d-p 80:5004 myappI在project.json webroot中也已更改为“webroot”,并尝试了命令,但仍然没有/webroot,对吗?然后您进行了构建,然后运行,如我所列?我将webroot放在了不带/-的位置,因为当我使用/json测试它时,我发现一些错误,该文件夹不存在(明天早上的第一件事我会再做一次,让你知道)很遗憾,我忘了使用app.UseStaticFiles();StartUp.cs现在工作了吗