548

私はDockerについて読んで学んでおり、使用する Django セットアップを正しく選択しようとしています。これまでのところ、次のいずれかがあります。

Docker ComposeまたはDockerfile

Dockerfilesで使用されていることは理解していますDocker Composeが、すべてを 1 つの大きな Dockerfile に入れFROM、さまざまなイメージに対して複数のコマンドを使用するのが適切かどうかはわかりません。

以下を含むいくつかの異なる画像を使用したい:

uwsgi
nginx
postgres
redis
rabbitmq
celery with cron

Dockerを使用してこのタイプの環境をセットアップする際のベスト プラクティスについてアドバイスをお願いします。

それが役立つ場合、私は Mac を使用しているので、boot2dockerを使用します。

私が持っていたいくつかの問題:

  1. Docker Compose は Python3 と互換性がありません
  2. プロジェクトをコンテナー化したいので、1 つの大きな Dockerfile が理想的でない場合は、Docker Compose を使用して分割する必要があると感じています。
  3. プロジェクトを Py2 と Py3 の互換性を持たせても問題ないので、django-compose に傾倒しています
4

11 に答える 11

307

答えはどちらでもありません。

build コマンドをプロジェクトのdocker-compose.yml.

Docker ワークフローは、Dockerfile作成する各イメージに適したものを構築し、compose を使用してbuildコマンドを使用してイメージを組み立てる必要があります。

build /path/to/dockerfiles/blahwhere /path/to/dockerfiles/blahis where blah's livesを使用して、個々の Dockerfile へのパスを指定できますDockerfile

于 2015-04-07T08:28:57.843 に答える
54

Dockerfile と Docker Compose は、Dockerland における 2 つの異なる概念です。Docker について話すとき、最初に頭に浮かぶのは、オーケストレーション、OS レベルの仮想化、イメージ、コンテナーなどです。それぞれを次のように説明します。

イメージ: イメージは、不変で共有可能なファイルであり、Docker が信頼するレジストリに保存されます。Docker イメージは、一連の読み取り専用レイヤーから構築されます。各レイヤーは、イメージの Dockerfile で指定されている命令を表します。イメージには、実行に必要なすべてのバイナリが含まれています。

ここに画像の説明を入力

コンテナー: イメージのインスタンスはコンテナーと呼ばます。コンテナーは、ホスト OS によって実行される単なる実行可能なイメージ バイナリです。実行中のイメージはコンテナーです。

ここに画像の説明を入力

Dockerfile: Dockerfile は、すべてのコマンド/ビルド手順を含むテキスト ドキュメントであり、ユーザーはコマンド ラインで呼び出してイメージを組み立てることができます。として保存されますDockerfile。(小文字の「f」に注意してください。)

ここに画像の説明を入力

Docker-Compose: Compose は、複数コンテナーの Docker アプリケーションを定義して実行するためのツールです。Compose では、YAML ファイルを使用してアプリケーションのサービス (コンテナー) を構成します。次に、1 つのコマンドで、構成からすべてのサービスを作成して開始します。Compose ファイルは として保存されdocker-compose.ymlます。

于 2019-09-04T08:49:31.093 に答える
49

私のワークフローでは、システムの各部分に Dockerfile を追加し、各部分を個別に実行できるように構成します。次に、docker-compose.yml を追加して、それらをまとめてリンクします。

最大の利点 (私の意見では):コンテナーをリンクするときに、名前を定義し、この名前でコンテナーに ping を実行できます。したがって、データベースは名前でアクセスできdb、IP ではアクセスできなくなる可能性があります。

于 2016-08-29T08:49:06.050 に答える