【最全的】本地项目打包docker

docker 安装

参考官网即可

本人系统

Linux ****-System-Product-Name 5.15.0-127-generic #137~20.04.1-Ubuntu SMP Fri Nov 15 14:46:54 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

docker info

这是我的配置

Client: Docker Engine - Community
 Version:    27.2.1
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.16.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.32.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 2
 Server Version: 27.2.1
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c
 runc version: v1.1.14-0-g2c9f560
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
 Kernel Version: 5.15.0-127-generic
 Operating System: Ubuntu 20.04.6 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 32
 Total Memory: 62.53GiB
 Name: shiyou-System-Product-Name
 ID: 5df0f0cf-7bb9-4f4b-8292-ea6a769e99b4
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: true
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://docker.linkedbus.com/
  https://docker.xuanyuan.me/
  https://mirror.aliyuncs.com/
 Live Restore Enabled: false

设置国内源

编辑 文件 /etc/docker/daemon.json , 增加或修改内容如下:

{
    "dns": ["8.8.8.8", "8.8.4.4"],
    "registry-mirrors": [
	"https://docker.linkedbus.com/",
 	"https://docker.xuanyuan.me/",
	"https://mirror.aliyuncs.com/"
    ],
    "experimental": true
}

编写Dockerfile

我的Dockerfile 内容如下

FROM python:3.9.19


WORKDIR /code


# 安装项目依赖
RUN cp /etc/apt/sources.list.d/debian.sources /etc/apt/sources.list.d/debian.sources.backup && \
    sed -i 's|http://deb.debian.org/debian|http://mirrors.tuna.tsinghua.edu.cn/debian|g' /etc/apt/sources.list.d/debian.sources && \
    sed -i 's|http://deb.debian.org/debian-security|http://mirrors.tuna.tsinghua.edu.cn/debian-security|g' /etc/apt/sources.list.d/debian.sources && \
    apt-get update && apt-get install vim ffmpeg libsm6 libxext6 libturbojpeg-dev -y && \
    pip install torch==2.3.1 torchvision==0.18.1 torchaudio==2.3.1 --extra-index-url https://download.pytorch.org/whl/cu118
    
RUN pip install --no-cache-dir -r requirements_su.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

# 设置工作目录
ADD . /code

# 暴露端口
EXPOSE 2345
EXPOSE 10082

# 运行应用
CMD [ "python", "app.py" ]

build 镜像

docker build -t <tag:version> .
# tag:version 替换你想要的镜像名字

docker run 启动镜像

docker run -it --rm <tag:version>

OK 啦,接单有意私聊~

在Qt项目打包Docker镜像的步骤通常包括以下几个部分: 1. **创建Dockerfile**: 首先,你需要在一个名为`Dockerfile`的文本文件中编写构建脚本。这通常包含基础镜像的选择、安装必要的依赖(如Qt库)、复制应用源码和设置环境变量等。 ```Dockerfile # 使用官方的Qt基础镜像作为起点 FROM qt:latest # 安装所需的Qt版本和其他软件包 RUN apt-get update && apt-get install -y \ build-essential \ git \ ... # 设置工作目录 WORKDIR /app # 将本地Qt项目添加到容器内 COPY . . # 指定命令行启动应用 CMD ["qmake", "&&", "make", "exec"] ``` 2. **构建Docker镜像**: 进入项目的根目录,然后运行`docker build`命令,传入`Dockerfile`所在的路径,生成镜像。 ```sh docker build -t your-image-name . ``` 3. **测试镜像**: 使用`docker run`命令验证镜像是否能正常启动并运行你的Qt应用程序。 ```sh docker run -it your-image-name ``` 4. **推送镜像到仓库**: 如果需要将镜像分享给其他人,可以使用`docker push`命令将镜像推送到Docker Hub或其他私有Registry。 ```sh docker login (如果你还没有登录) docker push your-image-name:tag ``` 5. **更新Docker Compose.yml或Kubernetes配置**: 如果项目使用了Docker Compose或Kubernetes,你需要在对应的配置文件中引用这个新的Docker镜像。 **相关问题--:** 1. Dockerfile中的CMD指令是什么意思? 2. 怎样处理Qt项目的依赖管理? 3. 在生产环境中部署Docker镜像需要注意哪些安全问题?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值