Compose: إنشاء عامل بناء يتجاهل .dockerignore؟

تم إنشاؤها على ٢٦ يونيو ٢٠١٥  ·  100تعليقات  ·  مصدر: docker/compose

لدي مثال كامل على الريبو هنا:

https://github.com/devinrsmith/docker-compose-build-test

إذا كنت أستخدم docker-compose build بشكل غير صحيح ، فيرجى إبلاغي بذلك!

arebuild kinbug

التعليق الأكثر فائدة

لماذا يعمل dockerignore مقابل docker build -t subdir ../ لكن ليس docker-compose build ؟

ال 100 كومينتر

لديك مشكلة في تنسيق الملف.

في .dockerignore subdir/ إلى subdir .

لماذا يعمل dockerignore مقابل docker build -t subdir ../ لكن ليس docker-compose build ؟

أواجه نفس المشكلة أثناء تشغيل docker-compose 1.2.0.
يؤدي تشغيل برنامج vanilla docker build إلى سحب ملف التجاهل وإنشاء الصورة ، np هناك.
ومع ذلك ، فإن docker-compose لا يستخدم ملف التجاهل ، مع أو بدون الشرطة المائلة اللاحقة.

يبدو وكأنه قضية عامل ميناء ؛ يتم العمل على إصلاح في https://github.com/docker/docker-py/pull/604. وضع علامة على هذا على أنه خطأ لتذكيرنا بتحديث إصدار docker-py بمجرد انتهاء الإصلاح.

aanand تبدو مثل https://github.com/docker/docker-py/pull/604 متوقفة وتمت إزالتها من المعلم هناك؟

thaJeztah لقد أنشأت https://github.com/docker/docker-py/pull/721 لمواصلة العمل.

مرحبا،

أواجه مشكلة غريبة مع .dockerignore:

*.sh

!awesome/script.sh

مع بناء عامل الإرساء ، كل شيء على ما يرام ، لكن عامل عامل البناء لم يرى "رائع / script.sh"

هل أنا في نفس المشكلة؟

twillouer هذا خطأ معروف ، تم إصلاحه بواسطة https://github.com/docker/docker-py/pull/721 - سيتم إصلاحه في جانب الإنشاء في 1.5.0.

شكر !

لا يزال هذا يبدو أنه تم كسره حتى في أحدث إصدار من git master في بعض الأجهزة. إنه لا يعمل بالنسبة لي على جهاز بالنظر إلى هذا التكوين:

دبيان 8.2 مع kernel 3.16.0 مع إصدار lxc-docker 1.7.1 ، بناء 786b29d
docker-compose هو git master ، HEAD موجود على dabf1e8657674014a5bc89f99edbf2fe0629bb71

يعمل ملف .dockerignore بشكل جيد لبناء عامل الإرساء (الذي يتم تشغيله على الفور) ، ولكن ليس لـ docker-compose (الذي يقوم بتحميل الأشياء التي لا يجب تحميلها لعدة دقائق).

انظر أيضًا # 2100

لدي نفس المشكلة. يتجاهل عامل ميناء إنشاء ".dockerignore". "بناء عامل ميناء" يعمل بشكل جيد.
النظام: windows 10

أواجه نفس المشكلة باستخدام Docker Toolbox الذي تم إصداره بالأمس:

  • نظام التشغيل Windows 7 x64
  • إصدار Docker 1.9.0 ، بناء 76d6bc9
  • Docker-Compose 1.5.0.0 تحديث

يبدو أننا ما زلنا نواجه مشاكل مع .dockerignore . إذا كنت تواجه هذه المشكلات مع الإنشاء 1.5.0 ، فالرجاء تضمين نموذج .dockerignore وبنية الدليل حتى نتمكن من إعادة إنتاج الخطأ.

نأسف لعدم تقديم حالة استخدام أصغر ، ولكن هذه هي الطريقة التي لاحظت بها المشكلة:

لدي هذا package.json لمشروعي:

{
  "dependencies": {
    "grunt-contrib-uglify": "^0.9.2"
  }
}

بالإضافة إلى أن لدي هذا docker-compose.yml :

web:
  build: .

يبدو Dockerfile هكذا:

FROM node:0.12

يحتوي .dockerignore على سطر واحد (حاولت إضافة شرطة مائلة ، لكن المشكلة استمرت):

node_modules

الآن أستطيع أن أفعل

> npm install
  (...snip...)
> docker build .
Sending build context to Docker daemon  5.12 kB

رائع ، إنه يعمل ، يتم إرسال 5 كيلوبايت فقط ( node_modules ما يقرب من 10 MiB في المجموع). مع docker-compose في Q:\sites\test :

> npm install
  (...snip...)
> docker-compose up
Building web
Traceback (most recent call last):
  File "D:\opt\python\Scripts\docker-compose-script.py", line 9, in <module>
    load_entry_point('docker-compose==1.5.0dev', 'console_scripts', 'docker-compose')()
  File "D:\opt\python\lib\site-packages\compose\cli\main.py", line 54, in main
    command.sys_dispatch()
  File "D:\opt\python\lib\site-packages\compose\cli\docopt_command.py", line 23, in sys_dispatch
    self.dispatch(sys.argv[1:], None)
  File "D:\opt\python\lib\site-packages\compose\cli\docopt_command.py", line 26, in dispatch
    self.perform_command(*self.parse(argv, global_options))
  File "D:\opt\python\lib\site-packages\compose\cli\main.py", line 170, in perform_command
    handler(project, command_options)
  File "D:\opt\python\lib\site-packages\compose\cli\main.py", line 583, in up
    detached=detached
  File "D:\opt\python\lib\site-packages\compose\project.py", line 313, in up
    detached=detached
  File "D:\opt\python\lib\site-packages\compose\service.py", line 404, in execute_convergence_plan
    container = self.create_container(do_build=do_build)
  File "D:\opt\python\lib\site-packages\compose\service.py", line 303, in create_container
    self.ensure_image_exists(do_build=do_build)
  File "D:\opt\python\lib\site-packages\compose\service.py", line 326, in ensure_image_exists
    self.build()
  File "D:\opt\python\lib\site-packages\compose\service.py", line 718, in build
    dockerfile=self.options.get('dockerfile', None),
  File "D:\opt\python\lib\site-packages\docker\api\build.py", line 48, in build
    context = utils.tar(path, exclude=exclude, dockerfile=dockerfile)
  File "D:\opt\python\lib\site-packages\docker\utils\utils.py", line 85, in tar
    t.add(os.path.join(root, path), arcname=path, recursive=False)
  File "D:\opt\python\lib\tarfile.py", line 1998, in add
    tarinfo = self.gettarinfo(name, arcname)
  File "D:\opt\python\lib\tarfile.py", line 1870, in gettarinfo
    statres = os.lstat(name)
