Normalmente para gerar uma imagem docker executável utilizamos o comando docker build, que copia o código fonte de nossa app para dentro de uma imagem preparada especialmente para a linguagem.
Deste padrão surge a necessidade de criar uma ferramenta que possa uniformizar o mecanismo de build entre diversas linguagens, oferecendo flexibilidade, reprodutibilidade, segurança e velocidade.
Abaixo disponibilizamos dois videos que introduzem o usuário ao mecanismo Source-to-Image (s2i para os íntimos) criado especialmente para suprir os propósitos acima.
Aqui na Getup Cloud utilizamos o S2I para permitir que nossos usuários rodem o mesmo ambiente de execução da produção no host de desenvolvimento local.
Experimente grátis em https://getupcloud.com.
S2I — Introdução
[embed]https://www.youtube.com/watch?v=mtSL3QWBli4[/embed]
Link para download: https://github.com/openshift/source-to-image/releases
Baixe o image-builder para sua linguagem:
$ sudo docker pull getupcloud/php-70-centos7
Algumas imagens populares:
getupcloud/php-70-centos7
centos/php-56-centos7
ryanj/centos7-s2i-nodejs:6
centos/python-27-centos7
centos/python-35-centos7
centos/ruby-23-centos7
getupcloud/dotnet-core-10-centos7
openshift/wildfly-100-centos7
Para criar sua imagem executável utilize o comando s2i:
$ sudo s2i build /seu/fonte/ getupcloud/php-70-centos7 blog
TIP: a flag — loglevel=[0–5] permite ajustar a quantidade de mensagens durante o build.
Sua imagem está pronta para execução:
$ sudo docker run -it — rm -p 8080:8080 blog
$ curl http://127.1:8080/
S2I — Hooks de build e execução
[embed]https://www.youtube.com/watch?v=K9xz2aBjkQk[/embed]
Crie o arquivo test.sh na raiz do repo com a lógica de testes para sua app.
$ mkdir -p .s2i/bin
$ cat > .s2i/bin/assemble <<EOF
source $STI_SCRIPTS_PATH/assemble
if [ -e ./test.sh ]; then
echo '---> Executando testes...'
bash ./test.sh
fi
EOF
$ git add .s2i/bin/assemble
$ git commit .s2i/bin/assemble -m 'Add assemble hook'
Ao fazer build o arquivo test.sh é executado. Se terminar com erro o script de build .s2i/bin/assemble também falha, interrompendo o build. Caso contrário, a nova imagem está pronta para executar.
Em breve teremos mais videos sobre essa ferramenta.
Até a próxima!
[embed]https://upscri.be/375ca4/[/embed]