How to create the docker file of a maven java SE program?

0

Actually I wrote a maven java SE application using netbeans and made a CRUD for some entities that are persisted in the bank through JPA. I would like to know if it is possible to run a textual interface of this program in DOCKER
A web application I can do, create the application docker file and create the application database docker file.

But I would like to do a docker file for a maven javaSE application with a simple textual interface. To be quite simple I will put an example with two classes only:

import java.util.Scanner;

public class Principal {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        Elevador elevador = new Elevador(10, 6);

        int opcao = exibirMenu(in);
        while (opcao != 0) {
            switch (opcao) {

                case 1:

                    System.out.println("Andar Atual: " + elevador.getAndarAtual());
                    break;

                case 2:
                    if (elevador.entra() == false) {
                        System.out.println("Elevador está cheio!");
                    } else {
                        System.out.println("Foi inserido uma pessoa.");
                    }
                    break;

                case 3:

                    System.out.println("Estado do Elevador: \n");
                    System.out.println(elevador);
                    break;

                case 4:

                    System.out.println("Informe o andar:");
                    int andarSubir = in.nextInt();
                    if (elevador.sobe(andarSubir) == false) {
                        if (andarSubir < elevador.getAndarAtual()) {
                            System.out.println("Operação não realizada. Andar menor que o atual.");
                        } else {
                            System.out.println("andar inexistente!");
                        }
                    } else {
                        System.out.println("subiu para o " + andarSubir + "  andar.");
                    }

                    in.nextLine();
                    break;

                case 5:

                    System.out.println("Informe o andar:");
                    int andarDescer = in.nextInt();
                    if (elevador.desce(andarDescer) == false) {
                        if (andarDescer > elevador.getAndarAtual()) {
                            System.out.println("Operaçãoo não realizada. Andar maior que o atual.");
                        } else {
                            System.out.println("Você já está no térreo!");
                        }

                    } else {
                        System.out.println("desceu para o " + andarDescer + "o andar.");
                    }

                    in.nextLine();
                    break;

                case 6:
                    if (elevador.sai() == false) {
                        System.out.println("Elevador está vazio!");
                    } else {
                        System.out.println("Saiu uma pessoa");
                    }
                    break;

                default:
                    System.out.println("Opção Inválida. Enter para voltar ao Menu");
                    in.nextLine();
                    in.nextLine();
            }
            opcao = exibirMenu(in);
        }

        in.close();
    }

    private static int exibirMenu(Scanner in) {
        System.out.println("\nEscolha uma opção: \n 1 - Exibir o andar atual "
                + "\n 2 - Realizar a entrada de pessoas "
                + "\n 3 - Mostrar o estado do elevador "
                + "\n 4 - Subir "
                + "\n 5 - Descer"
                + " \n 6 -Realizar a saída de pessoas "
                + " \n 0 - Sair");
        int opcao = in.nextInt();
        return opcao;
    }

}

and the Elevator class:

public class Elevador {

    private int totalAndares, andarAtual, capacidade, qtdePessoas;

    public Elevador(int totalAndares, int capacidade) {
        this.totalAndares = totalAndares;
        this.andarAtual = 0;
        this.capacidade = capacidade;
        this.qtdePessoas = 0;
    }

    public boolean entra() {

        if (qtdePessoas < capacidade) {
            qtdePessoas++;
            return true;
        } else {
            return false;
        }
    }

    public boolean sai() {

        if (qtdePessoas > 0) {
            qtdePessoas--;
            return true;
        } else {
            return false;
        }

    }

    public boolean sobe(int andar) {

        if (andar < totalAndares && andar > 0 && andar > andarAtual) {
            andarAtual = andar;
            return true;
        } else {
            return false;
        }

    }

    public boolean desce(int andar) {

        if (andarAtual > 0 && andar < andarAtual) {
            andarAtual = andar;

            return true;
        } else {
            return false;
        }

    }

    public int getTotalAndares() {
        return totalAndares;
    }

    public void setTotalAndares(int totalAndares) {
        this.totalAndares = totalAndares;
    }

    public int getAndarAtual() {
        return andarAtual;
    }

    public void setAndarAtual(int andarAtual) {
        this.andarAtual = andarAtual;
    }

    public int getCapacidade() {
        return capacidade;
    }

    public void setCapacidade(int capacidade) {
        this.capacidade = capacidade;
    }

    public int getQtdePessoas() {
        return qtdePessoas;
    }

    public void setQtdePessoas(int qtdePessoas) {
        this.qtdePessoas = qtdePessoas;
    }

    public String toString() {

        return "Total de Andares: " + this.totalAndares + "\nAndar Atual: " + this.andarAtual
                + "\nCapacidade do Elevador: " + this.capacidade + "\nQuantidade de Pessoas no Elevador: " + this.qtdePessoas;

    }

}

How to build the application's docker file?

    
asked by anonymous 12.08.2016 / 22:03

1 answer

2

One solution would be:

Create a Dockerfile file with the following content:

FROM openjdk:7-jdk
ADD . /code
WORKDIR /code
RUN javac *.java
CMD java Principal

Command to generate image with name "test-java":

$ docker build -t test-java.

Command to run the generated bytecode:

$ docker run -it test-java

Result:

Escolha uma opção:
 1 - Exibir o andar atual
 2 - Realizar a entrada de pessoas
 3 - Mostrar o estado do elevador
 4 - Subir
 5 - Descer
 6 -Realizar a saída de pessoas
 0 - Sair
    
13.03.2017 / 08:18