在Docker Image上找不到来自wwwroot的Assetss

时间:2015-05-07 06:48:44

标签: docker asp.net-core

我已经启动并运行了Linux VM Docker Image,但我遇到了一个难以理解的问题。

无法找到我的wwwroot文件夹中的所有资产

  

无法加载资源:服务器响应状态为404(未找到)

我已经包含了

 "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"]

1 个答案:

答案 0 :(得分:2)

您是否正在使用此示例:asp?我不太了解asp,但是,我认为你非常接近。首先,我认为你不需要修改Dockerfile。您可以随时装入卷,VOLUME关键字只是在必要时声明它。但是,您需要像您所示的那样修改project.json文件,但有一点不同:

-- ================================================
-- Template generated from Template Explorer using:
-- Create Procedure (New Menu).SQL
--
-- Use the Specify Values for Template Parameters 
-- command (Ctrl-Shift-M) to fill in the parameter 
-- values below.
--
-- This block of comments will not be included in
-- the definition of the procedure.
-- ================================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE InsetIntoTwoTable

(
@name nvarchar(50),
@Email nvarchar(50)
)

AS
BEGIN

    SET NOCOUNT ON;


    insert into dbo.info(name) values (@name)
    insert into dbo.login(Email) values (@Email)
END
GO

我假设名称是" webroot"并且要查看的目录(对于项目)是" / webroot"。然后,构建它,如示例所示:

"webroot": "/webroot"

所以,当你运行它时:

docker build -t myapp .

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

我认为最重要的是这里有两件事情。第一个是“建筑物”。图像,第二个正在运行它。运行它时,您提供要安装的卷。只要您的应用程序重复了project.json文件" webroot"值作为查找网页的地方然后这将起作用。