由docker容器上传文件

时间:2018-05-02 11:10:54

标签: docker spring-boot dockerfile

我有一个春季启动应用程序。 Docker容器无权创建文件。

docker file:

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运行时,应用程序可以创建文件。

1 个答案:

答案 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目录( :)的右侧。您可以根据自己的方便更改这些目录。