WindowsError: [Error 3] Das System kann den angegebenen Pfad nicht finden: 'Q:\\sites\\test\\node_modules\\grunt-contrib-uglify\\node_modules\\maxmin\\node_modules\\pretty-bytes\\node_modules\\meow\\node_modules\\normalize-package-data\\node_modules\\validate-npm-package-license\\node_modules\\spdx-correct\\node_modules\\spdx-license-ids\\spdx-license-ids.json'

(أنا أستخدم 1.5.0dev على هذا الجهاز ، لكنني واجهت نفس المشكلة بالضبط على جهازي الآخر مع 1.5.0 نهائي).

مع العقدة ، غالبًا ما أواجه مشكلات في المسارات الطويلة جدًا والأشياء على Windows ، لكن حقيقة أن Docker-Compose يحاول تشويه وحدات node_modules هو مؤشر على تجاهل .dockerignore .

FWIW ، ما زلت أواجه مشكلات مع هذا على Linux (Ubuntu) مع docker-compose 1.5.0dev ، لذلك ربما لا يكون منعزلًا عن Windows. ومع ذلك ، فهي على آلة إنتاج لذا لا يمكنني بسهولة تجميع الحد الأدنى من حالة الاختبار (إنها تعمل بشكل جيد على جهاز الاختبار الخاص بي).

أواجه هذه المسألة أيضا.

بنية الدليل:

docker-compose.yml
web
  + .dockerignore
  + Dockerfile
  + node_modules
    + ...

عامل الميناء يؤلف

web:
  build: web
  tty: true
  ports:
    - 8081:5000

ملف Dockerfile

FROM microsoft/aspnet

# Curl, node, npm, bower, grunt
RUN apt-get update && apt-get install -y curl
RUN curl -sL https://deb.nodesource.com/setup | bash -
RUN apt-get install -y nodejs
RUN npm install -g bower
RUN npm install -g grunt-bower-cli
RUN npm install -g grunt
RUN npm install -g grunt-cli
RUN npm install -g grunt-bower-task

# Copy the project.json file first, then do a restore.
# This ensures that as long as project.json doesn't change, it will avoid
# doing a package restore
COPY project.json /app/
COPY bower.json /app/
COPY gruntfile.js /app/
COPY package.json /app/
WORKDIR /app

RUN ["dnu", "restore"]

# Then copy the rest of the files
COPY . /app

# Expose the port that the website listens on
EXPOSE 5000
# And start the website
ENTRYPOINT ["dnx", "-p", "project.json", "web"]

.dockerignore

node_modules

نتيجة:

Pi<strong i="19">@Ricci</strong> MINGW64 /d/proj/Repro
$ docker-compose build
Building web
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "C:\projects\compose\compose\cli\main.py", line 54, in main
  File "C:\projects\compose\compose\cli\docopt_command.py", line 23, in sys_dispatch
  File "C:\projects\compose\compose\cli\docopt_command.py", line 26, in dispatch
  File "C:\projects\compose\compose\cli\main.py", line 171, in perform_command
  File "C:\projects\compose\compose\cli\main.py", line 192, in build
  File "C:\projects\compose\compose\project.py", line 235, in build
  File "C:\projects\compose\compose\service.py", line 683, in build
  File "c:\projects\compose\venv\lib\site-packages\docker\api\build.py", line 48, in build
  File "c:\projects\compose\venv\lib\site-packages\docker\utils\utils.py", line 85, in tar
  File "c:\python27-x64\Lib\tarfile.py", line 2000, in add
  File "c:\python27-x64\Lib\tarfile.py", line 1872, in gettarinfo
WindowsError: [Error 3] The system cannot find the path specified: 'D:\\proj\\Repro\\web\\node_modules\\babel-preset-react\\node_modules\\babel-plugin-transform-react-jsx\\node_modules\\babel-helper-builder-react-jsx\\node_modules\\babel-types\\node_modules\\babel-traverse\\node_modules\\babel-code-frame\\node_modules\\js-tokens\\changelog.md'
docker-compose returned -1

+1

هل وجد أي شخص حلاً؟ أحاول أن أفعل كل شيء في Dockerfile فقط ، لكن لم يحالفني الحظ حتى الآن.

أتلقى هذه المشكلة أيضًا ، هل يمكن أن تكون مرتبطة بإصدار العقدة الذي يعمل عليه الجميع؟ عبر هذه المشكلة: https://github.com/npm/npm/issues/3697 .. أتخيل أن ترقية العقدة (بشكل أكثر تحديدًا إلى npm 3+) ستصلحها ، ولكن هذا أكثر من خيار نووي ، ويجب أن يظل .dockerignore عمل.

مرة أخرى على الرغم من تجاهل هذا الأمر على ما يبدو ، إلا أنني أرى ذلك على جهاز Linux أيضًا.

لقد أصلحت هذه المشكلة عن طريق إزالة مرجع وحدة تخزين غير ضروري في ملف إنشاء عامل الإرساء. يتجاهل Compose .gitignore لوحدات التخزين.

اضطررت أيضًا إلى ترقية تطبيقي لاستخدام npm 3+ .. ولكن هذا قد ينطبق فقط على مستخدمي windows.

@ esc-rtn يحدد الملف .dockerignore الملفات التي لا يجب إرسالها إلى البرنامج الخفي أثناء _build_. إذا كنت تستخدم وحدة تخزين مُثبتة بربط أثناء "التشغيل" ، فسيتم ببساطة تحميل جميع الملفات الموجودة في هذا الموقع كوحدة تخزين (جميع الملفات الموجودة على المضيف).

أرى مشابهًا أيضًا ، على Windows: docker build يعمل كما هو متوقع ، docker-compose لا يعمل.

لقد وضعت مثالًا صغيرًا على GitHub ، مع ملاحظات في README.md: https://github.com/stekershaw/docker-compose-ignore

جولة أخرى من الإصلاحات لـ .dockerignore ذهبت إلى Docker-py بعد إصدار Compsoe 1.5.2. هل يمكنك تجربة إصدار Compose 1.6.0 RC2 لمعرفة ما إذا كان قد تم إصلاحه الآن؟

جربت للتو مع إصدار docker-compose 1.6.0rc2 ، وبناء a7636be.

لدي ثلاث حالات اختبار في الريبو الخاص بي وفشل 1.5.2 منها. الآن مع 1.6.0rc2 فشل واحد فقط ، عندما يكون لدي دليل وملف في الدليل مستبعدان ، مثل:

$ cat .dockerignore
files/test_dir
!files/test_dir/should_be_here_maybe

