はじめに
ベストプラクティスはわからないけど、DockerでC++のビルドを行えるDockerfileを作成した。ホスト環境をビルド環境で汚さない目的のためにDockerを使用している。Dockerコンテナにアタッチしてコードをビルドするのは一般的ではないかもしれない・・。ホスト側のソースコードをbind mountして、Dockerの環境でビルドを行うような使い方を想定している。
本題
コードをビルドするためのコマンド
# ホスト
docker build --tag env_c .
docker run -it --rm env_c /bin/bash
# Docker
make
構成
- Dockerfile
- CMakeLists.txt
- main.cpp
Dockerfile
FROM ubuntu:18.04
RUN apt update \
&& apt install --yes \
build-essential \
cmake \
vim \
&& rm -rf /var/lib/apt/lists/*
COPY . /workspace/helloworld
RUN mkdir /workspace/helloworld/build \
&& cd /workspace/helloworld/build \
&& cmake .. \
&& make
WORKDIR /workspace/helloworld/build
CMakeLists.txt
cmake_minimum_required(VERSION 3.8)
project(helloworld_cpp)
add_executable(${PROJECT_NAME}
src/main.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC include)
main.cpp
#include <stdio.h>
int main() {
printf("helloworld\n");
return 0;
}
ファイル置き場