Q Application su container Docker

In questa pagina sono illustrati i passi principali per eseguire una QApplication all’interno di un container Docker basato su Debian10 tramite la Web UI che mostra l’interfaccia grafica attraverso un Web browser.

Impostazione

Per creare e provare il container è necessario installare Docker.

Una volta assicurato il corretto funzionamento di Docker, seguire i seguenti passi per lanciare una QApplication all’interno di un container:

  1. Creare un progetto con QStudio che utilizza solo Web presentation engine (rimuovere Native presentation engine).

  2. Esportare la QApplication in una cartella e selezionare la piattaforma Debian 64-bit.

  3. Creare una cartella e copiare al suo interno la cartella QApplication generata dal passo precedente.

  4. Creare il Dockerfile nella cartella creata nel passo precedente. Il file ha il seguente contenuto che può essere personalizzato eventualmente.

    FROM debian:10
    LABEL maintainer=youremail@company.com
    
    WORKDIR /app
    RUN chmod 777 /app
    
    RUN mkdir -p /app/QApplication
    ADD QApplication /app/QApplication/
    CMD /app/QApplication/QRuntime -c
    

    Questo file contiene una configurazione minima per eseguire una QApplication all’interno di un container. Inoltre, durante la fase di creazione del container la nostra QApplication viene anche copiata all’interno del container.

  5. Una volta creato il Dockerfile, lanciare i seguenti comandi da PowerShell:

    1. Creare l’immagine usando il seguente comando:

      docker build -t $imageTag .
      

      dove $imageTag indica il nome dell’immagine.

    2. Lanciare l’immagine in un container:

      docker run -p externalPort:InternalPort --name containerName image
      

      dove l’opzione -p permette di specificare una porta interna del container accessibile dall’esterno, ad esempio da web browser. Nel nostro caso InternalPortassume il valore della proprietà Porta impostata del Web presentation engine in QStudio. Invece, ExternalPortè una porta libera e disponibile sulla macchina in esecuzione.

  6. In base al protocollo selezionato (http, https) aprire una delle due seguenti pagine web:

    1. http://localhost:<externalPort>

    2. https://localhost:<externalPort>