Openshift - posso executar comandos do cliente docker (como docker push) usando o Openshift?

Trabalhar com o Docker é fácil quando você tem um host do Docker. Você conecta o cliente Docker a um host (mecanismo) do Docker. Em seguida, o processo de criação e implantação de uma imagem de janela de encaixe (complexa) é como esta série de comandos em um servidor de construção Jenkins:

Maven clean install => cria seu arquivo WARDocker build => cria uma imagem Wildfly com o arquivo do aplicativo WAR neleTag do Docker => marca a nova imagemPush do Docker => envia a imagem para um hub do DockerO Docker run ==> instala e executa a imagem do Docker no host do Docker.

O Openshift Starter pode funcionar assim? A resposta: sim, esta opção Container como serviço (CAAS) é possível.

SOLUÇÃO COMPLETA:

Nas etapas abaixo, crio um projeto que consiste em 2 imagens: MySql e SpringBoot / Angular / Hibernate hospedado por um servidor Wildfly. Obviamente, isso também funciona para um aplicativo JAR do Spring Boot.

Você começa com um daemon Docker em execução local. Eu faço isso através do Docker Quickstart Terminal. Eu uso o minishift apenas para testes locais - portanto, não neste caso.

Passo 1: crie um projeto e 1 aplicativo MySql.

Isso pode ser feito sem a janela de encaixe através do console da web Openshift. Você também pode usar o comando oc new-proect.

Passo 2: faça login no projeto openshift. No console online, clique no ponto de interrogação na barra superior (à direita). Selecione as "ferramentas de linha de comando". Você pode copiar o comando de login para sua área de transferência através do ícone à direita.

$ oc login etc ... (primeiro ícone da área de transferência, cole o comando inteiro).

etapa 3: Faça login no seu registro no docker. Nesse caso, verifique o console online do openshift.

$ docker login -u `oc whoami` -p` oc whoami --show-token` registry.pro-us-east-1.openshift.com

AVISO: não use o número da porta como o sufixo openshift: 443 !!

Passo 4: Crie e identifique a imagem localmente ou no servidor de compilação (com Jenkins).

Instalação limpa do $ mvn - que cria o arquivo war. Você pode chamá-lo de 'ROOT.war'.

$ docker build -t myproject / mynewapplication: mais recente.

Tag $ docker myproject / mynewapplication registry.pro-us-east-1.openshift.com/myproject/mynewapplication

Se você escrever o nome incorreto, em um momento não poderá pressionar a imagem. Portanto, não (!) Escreva pro-us-east1. É pro-us-east-1, etc.

O Dockerfile está na pasta do projeto Maven. O arquivo docker pode ter a seguinte aparência:

FROM jboss/wildfly
COPY target/ROOT.war /opt/jboss/wildfly/standalone/deployments/
# CMD - use the default wildfly default start command

Uma maneira muito mais eficiente de memória é:

FROM openjdk:8-jdk-alpine
ENV JAVA_APP_JAR your.jar
ENV AB_OFF true
EXPOSE 8080
ADD target/$JAVA_APP_JAR /deployments/
CMD ["java","-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-jar","/deployments/your.jar"]

As últimas configurações melhorarão / equilibrarão tremendamente o uso de memória. No meu caso, reduzir o contêiner em execução de mais de 600 MB para cerca de 300 MB funcionando perfeitamente!

Etapa 5: Envie a imagem para o repositório Openshift interno

$ docker push registry.pro-us-east-1.openshift.com/myproject/mynewapplication

Etapa 6-A.1: Crie um aplicativo a partir de uma imagem do docker existente por meio do comando new-app. Faça isso apenas na primeira vez ao criar o aplicativo.

Minha nova aplicação $ oc

--> Found image 1233123223 (About an hour old) in image stream "myproject/mynewapplication" under tag "latest" for "mynewapplication"
... This image will be deployed in deployment config "mynewapplication"
--> Creating resources ...
    deploymentconfig "mynewapplication" created
    service "mynewapplication" created
--> Success
    Run 'oc status' to view your app. 

Etapa 6-A.2: Veja abaixo para inicializar as configurações. Ao implantar um aplicativo / servidor da web, crie uma 'rota' para que o cliente possa acessar o aplicativo. Como isso deve ser feito uma vez, a configuração através do console (Aplicativos> Rotas) é uma boa alternativa. Exemplo: disponibilize seu site apenas para https com o certificado padrão: (1) use a porta de destino 8080 (onde o servidor http está sendo executado), (2) marque a opção Rota segura, (3) mantenha a terminação TLS no Edge. (4) para tráfego inseguro, escolha a opção Redirecionar e ... crie sua rota. Aguarde um pouco e você tem um site HTTPS.

Etapa 6-B: Ao atualizar a imagem: Ao enviar uma imagem existente, não haverá uma reimplementação automática. Você pode iniciar uma nova implantação pelo console online ou pelo comando:

Lançamento do $ oc mais recente dc / mynewapplication-n myproject

Para verificar os resultados da implantação:

Status $ oc

Para verificar se, por exemplo, o contêiner MySql está em execução:

$ oc obter pods

Obtenha o nome do contêiner Mysql.

$ oc rsh nome-do-contêiner

E você verá se realmente pode acessar o banco de dados.

Observações: Observação para usar o Openshift Starter / Original: É bom que o Openshift nos permita experimentar a versão gratuita do Starter. Obviamente, há um conjunto de restrições ao uso dos recursos. Tome cuidado para definir a estratégia de implantação como "Recriar". A estratégia 'Rolling' é obviamente melhor, mas consome muito mais recursos. Defino o tamanho do recurso para a imagem do MySql normalmente para 420Mi e a imagem do Wildfly para 600Mi. Sugestões são bem-vindas!

questionAnswers(2)

yourAnswerToTheQuestion