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:
Creare un progetto con QStudio che utilizza solo Web presentation engine (rimuovere Native presentation engine).
Esportare la QApplication in una cartella e selezionare la piattaforma Debian 64-bit.
Creare una cartella e copiare al suo interno la cartella
QApplicationgenerata dal passo precedente.Creare il
Dockerfilenella 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.
Una volta creato il Dockerfile, lanciare i seguenti comandi da PowerShell:
Creare l’immagine usando il seguente comando:
docker build -t $imageTag .dove
$imageTagindica il nome dell’immagine.Lanciare l’immagine in un container:
docker run -p externalPort:InternalPort --name containerName image
dove l’opzione
-ppermette di specificare una porta interna del container accessibile dall’esterno, ad esempio da web browser. Nel nostro casoInternalPortassume il valore della proprietà Porta impostata del Web presentation engine in QStudio. Invece,ExternalPortè una porta libera e disponibile sulla macchina in esecuzione.
In base al protocollo selezionato (
http,https) aprire una delle due seguenti pagine web:http://localhost:<externalPort>https://localhost:<externalPort>