Dockerマシンを完全リモートにする

DockerコンテナをIntel Linuxマシンでリモート動作させて、開発と動作確認作業はローカルのmacでやりたい。なぜならこうすることでローカルマシンはIntelでなくてもM1でもChromeBookでもあるいは古いmacbookでもなんでもよくなるからです。馬力の必要なところは外部の大馬力Linuxに任せよう、という目的。

自作マシンは第11世代(ひとつ旧世代)の Intel Core i7-11700 を使い、ビデオカードはCPU内蔵のもの。開発用途なのでメモリだけはちょっと多めに32G積む。発熱少なく静音でなかなか気に入ってます。全体的に驚くほど安価に仕上げました。Dockerマシンとしてはこれくらいのスペックで必要十分ではあるけど、もっとパワー欲しい欲望は尽きない。世界的なインフレと半導体不足の今となっては、今後ますます部品の価格は高騰するだろうからしばらくはこれを使い倒すしかないかな。

ところで、コンテナひとつならこういったサーバ環境構築もそれほど難しくないんだけど、これが複数のコンテナをマイクロサービスとして何個も立ち上げ連携させて、Webアプリサーバもコンテナにしてといった具合に本番環境に近い構成を一台のLinuxマシンに集約させるのがなかなか面倒。docker-composeのnetwork設定で結合するんですが、あれこれ試行錯誤しながら週末作業でコツコツと3週間かかって、ようやくできた。

要点は、単独のコンテナとして動作させたい場合と結合させたい場合にはdocker-composeの設定ファイル(YAML)をとりかえて(renameして)ビルドしなおすことで、こうすれば自由度が高くなる。もうひとつはmacからの動作確認時にはsshのポートフォワードでwebサーバを呼び出すこと。こうすればweb内でのhttpリンクがlocalhostで名前解決できるのでリンク先を書き換える必要がない。

コード編集はVS CodeのRemote Host プラグインを使ってsshでリモートに接続してます。ローカルのファイルと同じように扱えてストレスなく作業できる。

無茶苦茶快適です。しかし、そこまでやるならKubernatesにしてしまえ、と言われそうですが、開発環境は頻繁にビルドを繰り返すので、デプロイする前はdocker-composeでやったほうがなにかと便利、というのがあります。

この記事が気に入ったらサポートをしてみませんか?