chef-solo com docker: Impedir que os serviços sejam iniciados durante a compilação

1

Estou tentando reutilizar livros de receitas existentes em contêineres do Docker, mas a maioria das receitas iniciará o serviço durante a execução do cliente do chef (por exemplo, tomcat, apache2). Como chefe-solo funciona durante a criação da imagem, o chef simplesmente falhará.

Como posso evitar que um livro de receitas inicie um serviço?

Estou usando o seguinte Dockerfile

FROM jr42/chef-solo-centos

ADD chef /chef
RUN cd /chef && /opt/chef/embedded/bin/berks vendor /chef/cookbooks
RUN chef-solo -N mynode -c /chef/solo.rb -j /chef/solo.json

tomcat no meu runbook (solo.json):

{
  "tomcat": {
    "base_version": ""
  },
  "run_list": [ "recipe[tomcat]" ]
}

e Berksfile:

source "https://supermarket.getchef.com"
metadata
cookbook 'tomcat'
    
por jr42 23.09.2014 / 17:12

1 resposta

0

Parece que você está usando o livro de receitas com atributos não modificados, e o comportamento padrão do livro de receitas do tomcat é executar uma instância do tomcat base 'padrão'.

Consulte o recurso declarado aqui e o atributo definindo aqui .

Você deve poder atualizar seu solo.json para substituir esse atributo:

{
  "tomcat": {
    "base_version": "",
    "run_base_instance": false
  },
  "run_list": [ "recipe[tomcat]" ]
}

E você não deve ter o serviço iniciado automaticamente.

Como alternativa, você pode consultar a documentação do contêiner de chef e ver se isso mapeia um procedimento de criação melhor para seu aplicativo em container.

    
por 03.10.2014 / 15:45