أحصل على نفس السلوك في هذه الحالة بين docker build و docker-compose build .

.dockerignore :

files/test_dir
!files/test_dir/should_be_here_maybe

docker-compose.yml :

test:
  build: .

Dockerfile :

FROM busybox
COPY . /context
CMD ["find", "/context"]
$ docker version
Client:
 Version:      1.10.0-rc1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   677c593
 Built:        Fri Jan 15 18:17:17 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.10.0-rc1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   677c593
 Built:        Fri Jan 15 18:17:17 2016
 OS/Arch:      linux/amd64

$ docker-compose version
docker-compose version 1.6.0rc2, build 695c692
docker-py version: 1.7.0-rc3
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1j 15 Oct 2014

$ mkdir -p files/test_dir
$ touch files/test_dir/should_be_here_maybe

$ find .
.
./.dockerignore
./docker-compose.yml
./Dockerfile
./files
./files/test_dir
./files/test_dir/should_be_here_maybe

$ docker build --no-cache -t 1607-docker-build .
Sending build context to Docker daemon  5.12 kB
Step 1 : FROM busybox
 ---> 0cb40641836c
Step 2 : COPY . /context
 ---> 859e12600100
Removing intermediate container 9067b263098b
Step 3 : CMD find /context
 ---> Running in 1ddc0a573492
 ---> b1b3beacf5f2
Removing intermediate container 1ddc0a573492
Successfully built b1b3beacf5f2

$ docker run 1607-docker-build
/context
/context/docker-compose.yml
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/.dockerignore

$ docker-compose build --no-cache
Building test
Step 1 : FROM busybox
 ---> 0cb40641836c
Step 2 : COPY . /context
 ---> d86507051d6d
Removing intermediate container 0af2cbf69b17
Step 3 : CMD find /context
 ---> Running in 8533dae3af74
 ---> 1f736ecb2b38
Removing intermediate container 8533dae3af74
Successfully built 1f736ecb2b38

$ docker-compose run test
/context
/context/docker-compose.yml
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/.dockerignore

مرحبًا aanand ، شكرًا لاستجابتك ، أحصل على نفس النتيجة كما

ومع ذلك ، فإن الاختبار الذي أجريته سابقًا كان يحتوي أيضًا على ملف آخر موجود في files / test_dir. إذا أضفت ملفًا آخر إلى الملفات / test_dir ، فأنا أرى أنه غير موجود (كما أتوقع) مع docker build ولكنه موجود مع docker-compose :

$ touch files/test_dir/should_not_be_here

$ docker build --no-cache -t 1607-docker-build .
Sending build context to Docker daemon  5.12 kB
Step 1 : FROM busybox
 ---> b175bcb79023
Step 2 : COPY . /context
 ---> a23d9645c21c
Removing intermediate container 8eb2bb23c4db
Step 3 : CMD find /context
 ---> Running in d9fef847acd8
 ---> e52ae84b1250
Removing intermediate container d9fef847acd8
Successfully built e52ae84b1250
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

$ docker run --rm 1607-docker-build
/context
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/docker-compose.yml
/context/.dockerignore

$ docker-compose build --no-cache
Building test
Step 1 : FROM busybox
 ---> b175bcb79023
Step 2 : COPY . /context
 ---> 9df0cf4bfb69
Removing intermediate container 7820f982d59e
Step 3 : CMD find /context
 ---> Running in 06e1a0b89a45
 ---> 2c922dbc66d9
Removing intermediate container 06e1a0b89a45
Successfully built 2c922dbc66d9

$ docker-compose run test
ERROR: Interactive mode is not yet supported on Windows.
Please pass the -d flag when using `docker-compose run`.

$ docker-compose run -d test
dcitest_test_run_2

$ docker logs dcitest_test_run_2
/context
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_not_be_here
/context/files/test_dir/should_be_here_maybe
/context/docker-compose.yml
/context/.dockerignore

هذا هو Windows (باستخدام git bash كصدفة) ، تم التحقق منه باستخدام Docker compose 1.5.2 و 1.6.0rc2 ، docker 1.9.1.

تشغيل نفس الشيء على Ubuntu 14.04 مع docker-compose 1.5.2 و docker 1.9.1 جيد:

# cat .dockerignore
files/test_dir
!files/test_dir/should_be_here_maybe

# find .
.
./.dockerignore
./docker-compose.yml
./files
./files/test_dir
./files/test_dir/should_not_be_here
./files/test_dir/should_be_here_maybe
./Dockerfile

# docker-compose build --no-cache
Building test
Step 1 : FROM busybox
 ---> b175bcb79023
Step 2 : COPY . /context
 ---> c533a0768d5e
Removing intermediate container 0c057fe8eb82
Step 3 : CMD find /context
 ---> Running in e8a0cf1f58d8
 ---> 175777486a25
Removing intermediate container e8a0cf1f58d8
Successfully built 175777486a25

# docker-compose run test
/context
/context/docker-compose.yml
/context/.dockerignore
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/Dockerfile

ما زلت أتعامل مع هذا معظم بعد الظهر.

إصدار Docker 1.10.1 ، الإصدار 9e83765
إصدار docker-compose 1.6.0 ، بناء d99cad6

#docker-compose.yml
test:
  build: ./cdn
#Dockerfile
FROM busybox
COPY ["content/","/test/"]
RUN find /test/ -maxdepth 1
#.dockerignore
**/.DS_Store
**/.git
**/.bowerrc
**/bower_components
**/node_modules
**/npm-debug.log

الإخراج كما هو متوقع مع docker build .

نسخ docker-compose build --no-cache test على كل شيء

2992 لديه المزيد من الإصلاحات .dockerignore التي يجب تضمينها في 1.6.1

شكرًا @ shin- ، للأسف ما زلت أرى سلوكًا مختلفًا مع docker-compose 1.6.2 من Docker Toolbox for Windows:

$ docker-compose --version
docker-compose version 1.6.2, build e80fc83

$ find .
.
./.dockerignore
./docker-compose.yml
./Dockerfile
./files
./files/test_dir
./files/test_dir/should_be_here_maybe
./files/test_dir/should_not_be_here

$ cat .dockerignore
files/test_dir
!files/test_dir/should_be_here_maybe

$ docker-compose build --no-cache
Building test
Step 1 : FROM busybox
latest: Pulling from library/busybox
f810322bba2c: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:97473e34e311e6c1b3f61f2a721d038d1e5eef17d98d1353a513007cf46ca6bd
Status: Downloaded newer image for busybox:latest
 ---> 3240943c9ea3
Step 2 : COPY . /context
 ---> 85a65d7f861c
Removing intermediate container 386d3103d8ab
Step 3 : CMD find /context
 ---> Running in e5e29b5746c4
 ---> 2c2d57a899ea
