使用Docker PHP CLI运行CSV转JSON代码后,如何获取生成的目标文件?
问题原因
你生成的target.json默认存储在Docker容器内部的/challenge/output/json/路径下,Docker容器的文件系统和Windows宿主机默认互相隔离,因此你无法直接在本机磁盘找到该文件。
解决方法
方法1:挂载宿主机目录(推荐,一劳永逸)
该方案可以让容器生成的文件直接同步到你的Windows本机,无需额外操作:
- 首先在你本机的项目根目录(存放Dockerfile、code.php的文件夹)下,提前创建好
input(存放source.csv)和output/json两个文件夹 - 正常构建镜像,命令为:
docker build -t csv-to-json .
- 运行容器时添加挂载参数,替换下方命令里的Windows项目路径为你自己的实际路径:
docker run -v C:\你的实际项目路径\output:/challenge/output csv-to-json
运行完成后,你直接打开本机项目下的output/json文件夹就能看到生成的target.json。
方法2:从已有容器拷贝文件(适合已经执行过容器的场景)
如果你已经跑完了容器还没销毁,可以直接把内部文件拷贝到本机:
- 执行命令查询所有容器记录,找到你刚才运行的对应容器ID:
docker ps -a
- 执行拷贝命令,替换容器ID和本机存储路径:
docker cp 你的容器ID:/challenge/output/json/target.json C:\你想存放的本机路径\target.json
补充说明
你也可以执行以下命令进入容器内部,确认文件是否正常生成:
docker run -it --entrypoint bash csv-to-json
进入容器后执行ls /challenge/output/json即可查看目录下的文件。
内容的提问来源于stack exchange,提问作者Adeel Tahir
相关产品推荐
相关产品推荐

