Предоставление образа докера с помощью шеф-повара

Я пытаюсь создать образ докера, который снабжен шеф-поваром. У меня это работает со следующим рецептом Dockerfile и шеф-повара.

#Dockerfile
FROM centos:7
RUN yum install -y wget
RUN wget https://packages.chef.io/stable/el/7/chefdk-0.13.21-1.el7.x86_64.rpm
RUN yum install -y chefdk-0.13.21-1.el7.x86_64.rpm
COPY cookbooks cookbooks
RUN cd cookbooks/hs_price_verification && berks install && berks vendor cookbooks && chef-client -z --override-runlist hs_price_verification

#default.rb
include_recipe 'git'
package 'yum-utils'
execute 'yum --enablerepo=base clean metadata'
execute 'yum update -y || true'
execute 'yum-config-manager --enable cr'
domain=node['domainsname']

Однако, если я перенесу команду chef-client в отдельную строку RUN в Dockerfile

...
RUN cd cookbooks/hs_price_verification && berks install && berks vendor cookbooks
RUN chef-client -z --override-runlist hs_price_verification

я получаю сообщение об ошибке

================================================================================
Error Resolving Cookbooks for Run List:
================================================================================

Missing Cookbooks:
------------------
No such cookbook: git

Это похоже на то, что результаты «berks install && berks vendor cookbooks» доступны в той же строке Dockerfile, и когда я перемещаю команду, «кеш» теряется.

Кто-нибудь может объяснить?


person user1753106    schedule 12.05.2016    source источник


Ответы (1)


Docker запускает каждую RUN строку в своей команде, это означает, что cd из предыдущей строки не имеет там никакого эффекта.

person coderanger    schedule 12.05.2016