Removing intermediate container e5e29b5746c4
Successfully built 2c2d57a899ea

$ docker-compose run -d test
dcitest_test_run_1

$ docker logs dcitest_test_run_1
/context
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here_maybe
/context/files/test_dir/should_not_be_here
/context/.dockerignore
/context/docker-compose.yml

هذا غريب جدا. بالتأكيد يعمل بالنسبة لي.

$ docker-compose build --no-cache
Building web
Step 1 : FROM busybox
 ---> 3240943c9ea3
Step 2 : COPY . /context
 ---> 3619871879ad
Removing intermediate container 08432f688579
Step 3 : CMD find /context
 ---> Running in 5bbcf987c9e7
 ---> cf2bff2c1416
Removing intermediate container 5bbcf987c9e7
Successfully built cf2bff2c1416

$ docker-compose run -d web
Creating network "testdockerignore_default" with the default driver
testdockerignore_web_run_1

$ docker logs testdockerignore_web_run_1 
/context
/context/Dockerfile
/context/files
/context/files/test_dir
/context/files/test_dir/should_be_here
/context/docker-compose.yml
/context/.dockerignore

$ find .
.
./Dockerfile
./files
./files/test_dir
./files/test_dir/should_not_be_here
./files/test_dir/should_be_here
./docker-compose.yml
./.dockerignore

$ cat .dockerignore files/test_dir
!files/test_dir/should_be_here

ما هو ناتج pip show docker-py في بيئتك؟

أعتقد أن لدي نفس المشكلة أيضًا.

 Docker build .

يعمل لدي. ومع ذلك ، فإن إرفاق نفس البنية في ملف docker-compose.yml يكسر بنائي. في ملف .dockerignore الخاص بي ، أستبعد دليل node_modules لبناء العقدة الخاصة بي. هذا هو القسم المناسب من docker-compose.yml الخاص بي:

web:
  build: ./app
  ports:
    - "8080:8080"
  links:
    - mongodb

أعتقد أنني أقوم بتشغيل أحدث إصدار من إنشاء عامل ميناء:

>docker-compose version
docker-compose version 1.6.2, build e80fc83
docker-py version: 1.7.2
CPython version: 2.7.11
OpenSSL version: OpenSSL 1.0.2d 9 Jul 2015

أنا أقوم بتشغيل Windows 10 ، x64.

مشكلة خاصة بـ WIndows ، ربما مع فواصل المسار؟

لا أعرف كيف تعرف ما إذا كان هذا متعلقًا بفواصل المسار.

اسمحوا لي أن أعرف إذا كان بإمكاني المساعدة في الاختبار أو غير ذلك. في الوقت الحالي ، لدي ملف دفعي ينقل المجلدات "المتجاهلة" من دليل المشروع قبل الإنشاء ، ومن الواضح أنه قبيح.

شكرا لمساعدتك.

من أجل الاكتمال ، هذا هو ملف .dockerignore الخاص بي:

**/node_modules

آها! إنه نمط الكرة الأرضية الذي يسبب المشكلة. أدت إزالة "** /" إلى إصلاح المشكلة بالنسبة لي.

بينما لدي حل بديل لمشكلتي المحددة ، تظل الحقيقة أن هناك خطأ. على الأقل ، لا يتم تحليل نمط الكرة الأرضية ** / بشكل صحيح باستخدام عامل الإرساء ، ولكنه يعمل بشكل جيد مع أمر إنشاء عامل الإرساء العادي. قد تعمل أو لا تعمل أنماط الكرة الأرضية الأخرى.

bfirsh وكل شخص آخر قد يهتم:

لديّ ملف .dockerignore بسيط للغاية يبدو كالتالي:

livedata
readonly-data

لا يعمل ملف .dockerignore أيضًا (يتم تحميل هذين المجلدين الموجودين في مجلد سياق الإنشاء إلى البرنامج الخفي ويستغرق الأمر _ إلى الأبد_) وأنا على نظام Linux . لقد قمت بالتحديث فقط إلى الإصدار الحالي 1.6.2 ، بدون تغيير. ما لم أشاهد مشكلة مختلفة بنفس العَرَض ، اسمحوا لي أن أكرر _ مرة أخرى_ أن هذه لا يبدو أنها مشكلة خاصة بـ windows ..

+1 ، معطلة أيضًا بالنسبة لي على Linux - لا تعتقد أنها مشكلة خاصة بنظام windows.

JonasTnicbarker كيف تحميل المجلدات المسماة في .dockerignore ، بخلاف حقيقة أنها تستغرق وقتًا طويلاً؟ إذا كانت لديك طريقة للتحقق من كرة القطران ، فأود أن أحاول استخدامها لإعادة إنتاج المشكلة محليًا. كما هو ، لقد أضفت بعض التصحيح إلى docker-py وما زلت غير قادر على إعادة إنتاج:

$ pip list | grep docker
docker-compose (1.7.0.dev0, /Users/aanand/work/docker/compose)
docker-py (1.8.0rc2, /Users/aanand/work/docker/docker-py)

$ find .
.
./.dockerignore
./docker-compose.yml
./Dockerfile
./include.txt
./livedata
./livedata/exclude.txt
./readonly-data
./readonly-data/exclude.txt

$ cat .dockerignore
livedata
readonly-data

$ cat Dockerfile
FROM busybox
COPY . /data

$ docker-compose --verbose build --no-cache
<unrelated output>
docker.utils.utils.tar: Writing tar file to <open file '<fdopen>', mode 'w+b' at 0x1090f26f0>
docker.utils.utils.tar:   Adding .dockerignore
docker.utils.utils.tar:   Adding Dockerfile
docker.utils.utils.tar:   Adding docker-compose.yml
docker.utils.utils.tar:   Adding include.txt
docker.utils.utils.tar: Done
<unrelated output>

aanand يستغرق وقتًا طويلاً حقًا قبل أن يبدأ ، وعندما أنقل Dockerfile إلى ./context واستخدم "build: ./context/" دون أي تغيير آخر ، يكون الأمر سريعًا على الفور. في ذلك الوقت أيضًا عندما ظهرت هذه المشكلة لأول مرة ، حاولت إنشاء عامل ميناء يدويًا باستخدام "إنشاء عامل ميناء" وكان أيضًا فوريًا.

هذا لا يؤكد المشكلة حقًا. إذا كان هناك دليل كبير آخر في جذر المشروع ، فإن نقل الإصدار إلى ./context سيجعله أسرع.

dnephin ، لا توجد مجلدات أخرى هناك باستثناء "

JonasT هل من الممكن أن يكون لديك دليل كبير .git تضمينه؟

