🖥️

競プロ用 Docker でのC++の環境作成

2022/02/20に公開

C++を最近触っておらず、新たに新調したM1 MacBook Airの環境設定が面倒なのでDockerでコンテナをたてて触ってみようと思い作業しましたのでそのログです。競技プログラミングとかで使おうかなと思います。
C++入門 AtCoder Programming Guide for beginners (APG4b)

手元の環境は以下の通りです。
MacOS: Monterey 12.1
Docker: 20.10.8
VScode: 1.64.2

ベストプラクティスではないのかもしれないですが、Dockerfileやdocker-compose.ymlと同じ階層にworkというディレクトリを作成してその中で作業をするという想定です。以下はtest.cppを作成して作業した後のtreeです。

$ tree
.
├── Dockerfile
├── docker-compose.yml
└── work
    ├── test
    └── test.cpp
test.cpp
#include <bits/stdc++.h>
using namespace std;

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

Dockerfileは以下。

Dockerfile
FROM ubuntu:20.04

RUN apt-get update && apt-get install -y \
    build-essential
WORKDIR /work

docker-compose.ymlは以下。

docker-compose.yml
version: '3.3'
services:
  dev:
    build: .
    volumes:
      - type: bind
        source: ./work
        target: /work

あとはこれをbuildしてrunすればOKでした。

cd [docker-compose.yml と同じ階層]
docker-compose build
docker-compose run dev

Discussion