ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Docker打包CMake项目镜像操作步骤

Docker打包CMake项目镜像操作步骤

步骤 1:创建项目目录结构

HelloWorldProject/
├── CMakeLists.txt
├── Dockerfile
└── HelloWorld.cpp

步骤 2:编写 HelloWorld.cpp

HelloWorld.cpp 中写:

#include <iostream>int main() {std::cout << "Hello, World!" << std::endl;return 0;
}

步骤 3:编写 CMakeLists.txt

在项目根目录下创建 CMakeLists.txt

cmake_minimum_required(VERSION 3.10)
project(HelloWorld)# 设置 C++ 标准
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)# 添加可执行文件
add_executable(helloworld HelloWorld.cpp)

步骤 4:在本地测试 CMake 编译

  1. 创建构建目录并进入:
mkdir build
cd build
  1. 生成 Makefile:
cmake ..
  1. 编译:
cmake --build .
  1. 运行:
./helloworld

你应该看到输出:

Hello, World!

步骤 5:编写 Dockerfile

在项目根目录下创建 Dockerfile

# ===== 编译阶段 =====
FROM ubuntu:22.04 AS builder# 安装构建工具
RUN apt-get update && \apt-get install -y build-essential cmake && \rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /app# 复制项目文件
COPY . .# 创建构建目录并编译
RUN mkdir build && cd build && cmake .. && cmake --build .# ===== 运行阶段 =====
FROM ubuntu:22.04# 设置工作目录
WORKDIR /app# 仅从 builder 阶段复制可执行文件
COPY --from=builder /app/build/helloworld .# 设置容器启动命令
CMD ["./helloworld"]

步骤 6:构建 Docker 镜像

在项目根目录下执行:

docker build -t helloworld-cpp .

这里 helloworld-cpp 是镜像名称。


步骤 7:运行 Docker 容器

docker run --rm helloworld-cpp

输出应该是:

Hello, World!

💡 注意事项:

  1. 如果项目有多文件或第三方依赖,可在 CMakeLists.txt 和 Dockerfile 中适当调整。

  2. 可以通过多阶段构建优化镜像大小,将编译阶段和运行阶段分开:

    • 编译阶段用 ubuntudebian 带编译工具。
    • 运行阶段只用 scratchubuntu:22.04 仅复制可执行文件。
返回列表