تحرير: NVM ، يبدو أنني كنت غبيًا بما يكفي لتفويت دليل لأنني تحققت من نسخة خاطئة من rsync'ed .> آسف يا شباب ..

لقد واجهت بالفعل مشكلة في هذا الأمر منذ فترة على إصدار أقدم من إنشاء عامل الإرساء حيث قمت بالتحقيق فيه بعمق أكبر ، ولكن ربما تم إصلاح هذا المثال المحدد الذي قمت به بالفعل مع بعض تحديثات dockerpy الأخيرة.

العودة إلى هذا كونه مشكلة ويندوز؟ :)

مرحبا،
لدي لينكس ، يؤلف 1.6.2 ، عامل ميناء 1.10.3 ... بالضبط نفس المشكلة. يستخدم عامل الإرساء .dockerignore ، ويتجاهله الإنشاء.

ulrichSchreiner هل يمكنك تقديم خطوات لإعادة الإنتاج؟

مرحبا،

إليك جوهر (https://gist.github.com/ulrichSchreiner/566815cea26ce55b95207e7795cf6962). يحتوي .dockerignore على **/node_modules يقوم Dockerfile بإضافة ملف في مجلد فرعي t1/a/b/c/node_modules .

إذا قمت ببناء هذا باستخدام "docker build ..." فسوف تحصل على خطأ لأنه لا يوجد ملف لإضافته (يتم تجاهله بشكل صحيح بسبب النمط الموجود في .dockerignore ). يمكنك رؤية الإخراج في الملف الأخير للجوهر.

ولكن إذا قمت بإنشائه باستخدام "docker-compose.yml" المحدد ، فإنه يتم إنشاؤه بنجاح -> يتجاهل عامل البناء إنشاء ملف .dockerignore .

وهذا أمر مؤلم حقًا عندما يكون دليلك node_modules مئات الميجات ....

أنا أستعمل

docker-compose version 1.6.2, build 4d72027

حسنًا ، يمكنني إعادة إنتاج هذا. يبدو أن docker-py's ربما حصلت على خطأ بقواعد **/ .

IIRC ، عدم وجود دعم لبناء جملة ** هو قيد معروف لتطبيقنا .dockerignore . انظر https://github.com/docker/docker-py/pull/721#issuecomment -135065043

نفس المشكلة هنا. يتم تجاهل .dockerignore عند استخدامه مع تكوين عامل الإرساء
docker-compose version 1.6.2, build 4d72027 OSX

./.dockerignore
./Dockerfile (symlink to ./server/docker/cms/Dockerfile)
./server/docker/docker-compose.yml

محتويات dockerignore

./.git
./.vagrant

.vagrant هو 16 جيجابايت ، لذا فهذه "صفقة كبيرة" بالنسبة لنا.

آسف،

docker-machine version 0.7.0, build a650a40

docker-compose version 1.7.0, build 0d7bf73
docker-py version: 1.8.0
CPython version: 2.7.9
OpenSSL version: OpenSSL 1.0.1j 15 Oct 2014

Client:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Tue Apr 26 23:44:17 2016
 OS/Arch:      darwin/amd64

Server:
 Version:      1.11.1
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   5604cbe
 Built:        Wed Apr 27 00:34:20 2016
 OS/Arch:      linux/amd64

lattwood يبدو وكأنه خطأ - لقد https://github.com/docker/docker-py/pull/1065. في الوقت الحالي ، يمكنك إزالة ./ الرائد من أنماطك ويجب أن تعمل.

شكر!

يعمل على Ubuntu 14.04 ، فإن dockerignore هو ببساطة **/always_restart.txt . في docker build (الإصدار 1.11.2) العادي ، لا أرى الملف في الحاوية ، ولكن مع الإنشاء (v1.7.1) ، أفعل ذلك.

Edit1: يبدو أن docker-py لا يختبر تدوين النجمة المزدوجة وأعتقد أنه من المحتمل ألا يتعامل معها أيضًا: https://github.com/docker/docker-py/blob/1.9. 0-release / tests / unit / utils_test.py # L721

تحرير 2: استخدام النمط */tmp/always_restart.txt يعمل مع Compose ، لذلك يتم تجاهل النمط ** تحديدًا

@ agilgur5 صحيح ، هذه مشكلة معروفة في docker-py. لقد أنشأت https://github.com/docker/docker-py/issues/1117 لتتبعه.

حلنا القبيح في DOCKERFILE:
باستخدام git-check-ignore للتحليل (وبالتالي نحتاج git init ) ، نحذف كل شيء يجب تجاهله بعد النسخ.
ملاحظة ، في حالتنا التي يجب أن تكون بعد كل COPY s (أو ADD s) ، وإلا حصلنا على الملفات غير المرغوب فيها مرة أخرى.

RUN mkdir /app/
WORKDIR   /app/
# ...
# all the COPYs
# ...
RUN git init
COPY ./.dockerignore /app/
RUN mv .dockerignore .gitignore
RUN DEL_ME=$(find . -print0 | xargs -0) && echo Forcing deletion of .dockerignore files && git check-ignore --no-index $DEL_ME > tmp.txt
RUN DEL_ME=$(cat tmp.txt | xargs) && echo DELETING: $DEL_ME tmp.txt && rm -f -d -r $DEL_ME tmp.txt

لإزالة الملفات أيضًا من .gitignore (لماذا لا)

COPY ./.gitignore      /app/
COPY ./.dockerignore   /app/
RUN DEL_ME=$(find . -print0 | xargs -0) && echo gitignore && git check-ignore --no-index $DEL_ME > tmp.txt
RUN rm .gitignore && mv .dockerignore .gitignore
RUN DEL_ME=$(find . -print0 | xargs -0) && echo dockerignore && git check-ignore --no-index $DEL_ME >> tmp.txt
RUN DEL_ME=$(cat tmp.txt | xargs) && echo DELETING: DEL_ME tmp.txt && rm -f -d -r $DEL_ME tmp.txt

أعتقد أنه وجدت حلاً لهذا باستخدام أحجام البيانات في docker-compose.yml ، من خلال سرد أدلة الحاوية التي لا تريد الكتابة فوقها. في حالتنا ، أردنا الاحتفاظ بالدليل node_modules في الحاوية.

لذلك ، يبدو docker-compose.yml كما يلي:

  my_app:
    build: ./my_app
    volumes:
      - ./my_app:/app
      # prevent the mounting above from overwriting the following
      - /app/node_modules

قيمة volumes تكرر ما هو موجود في .dockerignore لكنها تجعلنا نذهب الآن ...

لدي اقتراح عالي المستوى لهذه المشكلة:

أوصي بإعادة صياغة هذه المشكلة إلى شيء مثل ، "[مشكلة التعريف]: معالجة غير صحيحة لقواعد .dockerignore" (أو "[مشكلة التعقب]: معالجة غير صحيحة ...") ، أو ببساطة إغلاق هذه المشكلة لصالح مجموعة من القضايا الأصغر والأكثر قابلية للتنفيذ. هذا لأن (1) ليس أن Docker "يتجاهل" ملف .dockerignore (وهو ما يقوله عنوان المشكلة حاليًا). إنه ببساطة لم يطبق القواعد بشكل صحيح. و (2) ، هناك عدد من الأجزاء لهذه القضية. هذه ليست قضية واحدة فقط. على سبيل المثال ، هناك هذا (معالجة ** ) وهذا الجديد الذي قدمته للتو (أسبقية السطر الأخير). وقد يكون هناك المزيد.

نظرًا لأن خيط المشكلة هذا طويل جدًا (لأنه يغطي منطقة مشكلة واسعة) ، يصعب تحديد موقع المشكلات الفردية التي تحتاج إلى حل داخل سلسلة الرسائل. على عكس مشكلة ".dockerignore لا يبدو أنها تعمل" العامة ، أقترح حفظ مشكلات محددة جيدًا يمكن حلها بشكل منفصل. كما تمت صياغته حاليًا ، قد لا يتم إغلاق هذه المشكلة أبدًا لأن تطبيق Python قد لا يكون له تكافؤ مع التنفيذ المرجعي.

لقد استخدمت **/**/node_modules لكنني اكتشفت أن هذا لا يعمل. لذلك حددت كل دليل node_modules في مشاريعي الفرعية لإصلاح هذا الخطأ.

قبل هذا الإصلاح العاجل ، كان لدي "خطأ الوصول الصحيح" عند تثبيت تبعيات npm لأنها كانت موجودة بالفعل (بسبب النسخ باستخدام ملف dockerignore لا يعمل).

نفس المشكلة.

macOS Sierra 10.12.2
إصدار Docker 1.12.5 ، الإصدار 7392c3b
إصدار docker-compose 1.9.0 ، بناء 2585387

يجب إصلاح مشكلة النمط ** في 1.11.2
هناك مشكلات معلقة محتملة مثل تلك التي لها أسبقية في السطر الأخير ، والتي يتم تعقبها بشكل منفصل في # 3931 و # 3886. يرجى الرجوع إلى هؤلاء لمزيد من التحديثات.

لست متأكدًا مما إذا كان عامل الإرساء يتجاهل .dockerignore أم أنه يفشل في تفسيره بشكل صحيح (على عكس عامل الإرساء الذي يعمل بشكل جيد). هذه هي الطريقة التي هبطت بها هنا: http://stackoverflow.com/questions/42883596/equivalent-builds-dont-behave-the-same

وإليك ملفي .dockerignore (في حال كان بإمكانك تحديد المشكلة):

$ cat .dockerignore 
*
!www
!app
!inc
*/node_modules
*/bower_components
**/*.log
**/Dockerfile
**/.gitignore

يبدو أن ملفي docker-compose build يتجاهل ملف .dockerignore تمامًا.
docker build يعمل كما هو متوقع.

$ docker-compose version                                                                                                                       
docker-compose version 1.14.0, build c7bdf9e
docker-py version: 2.3.0
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t  3 May 2016

يبدو .dockerignore هكذا

.bundle
.git
.gitignore
test
tmp
log

لذلك لا يوجد شيء مميز هنا.
أنا أستخدم Ubuntu 16.04 ولكني لا أعرف ما إذا كان ذلك مهمًا.

راجع للشغل: هل يمكن لشخص أن يشرح ، لماذا لا يستخدم docker-compose build نفس الكود مثل docker build لإنشاء صورة باستخدام Dockerfile وكل هذه الأشياء؟ لماذا يوجد تكرار واضح للرمز (لا يعمل جيدًا كما تظهر هذه المشكلة)؟

لماذا تم اغلاق هذه القضية وكيف نعيد فتحها؟ البرنامج مكسور بشكل واضح ويحتاج إلى الإصلاح

آه. شكرا شين. سعيد أنه سيتم معالجتها

لقد قرأت المسألتين # 3931 و # 3886 كما هو مقترح ، لكن dockerignore الخاص بي ليس خاصًا ، لذلك لم أتمكن من تعيين مشكلتي بالضبط.
أنا لا أعمل على الإطلاق من أجلي ولا يهم ، ماذا يوجد في .dockerignore الخاص بي.

غبي جدًا ، لقد كان خطأي.: وجه غريب:
لقد قمت بتركيب الكود الخاص بي كمجلد لذلك من الواضح أنه لا يوجد شيء تم تجاهله. اسف على ذلك.

app:
  build: .
  container_name: my_app
  volumes:
    - .:/my_app

هذا يبدو دون حل؟

version: '3.4'
services:
  ui:
    build:
      context: ./source/ui
      dockerfile: Dockerfile
      target: development
    command: bash -c "yarn dev"
    ports:
      - '9091:9091'
      - '9092:9092'
    expose:
      - '9091'
      - '9092'
    volumes:
      - ./source/ui:/app
      - node-modules:/app/node_modules

    environment:
      - PORT=9091
      - HMR_PORT=9092
      - NODE_ENV=development
      - API_HOST=api.docker:7001

volumes:
  node-modules:

in source/ui/.dockerignore:

node_modules
حي
""

ولكن ينتهي الأمر بإنشاء كلا المجلدين على أي حال ...

كان لي نفس المشكلة. فقط عندما لاحظت أنني أستخدم إصدارًا قديمًا. تم التحديث إلى docker-compose version 1.22.0-rc1, build e7de1bc3 .

المشكلة هي أن نسخة التأليف التي تم شحنها مع debian / ubuntu قديمة جدًا.

الآن يعمل بشكل أفضل ، لكنه لا يزال مختلفًا مثل docker build

هذا لا يزال دون حل. تشغيل Docker لنظام التشغيل Mac ، أحدث إصدار (Docker 18.03.1-ce-mac65).

.dockerignore الخاص بي:

**/package-lock.json
**/node_modules

ولكن كلاهما يتم تمريرهما إلى الحاوية عند استخدام عامل البناء.

https://github.com/docker/docker-py/pull/2065 موجود في 1.22.0 RC2 ويجب أن يعالج ذلك.

أنا أستخدم Docker لنظام التشغيل Mac الإصدار 18.06.1-ce-mac73 (26764) ولا يزال الخطأ موجودًا.

image

أنا استخدم:

إصدار docker-compose 1.22.0، build f46880f
إصدار Docker 18.06.1-ce ، بناء e68fc7a

يعمل على Ubuntu 16.04 ، يتجاهل Xenial و docker-compose build ما يلي .dockerignore:

**/*.jpg **/*.png **/*.pyc **/*.solverstate **/*.caffemodel **/*.tgz **/.pytest_cache **/*__pycache__* **/.git **/node_modules *.egg-info .eggs *Dockerfile* build dist
نظرًا لأنه من المفترض الآن تفسير العلامات النجمية المزدوجة ، لا أعرف ما هو السبب. أي شخص لديه نفس المشكلة؟

نظرًا لأنه من المفترض الآن تفسير العلامات النجمية المزدوجة ، لا أعرف ما هو السبب. أي شخص لديه نفس المشكلة؟

أواجه نفس المشكلة (مع **/.tox ).

كان لي نفس القضية. أنا أستخدم سياقات مختلفة.
يتم وضع docker-compose.yml على مسار جذر التطبيق ويبدو مثل

services:
  api:
    build:
      context: ./docker/api

شجرة ملفاتي:

- app/
-- docker/
--- api/
---- .dockerignore <- it works!
-- docker-compose.yml
-- .dockerignore <- it does not work for contexts

أتمنى لك نهارا سعيد!

@ zymtx5g79k هذا لا يعمل بالنسبة لي.

بنية الدليل:

- .dockerignore
- docker/
-- development/
--- docker-compose.yml  

عامل ميناء compose.yml

version: '3'
services:
  web:
    build:
      context: ../../.

rodrigobdz ، تحقق من فضلك:
docker-compose.yml :

services:
  api:
    build:
      context: ./../../
version: '3'

.dockerignore :

/docker

هيكل الملفات :

- docker/
-- api/
--- docker-compose.yml
- .dockerignore

لا تزال النتيجة نفسها ، الدليل .git موجود في الحاوية على سبيل المثال. سوف أنشر هنا .dockerignore الخاص بي. ربما لديها بعض المشاكل نفسها.

# Custom
docker-compose.yml
docs/
livereload.js*
yarn-error.log
v8-compile-cache-0
# vim
*.swp

.git
.gitignore
README.md

rodrigobdz لست قادرًا على إعادة

تحضير الاختبار

mkdir repro-1607 && cd repro-1607
mkdir -p docker/development/
mkdir -p ./.git/this-is-a-git-repo
echo "this is README.md" > README.md

cat > docker/development/docker-compose.yml -<<EOF
version: '3'
services:
  web:
    build:
      context: ../../.
EOF

cat > ./.dockerignore -<<EOF
# Custom
docker-compose.yml
docs/
livereload.js*
yarn-error.log
v8-compile-cache-0
# vim
*.swp

.git
.gitignore
README.md
EOF

cat > Dockerfile -<<EOF
FROM alpine
RUN apk add --no-cache tree
COPY . /foobar/
CMD tree -a /foobar/
EOF

بناء باستخدام عامل البناء ؛

cd docker/development/
docker-compose build --no-cache

Building web
Step 1/4 : FROM alpine
 ---> 11cd0b38bc3c
Step 2/4 : RUN apk add --no-cache tree
 ---> Running in 8767bc07dad9
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/1) Installing tree (1.7.0-r1)
Executing busybox-1.28.4-r0.trigger
OK: 5 MiB in 14 packages
Removing intermediate container 8767bc07dad9
 ---> 3916d3b689bb
