在Docker上运行的Java应用程序中写入文件 背景

在Docker上运行的Java应用程序中写入文件 背景,java,maven,docker,Java,Maven,Docker,我正在尝试创建一个编译器web服务,这样用户就可以发布用我为其制作编译器的某种语言编写的代码,然后它将编译、运行并返回打印的结果。我的第二次迭代涉及使用Docker映像将发布的代码的运行隔离到正在运行的web服务器中 问题 我正在尝试将发布的代码写入文本文件以在其上运行编译器,但我的编译器在尝试创建文件时失败。我的文件路径应该是正确的,我的其他测试路径正在工作。下面是我尝试运行但失败的一些演示代码: try (Writer writer = new BufferedWriter(new Outp

我正在尝试创建一个编译器web服务,这样用户就可以发布用我为其制作编译器的某种语言编写的代码,然后它将编译、运行并返回打印的结果。我的第二次迭代涉及使用Docker映像将发布的代码的运行隔离到正在运行的web服务器中

问题 我正在尝试将发布的代码写入文本文件以在其上运行编译器,但我的编译器在尝试创建文件时失败。我的文件路径应该是正确的,我的其他测试路径正在工作。下面是我尝试运行但失败的一些演示代码:

try (Writer writer = new BufferedWriter(new OutputStreamWriter(
                new FileOutputStream("/raw/compile-source.slacc"), "utf-8"))) {
            writer.write(req.body());
        }
在我用来启动此操作的Dockerfile中,我已经创建了/raw目录(如果有必要的话)。我想象Docker不希望Java进程创建任意文件。有什么想法吗?下面是我的Dockerfile

我的Dockerfile
我有CMD和运行混乱。我只需要期末考试

mvn exec:java
在CMD块中,但需要运行其他块。这是我的最终输出。我也没有得到scala.:)


感谢大家的响应和帮助。

错误消息到底是什么?还有,你有没有试过Docker的不同机器?可能是具有不同发行版的VM。我经历了一些奇怪的错误,尤其是Ubuntu和
aufs
存储驱动程序(特别是Java)。今晚我将补充更多信息。我相信它会在打开的文件上失败,所以我想可能是权限不足,但今晚我会检查并验证这一点。您是否尝试在Docker之外运行此代码?我经常发现,在Java中调试这类代码时,在正在处理的路径/文件上注销getAbsolutePath()和getExists()之类的内容,以验证您是否相信Java看到的路径是存在的。尝试在CMD[“mkdir”、“/raw”]之后添加以下行:CMD[“chmod”、“a+w”、“/raw”]
mvn exec:java
FROM java:8

# Install Scala
ENV SCALA_HOME /usr/local/share/scala
ENV PATH $PATH:$SCALA_HOME/bin

ENV SCALA_VERSION 2.11.8

RUN wget --quiet http://downloads.lightbend.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz && \
tar -xf scala-$SCALA_VERSION.tgz && \
rm scala-$SCALA_VERSION.tgz && \
mv scala-$SCALA_VERSION $SCALA_HOME

# Install maven
RUN apt-get update
RUN apt-get install -y maven

WORKDIR /code

# Prepare by downloading dependencies
ADD pom.xml /code/pom.xml
RUN ["mvn", "dependency:resolve"]
RUN ["mvn", "verify"]

# Adding source, compile and package into a fat jar
ADD src /code/src
RUN ["mvn", "package"]

RUN ["java", "-version"]

RUN ["mkdir", "/raw"]
RUN ["chmod", "a+w", "/raw"]
RUN ["mkdir", "/classfiles"];
RUN ["mkdir", "/out"];
EXPOSE 4567
CMD ["mvn", "exec:java"]