لدي مثال كامل على الريبو هنا:
https://github.com/devinrsmith/docker-compose-build-test
إذا كنت أستخدم docker-compose build
بشكل غير صحيح ، فيرجى إبلاغي بذلك!
لديك مشكلة في تنسيق الملف.
في .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 الذي تم إصداره بالأمس:
يبدو أننا ما زلنا نواجه مشاكل مع .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
على كل شيء
.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)
ولا يزال الخطأ موجودًا.
أنا استخدم:
إصدار 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
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 وجميع المستخدمين أدناه ، الكثير من الوقت .
يسيء المستخدمون فهم الوثائق الحالية
أردت فقط إجراء 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=1
(و DOCKER_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
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
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
التعليق الأكثر فائدة
لماذا يعمل dockerignore مقابل
docker build -t subdir ../
لكن ليسdocker-compose build
؟