問題タブ [docker-compose]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - Docker Compose はポートをバインドしません
コンテナ用に次の Dockerfile があります。
このコンテナーをビルドし、イメージをdocker run -i -t -p 8080:8080 -v /srv/source:/usr/src/app -w /usr/src/app --rm iojs-dev bash
. Docker は、クライアントから iojs アプリケーションにアクセスできるように、ポート 8080 をホスト ポート 8080 にバインドします。すべて正常に動作します。
次に、次の docker-compose.yml を使用して、docker-compose でコンテナーを開始します。
今実行するdocker-compose run webfrontend bash
と、ホストのポート 8080 にアクセスできません。ポートはバインドされていません。の結果は空であり、ポート設定でdocker ports
の結果も空です:docker inspect
docker - 「docker-compose up」は毎回イメージをプルするのではなく、プルしたイメージを再作成します
Dockerfile
次の内容の があります。
を実行するdocker-compose up -d
と、Docker がイメージをプルしてステップを実行します。
a を実行しdocker-compose stop
て元に戻すと、docker-compose は最新のイメージを再度プルしません。新しいイメージをダウンロードする必要があるため、これは私にとって問題です。これを行う唯一の方法は、boot2docker vm を爆破して最初からやり直すことです。
docker - docker-compose でホスト IP を使用する
さまざまなサーバーで実行できるdocker-composeファイルを作成したいと考えています。
そのためには、 docker-compose.ymlのいくつかの場所で、サーバー (すべてのコンテナーが実行されている場所) のホスト IP またはホスト名を指定できる必要があります。
たとえば、仲間の領事コンテナがサーバーを見つける方法を定義したい領事コンテナの場合。
明らかに 192.168.1.125 をハードコーディングしたくありません。
env_file :を使用 してホスト名または IP を指定し、それをすべてのサーバーに適用できるので、その情報を 1 か所にまとめて docker-compose.yml で使用します。ただし、これは環境変数を指定するためにのみ使用でき、advertise パラメーターには使用できません。
より良い解決策はありますか?
docker - --add-host または extra_hosts を docker-compose で使用する
私はdocker-compose
、約 5 つの異なるコンテナーで構成されるテスト環境を実行するために使用しています。コンテナ間のリンクと共有ボリューム (volumes-from) は素晴らしく機能します。また、いくつかのポートをホスト マシンに公開します。これはうまく機能します。
私が見逃しているのは、IP アドレスをハードコーディングせずに、実サーバーの一部をこの環境にリンクする方法です。では、ファイルに別の行を追加するためにdocker run
使用できます。docker-compose で同様のことを行う方法はありますか?--add-host
/etc/hosts
docker - docker-compose から docker に接続できない
Mac OS 10.8.5 に docker-machine 0.1.0 と docker-compose 1.1.0 をインストールしました。
Docker-machine は正常に動作しており、docker-machine ssh で接続できます。
ただし、docker-compose からは接続できません。
http+unix://var/run/docker.sock で Docker デーモンに接続できませんでした - 実行されていますか?
標準以外の場所にある場合は、DOCKER_HOST 環境変数で URL を指定します。
私の Dockerfile と docker-compose.yml はこちらです。
Dockerfile
docker-compose.yml
なぜ接続できないのですか?何か案は?
docker - docker-compose コマンドと手動コマンドの違い
私がやろうとしていること
ある docker コンテナーで yesod Web アプリケーションを実行し、別の docker コンテナーの postgres データベースにリンクしたいと考えています。
私が試したこと
次のファイル階層があります。
は次のdocker-compose.yml
ようになります。
実行sudo docker-compose up
すると、API コンテナの起動にまったく失敗するか、または同じ頻度で次のエラーが発生します。
ただし、実行すると、sudo docker-compose database up &
作成を使用せずに API コンテナーを起動し、代わりに
ファイルexport
に設定されている環境変数docker-compose.yml
を手動で実行yesod devel
して、ローカルホストで自分のサイトに正常にアクセスできます。
最後に、単独で実行すると、3 番目の異なる動作が得sudo docker-compose run api
られます。これは正常に開始されたようですが、ブラウザでページにアクセスできません。実行sudo docker-compose run api /bin/bash
することで、このコンテナーを調べることができ、設定されている環境変数docker-compose.yml
がすべて正しく設定されていることを確認できました。
望ましい動作
バックグラウンドでデータベースを実行してから、実行するだけで API コンテナーのシェルに環境を手動で設定して得た結果を得たいと考えていますsudo docker-compose up
。
質問
明らかに、私が試みている 3 つの異なるアプローチは、わずかに異なることを行います。しかし、docker と docker-compose についての私の理解からすると、それらは本質的に同等であると期待できます。誰かがどのように、なぜそれらが異なるのか、可能であればどのように私が望む結果を達成できるのかを説明してもらえますか?
docker - docker-compose yml ファイルの検証
dockerを適切に実行しなくても、docker-composeファイル(docker-compose.yml
別名)の構文などを確認する簡単な方法はありますか?fig.yml
構成ファイルを検証するために、ビルド/テスト パイプラインにクイック チェックを追加しようとしています。