英文:
How to access static file for webserver build via docker
问题
我在使用Docker构建本地Web服务器时遇到了访问静态文件的问题。我正在使用github.com/xeipuuv/gojsonschema工具包,通过本地的JSON模式文件验证传入的JSON请求,代码如下:
schemaLoader := gojsonschema.NewReferenceLoader("file://C:/Users/user/Workspace/jsonschema.json")
但是当我尝试在Docker中访问该文件时,显示"没有该文件或目录"。我使用的Dockerfile如下:
FROM golang:1.17-alpine
WORKDIR /app
COPY go.mod .
COPY go.sum .
COPY jsonschema.json .
RUN go mod download
COPY *.go ./
RUN go build -o /main
EXPOSE 8080
CMD ["/main"]
我尝试将目录更改为:
schemaLoader := gojsonschema.NewReferenceLoader("file://app/jsonschema.json")
但没有起作用。
英文:
I am having an issue with accessing a static file for my local webserver when I am building it with docker. I am using the github.com/xeipuuv/gojsonschema tool kit for validating incoming json request with a local json schema file via
schemaLoader := gojsonschema.NewReferenceLoader("file://C:/Users/user/Workspace/jsonschema.json")
But when I am trying to access the file with docker it says "no such file or directory". The Dockerfile I am using is:
FROM golang:1.17-alpine
WORKDIR /app
COPY go.mod .
COPY go.sum .
COPY jsonschema.json .
RUN go mod download
COPY *.go ./
RUN go build -o /main
EXPOSE 8080
CMD ["/main"]
Thank You very much in advance.
Best regards
I tried changing the directory to, i.e.
schemaLoader := gojsonschema.NewReferenceLoader("file://app/jsonschema.json")
but it didn't help.
答案1
得分: 1
你的修复方法几乎正确,但是在 file:// 路径中缺少一个斜杠。
这里有一个解释 file:/、file:// 和 file:/// 之间的区别。
你需要这样写:
schemaLoader := gojsonschema.NewReferenceLoader("file:///app/jsonschema.json")
这意味着:使用文件 URI(file://)加载绝对路径为 /app/jsonschema.json 的文件。
英文:
Your fix is nearly correct but you are missing a single / in the file:// path.
Here is an explanation of the difference between file:/, file://, and file:///.
You want this:
schemaLoader := gojsonschema.NewReferenceLoader("file:///app/jsonschema.json")
which means: use the file uri (file://) to load file with absolute path (/app/jsonschema.json).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论