Step 3/4 : COPY . /foobar/
 ---> 76ab68d75f88
Step 4/4 : CMD tree -a /foobar/
 ---> Running in 9891624b3cab
Removing intermediate container 9891624b3cab
 ---> d22b81d149f2
Successfully built d22b81d149f2
Successfully tagged development_web:latest

والتحقق من عدم إضافة المحتوى ؛

docker run --rm development_web:latest
/foobar/
├── .dockerignore
├── Dockerfile
└── docker
    └── development
        └── docker-compose.yml

2 directories, 3 files

الآن ، قم بإعادة تسمية .dockerignore وقم بإجراء الإنشاء مرة أخرى ؛

mv ../../.dockerignore ../../.dockerignore.disabled
docker-compose build --no-cache

Building web
Step 1/4 : FROM alpine
....

تحقق من عدم تجاهل المحتوى وإضافته إلى الصورة:

docker run --rm development_web:latest
/foobar/
├── .dockerignore.disabled
├── .git
│   └── this-is-a-git-repo
├── Dockerfile
├── README.md
└── docker
    └── development
        └── docker-compose.yml

4 directories, 4 files

(تحرير: الإخراج المحدث للتشغيل الأول ، حيث نسيت تشغيل tree مع -a في المرة الأولى)

thaJeztah شكرًا لأخذ الوقت الكافي للنظر فيه. لقد وجدت المشكلة.

