事前にpullしていたAlpine Linuxのイメージを元に、C/C++の開発環境を作ってみる。
Docker Hubのイメージに、gcc というのがあるので、それを使っても良いんだろうが、なんせ1GB超えのイメージなので、できるだけ軽量なのを使いたい。
ということで、Apline Linuxのイメージを元に作ってみる。
参考:https://qiita.com/Panda_Program/items/abbff0864fb65bdfe7d0
最低限やることといえば、素のAlpine Linuxに gcc と libc-dev を入れるくらい。
Dockerfile化するなら、下記で事足りる。
FROM alpine RUN apk add --no-cache gcc libc-dev g++
が、これだけだと、コンテナ上でソースをゴリゴリ書かないといけないし、C/C++は『コンパイル言語』なので、コンパイルしないと実行できない。
ローカルでソースを触れるようにするには、-v オプションを付けて、ローカルとコンテナのディレクトリを関連付ければよい。コンテナを破棄さえしなければ、これで大丈夫そう。
が、あんまりスマートじゃない気もする。かといって、DockerfileでVOLUME命令を書いても、ホスト側のディレクトリは指定できない。そこまでやりたきゃ、docker compose 使ったほうが良いのかもしれないが。
それを踏まえて、作業ディレクトリも設定した状態で始めるために、以下のようにしてみる。なお、ソース置き場のディレクトリにDockerfileもdocker-compose.yamlも置いている。
##Dockerfile
FROM alpine
WORKDIR /home/clang # ソース置き場をカレントディレクトリに
RUN set -x && \
apk add --no-cache gcc libc-dev g++
CMD ["/bin/sh"]
##docker-compose.yaml
version: '3'
services:
clang:
build: .
container_name: clang
volumes:
- .:/home/clang # ローカルのソース置き場をコンテナのソース置き場としてマウントする
tty: true
あとは、コンテナ内でコンパイルしないといけない問題については、Visual Studio のターミナルから docker のコマンド叩くことで対応する。なんか、Linuxのコンソールでもvimをカスタマイズすればちゃんと開発にも使えるということらしいが、viは基本コマンドが多少使える程度なので・・・(プラグインでカスタマイズできることすら知らんかった)
何にせよ、自動インデントがあって、ソースの整形してくれて、コード補完もしてくれるというエディタになれてると、Visual Studio Codeからなかなか離れられないが、そこからターミナルが直接叩けるってのが大きい。