片側にhttps(http/2)インターフェイスを提供し、SQL Serverデータベースと通信するnodejsアプリケーションを開発しました。 SMTPメール送信者、およびhttpベースの郵便番号検索サービスを提供します。本質的には、Webベースの単一ページアプリケーションです。Dockerにファイルシステム内のどこに読み取り専用と読み書き可能な部分を置くことができますか
これは、LAN上のWindowsマシン上でデータベースに話しかけて、会社のLANに座っている小さなラズベリーパイ/ 2で動作します。他のサービスは外部です。アプリケーションをプライベートにすることは重要です。
これはこのアプリケーションの初期リリースであり、変更されることがあります。最も複雑なのは、長いダウンタイムなしに新しいバージョンのノードにアップグレードする方法です。
昨日私はDockerを見つけました。具体的には、ラズベリーパイにDockerを設定する方法についての記事です。これは私のアプリケーションをすばやく更新するための解決策であると私に感謝します。ノードとアプリケーションをDockerコンテナにパッケージ化すると、ノードとアプリケーションの最新バージョンのコンテナを事前にビルドしてテストして、非常に迅速にインストールできます。
現在、Raspberry Piのファイルシステム用のSDカードは4つのパーティションに構成されています。 1)はブートパーティション、2)はファイルシステムのルートです。これらの2つは両方とも読み込み専用、3)piユーザのホームのパーティション、4)は/ varです。後者の2つは読み書き可能です。
インストールされたソフトウェアは、ログ(/ varに入る)を除いてすべて読み取り専用です。電源オフ時のSDカード破損から保護する。私は、ログオンが再びログオフするまでログオンがファイルシステムrwに変わるように、読み取り専用領域にホームディレクトリを持つユーザーとそのセットを持っています。このユーザーは、最新の本番リリースをインストールするためのコマンドを実行します。一部のテストと開発はpiユーザーで実行される可能性があります。そのため、領域は読み書き可能です。
Debianを実行しているデスクトップ(amd64)マシンにDockerをインストールしました。私がDockerのすべてのファイルを/ var/lib/dockerの下に置くことができる限り、これには、ロードされたイメージを構成するすべてのファイルが含まれます。/etc/dockerディレクトリがありますが、そこには唯一の設定が鍵のように見えます。
私の質問は、そこにアカウントにログインしてログアウトしたときに再び読み取り専用になるときに、コンテナイメージが実際に読み取りと書き込みを切り替える領域に置かれるようにDockerを構成する方法しかし、書き込まれるコンテナの部分(おそらくnone - 次の段落を参照)は/ varです。
私のアプリケーションは実際にログをstdoutとstderrに書き込みます。現時点では、PM2によって管理されています。PM2は、終了時にPM2を再起動しますが、ログを回転するログファイルのペアに書き込みます。残念ながら、私はアプリケーションが失敗し、PM2がそれを再起動しなかった場合があります
私はDockerが自動的に失敗したコンテナを再起動するように設定されている可能性があります。また、stdoutとstderr Dockerコンテナの外部にあるファイルにリダイレクトされます。これにより、後で見るのがより簡単になります。これは可能ですか? Dockerコンテナの内部でpm2を使用し続けるのが良いかどうか、またはそれが可能であれば、