Compose: Dockerfile усСкаСтся ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΡΡ‚Π²Π°Ρ…

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 31 Π΄Π΅ΠΊ. 2019  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: docker/compose

ОписаниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

условия

  1. Dockerfile Π²Π½Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° контСкста
  2. Π’ Dockerfile Π΅ΡΡ‚ΡŒ кирилличСскиС символы (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ нСлатинскиС символы, я полагаю)

Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

На docker-compose build Dockerfile, усСчСнный ΠΏΠΎ количСству кирилличСских символов Π² Π½Π΅ΠΌ.

НапримСр, Ссли Ρƒ мСня Π² Dockerfile Π΅ΡΡ‚ΡŒ 7 символов ΠΊΠΈΡ€ΠΈΠ»Π»ΠΈΡ†Ρ‹, послСдниС 7 символов ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° становятся Β«ΠΎΠ±Ρ€Π΅Π·Π°Π½Π½Ρ‹ΠΌΠΈΒ».

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ контСкстС (для ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ² ΠΎΠ± ΠΎΡˆΠΈΠ±ΠΊΠ°Ρ…)

Π’Ρ‹Π²ΠΎΠ΄ 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

Π’Ρ‹Π²ΠΎΠ΄ 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

Π’Ρ‹Ρ…ΠΎΠ΄ docker-compose config

see in the "steps to reproduce"

ДСйствия ΠΏΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ context (пустой), docker-compose.yml ΠΈ Dockerfile

docker-compose.yml

version: '3.7'

services:
  test-pass:
    build:
      context: .
      dockerfile: Dockerfile
  test-fail:
    build:
      context: context
      # path relative to the context
      dockerfile: ../Dockerfile

Dockerfile

FROM alpine

# шшш ΠΈ Ρ„Ρ„Ρ„

RUN touch test

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ 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

Π‘Ρ‚Ρ€ΠΎΠΊΠ° h test\n (7 символов) исчСзла.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Ссли Ρ„Π°ΠΉΠ» Dockerfile находится Π² ΠΏΠ°ΠΏΠΊΠ΅ контСкста (см. Π‘Π»ΡƒΠΆΠ±Ρƒ тСстирования).

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΈ использовании docker build .

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠžΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ - ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ созданноС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ использовании 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

Stacktrace / ΠΏΠΎΠ»Π½ΠΎΠ΅ сообщСниС ΠΎΠ± ошибкС

N/A

ВсС 3 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π·Π° сообщСниС ΠΎΠ± этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅ с Ρ‡Π΅Ρ‚ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·Ρ†ΠΎΠΌ Ρ€Π΅ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ ΠΈ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ расслСдованиС условий Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ. Π― ΠΈΡΡΠ»Π΅Π΄ΡƒΡŽ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π½Π΅Π΄Π΅Π»Π΅

Π’ качСствС ΠΎΠ±Ρ…ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΡƒΡ‚ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ собствСнный ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒ CLI, установив COMPOSE_DOCKER_CLI_BUILD=true (я оТидаю, Ρ‡Ρ‚ΠΎ это станСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ выпускС)

ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° (afaict) Π²Ρ‹Π·Π²Π°Π½Π° https://github.com/docker/docker-py/blob/master/docker/utils/build.py#L107 -L109

Π Π°Π·ΠΌΠ΅Ρ€ tar вычисляСтся ΠΊΠ°ΠΊ len(contents) == количСство символов, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ фактичСская запись tar устанавливаСтся contents.encode('utf-8') , ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ усСчСн, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ символы Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° N> 1 Π±Π°ΠΉΡ‚Π°.

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

29e7e280-0d1c-4bba-98fe-f7cd3ca7500a picture 29e7e280-0d1c-4bba-98fe-f7cd3ca7500a  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

AvdN picture AvdN  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

giggio picture giggio  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

leiblix picture leiblix  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

CrimsonGlory picture CrimsonGlory  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