Vscode + docker + qt 网络监听小工具
文章目录
- 上效果
- Vscode插件
- 项目目录
- Dockerfile
- 构建指令
- 镜像构建完成
- 运行容器
- 导入项目
- 容器管理
- 运行
- 测试
- 源代码
上效果
Vscode插件
项目目录
代码我是让豆包帮我生成的
注意关键词:使用qt5帮我生成一个网速监测的QT示例工程
Dockerfile
# 使用Ubuntu 22.04作为基础镜像
FROM ubuntu:22.04# 设置非交互模式,避免安装过程中出现交互提示
ENV DEBIAN_FRONTEND=noninteractive# 更新软件源并安装基础工具
RUN apt-get update && apt-get install -y \sudo \apt-transport-https \ca-certificates \curl \gnupg \lsb-release \software-properties-common \build-essential \git \wget \vim \locales \fonts-wqy-microhei \language-pack-zh-hans \&& rm -rf /var/lib/apt/lists/*# 安装Qt开发环境
RUN apt-get update && apt-get install -y \qtcreator \qtbase5-dev \qt5-qmake \qtbase5-dev-tools \qttools5-dev \qttools5-dev-tools \libqt5svg5-dev \qtmultimedia5-dev \libqt5multimedia5-plugins \qtwebengine5-dev \&& rm -rf /var/lib/apt/lists/*# 创建一个非root用户,避免权限问题
RUN useradd -m maqi && echo "maqi:maqi" | chpasswd && adduser maqi sudo
USER maqi
WORKDIR /home/maqi# 设置环境变量
ENV PATH="/usr/lib/x86_64-linux-gnu/qt5/bin:${PATH}"# 暴露Qt Creator默认使用的端口(如果需要远程调试)
EXPOSE 10000-10010# 设置中文环境
USER root
RUN locale-gen zh_CN.UTF-8
ENV LANG zh_CN.UTF-8
ENV LC_ALL zh_CN.UTF-8
# 切換普通用戶
USER maqi# 容器启动时运行Qt Creator
CMD ["qtcreator"]
构建指令
# 构建Qt开发环境镜像
docker build -t qt-dev-env:latest .# 查看构建的镜像
docker images | grep qt-dev-env# 确保当前目录存在qt5_network文件夹,用于存放项目文件
mkdir -p qt5_network# 运行Qt开发环境容器
# --rm: 容器退出后自动删除
# -it: 交互式终端
# -e DISPLAY: 共享主机的显示
# -v /tmp/.X11-unix:/tmp/.X11-unix: 挂载X11 socket,允许图形界面显示
# -v $(pwd)/qt5_network:/home/maqi/qt5_network: 将本地项目目录挂载到容器中
docker run --rm -it \-e DISPLAY=$DISPLAY \-e LANG=zh_CN.UTF-8 \-e LC_ALL=zh_CN.UTF-8 \-v /tmp/.X11-unix:/tmp/.X11-unix \-v $(pwd)/qt5_network:/home/maqi/qt5_network \--name qt-dev-container \qt-dev-env:latest
镜像构建完成
maqi@maqi-Vostro-5590:~/Desktop$ docker build -t qt-dev-env .
[+] Building 36.1s (10/10) FINISHED docker:default=> [internal] load build definition from Dockerfile 0.0s=> => transferring dockerfile: 1.40kB 0.0s=> [internal] load metadata for docker.io/library/ubuntu:22.04 23.7s=> [internal] load .dockerignore 0.0s=> => transferring context: 2B 0.0s=> [1/6] FROM docker.io/library/ubuntu:22.04@sha256:5e14404dbc9df30fef8460020b99a3c0034241283912189fd4650e446d8d6c92 0.0s=> CACHED [2/6] RUN apt-get update && apt-get install -y sudo apt-transport-https ca-certificates curl gnupg 0.0s=> CACHED [3/6] RUN apt-get update && apt-get install -y qtcreator qtbase5-dev qt5-qmake qtbase5-dev-tools qttool 0.0s=> CACHED [4/6] RUN useradd -m maqi && echo "maqi:maqi" | chpasswd && adduser maqi sudo 0.0s=> CACHED [5/6] WORKDIR /home/maqi 0.0s=> [6/6] RUN locale-gen zh_CN.UTF-8 2.5s=> exporting to image 9.7s=> => exporting layers 9.6s=> => writing image sha256:f50d7eed6bc65f56037cbc80f35b7304d61c46a4aa6658666634ef3b17d074be 0.0s=> => naming to docker.io/library/qt-dev-env 0.0s
maqi@maqi-Vostro-5590:~/Desktop$ ^C
maqi@maqi-Vostro-5590:~/Desktop$ docker run --rm -it \
> -e DISPLAY=$DISPLAY \
> -e LANG=zh_CN.UTF-8 \
> -e LC_ALL=zh_CN.UTF-8 \
> -v /tmp/.X11-unix:/tmp/.X11-unix \
> -v $(pwd)/qt5_network:/home/maqi/qt5_network \
> --name qt-dev-container \
> qt-dev-env:latest
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-maqi'
MESA: error: Failed to query drm device.
libGL error: glx: failed to create dri3 screen
libGL error: failed to load driver: iris
libGL error: failed to open /dev/dri/card0:
运行容器
docker run --rm -it \-e DISPLAY=$DISPLAY \-e LANG=zh_CN.UTF-8 \-e LC_ALL=zh_CN.UTF-8 \-v /tmp/.X11-unix:/tmp/.X11-unix \-v $(pwd)/qt5_network:/home/maqi/qt5_network \--name qt-dev-container \qt-dev-env:latest
导入项目
容器管理
运行
qmake
make
./NetworkMonitor
测试
wget http://speedtest.tele2.net/10MB.zip
源代码
https://github.com/goodluckforme/qt5_network.git