Criando um contêiner docker a partir de uma implementação capistrano

6

Estou com dificuldades para entender como posso aproveitar meu código de infraestrutura existente com o Docker.

Eu tenho um aplicativo Ruby on Rails que usa o Capistrano para implantar implantações. Eu quero usar este script capistrano para criar uma nova imagem docker. Eu posso enviar uma implantação e, em seguida, usar o implantado no diretório para implantar sobre uma imagem existente, preciso (já que isso corresponde ao meu sistema operacional de destino).

Seria essa a abordagem certa ou faltaria alguma coisa?

    
por EightyEight 05.03.2014 / 16:53

2 respostas

0

Normalmente, no Docker, a maneira preferida de implantar um aplicativo em um contêiner é por um dockerfile , que pode substituir o função de um script capistrano, principalmente executando comandos no container (instalar pacotes, executar git clone, iniciar serviços e aplicativos e assim por diante).

Você define um dockerfile com um contêiner de imagens de base e uma lista de comandos para executar e, em seguida, cria seu contêiner por:

docker build {{your_repository_containing_dockerfile}}

Assim, você pode traduzir seu script capistrano para um dockerfile e substituir a implantação do Capistrano pela implantação do Docker.

    
por 06.05.2015 / 19:53
0

@EightyEight

Estamos usando o docker e o Jenkins para fazer as implantações. Mantemos nosso código sempre fora da janela de encaixe até a hora em que queremos lançá-lo e executá-lo.

Você deve ter o Docker Image disponível em todos os servidores / instâncias onde deseja implantar o aplicativo.

Você deve fazer a implantação completa em duas etapas.

1) Tenha um emprego no Capistrano para construir um pacote (tar ou gz) para o tag / branch do seu aplicativo que você deseja implantar.

2) Tenha outro trabalho para realizar as implantações reais nas etapas a seguir:

i) Empurre o pacote para todos os servidores que você deseja implantar o aplicativo em & descompacte o pacote.

ii) Pare se algum contêiner já estiver sendo executado para o mesmo aplicativo e execute o contêiner com o contêiner apropriado e o código montado nele.

Por exemplo docker run -d -p 8000: 8000 -v / caminho / para / o / tag: / deployment / caminho / dentro / docker --name (NameOfContainer) --env TERM = accountid xterm / nome_da_imagem: versão

    
por 06.05.2016 / 15:56