تشبه حالة الاستخدام الخاصة بي الحالة الموضحة في https://github.com/docker/compose/issues/2098#issue -108463351. أستخدم الأمر COPY في Dockerfile الخاص بي بالإضافة إلى ذلك ، قم بتحميل نفس الدليل كوحدة تخزين .

كنت أتوقع أن يتم تطبيق الاستثناءات في .dockerignore على وحدة التخزين ، كما هو موضح في https://github.com/docker/compose/issues/2098#issuecomment -143505943.

كنت أتوقع أن يتم تطبيق الاستثناءات في .dockerignore على المجلد ، كما هو موضح في # 2098 (تعليق).

لا ، عند ربط مسار من المضيف ، لن يكون عامل الإرساء "في منتصف" ذلك ؛ على نظام Linux ، يتم تحميل هذا الدليل حرفيًا من المضيف داخل الحاوية. على Docker Desktop (Docker for Mac / Windows) ، هناك بعض "السحر" الإضافي المتضمن لجعل هذه الملفات متاحة داخل الجهاز الظاهري حيث يتم تشغيل البرنامج الخفي (والحاوية) ، ولكنه في الأساس يقوم بنفس الشيء كما هو الحال في Linux بعد ذلك.

يستخدم .dockerignore أثناء الإنشاء فقط ، وكان مخصصًا لتسريع الإنشاءات ؛ لمنع الاضطرار إلى إرسال الملفات إلى البرنامج الخفي الذي لم يتم استخدامه / مرغوب فيه في الصورة.

شكرا على التوضيح! أعتبر أن هذا التفسير يجب أن يكون في المستندات لتجنب المزيد من سوء الفهم في المجتمع. حاليًا ، تركز الوثائق بشكل أكبر على كيفية تجاهل الملفات بدلاً من نطاق .dockerignore نفسه.

هذه الصفحة من الوثائق تصف Dockerfile و docker build ؛ من هذا المنظور أتساءل عما إذا كان من المنطقي وصف أنه لا يعمل مع أوامر / استخدامات أخرى.

