在 Linux 环境下使用 C++ 编写程序并部署到容器(Docker),通常分为 构建镜像 → 运行容器 → 可选编排 几个步骤。下面给你一套通用、可落地的方案。
main.cpp
#include <iostream>
int main() {
std::cout << "Hello from C++ container!" << std::endl;
return 0;
}
# 构建阶段
FROM gcc:11 AS builder
WORKDIR /app
COPY . .
RUN g++ -O2 -o app main.cpp
# 运行阶段
FROM debian:bullseye-slim
WORKDIR /app
COPY --from=builder /app/app .
CMD ["./app"]
docker build -t cpp-app:1.0 .
docker run --rm cpp-app:1.0
输出:
Hello from C++ container!
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y \
g++ \
libboost-all-dev \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY . .
RUN g++ -o app main.cpp -lboost_system
CMD ["./app"]
g++ -static -O2 -o app main.cpp
Dockerfile 可简化为:
FROM scratch
COPY app /app
CMD ["/app"]
✅ 镜像极小(几 MB)
❌ 不支持动态库
.dockerignoreRUN useradd -m appuser
USER appuser
version: "3"
services:
cpp-service:
image: cpp-app:1.0
restart: always
docker-compose up -d
| 问题 | 解决 |
|---|---|
| 找不到动态库 | ldd app 检查 |
| 容器一启动就退出 | CMD 必须是前台进程 |
| 编译慢 | 使用缓存、多阶段 |
| 权限问题 | 不要用 root |
你可以告诉我:
我可以直接给你 可用的 Dockerfile + 部署命令。