Além do Source to Image, o Openshift permite realiza o build de Dockerfile
para você. Basta adicionar o seu Dockerfile
em um repositório git e informar ao Openshift que iremos utilizar a estratégia de build do tipo docker. Para esse exemplo, iremos utilizar o mesmo repositório criado no lab anterior conforme exemplo abaixo**:**
https://github.com/<seu-usuario>/workshop-ocp.git
Vamos criar um Dockerfile com base na imagem oficial do PHP para Openshift. É importante salientar que, existem boas práticas na construção de imagens Docker e também em imagens para o Openshift.
Abaixo segue o conteúdo do arquivo:
FROM registry.access.redhat.com/rhscl/php-70-rhel7
RUN echo "<h1>Meu Dockerfile</h1>" > /opt/app-root/src/index.php
CMD ["container-entrypoint", "/usr/libexec/s2i/run"]
O conteúdo do arquivo fica assim:
E commita ele
Nosso repositório agora tem um novo arquivo:
Também podemos salvar esse arquivo com nome de Dockerfile na raiz do nosso git executando:
git add Dockerfile
git commit -m "Dockerfile adicionado"
git push
Para criar uma aplicação com base no Dockerfile, precisamos executar o seguinte comando:
oc new-app \
--name=dockerfile-app \
--strategy=docker \
https://github.com/<seu-usuario>/workshop-ocp.git
Para saber o nome do seu projeto no Openshift, basta executar:
oc get projects
O valor default para o parametro strategy é source. Isso indica que, por padrão, o Openshift irá analisar o repositório git tentando compilar o código fonte da aplicação e usar o source-to-image. No nosso caso, queremos que ele use somente o Dockerfile e ignore o código fonte. Por isso informamos o parametro --strategy=docker
Assim que executamos o comando, o Openshift inicia o novo build.
Na versão 3.7 do Openshift, o build é mostrado conforme imagem abaixo:
A diferença desse build para o source-to-image executando anteriormente, é que nesse caso o Openshift está construindo nossa imagem Docker usando Dockerfile. Se acessarmos o log do build, podemos ver ae execução do nosso código.
Para finalizar, crie uma rota no Openshift para podermos acessar nossa aplicação:
oc expose svc dockerfile-app
Remova o arquivo Dockerfile do repositório Git para evitar que os próximos labs uttilizem o build com estratégia Docker!
Vamos apagar nossa aplicação criada com base no Dockerfile. Dessa forma, deixaremos nosso Openshift limpo, organizado e pronto para o próximo lab.
oc delete all -l app=dockerfile-app -n <nome do seu projeto do openshift>