Docker container as build server

Posted on Sun 24 July 2022 in Journal

Abstract Docker container as build server
Authors Walter Fan
 Category    learning note  
Status v1.0
Updated 2022-07-24
License CC-BY-NC-ND 4.0

如果你在用 Mac, Windows 或者 Linux 系统,需要在不同的平台上编译你的项目,光是依赖项的管理就会让你头大,再加上不同平台的系统调用异同会搞得你抓狂。

作为一个服务器端开发者,我的主要工作环境是 Linux Ubuntu, 所以无论在 mac 还是 windows 上,希望都有 docker 来搞定

FROM ubuntu:20.04
LABEL Author="Walter Fan <walter.fan@gmail.com>"
LABEL Description="Docker image for C++ program"
ENV TZ=Asia/Shanghai \
    DEBIAN_FRONTEND=noninteractive

RUN apt-get update && \
  apt-get install -y \
  tzdata \
  git \
  mercurial \
  wget \
  vim \
  autoconf \
  bzr \
  cvs \
  unrar \
  build-essential \
  clang \
  valgrind \
  gsl-bin \
  libgsl23 \
  libgsl-dev \
  flex \
  bison \
  libfl-dev \
  tcpdump \
  sqlite3 \
  libsqlite3-dev \
  libxml2 \
  libxml2-dev \
  vtun \
  lxc \
  cmake \
  libc6-dev \
  libgd-dev \
  libgtest-dev \
  libboost-all-dev

# Create working directory
RUN mkdir -p /opt
WORKDIR /opt

# Cleanup
RUN apt-get clean && \
  rm -rf /var/lib/apt

CMD [ "/bin/bash" ]
  • 这样,在本地构建这样一个 docker image

more build.sh

#!/usr/bin/env bash
docker build -t walterfan/bcpp:v1.0 -t walterfan/bcpp:latest .
  • 然后,就可以轻松地在本地构建你的 C++ 代码了

more start.sh

#!/usr/bin/env bash
docker run -c=2 -m 1024m --rm -it -v $PWD/..:/opt/bcpp --name bcpp walterfan/bcpp:latest

本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。