Início
Versões
Imagens
Build
Trabalhando com projetos Multi-module
Início
O OpenShift fornece o S2I habilitado em imagens java para construir e rodar aplicações Java. O java S2I builder image usa o código da sua aplicação com as dependências requeridas para criar uma nova imagem contendo sua aplicação Java. Esta imagem pode ser executada pelo OpenShift ou pelo Docker. Esta imagem é recomendada para projetos baseados Maven (que são executadas via main class).
Versões
A versão atual suporta projetos até JDK 1.8 e Maven 3.3.x.
Imagens
Para usagem imagens, você pode acessar diretamente do registro de imagens, ou enviar seu registro Docker OpenShift. Adicionalmente, você pode criar uma image stream que aponte para a imagem, no seu registro Docker ou uma localização externa. Seus recursos do OpenShift agora podem referenciar o ImageStream. Você pode encontrar um exemplo de definições ImageStream para todas as imagens fornecidas do OpenShift.
Build
Temos 2 formas de fazer o build de sua aplicação, uma, que é a padrão, onde o pod vai baixar seus arquivos do repositório, compilar tudo dentro do POD e gerar o arquivo ".war", e a segunda opção que é você gerar o arquivo ".war" em seu computador e envia-lo na hora do build para o POD. Abaixo temos o passo-a-passo das duas formas.
Forma Padrão (1)
Por padrão o Java S2I builder image usa o Maven para construir o projeto com as seguintes opções:
$ mvn package dependency:copy-dependencies -Popenshift-DskipTests -e
Baseado nas configurações default, a imagem compila o projeto e copia todas as dependências no diretório de saída sem rodar nenhum teste. Adicionalmente, se o projeto tem um perfil chamado openshift, então ele é ativado para o build.
Você pode sobrescrever estas opções ao especificar as seguintes variáveis de ambiente:
Tabela 1. Variáveis de Ambiente Java
Nome da variável | Descrição | Exemplo |
MAVEN_ARGS | Os argumentos que são passados ao comando mvn. | Para empacotar e executar testes:
sti build -e "MAVEN_ARGS=clean test package" <git_repo_URL> fabric8/java-main <target_image_name>
|
JAVA_MAIN | Especifica a main class do projeto. Isso pode ser atingido através do arquivo .s2i/environment com a propriedade Maven dentro do projeto(docker.env.Main). |
Forma Binária (2)
Ao utilizar esta forma, o build será feito com os arquivos que estão em seu computador.
Passos:
1 -Gerar o arquivo .war em seu computador, lembrando de incluir o parâmetro "-Popenshift" no build do Maven (por exemplo "mvn clean package -Popenshif"). O arquivo ".war" será criado no diretório "target/".
1.1 - Opcional - Você pode adicionar o diretório "cfg" e "modules", para colocar os arquivos de configuração e módulos respectivamente.
2 - Editar o "BuildConfig" de sua aplicação na getup para utilizar o método binário:
2.1 - Necessário ter o Openshift CLI instalado, how-to
2.2 - Acessar seu projeto:
$ oc project <Seu Projeto>
2.3 - Criar sua aplicação java em nosso painel
2.4 - Editar o "BuildConfig" via linha de comando
$ oc edit bc/<Nome Da Aplicação>
Trocar:
source:
git:
uri: https://github.com/bparees/openshift-jee-sample.git
type: Git
Por isso:
source:
binary: {}
type: Binary
2.5 - Agora você pode enviar os arquivos de 2 formas diferentes:
2.5.1 - Enviar apenas o arquivo ".war":
$ oc start-build <Nome da Aplicação> --from-file=ROOT.war -F
OU
2.5.2 - Enviar um diretório com arquivos de conf, módulos e ".war":
- Criar os diretórios : deploy/cfg/
deploy/modules/
$ oc start-build <Nome da Aplicação> --from-dir=./deploy -F
Então seu terminal mostrará os logs de upload dos arquivos e build do POD.
Trabalhando com projetos Multi-module
Se um projeto Java tiver múltiplos Maven módulos, pode ser explicitamente especificado o diretório de saída, ou quais módulos para fazerem o build.
Para especificar quais módulos que vai ser feito o build em um projeto multi-module, com todas as dependências:
$ sti build -e "MAVEN_ARGS=install -pl <my.groupId>:<my.artifactId> -am" <git_repo_URL> fabric8/java-main <target_image_name>
Especificando o diretório onde o projeto Maven produz os artefatos ajuda o S2I na hora de coletar. Se não especificado, o default é o diretório sources/target/.
Para especificar um diretório de saída e quais módulos para fazer build e um projeto multi-module:
$ sti build -e "OUTPUT_DIR=<path/to/myartifact/target>,MAVEN_ARGS=install -pl <my.groupId>:<my.artifactId> -am" <git_repo_URL> fabric8/java-main <target_image_name>
Comentários
0 comentário
Por favor, entre para comentar.