summaryrefslogtreecommitdiff
path: root/containerignore.5.md
diff options
context:
space:
mode:
authorCoprDistGit <infra@openeuler.org>2024-08-01 13:50:14 +0000
committerCoprDistGit <infra@openeuler.org>2024-08-01 13:50:14 +0000
commita7b070da3f7c537bae5eeb3cf0d236dd8640fc1e (patch)
tree756e04672089b21afa9f7330becc8f75f3c4d37d /containerignore.5.md
parent865d25d3f55c9264117653bc78695975fff558cd (diff)
automatic import of containers-commonopeneuler24.03_LTS
Diffstat (limited to 'containerignore.5.md')
-rw-r--r--containerignore.5.md87
1 files changed, 87 insertions, 0 deletions
diff --git a/containerignore.5.md b/containerignore.5.md
new file mode 100644
index 0000000..b26ef11
--- /dev/null
+++ b/containerignore.5.md
@@ -0,0 +1,87 @@
+% ".containerignore" "28" "Sep 2021" "" "Container User Manuals"
+
+# NAME
+
+.containerignore(.dockerignore) - files to ignore buildah or podman build context directory
+
+# INTRODUCTION
+
+Before container engines build an image, they look for a file named .containerignore or .dockerignore in the root
+context directory. If one of these file exists, the CLI modifies the context to exclude files and
+directories that match patterns specified in the file. This avoids adding them to images using the ADD or COPY
+instruction.
+
+The CLI interprets the .containerignore or .dockerignore file as a newline-separated list of patterns similar to
+the file globs of Unix shells. For the purposes of matching, the root of the context is considered to be both the
+working and the root directory. For example, the patterns /foo/bar and foo/bar both exclude a file or directory
+named bar in the foo subdirectory of PATH or in the root of the git repository located at URL. Neither excludes
+anything else.
+
+If a line in .containerignore or .dockerignore file starts with # in column 1, then this line is considered as a
+comment and is ignored before interpreted by the CLI.
+
+# EXAMPLES
+
+Here is an example .containerignore file:
+
+```
+# comment
+*/temp*
+*/*/temp*
+temp?
+```
+
+This file causes the following build behavior:
+Rule Behavior
+```
+# comment Ignored.
+*/temp* Exclude files and directories whose names start with temp in any immediate subdirectory of the root.
+For example, the plain file /somedir/temporary.txt is excluded, as is the directory /somedir/temp.
+*/*/temp* Exclude files and directories starting with temp from any subdirectory that is two levels below the
+root. For example, /somedir/subdir/temporary.txt is excluded.
+temp? Exclude files and directories in the root directory whose names are a one-character extension of temp. For example, /tempa and /tempb are excluded.
+```
+Matching is done using Go’s filepath.Match rules. A preprocessing step removes leading and trailing whitespace and
+eliminates . and .. elements using Go’s filepath.Clean. Lines that are blank after preprocessing are ignored.
+
+Beyond Go’s filepath.Match rules, Docker also supports a special wildcard string ** that matches any number of
+directories (including zero). For example, **/*.go will exclude all files that end with .go that are found in all
+directories, including the root of the build context.
+
+Lines starting with ! (exclamation mark) can be used to make exceptions to exclusions. The following is an example .containerignore file that uses this mechanism:
+```
+*.md
+!README.md
+```
+All markdown files except README.md are excluded from the context.
+
+The placement of ! exception rules influences the behavior: the last line of the .containerignore that matches a
+particular file determines whether it is included or excluded. Consider the following example:
+```
+*.md
+!README*.md
+README-secret.md
+```
+No markdown files are included in the context except README files other than README-secret.md.
+
+Now consider this example:
+```
+*.md
+README-secret.md
+!README*.md
+```
+All of the README files are included. The middle line has no effect because !README*.md matches README-secret.md and
+comes last.
+
+You can even use the .containerignore file to exclude the Containerfile or Dockerfile and .containerignore files.
+These files are still sent to the daemon because it needs them to do its job. But the ADD and COPY instructions do
+not copy them to the image.
+
+Finally, you may want to specify which files to include in the context, rather than which to exclude. To achieve
+this, specify * as the first pattern, followed by one or more ! exception patterns.
+
+## SEE ALSO
+buildah-build(1), podman-build(1), docker-build(1)
+
+# HISTORY
+*Sep 2021, Compiled by Dan Walsh (dwalsh at redhat dot com) based on docker.com .dockerignore documentation.