Sur docker-compose build
Dockerfile tronqué par la quantité de symboles cyrilliques qu'il contient.
Par exemple, si j'ai 7 symboles cyrilliques dans le Dockerfile, les 7 derniers symboles de la fin du fichier deviennent "coupés".
Sortie de 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
Sortie de 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
Sortie de docker-compose config
see in the "steps to reproduce"
Créez context
répertoire docker-compose.yml
et 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
Courir 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
La chaîne h test\n
(7 symboles) a disparu.
Ce problème n'apparaît pas si le Dockerfile est dans le dossier de contexte (regardez le service de test-pass).
Ce problème n'apparaît pas en utilisant docker build
.
Le résultat attendu est une image créée avec succès, comme en utilisant 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
merci d'avoir signalé ce problème avec un échantillon de reproduction clair et une enquête initiale sur les conditions de rupture. J'étudierai ce problème la semaine prochaine
Pour contourner le problème, vous pouvez activer le générateur CLI natif en définissant COMPOSE_DOCKER_CLI_BUILD=true
(je m'attends à ce que cela devienne la valeur par défaut dans une version future)
problème (afaict) est causé par https://github.com/docker/docker-py/blob/master/docker/utils/build.py#L107 -L109
La taille de tar est calculée comme len(contents)
== nombre de caractères, tandis que l'entrée tar réelle est définie par contents.encode('utf-8')
, qui sera ensuite tronquée car certains caractères seront codés sur N> 1 octets.