使用Dockerfile构建qt5镜像并创建容器运行qt5应用

这几天在Docker容器上安装qt5时各种碰壁,留个记录方便回看。

编写Dockerfile脚本

FROM yutianchi/11.2.1-cudnn8-runtime-ubuntu18.04-conda:1.0.0
USER root
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list
RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 'A4B469963BF863CC'


RUN  apt-get update
ENV  TIME_ZONE Asia/Shanghai
ENV  DEBIAN_FRONTEND=noninteractive
ENV  LIBGL_ALWAYS_INDIRECT=1

RUN  apt-get install      ffmpeg  -y
RUN  apt-get install      libgl1-mesa-glx -y
RUN  apt-get install      libxss1 -y
RUN  apt-get install      libappindicator1 -y
RUN  apt-get install      libindicator7 -y
RUN  apt-get install      libjpeg8-dev -y
RUN  apt-get install      libpng-dev -y
RUN  apt-get install      libtiff5-dev -y
RUN  apt-get install      zlib1g-dev -y
RUN  apt-get install      libleptonica-dev -y
RUN  apt-get install      libtesseract-dev -y
RUN  apt-get install      tesseract-ocr -y
RUN  apt-get install      fonts-liberation -y
RUN  apt-get install      libappindicator3-1 -y
RUN  apt-get install      libasound2 -y
RUN  apt-get install      libnspr4 -y
RUN  apt-get install      libnss3 -y
RUN  apt-get install      xdg-utils -y
RUN  apt-get install      libcanberra-gtk-module -y
RUN  apt-get install      tcl-dev -y
RUN  apt-get install      tk-dev -y
RUN  apt-get install      python3-tk -y
RUN  apt-get install      dbus -y
RUN  apt-get install      locales -y
RUN  apt-get install      ttf-wqy-microhei -y
RUN  apt-get install      language-pack-zh-hans -y
RUN  apt-get install      python3-pyqt5 -y

构建qt5:1.0镜像

#注意最后有个‘.’不能丢了
sudo docker build -t qt5:1.0 . 

赋予权限

#如果授予成功的话则会显示“non-network local connections being added to access control list”
xhost local:root

创建容器

sudo docker run -itd --net=host --name qt5_test --gpus all --privileged -v /mnt:/mnt -e DISPLAY=$DISPLAY -u root qt5:1.0

进入容器

sudo docker exec -it qt5_test bash

进入容器之后应该会自动启动conda的base环境,接下来创建自己的conda环境,再安装qt5依赖就行了

创建conda环境并安装qt5依赖

#创建环境
conda create -n qt5 python=3.8
#启动环境
conda activate qt5
#安装qt5依赖
pip install Qt5

测试qt5能否正常使用

在宿主机的mnt目录(创建容器映射的目录)下创建App.py文件,编写以下内容。

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QVBoxLayout
class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        # 创建标签
        label = QLabel('PyQt5界面', self)
        label.move(50, 50)
        # 创建按钮
        button = QPushButton('点击', self)
        button.move(50, 100)
        button.clicked.connect(self.buttonClicked)
        # 创建布局
        vbox = QVBoxLayout()
        vbox.addWidget(label)
        vbox.addWidget(button)
        # 将布局应用到窗口
        self.setLayout(vbox)
        # 设置窗口大小和标题
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('PyQt5界面')
        self.show()
    def buttonClicked(self):
        # 按钮点击事件
        print('按钮被点击')
if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MyWindow()
    sys.exit(app.exec_())

测试

cd /mnt
python App.py

若是执行成功的话则会显示如下界面
qt5测试

参考文章

https://blog.csdn.net/weixin_39289876/article/details/129687980

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值