ここのところ、競プロの問題をC++で解くことを日課にしている。
この日課が一か月くらい続いてきて、いろんなPCでやりたいようになったのだが、各PCごとにUbuntu だったり WSL1 だったり 2 だったりで面倒。
やはりDocker しかない。簡単に以下の Dockerfile を書いてみた。
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y build-essential WORKDIR /codes VOLUME . /codes
ちょっと長いビルドが完了。
しかし中にはいってbashで動かそうとすると OCI Error だなんだと動かない。
いろいろ調べたが直接的原因はわからなかった。とはいえVOLUMEあたりがいけないんだろうなーとは思ったのでdocker-composeで迂回することにした
version: "3" services: eachfile: build: . volumes: - .:/codes/
Dockerfile は以下のようにした
FROM ubuntu:18.04 RUN apt-get update && \ apt-get install -y build-essential RUN mkdir /codes
最初はうまくいかなかったのだが、いろいろテストして挙動を確かめたりしてたらbashに入れるようになってた。なぜだ。
docker-compose run --rm eachfile /bin/bash
最終的には上記コマンドで中に入れたので、g++でコンパイルして動かした。
entrypoint等で扱いやすくするのはまた今度。