背景
我正在尝试创建一个编译器Web服务,因此用户可以发布用我编写的某种语言编写的代码,然后它将编译,运行并返回打印结果.我的第二次迭代涉及使用Docker镜像来隔离POST进入我正在运行的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
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"]