Auf docker-compose build
Dockerfile, abgeschnitten durch die Anzahl der darin enthaltenen kyrillischen Symbole.
Wenn ich zum Beispiel 7 kyrillische Symbole in der Docker-Datei habe, werden die letzten 7 Symbole am Ende der Datei "abgeschnitten".
Ausgabe von docker-compose version
docker-compose version 1.25.0, build unknown
docker-py version: 4.1.0
CPython version: 3.8.1
OpenSSL version: OpenSSL 1.1.1d 10 Sep 2019
Ausgabe von docker version
Client:
Version: 19.03.5-ce
API version: 1.40
Go version: go1.13.4
Git commit: 633a0ea838
Built: Fri Nov 15 03:19:09 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 19.03.5-ce
API version: 1.40 (minimum version 1.12)
Go version: go1.13.4
Git commit: 633a0ea838
Built: Fri Nov 15 03:17:51 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.3.2.m
GitCommit: d50db0a42053864a270f648048f9a8b4f24eced3.m
runc:
Version: 1.0.0-rc9
GitCommit: d736ef14f0288d6993a1845745d6756cfc9ddd5a
docker-init:
Version: 0.18.0
GitCommit: fec3683
Ausgabe von docker-compose config
see in the "steps to reproduce"
Erstellen Sie das Verzeichnis context
(leer), docker-compose.yml
und Dockerfile
version: '3.7'
services:
test-pass:
build:
context: .
dockerfile: Dockerfile
test-fail:
build:
context: context
# path relative to the context
dockerfile: ../Dockerfile
FROM alpine
# шшш и ффф
RUN touch test
Führen Sie docker-compose build test-fail
docker-compose build test-fail
Building test-fail
Step 1/2 : FROM alpine
---> cdf98d1859c1
Step 2/2 : RUN touc
---> Running in fc83cc1f2b69
/bin/sh: touc: not found
ERROR: Service 'test-fail' failed to build: The command '/bin/sh -c touc' returned a non-zero code: 127
Die Zeichenfolge h test\n
(7 Symbole) wurde verschwunden.
Dieses Problem tritt nicht auf, wenn sich die Docker-Datei im Kontextordner befindet (siehe Test-Pass-Dienst).
Dieses Problem tritt bei Verwendung von docker build
.
Das erwartete Ergebnis ist ein erfolgreich erstelltes Bild, z. B. mit docker build
:
docker build -f Dockerfile context
Sending build context to Docker daemon 1.583kB
Step 1/2 : FROM alpine
---> cdf98d1859c1
Step 2/2 : RUN touch test
---> Using cache
---> bb6362bff392
Successfully built bb6362bff392
N/A
Vielen Dank, dass Sie dieses Problem mit einem eindeutigen Reproduktionsmuster und einer ersten Untersuchung der Bruchbedingungen gemeldet haben. Ich werde dieses Problem nächste Woche untersuchen
Um dieses Problem zu umgehen, können Sie den nativen CLI-Builder aktivieren, indem Sie COMPOSE_DOCKER_CLI_BUILD=true
festlegen (ich gehe davon aus, dass dies in einer zukünftigen Version zum Standardwert wird).
Das Problem (afaict) wird durch https://github.com/docker/docker-py/blob/master/docker/utils/build.py#L107 -L109 verursacht
Die Teergröße wird berechnet als len(contents)
== Zeichenanzahl, während der tatsächliche Teereintrag durch contents.encode('utf-8')
, der dann abgeschnitten wird, wenn einige Zeichen auf N> 1 Byte codiert werden.