gccのDocker公式イメージ使ってC++でHelloWorldしてみた


C++を扱うことになった

開発中のWebサービス案件でC++のソースコードを扱うことになりました。
とりあえずLinux環境で動けばよいので、 Dockerコンテナ内のgccでC++のソースコードがコンパイル&実行できること を今回の目標とします。
make とかは今回使わないです。軽量化とかも意識してないです。)

今回作ったサンプルコードは以下に置きました。
https://github.com/segurvita/docker-gcc-sample

Dockerイメージを探した

Docker Hubでgccを検索してみたところ、Docker Hub公式のイメージがありました。
https://hub.docker.com/_/gcc/

これを使います。(もっと軽いのあるかもですが、

C++のソースコードを作った

Hello World! します!

hello.cpp
#include <iostream>

int main()
{
    std::cout << "Hello world!" << std::endl;
}

コンパイル&実行のスクリプトを作った

先ほどのcppファイルをコンパイルするスクリプトです。
cppファイルと同じフォルダに置きます。

build.sh
#!/bin/bash

# Compile
g++ hello.cpp -o hello

# Execute
./hello

docker-compose.yml を作った

Docker公式イメージをpullしてから、 build.sh を叩くようにしました!

docker-compose.yml
version: '3'
services:
  gcc-cpp-sample:
    image: 'gcc:9.2'
    volumes:
      - ./cpp:/src/cpp
    working_dir: /src/cpp
    command: ./build.sh

docker-compose.yml と同じ階層に cpp フォルダがあって、その配下に hello.cppbuild.sh を置くようにしました。

実行!

docker-compose up

を実行したところ、 Hello World! が表示されました!

サンプルコード

サンプルコードはこちらです。
https://github.com/segurvita/docker-gcc-sample

こちらでは、記事に書いたことに加えて、C言語のコンパイル&実行もやっています。

さいごに

10年振りくらいにgccを触ったので頭の運動になりました。

本記事の作成にあたり、以下の記事を参考にさせていただきました。わかりやすい記事をありがとうございます。

また、今回使った公式Dockerイメージは結構重いみたいなので、気になる方はこちらをご覧ください。すごくわかりやすいです。