If Dockerfile exists in same directory as service, we should not use it.

We should only use the Containerfiles/Dockerfiles found in the context
directory.

Fixes: https://github.com/containers/podman/issues/12054

[NO NEW TESTS NEEDED] It is difficult to setup a test for this in the
CI/CD system, but build tests should find if this PR broke anything.

Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
This commit is contained in:
Daniel J Walsh
2021-10-25 14:30:10 -04:00
parent dbe770e3ce
commit d6296c918d

View File

@ -151,22 +151,19 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
var m = []string{} var m = []string{}
if err := json.Unmarshal([]byte(query.Dockerfile), &m); err != nil { if err := json.Unmarshal([]byte(query.Dockerfile), &m); err != nil {
// it's not json, assume just a string // it's not json, assume just a string
m = append(m, query.Dockerfile) m = []string{filepath.Join(contextDirectory, query.Dockerfile)}
} }
containerFiles = m containerFiles = m
} else { } else {
containerFiles = []string{"Dockerfile"} containerFiles = []string{filepath.Join(contextDirectory, "Dockerfile")}
if utils.IsLibpodRequest(r) { if utils.IsLibpodRequest(r) {
containerFiles = []string{"Containerfile"} containerFiles = []string{filepath.Join(contextDirectory, "Containerfile")}
if _, err = os.Stat(filepath.Join(contextDirectory, "Containerfile")); err != nil { if _, err = os.Stat(containerFiles[0]); err != nil {
if _, err1 := os.Stat(filepath.Join(contextDirectory, "Dockerfile")); err1 == nil { containerFiles = []string{filepath.Join(contextDirectory, "Dockerfile")}
containerFiles = []string{"Dockerfile"} if _, err1 := os.Stat(containerFiles[0]); err1 != nil {
} else {
utils.BadRequest(w, "dockerfile", query.Dockerfile, err) utils.BadRequest(w, "dockerfile", query.Dockerfile, err)
} }
} }
} else {
containerFiles = []string{"Dockerfile"}
} }
} }