问题描述
我正在使用 sbt native-packager 创建我的 akka http 项目的 docker 镜像 这是我的 build.sbt 文件
name := "myproject-auth"
version := "0.0.1"
enablePlugins(DockerPlugin)
enablePlugins(JavaAppPackaging)
dockerExposedPorts := Seq(8083)
然后我将我的应用程序图片创建为
sbt docker:publishLocal
它创建了我的项目图像并且运行良好,问题是
在我的代码中,我正在读取一个从 src/main/resources/json1.json
val jsonString = os.read(os.pwd / "src" / "main" / "resources" / "json1.json")
当我在 docker 容器中运行此代码时,它说
docker-project-auth-container | java.nio.file.NoSuchFileException: /opt/docker/src/main/resources/json1.json
问题是我怎样才能让我的代码在这种情况下工作
因为我需要继续使用 sbt 本机打包程序,所以它创建了我的项目 jar 并且工作目录是 /opt/docker
在 docker 容器中,我的项目的 shell 脚本驻留在由 docker 创建的位置
这里是sbt native-packager创建的docker文件
FROM openjdk:8 as stage0
LABEL snp-multi-stage="intermediate"
LABEL snp-multi-stage-id="cc5bb9ac-866b-4baa-98e1-c4541030c6ae"
workdir /opt/docker
copY opt /opt
USER root
RUN ["chmod","-R","u=rX,g=rX","/opt/docker"]
RUN ["chmod","u+x,g+x","/opt/docker/bin/myproject-auth"]
FROM openjdk:8
USER root
RUN id -u demIoUrgos728 1>/dev/null 2>&1 || (( getent group 0 1>/dev/null 2>&1 || ( type groupadd 1>/dev/null 2>&1 && groupadd -g 0 root || addgroup -g 0 -S root )) && ( type useradd 1>/dev/null 2>&1 && useradd --system --create-home --uid 1001 --gid 0 demIoUrgos728 || adduser -S -u 1001 -G root demIoUrgos728 ))
workdir /opt/docker
copY --from=stage0 --chown=demIoUrgos728:root /opt/docker /opt/docker
EXPOSE 8083
USER 1001:0
ENTRYPOINT ["/opt/docker/bin/myproject-auth"]
CMD []
json1.json 存在于 native-packager 创建的 jar 中,但它存在于 root 中,而不存在于 src/main/resources 中
opt/docker/ 包含两个文件夹 bin
和 lib
bin
包含 myproject-auth.sh
和 myproject-auth.bat
,lib
包含 myproject-auth.jar 和其他库依赖项
如何让我的代码在 docker 容器内工作
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)