我有一个春季启动应用程序。 Docker容器无权创建文件。
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD /build/libs/file-upload-service-2.0.0.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
docker build -t file-upload-service .
docker run -d --name file-upload-service -p 9104:9104 file-upload-service:latest
sudo chown -R root:docker /home/storage/
sudo chmod -R 777 /home/storage/
使用java -jar
运行时,应用程序可以创建文件。
答案 0 :(得分:3)
您希望Docker容器中的代码能够在主机的文件系统中找到一个文件。 docker容器完全包含(顾名思义)运行时环境,它有自己的文件系统,网络等。您不能直接从docker容器访问主机的文件系统,除非您有一些必要的配置(安装)在您的docker run ..
命令或撰写文件中。
您必须在Docker容器中安装卷/home/storage
才能从容器内读取/写入该位置。为此,在更改主机(您已经拥有)中的文件系统权限后,使用以下运行命令启动容器:
docker run -d --name file-upload-service -v /home/storage:/home/storage -p 9104:9104 file-upload-service:latest
上面命令中的 -v
标志告诉docker将主机的/home/storage
目录(:
的左侧)挂载到容器的/home/storage
目录( :
)的右侧。您可以根据自己的方便更改这些目录。