步骤 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 编译
- 创建构建目录并进入:
mkdir build
cd build
- 生成 Makefile:
cmake ..
- 编译:
cmake --build .
- 运行:
./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!
💡 注意事项:
-
如果项目有多文件或第三方依赖,可在
CMakeLists.txt
和 Dockerfile 中适当调整。 -
可以通过多阶段构建优化镜像大小,将编译阶段和运行阶段分开:
- 编译阶段用
ubuntu
或debian
带编译工具。 - 运行阶段只用
scratch
或ubuntu:22.04
仅复制可执行文件。
- 编译阶段用