問題タブ [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について読んで学んでおり、使用する Django セットアップを正しく選択しようとしています。これまでのところ、次のいずれかがあります。
Dockerfiles
で使用されていることは理解していますDocker Compose
が、すべてを 1 つの大きな Dockerfile に入れFROM
、さまざまなイメージに対して複数のコマンドを使用するのが適切かどうかはわかりません。
以下を含むいくつかの異なる画像を使用したい:
Dockerを使用してこのタイプの環境をセットアップする際のベスト プラクティスについてアドバイスをお願いします。
それが役立つ場合、私は Mac を使用しているので、boot2dockerを使用します。
私が持っていたいくつかの問題:
- Docker Compose は Python3 と互換性がありません
- プロジェクトをコンテナー化したいので、1 つの大きな Dockerfile が理想的でない場合は、Docker Compose を使用して分割する必要があると感じています。
- プロジェクトを Py2 と Py3 の互換性を持たせても問題ないので、django-compose に傾倒しています
linux - リンクされた Docker コンテナ間の通信
ホスト マシン上の次のセットアップで 2 つの Docker コンテナーがあります。
- コンテナー 1 - UDP ポート 5043 はホスト ポート 5043 (0.0.0.0:5043:5043) にマップされます
- コンテナ 2 - ポート 5043 で UDP としてコンテナ 1 にデータを送信する必要があります。
シナリオ 1
- コンテナ 1 を起動し、その IP アドレスを取得します。
- この IP アドレスを使用してコンテナ 2 を構成し、起動します。
- コンテナ 2 は、次の呼び出しによって UDP データをコンテナ 1 に送信できます。
udp://Container_1_IP:5043
すべてが機能します!!
シナリオ 2
- 5043 UDP ポートをホストの 5043 ポートにマッピングして、コンテナー 1 を開始します (
0.0.0.0:5043:5043
) - 「 」を使用してコンテナ 2 とコンテナ 1 をリンクし
--links
ます。 - これで、コンテナー 2 が URL を呼び出す
udp://Container_1_IP:5043
と、エラーがスローされます "Connection refused
"。 - IP を使用して、コンテナ 2 内からコンテナ 1 に ping できることを確認しました。
シナリオ2を機能させるための助けをいただければ幸いです!!
docker - 「docker-compose rm」を実行するときに一部のコンテナを無視する方法
node
、、、、の 4 つのコンテナーがredis
ありmysql
ますdata
。実行するdocker-compose rm
と、コンテナーを含むすべてのコンテナーが削除されますdata
。mysql のデータはコンテナー内にあり、コンテナーを rm したくありませんdata
。
なぜそのコンテナをrmしなければならないのですか?
ノードとmysqlの構成ファイルをいくつか変更して再構築する必要がある場合があるため、コンテナを削除して最初からやり直す必要があります。
私はグーグルを使って何度も検索しましたが、何も得られませんでした。
docker - CI で docker-compose を使用する - 終了コードとデーモン化されたリンクされたコンテナーを処理する方法は?
現在、Jenkins エージェントは Rails プロジェクトごとに docker-compose.yml を生成し、docker-compose up を実行しています。docker-compose.yml には、rbenv と他のすべての Rails 依存関係を内部に持つメインの「web」コンテナーがあります。これは、テスト Postgres DB を含む DB コンテナーにリンクされています。
問題は、実際にテストを実行して終了コードを生成する必要があるときに発生します。CI サーバーは、テスト スクリプトが exit 0 を返した場合にのみデプロイされますが、コンテナー コマンドの 1 つが失敗した場合でも、docker-compose は常に 0 を返します。
もう 1 つの問題は、Web コンテナーがテストの実行を完了した後でも、DB コンテナーが無期限に実行されるため、docker-compose up
戻らないことです。
このプロセスに docker-compose を使用する方法はありますか? コンテナーを実行できるようにする必要がありますが、Web コンテナーが完了したら終了し、終了コードを返します。現在、Docker を使用して手動で DB コンテナーをスピンアップし、 --link オプションを使用して Web コンテナーを実行しています。
postgresql - Docker 構成環境変数
postgres コンテナーをセットアップしようとしていますが、postgres ログインを次のようにセットアップしたいと考えています。
だから私はdocker-compose.ymlをそのように作成しました
db セクションを次のように宣言する環境変数の他の構文も試しました。
ただし、何らかの理由で、さまざまな接続文字列を使用して postgres データベースに接続しようとするたびに、これらのオプションのどちらも機能しないようです。
ユーザーデータベースがないと不平を言うのではなく、それらはすべて認証の失敗をもたらします。
ruby-on-rails - Docker Compose: リンクされたサービスへの環境変数の公開
私は Docker Compose をいじって、Oracle バックエンドで Rails アプリを実行するコンテナーを作成しています。
Dockerfile と docker-compose.yml
これは、Docker コンテナーが ruby-oci8 gem をインストールしようとするまでうまく機能します。これは、いくつかの Oracle 固有の環境変数を探します。
これらの変数は、Oracle コンテナーの Dockerfile で公開されます。
問題は、Oracle コンテナーのこの環境変数を Web コンテナーに公開するにはどうすればよいかということです。
docker - Compose: 終了するコンテナーの実行
postgres と Web アプリ (ゴースト) を含む docker-compose.yml があります。postgres と Ghost の間でコンテナーを実行して、postgres を初期化し、データベースとユーザー権限を追加して終了したいと考えています。
私のデータベース初期化コードは次のようになります。
次に実行されるのは
postgres を拡張してこの機能を追加できることはわかっていますが、これら 2 つの懸念事項を分離したいと思います。だから私は2つの質問があります:
データベースを初期化するための好ましいパターンはありますか? postgres と Ghost の間で終了するコンテナーを実行することは可能ですか?
完全なリポジトリはここで見ることができます: https://github.com/devpaul/ghost-compose