web-dev-qa-db-ja.com

NGINXを使用してサブドメインをDockerコンテナにリダイレクトする

Centos 7.5でNGINXをセットアップし、ポート80でリッスンし、トラフィックをGunicornサーバーに転送しています。これがこのサーバーの主な目的であり、これらはローカルにインストールされたアプリケーションであり、これまでのところコンテナーはありません。

ここで、Dockerコンテナー内でいくつかのサービスを実行し、さまざまなサブドメイン(またはポート)にトラフィックを関連するコンテナーにリダイレクトさせたいと思います。

特定の例-SVNサーバー

私はDockerの概念全体に非常に慣れていないので、一部のコンテナーに関する特定のドキュメントがないため、本当に混乱します。 このSVNサーバーコンテナ でなんとか進歩しました。これは私が使用するコマンドです:docker run -d --name svn-server -p 80:80 -p 3960:3960 -v /home/svn:/home/svn elleflorio/svn-server

これは私がこれまでに持っているものです:

  • SVNサーバーには http:// mysite/svn (ポート80)からアクセスできます。
  • コンテナはローカルディレクトリに正常にバインドされ、コンテナが削除されてもリポジトリデータを保持します。これはすばらしいことです。
  • コンテナ内でコマンドを実行したり、ユーザーを作成したり、リポジトリを追加したりできます。

これらは問題です:

  • NGINXもポート80が必要なため、停止する必要がありました。
  • これまでのところ、コンテナを別のポートで実行することに成功していません。単に-pパラメータを変更しようとしただけでは機能しませんでした。 SELinuxを一時的に無効にしてみましたが、役に立ちませんでした。
  • コンテナを別のポートで実行できれば、トラフィックをサブドメインからそのポートにリダイレクトできますが、Dockerコンテナを操作するためのより良い方法があると確信しています。
  • これを機能させることができた場合-ホストの再起動時にコンテナが再起動されることを確認するにはどうすればよいですか?
1
Shovalt

コンテナで公開されているポート80ではなくポート8080を使用するには、docker run ... -p 8080:80 ...を使用します。最初の番号はホストで接続できるポートで、2番目の番号はコンテナの「ネイティブ」ポートです。この{Host}:{container}規則は、他の場所で使用されています。

現在のコンテナを停止していることを確認してください(実行中のコンテナを一覧表示するにはdocker ps)。

起動時にコンテナを再起動するには、docker run ...を実行するsystemdサービスを作成できます。

0
xenoid