在运行在Docker上的Java App中写入文件

背景

我正在尝试创build一个编译器Web服务,所以用户可以使用我编译的某种语言编写代码,然后编译,运行并返回打印结果。 我的第二个迭代涉及到使用Docker镜像来隔离正在运行的Web服务器中POST的代码的运行。

问题

我正在尝试将发布的代码写入一个文本文件来运行我的编译器,但是我的编译器在尝试创build文件时失败。 我的文件path应该是正确的,而我的其他testing路线正在工作。 这里是我试图运行一些演示代码,但失败:

try (Writer writer = new BufferedWriter(new OutputStreamWriter( new FileOutputStream("/raw/compile-source.slacc"), "utf-8"))) { writer.write(req.body()); } 

在我用来启动的Dockerfile中,我创build了/ raw目录。 我在想象Docker不希望Java进程创build任意文件。 有什么想法吗? 以下是我的Dockerfile。

我的Dockerfile

 FROM java:8 # 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"] CMD ["java", "-version"] CMD ["mkdir", "/raw"] CMD ["mkdir", "/classfiles"]; CMD ["mkdir", "/out"]; EXPOSE 4567 CMD ["mvn", "exec:java"] 

我有CMD和RUN困惑。 我只需要有最后的决定

 mvn exec:java 

在一个CMD块,但其他需要运行。 这是我的最终输出。 我也省略了scala。 🙂

 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"] 

感谢大家回应并帮助我。