docker環境のコンテナ間で情報を共有したくなった。これについては、後半で。調べると、いろいろとソレ用の方法がありそうなのだが、極力シンプルな方法がいい。各コンテナは連携する部分はあるものの、非常に疎だし、個々に独立して立ち上げたりもしたいのだ。動作イメージとしては、主に予定表をサービスするコンテナと、主な機能に加えて直近の予定を表示するコンテナという感じ。片方はファイルを更新するが、片方はファイルを参照するだけ、みたいな。そこで、PVの下のファイルをハードリンクで共有する方法を思いついた。dockerの機能ですらない。共有する対象はgdbmのデータベースファイルだ。ファイルを更新する側のコンテナを準備する。最近自作したsinatraの骨格コンテナを使うが、それには深い意味はない。sinatra_skelton-alpha-writer共有するファイルを配置するPVを準備。pvファイルを更新するテスト用スクリプトを書く。sinatra_skelton/gdbm_writer.rbついでにファイルを参照するテスト用スクリプトも書く。sinatra_skelton/gdbm_reader.rbファイルを更新する側のコンテナを立ち上げる。-d次に、ファイルを参照する側のコンテナを準備する。基本、更新する側のコンテナの丸コピー。docker-compose.ymlでコンテナ名だけ変えておく。8081:8080ファイルを参照する側のコンテナを立ち上げる。..ファイルを更新する側のコンテナに入って、ファイルを更新するテスト用スクリプトを起動する。./gdbm_writer.rb別端末から、ファイルを参照する側のコンテナに入って、ファイルを参照するテスト用スクリプトを起動する。(Errno::ENOENT)......と、起動しない。ファイルを参照する側のPVには何もないから当たり前。一度コンテナを出て、ファイルを更新する側のPVの下のファイルをハードリンクで共有状態にしてやる。gdbm_reader/pv改めて、ファイルを参照する側のコンテナに入って、ファイルを参照するテスト用スクリプトを起動する。