docker - Dockerignore:仅允许从任何子文件夹添加特定扩展名,例如* .json

标签 docker dockerfile

我有一个.dockerignore文件,并且我试图允许Docker仅上传*.json文件,但可以从任何子文件夹上传。

例如,对于下一个文件结构:

public/readme.md
public/subfolder/a.json
public/subfolder/b.json
public/other/c.json
public/other/file.txt

我期望在图像中仅看到json文件:
public/subfolder/a.json
public/subfolder/b.json
public/other/c.json

当然,它们必须位于与原始源相同的目录中。

我尝试了几种方法,但没有成功。

上:我不知道在public/目录中将创建多少个子文件夹,目录结构的深度。

最佳答案

我认为您可以依靠这样的.dockerignore来实现所需的目标:

public/*
!public/subfolder
public/subfolder/*
!public/other
public/other/*
!**/*.json

棘手的是,此文件的第一行是public/*,但不是public也不是*(否则,后续的!...行将不起作用)。

还请注意,您可能希望自动生成一个.dockerignore,以应对可能的树结构更改。

例如:

gen-dockerignore.sh



#!/usr/bin/env bash

{ echo '*' ;  # header of the .dockerignore - to be changed if need be
  find public -type d -exec echo -en "!{}\n{}/*\n" \; ;
  echo '!**/*.json' ; } > .dockerignore
$ ./gen-dockerignore.sh将输出以下文件:

.dockerignore



*
!public
public/*
!public/other
public/other/*
!public/subfolder
public/subfolder/*
!**/*.json

关于docker - Dockerignore:仅允许从任何子文件夹添加特定扩展名,例如* .json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52247595/

相关文章:

python - Docker 脚本无需再次构建即可更新文件

python - 尝试将 Python 与 Docker 集成。代码输入部分出错

r - 当 API 在 Docker 容器中运行时,如何使用 R Plumber 中创建的 API?

javascript - 使 Dockerfile VOLUME 表现得像 docker-compose volumes

kubernetes pod 内的 java 进程以 pid1 运行

docker - 如何订购 docker 容器启动?

基于 python 的 Dockerfile 抛出 locale.Error : unsupported locale setting

docker - 无法使用 dockerfile 在容器中移动文件

python - 在 Dockerfile 中设置别名不起作用 : command not found

postgresql - 扩展 docker 官方 postgres 镜像