运行DART盘架Docker Container时出现文件系统异常

rjee0c15  于 2022-09-19  发布在  Docker
关注(0)|答案(2)|浏览(161)

我用dart create -t server-shelf . --force生成了一个DART项目。

在顶部文件夹中,我创建了一个json文件(my_data.json),其中包含一些模拟数据。在我的代码中,我使用了来自json文件的数据,如下所示:

final _data = json.decode(File('my_data.json').readAsStringSync()) as List<dynamic>;

但是,如果我尝试使用docker run -it -p 8080:8080 myserver启动我的服务器,我会得到:

文件系统异常:无法打开文件,路径=‘my_data.json’(操作系统错误:没有这样的文件或目录,错误号=2)

我的文档文件:


# Use latest stable channel SDK.

FROM dart:stable AS build

# Resolve app dependencies.

WORKDIR /app
COPY pubspec.* ./
RUN dart pub get

# Copy app source code (except anything in .dockerignore) and AOT compile app.

COPY . .
RUN dart compile exe bin/server.dart -o bin/server

# Build minimal serving image from AOT-compiled `/server`

# and the pre-built AOT-runtime in the `/runtime/` directory of the base image.

FROM scratch
COPY --from=build /runtime/ /
COPY --from=build /app/bin/server /app/bin/
COPY my_data.json /app/my_data.json

# Start server.

EXPOSE 8080
CMD ["/app/bin/server"]
qlzsbp2j

qlzsbp2j1#

我认为因为您没有为新映像设置WORKDIR,所以您开始构建FROM scratch。您只需将WORKDIR /app再次添加到您正在构建的新映像(用于运行您的应用程序)的规范中,即可修复此问题。它将如下所示:

...

# Start server.

WORKDIR /app
EXPOSE 8080
CMD ["/app/bin/server"]
w1e3prcc

w1e3prcc2#

替换

COPY my_data.json /app/my_data.json

使用

COPY --from=build app/my_data.json app/

相关问题