4

ここにコンテナのわずかに変更されたバージョンがあります:

http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/

ローカルで実行するには、次を使用します。

$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock -t jwilder/nginx-proxy

そして、以下のような他のコンテナを実行します:

$ docker run -e VIRTUAL_HOST=my-domain.local -t -d my-repo/site-name

これを ECS のタスク定義に変換するのに問題があります。

タスク定義

私は2つのコンテナを持っています:

nginx-リバースプロキシ

  • ポート マッピング: ホスト 80 コンテナ 80
  • 必須: 真
  • コマンド: /app/docker-entrypoint.sh

静的サイト

  • ポート マッピング: ホスト 5000 コンテナ 5000
  • 必須: false
  • コマンド: /some-file.sh
  • 環境変数: VIRTUAL_HOST static.example.com

上記で定義した 1 つの ECS インスタンスを持つクラスターと 1 つのタスクを持つサーバーがあります。これは循環し続け、「STOPPED (Essential container in task exited)」で失敗します。

ここで、ボリュームをセットアップする必要があると思いますが、見つけることができるすべての例にはパスと名前があり、この「/var/run/docker.sock:/tmp/docker.sock」を次のように変換する方法がわかりません利用可能な任意のフィールド。

4

1 に答える 1

5

かなり遅れましたが、今後この投稿に出くわした人のためにとにかく答えます。

あなたは自分自身に答えました。nginx プロキシ イメージに不可欠な Docker ソケットをホストから共有していないため、失敗します。

タスク定義に移動し、新しいボリュームを追加します。socketという名前を付け、ホスト パス/var/run/docker.sockを指定します。次に、nginx プロキシ コンテナーを編集し、マウント ポイントでソース ボリュームとしてソケットを選択し、コンテナー パスとして/tmp/docker.sockを選択します。セキュリティ上の理由からも読み取り専用としてマークしてください。このコンテナの Command セクションはデフォルト値のままにします。

新しいリビジョンをデプロイすると、すぐに機能するはずです。

于 2016-11-03T16:24:46.773 に答える