Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30f6471666 |
@@ -7,7 +7,6 @@ import (
|
|||||||
"io/fs"
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/docker/docker/pkg/archive"
|
"github.com/docker/docker/pkg/archive"
|
||||||
"github.com/moby/patternmatcher"
|
"github.com/moby/patternmatcher"
|
||||||
@@ -42,11 +41,6 @@ func tarBuildContext(contextDir, dockerfile string) (io.ReadCloser, error) {
|
|||||||
// Dockerfile if there is one, otherwise from .dockerignore at the root of the
|
// Dockerfile if there is one, otherwise from .dockerignore at the root of the
|
||||||
// context. Without either file there are no patterns.
|
// context. Without either file there are no patterns.
|
||||||
func readDockerignore(contextDir, dockerfile string) ([]string, error) {
|
func readDockerignore(contextDir, dockerfile string) ([]string, error) {
|
||||||
// Docker reads the Dockerfile path as a path inside the build context:
|
|
||||||
// cleaned, with a leading / and any .. that would lead out of the context
|
|
||||||
// dropped, so ./Dockerfile and /Dockerfile both name the Dockerfile at the
|
|
||||||
// root.
|
|
||||||
dockerfile = strings.TrimPrefix(filepath.Join("/", dockerfile), "/")
|
|
||||||
if dockerfile == "" {
|
if dockerfile == "" {
|
||||||
dockerfile = defaultDockerfileName
|
dockerfile = defaultDockerfileName
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,38 +105,6 @@ func TestPerformBuildFollowsDockerignore(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestPerformBuildReadsDockerfilePathInsideContext checks that ./Dockerfile
|
|
||||||
// and /Dockerfile name the Dockerfile at the root of the context, as Docker
|
|
||||||
// reads them, so an ignore file that names the Dockerfile does not leave it
|
|
||||||
// out.
|
|
||||||
func TestPerformBuildReadsDockerfilePathInsideContext(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
for _, dockerfile := range []string{"./Dockerfile", "/Dockerfile"} {
|
|
||||||
t.Run(dockerfile, func(t *testing.T) {
|
|
||||||
t.Parallel()
|
|
||||||
|
|
||||||
contextDir := t.TempDir()
|
|
||||||
writeFiles(t, contextDir, map[string]string{
|
|
||||||
defaultDockerignoreName: "Dockerfile\nsecret.txt\n",
|
|
||||||
defaultDockerfileName: "",
|
|
||||||
testMainGo: "",
|
|
||||||
testSecretFile: "",
|
|
||||||
})
|
|
||||||
|
|
||||||
got, err := buildContextFiles(t, contextDir, dockerfile)
|
|
||||||
if err != nil {
|
|
||||||
t.Fatal(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
want := []string{defaultDockerignoreName, defaultDockerfileName, testMainGo}
|
|
||||||
if !slices.Equal(got, want) {
|
|
||||||
t.Errorf("build context holds %q, want %q", got, want)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// TestPerformBuildFailsOnMalformedDockerignore checks that a pattern the
|
// TestPerformBuildFailsOnMalformedDockerignore checks that a pattern the
|
||||||
// docker command line would reject fails the build.
|
// docker command line would reject fails the build.
|
||||||
func TestPerformBuildFailsOnMalformedDockerignore(t *testing.T) {
|
func TestPerformBuildFailsOnMalformedDockerignore(t *testing.T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user