我用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"]
2条答案
按热度按时间qlzsbp2j1#
我认为因为您没有为新映像设置
WORKDIR
,所以您开始构建FROM scratch
。您只需将WORKDIR /app
再次添加到您正在构建的新映像(用于运行您的应用程序)的规范中,即可修复此问题。它将如下所示:w1e3prcc2#
替换
使用