حسنًا ، إذا كان مصدرًا مشتركًا لسوء الفهم ، ومن الواضح أنه كذلك ، فمن المنطقي بالتأكيد ذكره هناك.

كانت جملة واحدة في التوثيق ستوفر لنا thaJeztah وجميع المستخدمين أدناه ، الكثير من الوقت .


يسيء المستخدمون فهم الوثائق الحالية

العدد 1607

1607

العدد 2098

2098

أردت فقط إجراء 1+ لهذه المشكلة.

أنا أقوم بتشغيل docker-copose: 1.23.2 (أحدث ما يمكن أن أجده بين Homebrew و PIP)
نظام التشغيل: Mac OS 10.14.2

لا يزال يتجاهل ملف .dockerfile الخاص بي أثناء البناء. سوف تضطر إلى نسخ الأشياء بشكل صريح في هذه الأثناء.

لقد أصلحت هذه المشكلة عن طريق إزالة مرجع وحدة تخزين غير ضروري في ملف إنشاء عامل الإرساء. يتجاهل Compose .gitignore لوحدات التخزين.

تم إصلاح هذا الأمر بالنسبة لي - سيتجاهل عامل الإرساء ملف .dockerignore في وحدة تخزين محمولة.

xvrqt لقد أهدرت ساعات على الأرجح خلال الأسبوع الماضي بسبب وجود أخطاء عشوائية مع عدم نسخ ملف التكوين الخاص بي بشكل صحيح (من المفترض أن تقوم عملية الإنشاء بنسخه ولكن تم حظره بواسطة ملف dockerignore الذي لم يتم استخدامه). هذا شيء لا يصدق.

شكرا لتسليط الضوء على ذلك.

مرحبا! ما هي حالة هذا؟ لقد أعددت سيناريوهات docker-compose.yml البسيطة جدًا التي لا تتضمن وحدات تخزين ومع ذلك فشلت في التقاط .dockerignore عند البناء من git repo عن بعد.

https://github.com/LocoDelAssembly/docker-compose-dockerignore

هل الخطأ الذي أواجهه في الفرع الرئيسي متوقع؟ أي حلول أخرى غير بناء الصورة ووضع علامات عليها باستخدام عامل إرساء الفانيليا ثم استخدامها في docker-compose.yml؟

شكر

أي حلول أخرى غير بناء الصورة ووضع علامات عليها باستخدام عامل إرساء الفانيليا ثم استخدامها في docker-compose.yml؟

إذا كنت تقوم بتشغيل الإصدار الحالي من الإنشاء ، فيمكنك استخدام خيارات COMPOSE_DOCKER_CLI_BUILD=1DOCKER_BUILDKIT=1 ) لإنشاء عامل الإرساء باستخدام docker build الأصلي.

يبدو أن المثال الخاص بك مختلف عن المثال الذي تمت مناقشته هنا ، لذلك قد يكون من الجيد فتح تذكرة جديدة (إذا لم يكن هناك شيء لذلك حتى الآن)

شكراthaJeztah! يعمل مع COMPOSE_DOCKER_CLI_BUILD=1 ، لكن إذا أضفت أيضًا DOCKER_BUILDKIT=1 فإنه يفشل (لسبب غير ذي صلة).

https://travis-ci.org/LocoDelAssembly/docker-compose-dockerignore/builds/658351109

حسنًا ، أظن أن هذا خطأ في إصدار عامل التحميل الذي يعمل هناك ؛ يعد عامل الإرساء 18.06 قديمًا جدًا (وموسوعة الحياة) ؛ يحتوي هذا الإصدار من docker على إصدار مبكر جدًا من BuildKit ، والذي لم يكن مستقرًا بعد.

""
=> خطأ [داخلي] تحميل البيانات الوصفية لـ docker.io/library/alpine:3.9.5 0.1s
218 => خطأ [1/5] من docker.io/library/alpine: 3.9.5 0.0 ثانية
219 => => حل docker.io/library/alpine:3.9.5 0.0s
220 ------
221> [داخلي] تحميل البيانات الوصفية لـ docker.io/library/alpine:3.9.5:
222 ------
223 ------
224> [1/5] من docker.io/library/ alpine : 3.9.5 :
225 ------
226 فشل في الحل باستخدام الواجهة الأمامية dockerfile.v0: فشل في بناء LLB: فشل تحميل مفتاح ذاكرة التخزين المؤقت: docker.io/library/ alpine : 3.9.5 غير موجود

أوه ، حسنًا ، أرى أن ترافيس الخاص بك يقوم بتثبيت عامل إرساء أيضًا (القراءة من هاتفي) ؛ هل هذا يحل محل الإصدار المثبت مسبقًا؟ إذا أضفت خطوة docker info و docker version بعد التثبيت ، فهل تُظهر الإصدار الصحيح (19.03.x) من عامل الإرساء المراد تثبيته؟

ها هو https://travis-ci.org/LocoDelAssembly/docker-compose-dockerignore/builds/658435194

ملخص

إصدار عامل ميناء لكل من الإنشاءات الفاشلة

$ docker version
Client: Docker Engine - Community
 Version:           19.03.7
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        7141c199a2
 Built:             Wed Mar  4 01:22:36 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Server: Docker Engine - Community
 Engine:
  Version:          19.03.7
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       7141c199a2
  Built:            Wed Mar  4 01:21:08 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

الناتج docker info كبير بعض الشيء لذا لا يشمل ، لكن Server Version: 19.03.7

إصدارات عامل ميناء

DOCKER_COMPOSE_VERSION = 1.26.0-rc2

$ docker-compose version
docker-compose version 1.26.0-rc1, build 07cab513
docker-py version: 4.2.0
CPython version: 3.7.6
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

(الإصدار المبلّغ عنه خاطئ ، إنه rc2 ، تجزئة البناء تطابق rc2)

DOCKER_COMPOSE_VERSION = 1.25.4

$ docker-compose version
docker-compose version 1.25.4, build 8d51620a
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

لا يزال الإصدار موجودًا في 19.03.8.

لا يزال الإصدار موجودًا في 19.03.8.

صيح. تم أيضًا تحديث الريبو التجريبي الخاص بي بأحدث إصدارات 1.25 و 1.26 docker-compose ولكن جميعها لا تزال على النحو الموضح في https://github.com/LocoDelAssembly/docker-compose-dockerignore

أنشئ مكانًا يمكن العثور فيه على نفس النوع من المعلومات التي قمت بلصقها أعلاه: https://travis-ci.org/github/LocoDelAssembly/docker-compose-dockerignore/builds/673393656

لديك نفس المشكلة هنا ، .dockerignore لا يعمل بطريقة موثوقة مع docker-compose

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات