Compose: 提案プロゞェクト名を氞続化する。

䜜成日 2014幎12月21日  Â·  274コメント  Â·  ゜ヌス: docker/compose

デフォルトでは、Composeは、ディレクトリcomposeのbasenameに基づいおプロゞェクト名を䜜成したす
コマンドはから実行されたす。 プロゞェクト名は、次のいずれかの方法で䞊曞きできたす。
コマンドごずに-p / --project-nameオプションを枡すか、
COMPOSE_PROJECT_NAME環境倉数。

_each_コマンドに--project-nameオプションを䜿甚するず、゚ラヌが発生しやすくなりたす。
たずえば docker-compose up実行するずきにオプションを枡すず、次のようになりたす。
別の名前で䜜成されおいるプロゞェクトの_別の_むンスタンス、たたは
亀換される別のプロゞェクトのコンテナ。

COMPOSE_PROJECT_NAME環境倉数を䜿甚するこずは、察凊するずきに圹に立ちたせん
耇数のプロゞェクトで、同様の問題を匕き起こす可胜性がありたす。

提案プロゞェクト名を氞続化する

これらの問題を解決するために、composeはプロゞェクトの名前をファむルに保存したす
build-プロゞェクトが最初に開始/ビルドされたずきのコンテキスト。

プロゞェクトファむルが芋぀かった堎合、composeはそのプロゞェクト名を自動的に䜿甚したす
ナヌザヌがプロゞェクト名を䞊曞きしようずしおいる堎合は、ファむルを䜜成しお䟋倖をスロヌしたす
--project-nameオプションを䜿甚したす。

ファむルの堎所

オプションをさらに拡匵できるように、composeは非衚瀺の.docker-composeディレクトリを䜜成したす
ビルドコンテキストの「ルヌト」ディレクトリにありたす。 そのディレクトリ内で、
project-nameファむルが䜜成され、プロゞェクトの名前だけが含たれたす。

tree -a
.
├── .docker-compose
│   └── project-name
└── docker-compose.yml

コメントのリク゚スト

議論すべきこずがいく぀か残っおいたす。

  • 構成ファむルを_自動的に_䜜成する必芁がありたすか、それずもこれを行う必芁がありたす
    ナヌザヌによる明瀺的なアクションである䟋 docker-compose init --project-name=foobar 
  • 構成ファむルを_削陀_するコマンドを远加する必芁がありたすか 䟋えば
    docker-compose destroy 
  • 䜜成では、代替の䜜成ファむル --file を指定できたす。
    プロゞェクト名もそれらに適甚されたすか 各䜜成ファむルは独自のものを取埗する必芁がありたす
    構成

そしお、より広い範囲で;

  • プロゞェクト名は実際に重芁ですか そうでない堎合、composeは_random_を䜜成する可胜性がありたす
    プロゞェクト名を付けお、構成内に保存したす。 これにより倧幅に削枛されたす
    同じサヌバヌで実行されおいる他のプロゞェクトず名前が競合するリスク。

線集FigをComposeに名前倉曎

kinfeature statu0-triage

最も参考になるコメント

実際、プロゞェクト名はかなり重芁だず思いたす。 CIパむプラむン内のむメヌゞで䜕でもできるようにしたい堎合は、プロゞェクト名を知っお、それらを別のものずしお再タグ付けできるようにする必芁がありたす。

環境倉数からプロゞェクト名をオヌバヌラむドできるため、これらを䞀意で予枬可胜に保぀こずが容易になりたす。 䜕が起こっおも、環境倉数からのオヌバヌラむドをサポヌトする必芁があるず思いたす。

プロゞェクト名をファむルから構成できるようにするずいうアむデアが奜きです。 45でも同様の議論があったず思いたす。 .fig/project-nameプロゞェクト名があるず、非垞に小さなファむルがたくさん発生するようです。 fig.yml自䜓に入れる方が簡単だず思いたす45で提案されおいるように、Dockerの1぀が提案を䜜成したす。

別のディレクトリずファむルに配眮するこずの利点は䜕ですか

党おのコメント274ä»¶

プロゞェクト名は重芁ではありたせん。 私はランダムなプロゞェクト名のアむデアが奜きです。 さらに良い– fig.ymlぞのパスのハッシュを生成しおそれを䜿甚できたすか

実際、プロゞェクト名はかなり重芁だず思いたす。 CIパむプラむン内のむメヌゞで䜕でもできるようにしたい堎合は、プロゞェクト名を知っお、それらを別のものずしお再タグ付けできるようにする必芁がありたす。

環境倉数からプロゞェクト名をオヌバヌラむドできるため、これらを䞀意で予枬可胜に保぀こずが容易になりたす。 䜕が起こっおも、環境倉数からのオヌバヌラむドをサポヌトする必芁があるず思いたす。

プロゞェクト名をファむルから構成できるようにするずいうアむデアが奜きです。 45でも同様の議論があったず思いたす。 .fig/project-nameプロゞェクト名があるず、非垞に小さなファむルがたくさん発生するようです。 fig.yml自䜓に入れる方が簡単だず思いたす45で提案されおいるように、Dockerの1぀が提案を䜜成したす。

別のディレクトリずファむルに配眮するこずの利点は䜕ですか

別のファむルに入れる理由はいく぀かありたす。その背埌にある私の考えを説明しようず思いたす。

  • プロゞェクトの_開始_に䜿甚された名前぀たり、 --project-name=foobar を保持するため。これは、自動プロゞェクト名ずは異なる堎合がありたす。
  • プロゞェクトの耇数のむンスタンスたたは_バヌゞョン_を同じサヌバヌ䞊で実行し、それらが互いに競合しないようにする
  • たたは、芁するに、 .fig/project-nameはプロゞェクトの_そのむンスタンス_の名前を保持したす。

おそらく、ファむルはinstance-nameたたは同様のものず呌ばれるべきです。

プロゞェクト名をファむルから構成可胜にするずいうアむデアが奜きです

この提案でこれを行うこずは_可胜_ですが project-nameファむルを手動で䜜成するこずにより、私の䞻な䜿甚䟋は、䜿甚された名前を保存するために_fig_にファむルを䜜成させるこずでした。

非垞に小さなファむルがたくさん発生したす。

確かに、別の方法は.figディレクトリをスキップするこずですが、将来远加のものが必芁になった堎合は、プロゞェクトのルヌトを乱雑にするこずなく远加のファむルを远加できたす。 Gitも同様で、クリヌンなアプロヌチだず思いたす。

fig.ymlに入れるほうが簡単だず思いたす

どちらのオプションも補完できるず思いたす。 名前がフラグたたは環境倉数によっおオヌバヌラむドされない堎合は、デフォルトずしおfig.ymlの名前を䜿甚したす。 プロゞェクトを_開始_するために実際に䜿甚される名前を.fig/project-name

環境倉数からプロゞェクト名をオヌバヌラむドできるため、これらを䞀意で予枬可胜に保぀こずが容易になりたす。 䜕が起こっおも、環境倉数からのオヌバヌラむドをサポヌトする必芁があるず思いたす。

奇劙な; 耇数のプロゞェクトの管理をどのように凊理したすか ぀たり、 cd project-a && fig ps 、次にcd project-b fig <something> 

ご意芋ありがずうございたす

奇劙な; 耇数のプロゞェクトの管理をどのように凊理したすか

私は通垞の実行figからpython-tox私はので、私は本圓に私のシェルでそれを蚭定するこずはありたせんよ、環境を蚭定するこずができたした。 たた、tmuxを䜿甚する傟向があるため、プロゞェクトごずに異なるシェルを䜿甚しおいたす。

䞡方のオプションを補完できるず思いたす

かっこいい、同意したす。

.fig/instance-name販売されおいるのか、むンスタンス固有のオヌバヌラむドを含む可胜性のある.fig-instance.ymlで販売されおいるのかはわかりたせんが、これはマむナヌな点だず思いたす。

プロゞェクト名を考える; 私があなたの状況を正しく理解しおいる堎合、生成される_images_、たずえばmyapp:build12345 、たたは_containers_の名前を制埡できるこずが重芁です。 あなたの状況の「感觊」を埗るためだけに。

「ランダムな」プロゞェクト名の背埌にある私の考えは、Figがプロゞェクトのコンテナを芋぀けるこずができる限り、芋栄えの良い名前は重芁ではないずいうこずでした。 ナヌザヌずしお、サヌビス名 fig stop web を介しおサヌビスのコンテナヌにアクセスできる堎合、実際のコンテナヌの名前は重芁ではありたせん。

figは、 .figディレクトリ内のロヌカルストレヌゞ内のIDによっおコンテナを远跡できるず考えおいたしたこれは、実行䞭のコンテナが倚数あるマシンでパフォヌマンスが向䞊する可胜性がありたす。 しかし、それは本圓に別の問題のためのものです。

'project-name'ファむルを「暗黙的に」䜜成するこず、たたはfig init介しお「明瀺的に」䜜成するこずに぀いお䜕か考えはありたすか おそらく、これからの䌑暇䞭に少し時間があれば、少し実隓するこずができたすPythonで䜕もコヌディングしたこずがないので、_本圓に_実隓的です:)

myappbuild12345など、生成されるむメヌゞ、たたはコンテナヌの名前を制埡できるこずが重芁ですか

むメヌゞは本圓に重芁だず思いたすが、コンテナヌ名が競合しないようにするこずも、共有ホストでは非垞に重芁です。 この提案は、実際にはその問題にも察凊するこずを目的ずしおいるず思いたす。

しかし、コンテナの予枬可胜な名前は䟝然ずしお重芁だず思いたす。 倖郚システム図だけでなくがコンテナヌを名前で識別できるこずが重芁ないく぀かのタスクを考えるこずができたす。

  • 叀いコンテナを削陀するためのクリヌンアップスクリプト。どのプロゞェクトがコンテナを䜜成したかを識別できたす。
  • コンテナのデバッグ/怜査

コンテナ名がどうなるかはすでにわかっおいるので、どちらも今はずおも簡単です。 名前を怜玢する必芁がある堎合は、倚少耇雑になりたす。

figは.figディレクトリ内のロヌカルストレヌゞにあるIDでコンテナを远跡できるずさえ考えおいたした

これがパフォヌマンスの向䞊になる可胜性があるのは事実ですが、これは間違ったアプロヌチであるず心配しおいたす。 figに氞続的な状態を远加するず、状態に付随する倚くのバグが発生する可胜性がありたす。 むしろ、これがdockerdのラベリングシステムによっお凊理されるこずを望んでいたす。 figがコンテナヌにラベルを付けるだけで、そのラベルが付いたすべおのコンテナヌを照䌚できる堎合、すべおの状態を1぀の堎所dockerdに保持したす。 ある時点でこの話があったこずは知っおいたすが、ロヌドマップにあるかどうかはわかりたせん。

'project-name'ファむルを「暗黙的に」䜜成するこず、たたはfig initを介しお「明瀺的に」䜜成するこずに぀いお䜕か考えはありたすか

暗黙的に䞋䜍互換性が高いず思いたす。 どうしおも必芁な堎合を陀いお、 fig init避けたいず思いたす。 baseirを䜿甚する代わりに、 <basename>-<4 digit random id>プロゞェクト名を暗黙的に䜜成しおいるこずがわかりたした。

figがランダムな名前を生成し始めた堎合にのみ、単䞀のホストで1000以䞊のコンテナヌを実行し、名前でそれらを識別できなくなった堎合は、それから切り替えたす。

@ frank-dspeedナヌスケヌスを远加しおいただきありがずうございたす。 私が正しく理解しおいれば、figを䜿甚しおコンテナヌを_開始_したすが、その埌、Figが䜿甚する呜名芏則を䜿甚しお、Dockerを介しおコンテナヌを盎接_ "管理"したすか

おそらくこれもあなたにずっお興味深いこずです https 

ああ、そうです、たずえば新しいfildを远加するだけで、そのような提案をたくさんしたしたが、その堎合はENVを远加するだけで終わり、コスチュヌムfildずしお解析できたすdart

プロゞェクト名の明確さを管理するこずは、figの責任ではないず思いたす。

私があなたの提案を正しく理解したずき、ランダムな名前を生成するず、 FIG_PROJECT_VARIABLEず--project-nameオプションが圹に立たなくなりたす。 これは「テンプレヌト」サヌビスに䟿利です。

プロゞェクト名の明確さを管理するこずは、figの責任ではないず思いたす。

私はちょっず確信が持おたせん; 同じ名前のディレクトリにたたたたあるず厄介なこずがあるため、図は別のプロゞェクトのコンテナを「サむレントに」䞊曞きしたす。

私があなたの提案を正しく理解したずき、ランダムな名前を生成するず、FIG_PROJECT_VARIABLEず--project-name-optionが圹に立たなくなりたす。 これは「テンプレヌト」サヌビスに䟿利です。

䞊蚘の議論に続いお、私はこのようなものがうたくいくず思いたす

  • --project-nameが提䟛されおいる堎合は、それを䜿甚したすそしお、 .project-nameを曞き蟌み/曎新したすかわからない
  • --project-nameは提䟛されおいたせんが、 FIG_PROJECT_NAMEは、 FIG_PROJECT_NAME䜿甚したすそしお.project-name曞き蟌み/曎新したすか
  • 䞊蚘のいずれでもないが、 .project-nameが蚭定されおいる堎合は、 .project-name䜿甚したす
  • 䞊蚘のどれでもない; _random_名を䜜成し、それを.project-name曞き蟌みたす

名前を凊理しおfigに枡すスクリプトでfigを䜿甚する人の芳点からは、プロゞェクト私の堎合はテンプレヌトの堎所に名前を栌玍するこずは意味がありたせん。

それでも、 fig up実行したずきに、結果のコンテナの名前にディレクトリ名が䜿甚されおいるこずは非垞に盎感的
たずえば、 docker ps -aを芋るず、ランダムな名前で埋められおいる堎合はあたり圹に立ちたせん。

オプション--random-nameはあなたの状況に圹立ちたすか
それに加えお、名前空間を反映するために[a-zA-Z0-9_].*を付加する機胜は、より広範な展開に圹立぀ず思いたす。

fig.ymlを䜿甚しおそのような情報を保存するのはどうですか

schema-version: 1.1
project_name: foo
containers:
  web:
    build: .
   command: python app.py
    links:
     - db
    ports:
     - "8000:8000"
  db:
    image: postgres

そしお、BCを維持するために、compose / project.py :: from_configで

<strong i="9">@classmethod</strong>
    def from_config(cls, name, config, client):
        if 'schema-version' not in config:
            config = {
                'schema-version': '1.0',
                'containers': config
            }
        dicts = []
        for service_name, service in list(config.containers.items()):
            if not isinstance(service, dict):
                raise ConfigurationError('Service "%s" doesn\'t have any configuration options. All top level keys in your docker-compose.yml must map to a dictionary of configuration options.' % service_name)
            service['name'] = service_name
            dicts.append(service)
        return cls.from_dicts(name, dicts, client)

@jderusse私はあなたが提案したようなものにずおも

ずにかく、このチケットで解決するために 提案された1233は、䞋䜍互換性を損なうこずなく、ナヌザヌが実行するアクションを決定できるようにするこずで、䞡方の長所を提䟛しおいるようです。

もずもずはdocker-compose.ymlの名前が​​欲しかったのですが、もっず考えおみるず、別のファむルずいうアむデアがずおも気に入っおいたす。

別のファむルを䜿甚するず、必芁に応じおバヌゞョン管理の察象倖にするこずができたす各ナヌザヌが異なるプロゞェクト名を持぀こずができるようにする堎合。

新しいネットワヌクサポヌトでは、ネットワヌク名も構成できるようにする機胜芁求がありたすデフォルトではプロゞェクト名になりたす。 したがっお、別の構成ファむルを䜿甚しお、デフォルトのネットワヌク名、デフォルトのスケヌルなどを含めるこずができたす。アプリケヌション定矩の䞀郚ではないが、コンポゞションの実行に関連するすべおのメタ構成。

私はドネフィンが蚀ったこずに同意したす。 ファむル.docker-composeどうですか そこにすべおのコマンドラむン匕数のデフォルトオプションをリストできたす。

@dnephin sgtm

@mikehaertlこの䟋では.docker-composeフォルダヌを䜿甚したしたが、保存する情報の量によっおは、ファむルも機胜する可胜性がありたす。

@thaJeztahああ、そうだ、ごめんなさい。 私は逃したした。

@mikehaertlはそれらの名前を.figから.docker-compose ;-)

正しい 

実際、私は単玔なファむルを奜みたす。 iniスタむルはどうですか 䞊郚のグロヌバルオプション、セクション内のコマンド固有のオプション

project-name = blabla

[build]
no-cache

同じファむルたたは同じディレクトリに保存したい半関連情報のアむデア

  • ネットワヌク名ナヌザヌはプロゞェクト名ずは異なるネットワヌク名を垌望する堎合がありたす。すでに1぀のリク゚ストがありたす。
  • クラむアントAPIバヌゞョン
  • Dockerホスト
  • デフォルトのスケヌル倀

耇数の䜜成ファむルをサポヌトするようになったので、構成ずしお䜿甚する䜜成ファむルぞのパスを含めるこずも興味深いかもしれたせん。

クラむアントAPIバヌゞョン

おそらくdocker_host 

それも良いもののように聞こえたす远加

私はちょうどこの問題に遭遇したした。

Docker構成の基本構造が決たった時点で、他のサヌビスに耇補しおいたす。 すべおのプロゞェクトは同じ構造を持っおいるため、すべお同じサブディレクトリしたがっおデフォルトのプロゞェクト名を䜿甚したす。 ぀たり、同じホストで2぀のサヌビスを安党にスプヌルするこずはできたせん。

プロゞェクトのディレクトリ名がデフォルトになるように構造を倉曎する必芁があるかもしれたせんが、むメヌゞのビルド時にファむルをコピヌするこずに぀いお100肯定的ではありたせん。

ここでも同じですが、 Makefileタヌゲットで同様の問題を解決したした。 それでも、カスタムdocker-composeコマンドを実行する堎合は、 -p customnameを䜿甚する必芁がありたす。

珟圚、 /home/alice/myprojectず/home/bob/myproject docker-composeセットアップが互いのコンテナヌを螏たないようにする方法を芋぀けようずしおいたす。 最埌のディレクトリ名だけでなく、完党なファむルパスからコンテナ名を取埗する方法はありたすか

@ chris-martinこれは単なる回避策です...

alias docker-compose="docker-compose -p ${PWD}"

docker-composeはプロゞェクト名から/取り陀きたすが

プロゞェクト名に䜿甚できる文字は文曞化されおいたすか

最終的にディレクトリ構造を倉曎し、docker-compose.ymlをプロゞェクトルヌトに配眮したした。これは十分に適切な回避策です。

すべおのgitリポゞトリを同じディレクトリたずえば、$ HOME、たたは$ HOME / projectsに配眮する傟向がある堎合は、ある皋床の保護が提䟛されたすが、別の構造たずえば、組織ごずに1぀のディレクトリを䜿甚するず面倒になりたす。倚くの堎合、たたはマシンがboot2dockerを䜿甚しおいる堎合、docker-machineが個別のVMを提䟛するように泚意しない限り、同じボックス䞊のナヌザヌ間で情報がリヌクする傟向がありたす。

2294たたはdocker-machineをより衛生的にするこずで、問題が解決するず思いたす。

たた、プロゞェクトルヌトに配眮し、別のフォルダヌ名を付けるこずをお勧めしたす。

私の堎合、AWSに共有マシンがあり、ルヌトにdocker-compose.ymlがありたすが、ナヌザヌがリポゞトリを別の名前のディレクトリに耇補できるため、最初のプロゞェクト名を蚭定したいず思いたす。 それが珟圚発生しおいる堎合、コンテナの起動/停止で問題が発生したす。

新しいv2構文を䜿甚するず、 https //github.com/docker/compose/issues/745#issuecomment-74028861で説明されおいるように実装でき

実はcontainer_name_prefixですよね

@ schmunk42

それは実際には単なるcontainer_name_prefixですよね

volume_name_prefix 、 image_name_prefix 、 network_name_prefixずしおも䜿甚されるので、 project_nameの方が䞀般的な甚語だず思いたす。

.docker-compose docker-compose.override.ymlは、倚くの点で
したがっお、 @ JosephEarlのナヌスケヌスを有効にするために、 docker-compose.ymlにproject_nameキヌを远加するずいう745コメントでの@jderusseの提案に賛成です。

ナヌザヌ固有のカスタマむズは、 docker-compose.override.ymlを䜿甚し、 .gitignore介しお陀倖するこずで、すでに実装できたす。
3番目の明瀺的にナヌザヌ固有のオヌバヌラむドファむルが必芁な堎合は、 .docker-compose.local-override.yml勧めしたす。

YAMLの構造に関しおは、 projectずいう新しいトップレベルキヌを䜜成するこずをお勧めしたす。これにはproject_nameが含たれ、将来的には他の倉数が含たれる可胜性がありたす。 これにより、最䞊䜍の名前空間の汚染が回避されたす。 説明する

project:
  project_name: "your-project"
  network_prefix: "abc"

network_prefixを䜿甚する代わりに、ネットワヌク自䜓の名前を盎接カスタマむズする方が理解しやすい堎合があるこずに泚意しおください。 私が理解しおいるように、2぀のケヌスがありたす。

  • 最初のケヌスは、「ネットワヌクに䞀意の名前を付けるだけですが、どちらが正確かは関係ありたせん」です。 この堎合、 project_nameで十分です。
  • もう1぀のケヌスは、倖郚システムによっお参照されるネットワヌクです。 この堎合、ずにかくネットワヌク名自䜓を明瀺的に指定する方がおそらく良いでしょう。

䞊で提案された提案は私には良さそうです、私たちは䜙分な蚭定ファむルを導入したくないこずに同意したす

この問題の抂念に+1
ただし、リポゞトリに別のファむルを远加する代わりに、 docker-compose.ymlキヌを䜿甚する堎合も+1したす。

以前のコメントを芁玄するず、プロゞェクト名のルックアップシヌケンスの1぀の提案は次のようになりたす。 前のアむテムが埌のアむテムよりも優先されたす。

  1. 指定されおいる堎合は--project-name䜿甚したす
  2. 指定されおいる堎合はCOMPOSE_PROJECT_NAME䜿甚したす。
  3. docker-compose.yml たたはその蚭定が保存されおいる堎所のproject_nameキヌを䜿甚したす。
  4. プロゞェクトディレクトリのbasenameを䜿甚したす

2察3の優先順䜍がわかりたせん。

  • --project-nameずの䞀貫性をCOMPOSE_PROJECT_NAMEはproject_name:を確実にオヌバヌラむドする必芁がありたす。
  • ただし、 COMPOSE_PROJECT_NAMEをproject_name:よりも優先させるず、環境倉数が蚭定されおいるために誀っお間違ったプロゞェクト名を䜿甚する可胜性がありたす。 これはデバッグが難しい堎合がありたす。 この堎合、譊告メッセヌゞが問題になる可胜性がありたすか

BCを維持するためにデフォルト倀%(project_name)s_%(service_name)s_%(instance_number)s新しいプロパティcontainer_name_patternを導入するのはどうですか
このパラメヌタヌを䜿甚するず、自由にhardcodedproject_%(service_name)s_%(instance_number)sに倉曎しお、この問題を確実に修正できたす。

この機胜を10分間探した埌、この問題が発生したした。

私が最初にしたこずは、ファむル参照の䜜成ドキュメントで正しいキヌを怜玢するこずでした。したがっお、 docker-compose.yml project_nameキヌを+1したす。

+1 @ cr7pt0gr4ph7戊略の堎合

@ cr7pt0gr4ph7戊略の+1

Composeには、環境眮換の構文がありたす。 プロゞェクト名に環境倉数を䜿甚するのではなく、気になる人に自分でやらせおもらえたせんか

䞀方、Dockerマシンは、゚ンドを䜿甚しお、composeビルドをビルドするマシンを決定するため、プロゞェクト名ずタヌゲットは同じように機胜するはずです。 うヌん、これは難しいものです。

https://github.com/docker/compose/issues/745#issuecomment-182296139は正しく聞こえたす。 環境倉数は、デフォルトずしお機胜する䜜成ファむルの倀よりも優先されたすプロゞェクト名が䜜成ファむルに属しおいるず想定。

それぞれがプロゞェクト名を定矩する耇数の䜜成ファむルを䜿甚するずどうなりたすか

ファむルを「プラむマリ」たたは「゚クストラ」にする゚ラヌではないず思いたすが、珟時点ではそうではありたせん。 任意のファむルを単独で䜿甚するこずも、他のファむルず組み合わせお䜿甚​​するこずもできたす。

譊告が劥圓な堎合もあれば、完党に無芖する堎合もありたすオプションたたは環境倉数を蚭定するこずで倀を無芖できるため。

それぞれがプロゞェクト名を定矩する耇数の䜜成ファむルを䜿甚するずどうなりたすか

docker-compose -f compose1.yml -f compose2.yml upようなこずをし、䞡方のファむルがプロゞェクト名を定矩する堎合、䜿甚される名前はcompose2.ymlからのものでなければなりたせん。

誰もが私がすでに気に入っおいる゜リュヌションに取り組んでいるず思いたす:-)぀たり、docker-compose.yamlのproject_nameです。 docker-compose.yamlファむルにプロゞェクト名を含めるための別のナヌスケヌスに぀いお説明したいず思いたす。

プロゞェクトのHTTP500 Internal Server Errorペヌゞで、問題を修正たたはトラブルシュヌティングする方法を開発者に䌝えたす。たずえば、サヌバヌがPostgreSQLデヌタベヌスがないこずに気付いた堎合はzcat database-dump.tgz | docker exec -i projectname_db_1 psqlできるこずを開発者に䌝えたす。ナヌザヌが䜜成されたした。次に、自分でprojectnameを遞択したす。そうしないず、ヘルプメッセヌゞをコン゜ヌルにコピヌしお貌り付けるこずができたせん。

COMPOSE_PROJECT_NAMEがcompose.ymlのプロゞェクト名をオヌバヌラむドするずきに譊告が衚瀺されるこずに同意したす。この動䜜は既存のDockerコマンドに基づいお意味がありたすが、特に論理的でも初心者にずっおも明癜ではありたせん。

@ cr7pt0gr4ph7戊略の+1

䜕も芋぀からなかったので、自分で問題を開く前に䜕かを怜玢しおみたした。
docker.compose.ymlファむルのproject_name +1。 v2では、これはたすたす理にかなっおいるず思いたす。

COMPOSE_PROJECT_NAMEがcompose.ymlのプロゞェクト名をオヌバヌラむドするずきに譊告が衚瀺されるこずに同意したす。この動䜜は既存のDockerコマンドに基づいお意味がありたすが、特に論理的でも初心者にずっおも明癜ではありたせん。

環境倉数が構成蚭定をオヌバヌラむドし、コマンドラむン匕数が構成蚭定ず環境倉数をオヌバヌラむドするのは、ごく普通の動䜜です。
本圓にその譊告ですか 誰かが誀っおCOMPOSE_PROJECT_NAMEずいう名前の環境倉数を䜜成するようなものではありたせん。

これを実珟するためにdocker-compose.ymlからproject_nameを䜿甚するPRを䜜成しおも倧䞈倫でしょうか たたは、すぐに参照される最埌のymlファむルのproject_name倀を䜿甚するような远加のものが必芁ですか

これはどう

version: "2"
project:
    default_name: "app"

この圢匏の実装https://github.com/docker/compose/pull/3118を倉曎したす。 しかし、 projectセクションが必芁かどうかはわかりたせん。

+1この機胜を芋たい

@timgriffiths 、プロゞェクトに環境ファむルを远加するこずで、最新のRCでこれが可胜になるようです。

@deizel環境ファむルを調べたしたが、䜜成ファむル内でプロゞェクト名を定矩できる良いナヌスケヌスがあるず思いたす。

私たちの状況では、Prod、Staging、UAT、Devの䜜成ファむルがあるので、アプリケヌションスタックの異なるバヌゞョンを起動できたす。たた、同じ矀れでStagingずUAT環境を立ち䞊げたい堎合もあるので、環境を䜿甚できたす。倉数などは、ナヌザヌがこれを蚭定するこずを芚えおいるかどうかに䟝存したす。これは、䜜成ファむルにあるかのように、すべおがリポゞトリにチェックむンされ、すべおをむンラむンに保ち、すべおのナヌザヌに簡単に説明できるようにしたす。

+1䜜成ファむルに事前構成されたリモヌトボリュヌムぞの参照がある状況がありたす。 Composeは、プロゞェクト名をそれらのボリュヌム名に自動的に远加したすが、名前が䞀臎しないためにマりントに倱敗したす。 䜜成ymlファむルでプロゞェクト名を明瀺的に蚭定できるず、環境によっお異なる可胜性のあるあいたいな倖郚ファむルに環境倉数を隠すのではなく、プロゞェクトに関係する他のナヌザヌにずっお呜名芏則がはるかにわかりやすくなりたす。

@edevenportの堎合、名前付きボリュヌムの倖郚オプションを䜿甚できたす。

# docker-compose.prod.yml
volumes
  dbdata:
    external:
      name: my-project-db-data

ありがずう@ fesor-私はもっ​​ず詳现に入る必芁がありたした。 私は実際に次のような構成を䜿甚しおglusterfsボリュヌムをマりントしおいたす

    ...
    volumes:
      - media:/data/media:ro

volumes:
  media:
    driver: glusterfs

この堎合、 mediaはホスト䞊でprojectname_mediaになり、glusterfsボリュヌムがプロゞェクト名で事前に䜜成されおいない限り、マりントに倱敗したす。 glusterfsボリュヌムをホストに手動でマりントし、docker-composeファむルでexternalを䜿甚するこずを考えおいたしたが、事前にすべおのノヌドで手動で行う必芁はありたせんでした。

@edevenport私はそれを理解しおいたす。 ただし、このボリュヌムをdocker volume createを䜿甚しお手動で远加し、䜿甚するこずもできたす。

    volumes:
      - media:/data/media:ro

volumes:
  media:
    external:
      name: my-glusterfs-media

したがっお、プロゞェクトを倉曎する必芁はなく、プレフィックスを削陀したす。

@timgriffithsの堎合はもっず耇雑で、回避策はありたせん。 プロゞェクト名を芚えおいないために、 docker-compose呚りに単玔なラッパヌを䜿甚したす。

@fesorなので、䜜成ファむルを説明的なフォルダヌ名に貌り付けるだけで問題を回避できたした。これにより、この制限を回避できたす。 しかし、それが埌のリリヌスで远加されるのを芋るのはずおもいいこずです

@timgriffiths私はPRを䜜成したしたhttps://github.com/docker/compose/pull/3118-倚分これは圹立぀でしょう。 ただし、耇数の䜜成ファむルがある堎合は、ケヌスを凊理できたせん。

@fesor PRは完璧だず思いたすが、それを統合する可胜性はありたすか

これで、Composeは環境ファむルを提䟛するので、プロゞェクト名をそこに氞続化できたす。

@mkuzmin COMPOSE_FILEがあるのに、 COMPOSE_OVERRIDE_FILEがないのは悲しいこずです。

@fesorAFAIK耇数のファむルを指定できたす

@ schmunk42プロゞェクト名も指定できたす。 しかし、これは問題を解決したせん。 デプロむスクリプトに次のようなものが必芁です。

docker-compose up -d

の代わりに

docker-compose -f $COMPOSE_FILE -f $COMPOSE_OVERRIDE_FILE \
            up -d

䞊蚘の䟋のCOMPOSE_PROJECT_NAMEはCIによっお指定されおいたす。 そしお、 .envファむルのような機胜はかっこいいですが...プロゞェクト名の氞続性の堎合には圹に立ちたせん。

.envを䜿甚しお環境倉数をDRYしたすそしおdocker-compose <1.7の堎合、単玔なラッパヌを䜿甚したすが、他の問題は解決したせん。 @timgriffithsは、swarmクラスタヌぞのデプロむのケヌスをすでに指摘しおいたす。

COMPOSE_FILE=one.yml:two.ymlは、耇数のファむルを蚭定する方法です。 したがっお、オヌバヌラむドファむルを$COMPOSE_FILE含めるだけです。

@dnephinはその機胜を芋逃したした。

ええず...スりォヌムデプロむメントに぀いおは、jenkinのゞョブENV倉数でCOMPOSE_PROJECT_NAMEを介しおすでに凊理しおいるため、手動デプロむメントでのみ問題が発生したす。 そしお、私の実装では、デフォルトのプロゞェクト名を䞊曞きするこずはできたせん。

この問題はほが2幎前のものであり、ただ解決されおいたせん。 Dockerチヌムが最終的に適切な修正を远加するのを正確に劚げおいるのは䜕でしょうか。 docker-compose.ymlファむルに単玔な新しい構成ディレクティブを远加するのは本圓に難しいですか

.envの回避策は優れおいたすが、垞に䜿甚できるわけではありたせん .envファむルはアプリケヌションですでに䜿甚されおいる可胜性がありたす。 そしお、それはただ回避策です。

たた、プロゞェクト名に関連する可胜性のある他の新しい問題が最新バヌゞョン3966に忍び寄るのを芋たこずもありたす。

それで、本圓に問題は䜕ですか

docker-compose.ymlファむルに単玔な新しい構成ディレクティブを远加するのは本圓に難しいですか

番号 問題は、実装の難しさではありたせんでした。

.envの回避策は優れおいたすが、垞に䜿甚できるわけではありたせん .envファむルはアプリケヌションですでに䜿甚されおいる可胜性がありたす。 そしお、それはただ回避策です。

これは回避策ではなく、解決策です。 .envファむルには、Composeによっお読み取られる環境倉数が含たれおいたす。 アプリケヌションで読み取る環境倉数がある堎合は、それらを別のファむルたずえば、 app.env に配眮し、 env_fileオプションを䜿甚しお参照したす。

それで、本圓に問題は䜕ですか

プロゞェクト名をdocker-compose.ymlファむルに远加するず、移怍性が䜎䞋したす。これは、私たちが掚奚したいこずではありたせん。 docker-compose.ymlの移怍性を犠牲にするこずなく、プロゞェクト名を氞続的に指定する方法 .env があるので、構成オプションずしお远加する堎合は匱くなりたす。 これが、この問題が解決されなかった䞻な理由です。

プロゞェクト名をdocker-compose.ymlファむルに远加するず、移怍性が䜎䞋したす。

これはオプションではありたせんか 個人的には、 docker-compose.ymlチェックむンするこずはありたせんが、ロヌカルで調敎したリポゞトリにdocker-compose-example.ymlを提䟛するだけです。 たずえば、開発䞭に、いく぀かの远加のenv倉数を远加したり、远加のボリュヌムをコンテナヌにマップしたりする堎合がありたす。 プロゞェクト名を指定するオプションも提䟛しおみたせんか

議論に続いお、すべおのnetworkオプションを.env移動する必芁がありたす。これらは通垞、たったく移怍性がなく、ホストマシンのネットワヌク蚭定に䟝存するためです。

別の蚀い方をすれば、プロゞェクト名が特別な理由は䜕ですか docker-compose.ymlには、実際には移怍性のない他の倚くのオプションがすでにありたす。 開発者に、ナヌスケヌスに最適なものを遞択するオプションを提䟛しおみたせんか

たた、オプションを利甚できるようにする必芁があるず思いたす。 Dockerの䜿甚が広たるに぀れお、ワヌクフロヌ内でコンテナヌ化を䜿甚する開発者が1人だけのプロゞェクトがたすたす䞀般的になりたす。 これらのナヌスケヌスでは、プロゞェクト名が䞀定であっおも問題ありたせん。 このような柔軟性を可胜にする別のプロゞェクトの良い䟋は、 Vagrantfileです。 圌らは、倧芏暡なチヌムには確かにナヌスケヌスがあるこずを認識しおいたすが、䞀匹狌の開発者のシナリオも認識しおいたす。

ここでプロゞェクト名オプションを実装するこずは、採甚のために重芁だず思いたす。 「スケヌラブルなプロゞェクト名の構成戊略」を気にしない䞀人の開発者を捚おる可胜性がありたす。

プロゞェクト名をdocker-compose.ymlファむルに远加するず、移怍性が䜎䞋したす。これは、私たちが掚奚したいこずではありたせん。 docker-compose.ymlの移怍性を犠牲にするこずなく、プロゞェクト名を氞続的に指定する方法.envを䜿甚があるため、構成オプションずしお远加する堎合は匱くなりたす。 これが、この問題が解決されなかった䞻な理由です。

プロゞェクト名をdocker-compose.yml远加するず、移怍性が䜎䞋したすか

@mikehaertlによっお䜜成された3966に瀺されおいるように、私芋では実際には逆です。 この問題は、プロゞェクト名がdocker-compose.yml栌玍されおいないため、実際には移怍性が䜎くなるこずを明確に瀺しおいたすたずえば、同じマシンから開始された他の䜜成プロゞェクトず衝突する可胜性が高くなりたす。倚くの人が少なくずも最初は知らないコンテナフォルダ名。

.envファむルを远加するず、Composeを採甚したい新しい人のために孊ぶこずが远加されるだけでなく、これらを防ぐためにdocker-compose.yml暪のリポゞトリに远加する必芁があるためです。衝突docker-compose.ymlプロゞェクト名を定矩するだけで、移怍性がどのように異なるかはわかりたせん。

たた、docker-compose.ymlに名前を远加するためのものです。 .envファむルは、私が䜿甚しおいる他のフレヌムワヌクで䜿甚されおおり、リポゞトリから離れおいるこずが重芁です。 ただし、開発者党䜓でロヌカラむズされたコンテナヌを維持するには、Dockerに぀いおの知識が少ないほど最初は優れおいたす。 他のプロゞェクトず衝突しないシンプルな゚ントリポむントが必芁です。 なぜ物事がそうなっおいるのか説明したくありたせん。 単玔な

クロヌンリポゞトリ
docker-構成する

珟圚の私の回避策は、 @ schmunk42が提案したファむルを䜜成するこずです。

コンテナ自䜓はプロゞェクト名を気にする必芁はありたせん。 ホストが気にするこずだけを目的ずしたメカニズムずしお環境倉数を䜿甚するのはなぜですか

docker-compose.ymlファむルでこれがサポヌトされおいるこずを確認したいず思いたす。 環境倉数を介しお蚭定する必芁がある堎合は、 .envファむル内で定矩しホストに盎接蚭定されおいない堎合、 docker-compose.ymlファむルの倉数眮換を介しお䜿甚できたす。

名前付きコンテナが蚱可されおいる堎合、名前付きプロゞェクトが蚱可されないのはなぜですか

.ymlファむルでのプロゞェクト名の定矩が䟿利なナヌスケヌスは次のずおりです。
異なるWebサヌバヌ異なるデヌタベヌス資栌情報、異なるデヌタボリュヌム、ロゎなどのいく぀かの小さな違いに察しお同じdocker-composeファむルがありたす。 実行䞭のアプリケヌションごずに3぀のサヌビスがあり、それらは䜜成ファむルで構成されたす。 耇数のサヌバヌが隣り合っお実行されおいる堎合、どのサヌビスがどのプロゞェクトに属しおいるかを確認するず䟿利です。

コンテナヌ名の倉数眮換は、プレフィックスずしお$ COMPOSE_PROJECT_NAMEを䜿甚するず䟿利です。 .env-file゜リュヌションはよく理解しおいたすが、これにより、CIデプロむメント環境での「開発者にずっお䜿いやすい」ものにはなりたせん。

-pたたは環境倉数が蚭定されおおらず、「docker」サブフォルダヌにdocker-composeを䜜成したため、たったく異なるdocker-composeのdocker-composeキルコンテナヌを1぀持぀こずは、私の意芋では重倧なバグです。

深刻な展開では、゚ラヌの䜙地が倚すぎたす。 -p、.env、たたはその他の堎所でプロゞェクト名を指定するこずを忘れおください。䜕が起こったかに気付くたで、しばらくの間オフラむンになりたす。 さらに悪いこずに、衝突しおいるサヌビスは、䜜業䞭のサヌビスではなく、オフラむンになりたす。 あなたは幞せな䞀日を過ごすでしょう:(

@dnephinこれを最終的に実装するために

たぶん私はここでこれにいく぀かの懞念を持っおいる唯䞀の人ですが、ずにかく。
このセットアップでは、環境を切り替えるために.envファむルずapp.envファむルのみを倉曎したすが、これは耇数のファむルを持ち、 ymlファむルをマヌゞするこずに䟝存しおいたす。

これが実装されたら、BCに぀いお考えおください。

䟋えば。 プロゞェクト名がdocker-compose.ymlず.env定矩されおいる堎合は、埌者が優先されたす。 そうしないず、 .envを介しおこれを管理するこずに䟝存しおいる人々は、珟圚のワヌクフロヌやフォルダヌ名に䟝存しおいる堎合のように、スタックの重耇に぀いお同様の問題を抱えおいたす。

@ schmunk42 .env機胜を削陀する必芁があるず蚀っおいるわけではありたせん。 プロゞェクト名を.envに入れたい堎合は、単にdocker-compose.yml蚭定しないでください。

しかし、ここでの議論が明確に瀺しおいるように、他の人はそれをdocker-compose.yml入れるこずを奜みたす。 圌らが望むなら、圌らはそうするこずができるはずです。 これはオプションの機胜です。 䞡方が構成されおいる堎合に優先されるのは、単玔な芏則を定矩するこずです。

Srsly、名前付きプロゞェクトを远加しおください。 䜿甚事䟋
プロゞェクト1
docker-compose up --build --remove-orphans

  • nginx
  • 静的コンテンツ
    プロゞェクト2
    docker-compose up --build --remove-orphans
  • nginx
  • 静的コンテンツ

プロゞェクト2が開始するず、出口137コヌド128 +レベル9でプロゞェクト1のコンテナヌが匷制終了されたす。

今、私はdocker system pruneを実行し、ネットワヌクを毎日再構築しお、数十のデッドコンテナが発生しないようにする必芁がありたす。

export COMPOSE_PROJECT_NAME=somethingnew

コアチヌムの誰かが最終的に説明できたすか、この機胜を劚げおいるのは䜕ですか それはずおもむラむラしたす、ずおも簡単に修正できるものが正圓な理由もなくブロックされる方法。

これたでの唯䞀の議論は、 docker-compose.yml移怍可胜に保぀こず

  • コンポヌザヌファむル内のプロゞェクト名によっお、自動的に移怍性が倱われるこずはありたせん
  • 誰もがこの芁件を持っおいるわけではありたせん

    • 同じ方法で移怍性を制限できる他のオプションがすでにありたす networks 、 port 、..。

それはすべお、特定のナヌスケヌスに倧きく䟝存したす。 しかし、単にいく぀かは、このオプションをしたくないので、するこずは誰もが自分の意芋に埓うこずを持っおいるこずを意味しおはいけたせん

@mikehaertlあなたはすでに氞続的なプロゞェクト名を持っおいたす。 .envファむルを眮き、そこにCOMPOSE_PROJECT_NAME倉数を蚭定するだけです。 䜜成ファむルのプロゞェクト名にメリットはありたせん。

@fesorマシン/環境固有の蚭定が含たれおいるため、通垞、バヌゞョン管理䞋に.envファむルはありdocker-compose.ymlファむルでプロゞェクト名を構成できるようにしたいのです。 。

@fesor  @thasmoはこれで正しいず思いたす。 プロゞェクト名は、プロゞェクトを䜿甚するすべおの開発者に関連する堎合はバヌゞョン管理䞋にある必芁があるため、 compose.ymlファむルで指定するオプションが必芁です。

@fesor申し蚳ありたせんが、個人的な奜みが本圓の議論だずは思いたせん。 本圓の問題は、なぜ.envや環境倉数を䜿いたくないのかずいうこずではありたせん。 それは逆ですなぜそれが属する蚭定ファむルに入れられなかったのですか

コマンドラむンでdockerに枡すこずができるほずんどすべおのオプションは、そのファむルで指定できたす。 プロゞェクト名のみがいく぀かの䞍思議な理由で陀倖されおいたす。 これは議論の䞭でアパルトヘむトの䞀圢態ですか PIはそれらすべおに察しお平等な暩利を䞻匵したす 開発者に決定を任せ、人為的な制玄を課さないでください。

そしお再び誰もあなたから叀いオプションを奪っおいたせん-私たちは぀いにこの远加のオプションが欲しいだけです。 それは公正なこずです。

@dnephin あなたず他のみんながcr7pt0gr4ph7のこの問題の改良で述べられた解決策に満足しおいるようです。

それを実装するプルリク゚ストを喜んで受け入れたすか、それずもメンテナの1人にそれを曞いおもらう぀もりですか

@ cr7pt0gr4ph7

* compose.ymlにプロゞェクト名を持぀@ dnephin @ fesorは、統䞀された構成スキヌマを容易にしたす

プロゞェクト名が重芁な理由は私にはわかりたせん。 構成ファむルのどの郚分も、特定のプロゞェクト名に䟝存するべきではありたせん。

プロゞェクト名の唯䞀の重芁な品質は、他のプロゞェクトの名前ず競合しないこずです。これは、実際には、 docker-compose.ymlファむルに入れるこずに反察する議論です。 プロゞェクトの開発者は、プロゞェクトごずに異なるディレクトリ名を䜿甚するこずが倚いため、ほずんどのナヌスケヌスではデフォルトが正しいこずがよくありたす。

デフォルトが正しくない堎合、開発者がそれをオヌバヌラむドする方法がありたす -p 、たたはCOMPOSE_PROJECT_NAME 。これぱむリアスにするか、 .envファむルに入れるこずができたす。 。

私はプロゞェクト名を定矩するプロゞェクトファむルに反察しおいたせん。この機胜が䞀郚の人にずっお非垞に重芁である理由を理解したいず思いたす。 䜜成ファむルに特定のプロゞェクト名が必芁なためである堎合は、別の問題ずしお別の方法で察凊する必芁があるず思いたす。

1぀のディレクトリに4぀の䜜成ファむルが必芁でした。 ここでは、デフォルトでディレクトリ名が間違っおいたす。 私が持っおいる唯䞀のオプションは、1぀のディレクトリ内の1぀の䜜成ファむルに察しおのみ機胜する.envです。

_COMPOSE_PROJECT_NAMEず-p_を陀倖する理由
COMPOSE_PROJECT_NAMEず-pは、蚭定するこずを忘れないようにする必芁があるため、本番環境では保存されないず思いたす。 たたは、起動スクリプトを䜜成し、dockercomposeを盎接䜿甚しないこずを忘れないでください。 人物Aがこのメカニズムに䟝存しおいお、人物Bがそれを知らない堎合、それは特定の倱敗です。
私はすでにそれを䞊で詳述したした

@dnephin私ず私のチヌムにずっお、アプリケヌションロゞックは通垞、プロゞェクトフォルダヌのhtdocsフォルダヌに保存されたす。 これにより、他の関連ドキュメント/リ゜ヌスを1぀のディレクトリにたずめるこずができたす。 リモヌト開発者ず協力する開発者ずしお。 フォルダヌ構造に぀いお䜕も想定する必芁がなければ、Dockerを採甚しおもらうのは簡単です。 私は過去にこれを述べたしたが、.envは通垞、私たち党員が共有するリポゞトリの䞀郚ではないため、私にずっおオプションではありたせん。

プロゞェクト名が重芁な理由は私にはわかりたせん。 構成ファむルのどの郚分も、特定のプロゞェクト名に䟝存するべきではありたせん。

ホストで「docker-composedown」を実行し、必芁なコンテナずは異なるコンテナをダりンさせたこずが䜕床もありたした。 芚えおいなかったからずいっお、 .envファむルにも構成があったこずを。

プロゞェクト名の唯䞀の重芁な品質は、他のプロゞェクトの名前ず競合しないこずです。これは、実際には、docker-compose.ymlファむルに配眮するこずに反察する議論です。 プロゞェクトの開発者は、プロゞェクトごずに異なるディレクトリ名を䜿甚するこずが倚いため、ほずんどのナヌスケヌスではデフォルトが正しいこずがよくありたす。

倚分それはあなたにも圓おはたりmyapp/app/docker-compose.ymlようなものです。 したがっお、すべおのアプリはディレクトリ名app共有したす。 たた、ホスト䞊に耇数のコンテナヌがありたす。

デフォルトが正しくない堎合、開発者がそれをオヌバヌラむドする方法-p、たたはCOMPOSE_PROJECT_NAMEがありたす。これは、゚むリアスにするこずも、.envファむルに入れるこずもできたす。

真剣に、私はここでカフカの小説にいるように感じ始めたす。 それはあなたが基本的にのためのすべおのコマンドラむンオプション眮くこずができるこずを、明らかにされおいたせんdockerにdocker-compose.ymlこの䞀぀の倧きな䟋倖を陀いお- 

䜕床も䜕床も私たちに尋ねお私たちの答えを無芖する代わりに、なぜ誰かが最終的に抵抗を正圓化できないのですか そしおいいえ「...しかし私はそれを必芁ずしない」は有効な議論ではありたせん

@dnephin独自のgitリポゞトリに耇数のプロゞェクトがあり、ルヌトプロゞェクトディレクトリをクリヌンに保぀ために、すべおのDocker関連のものをdockerずいうサブフォルダヌに配眮したすビルドコンテキストは.. 、すべおが矎しく機胜したす。

1぀のサヌバヌで耇数のプロゞェクトを実行するには、珟圚、各リポゞトリにdocker/.env.distを䜜成し、 cp docker/.env.dist docker/.env埌にgit clone cp docker/.env.dist docker/.envを䜜成する必芁がありたす。 それ以倖の堎合、プロゞェクト名はdocker 、これは明らかに必芁ありたせん。 .envにパスワヌドなどが含たれおいる堎合もあるので、ずにかく.env.distコピヌする必芁がありたすが、ほずんどの堎合、 COMPOSE_PROJECT_NAMEを定矩する方法がないずいう理由だけで、 .envが存圚したす。 COMPOSE_PROJECT_NAME docker-compose.yml 。

同じCOMPOSE_PROJECT_NAMEがdocker-compose.yml内で2回䜿甚されるず、コンテナヌの開始方法ず停止方法に䞍具合が生じる可胜性があるこずを理解しおいたすが、 .env.distをコピヌするのを忘れるず、すでに発生しおいたすたたは、同じサヌバヌ䞊の2぀の異なる.envファむルに誀っお同じ名前を割り圓おた堎合。 私にずっおは、 default_compose_project_nameをdocker-compose.ymlで盎接定矩し、プロゞェクトのステヌゞングコピヌを実行したい堎合は、 .envの倀をオヌバヌラむドできれば理想的です。 。 これは玀元前100ですが、より䟿利です。

私は過去にこれを述べたしたが、.envは通垞、私たち党員が共有するリポゞトリの䞀郚ではないため、私にずっおオプションではありたせん。

たぶん、それがすべおの根本原因です。前に、 docker-composeこのファむルを「ハむゞャック」し、名前をapp.envに倉曎せざるを埗なかったず蚀いたした。

たぶんdocker-compose.envが正しい遞択だったでしょう。

FWIW本番環境では.envファむルのみを倉曎しおいたす。必芁に応じお、 ymlファむルはdocker-compose.override.ymlずマヌゞされたす。

回避策は、ymlファむルを.envファむルなしで開始しないように定矩するこずでもありたす。 倉数image: $IMAGEを䜿甚したす。

これは、 @ schmunk42の䞊の1぀のディレクトリケヌスにある4぀のdocker-composeファむルの回避策です。 本圓に

@RobIsHereしかし、ずにかく-fを䜿甚する必芁がありたすよね

このコメントの@dnephinぞの返信

プロゞェクト名が重芁な理由は私にはわかりたせん。

docker-composeが管理するDockerコンテナの名前に圱響するため、これは重芁です。 プロゞェクト名の蚭定を忘れた堎合、 docker-compose psは、以前にdocker-compose --project-name <project_name> up -d <container_name>䜜成したコンテナヌを芋぀けられたせん。

たた、グロヌバルコマンドdocker psを実行するず、実行䞭のコンテナのリストにプロゞェクト名が含たれるため、コンテナの出所がわかりたす。 たずえば、すべおがMySQLを䜿甚する耇数のコヌドプロゞェクトを䞀床にテストしおいお、それぞれにmysqlコンテナがある堎合、 docker psはあいたいなコンテナのリストが衚瀺されたす。 したがっお、プロゞェクト名は、同じマシンで実行されおいる倚くのDockerプロゞェクトのコンテキストで重芁です。

構成ファむルのどの郚分も、特定のプロゞェクト名に䟝存するべきではありたせん。

_DockerComposeプロゞェクトに関連付けられおいる他のすべおの倉数_ずは異なる堎所にプロゞェクト名を蚭定する必芁があるこずは意味がありたせん。

プロゞェクト名の唯䞀の重芁な品質は、他のプロゞェクトの名前ず競合しないこずです。これは、実際には、docker-compose.ymlファむルに配眮するこずに反察する議論です。

私の最初の段萜で述べた理由により、これは_「プロゞェクト名の唯䞀の重芁な品質」_ではありたせん。 䜿いやすさず理解のためです。

プロゞェクトの開発者は、プロゞェクトごずに異なるディレクトリ名を䜿甚するこずが倚いため、ほずんどのナヌスケヌスではデフォルトが正しいこずがよくありたす。

開発者が_all_関連のDockerファむルをdockerディレクトリに配眮するデフォルト以倖の堎合、これはDockerプロゞェクトを敎理するための完党に合理的な方法であり、プロゞェクト名を蚭定する魔法は競合するプロゞェクト名を䜜成したす。 したがっお、この特定のケヌスでは、あなたが蚀及したのず同じ競合が発生したす。 ずにかくプロゞェクト名を明瀺的に蚭定しおいる堎合、開発者をプロゞェクト名の衝突から保護する必芁はありたせん。

デフォルトが正しくない堎合、開発者がそれをオヌバヌラむドする方法-p、たたはCOMPOSE_PROJECT_NAMEがありたす。これは、゚むリアスにするこずも、.envファむルに入れるこずもできたす。

環境倉数の蚭定は、必芁のない䜙分なレベルの耇雑さです。 バヌゞョン管理を䜿甚しお開発者間でプロゞェクトを共有する堎合は、ファむルのみを䜿甚するのが理にかなっおいたす。 呌び出しごずにコマンドラむンパラメヌタを含める必芁があるのは面倒で、゚ラヌが発生しやすくなりたす。 たた、 .envファむルは、プロゞェクト固有の倉数ではなく、ナヌザヌ固有の倉数を含むこずになっおいるため、バヌゞョン管理で共有できたせん。 したがっお、プロゞェクト名を蚭定する珟圚の方法は䞍十分です。

私はプロゞェクト名を定矩するプロゞェクトファむルに反察しおいたせん。この機胜が䞀郚の人にずっお非垞に重芁である理由を理解したいず思いたす。 䜜成ファむルに特定のプロゞェクト名が必芁なためである堎合は、別の問題ずしお別の方法で察凊する必芁があるず思いたす。

docker-composeの機胜に圱響を䞎えるすべおの倉数は、同じ堎所、 docker-compose.ymlファむルに配眮する必芁がありたす。 プロゞェクト名を蚭定する珟圚の方法は、䞍必芁な耇雑さをもたらしたす。

この問題を賌読しおいるほがすべおの人がこれらの点に同意したす。

docker-config.ymlプロゞェクト名を蚭定する機胜を远加しおも、珟圚の機胜ず競合するこずはありたせん。 それを実装しない理由はありたせん。

@ schmunk42前回チェックしたずき、dockerは.envファむルの名前を遞択するこずを蚱可したせんでした。 私は䜕かを逃したしたか倉曎に远い぀くのは難しいです。 docker-compse.envのようなものに倉曎するず、私のナヌスケヌスで修正されたす。 私が抱えおいる問題は、䞡方ずも.envファむルを必芁ずする2぀の非垞に人気のあるテクノロゞヌを䜿甚しおいるこずです。 PHP Laravelフレヌムワヌクは、リポゞトリ内のそのファむルを远跡せず、本番環境ではファむルが存圚しない堎合がありたす。

@RobIsHereが瀺すように、Dockerを最初に採甚したずき、これは実際のスタブリングブロックであるこずがmyapp/htdocs/docker-compose.yml圢匏です。 Dockerを採甚した初期の頃、私は意図しおいなかった他のコンテナヌを誀っお削陀しおしたいたした。 私の堎合、dockerがフォルダヌ名を䜿甚するのではなく、プロゞェクトにランダムに名前を付けた方がよいでしょう。

Dockerを採甚し始めおいる他のリモヌト開発者が䜕人かいたす。 チヌムずしお、これらのアプリケヌションを実行するために、これらの開発者に垞に/のみdocker-compose upを指瀺する方が垞に簡単です。 これらのアヌリヌアダプタヌがDockerに぀いお知っおいるこずが少ないほど良いです。 圌らがその背埌にある力を芋るず、圌らは自分で拟うでしょう。

芁玄するず、ナヌスケヌスはデフォルトが適切でない堎合のようです。 デフォルトをオヌバヌラむドする方法はすでにありたすが、゚ラヌが発生しやすく、アヌリヌアダプタヌには明らかではない可胜性がありたす。

デフォルトが適切でない堎合は次のずおりです。

  • 同じディレクトリ内の耇数の䜜成ファむルそれらを実行するには、すでに-fを指定する必芁がありたす
  • すべおのプロゞェクトに同じディレクトリ名を䜿甚したすこれには-fも指定する必芁があるず思いたす。考えられる回避策は、䞀意のディレクトリ名を䜿甚するこずです。

@dnephin远加したすが、Dockerを早期に採甚する人にずっおは぀たずきの可胜性が1぀少なくなりたす。

@dnephinこのコメントにもこれらの懞念がありたした

もずもずdocker-compose.ymlで名前が欲しかったのですが、もっず考えおみるず、別のファむルのアむデアが本圓に奜きです。 別のファむルを䜿甚するず、必芁に応じおバヌゞョン管理の察象倖にするこずができたす各ナヌザヌが異なるプロゞェクト名を持぀こずができるようにする堎合。

このようにプロゞェクト名解決の優先順䜍を蚭定するず、その問題が解決されたす倧きな数字は小さな数字よりも優先されたす。

  1. docker-compose.yml
  2. COMPOSE_PROJECT_NAME環境倉数
  3. --project-nameコマンドラむンオプション

前回チェックしたずき、dockerは.envファむルの名前を遞択するこずを蚱可したせんでした。

@fiveanddone AFAIKそれはできたせんが、プロゞェクトに必芁なENVファむルを知る必芁があるため、問題が発生するだけです。

phd5の堎合、app-environmentをsrc/ 、 .envは単に「control-environment-file」であるため、ここで説明しようずし
私はこれが奜きではなく、自分で倉曎するこずもなかったでしょう。 これは倚くのプロゞェクトでは䞍可胜かもしれないこずを私は知っおいたす。
しかし持぀.envあなたず同じレベルで、アプリケヌションからdocker-compose.ymlあなたがそこにaずb属しおいない、あなたの「コントロヌル・環境」の倉数を取埗するので、超迷惑になりたすこれらの倉数が必芁な堎合は、コンテナに転送する必芁がありたす。c app.envファむルでこれらの倉数を䞊曞き/倉曎するこずはできなくなりたす。

@dnephin優先環境ファむルずしおdocker-compose.envを導入し、フォヌルバックずしお.envを䜿甚するのfig.ymlでも同じこずを1回行いたした。

それですべおの人の問題が解決するずは思いたせん。 .envファむルの名前は、私には別の問題のように感じたす。

問題の栞心はこれだず思いたす

docker-compose upの元の蚭蚈は、サヌビスを実行するために実行できる単䞀の短いコマンドでした。 これは、開発者が期埅しおいるこずです。 ただし、䞀郚のナヌザヌこの堎合ではその動䜜を実珟できたせん。

この問題を回避する方法はたくさんありたすが、すべおの人に圹立぀ず思われる方法はありたせん。

優先順䜍最高から最䜎は次のようにする必芁があるず思いたす。

  1. --project-name 垞にオヌバヌラむド
  2. COMPOSE_PROJECT_NAME環境倉数
  3. バヌゞョン管理されたファむルずは別に、ナヌザヌが定矩したデフォルト
  4. プロゞェクトによっお定矩されたデフォルトで、チェックむンできたす
  5. ディレクトリ名䜕も指定されおいない堎合のデフォルト

3 .docker/project-nameファむルで実珟できたすOPで提案されおいるように
4 docker-compose.ymlファむルのフィヌルドで実珟できたす

プロゞェクト名を蚭定するために非垞に倚くの異なる方法が必芁なのは残念です。

@dnephinは3に関しお、ナヌザヌにデフォルトを蚭定させたす。これがenv倉数の目的であり、ファむルを䜜成する必芁はありたせん。

うヌん...そしお、問題を少し䞀般化しお、 docker-compose.yml default_environmentセクションを導入するずどうなるでしょうか。 このようにしお、yamlに特別なフィヌルドを導入せずにCOMPOSE_PROJECT_NAMEを蚭定できたすが、ファむル党䜓の他の堎所に存圚する可胜性が高い他のデフォルト倉数を定矩するこずもできたす。 これにより、 .env.distを.envコピヌする必芁がある堎合の数が枛り、コピヌを忘れるコストが少なくなりたす。

䜿甚䟋

# ~/projects/sketches/sketch-42/docker/docker-compose.yml
version: "2"
default_environment:
  - SUBDOMAIN=sketch-42
  - ROOT_HOST=example.com
  - COMPOSE_PROJECT_NAME=sketch-42
services:
  web:
    build:
      context: ../
      dockerfile: docker/Dockerfile
    environment:
      - VIRTUAL_HOST=${SUBDOMAIN}.${ROOT_HOST},www.${SUBDOMAIN}.${ROOT_HOST}
      - VIRTUAL_PORT=80
      - VIRTUAL_NETWORK=proxy
      - LETSENCRYPT_HOST=${SUBDOMAIN}.${ROOT_HOST},www.${SUBDOMAIN}.${ROOT_HOST}
      - LETSENCRYPT_EMAIL=admin@${ROOT_HOST}
    restart: always
    networks:
      - proxy

networks:
  proxy:
    external:
      name: proxy

このyamlは、私がよく䜿甚するものず非垞によく䌌おいたす。visスケッチに぀いお説明しおいたす。このスケッチには、垞にwebずいうサヌビスがありたすが、ミニAPIサヌバヌやデヌタベヌスを備えたコンテナヌによっおバックアップするこずもできたす。 https://github.com/jwilder/nginx-proxyがすべおの前面にあり、実際のポヌト80ず443をリッスンしおいるず想定されおい

珟時点では、ロヌカルマシンを䜿甚しおいる堎合でも、リモヌトサヌバヌを䜿甚しおいる堎合でも、 .envを維持し、そこに_all_環境倉数が蚭定されおいるこずを確認する必芁がありたす。 たずえば、 SUBDOMAINを忘れた堎合、コンテナは起動したすが、Webサヌバヌは壊れたたたです。

default_environmentセクションを自由に䜿甚できるので、すべおの本番倉数を1぀のファむルに配眮でき、サヌバヌ䞊で.env.distをコピヌする必芁はありたせん。 ロヌカルマシンでは、䞊蚘の䟋では、1぀の倉数を.envに配眮したす。これは、 ROOT_HOST=example.com.dev たたは、bashプロファむルでexport ROOT_HOST=example.com.devを䜿甚するこずもできたすか 

芁玄するず、 default_environment䞭にセクションdocker-compose.yml唯䞀我々が珟圚議論されおいる問題を解決するこずはできたせんが、たた100BCず理解しやすいでありながら、いく぀かの䜙分な玠敵なトリックを有効にするこずができたす

WDYT

それはいいですね、シナリオによっおは重宝するかもしれたせん。

ただし、䞊蚘の加熱された議論に照らしお、
゜リュヌションは倧たかに次のように解釈されたす。「新しいファむルをに远加する代わりに
yml、新しいセクションを远加するのはどうですか」 :)

火曜、2017幎2月28日には、午前0時02分アレクサンダヌKachkaev [email protected]
曞きたした

うヌん...そしお、問題を少し䞀般化しお単玔に玹介するずどうなるでしょうか
docker-compose.ymlのdefault_envセクション。 このように定矩したす
yamlに特別なフィヌルドを導入せずにCOMPOSE_PROJECT_NAME、ただし
他のデフォルト倉数を定矩するこずもできたす。
ファむル党䜓のどこかに存圚したす。 これにより、ケヌスの数が枛りたす
.env.distを.envにコピヌする必芁がある堎合、およびコピヌするのを忘れるコスト
そうするこずは少なくなりたす。

䜿甚䟋

〜/ projects /ketches/sketch-42/docker/docker-compose.yml

バヌゞョン「2」
default_env
サブドメむン=スケッチ-42
ROOT_HOST = example.com
COMPOSE_PROJECT_NAME = Sketch-42
サヌビス
りェブ
ビルド
環境 ../
dockerfiledocker / Dockerfile
環境
--VIRTUAL_HOST = $ {SUBDOMAIN}。$ {ROOT_HOST}、www。$ {SUBDOMAIN}。$ {ROOT_HOST}
-VIRTUAL_PORT = 80
-VIRTUAL_NETWORK =プロキシ
--LETSENCRYPT_HOST = $ {SUBDOMAIN}。$ {ROOT_HOST}、www。$ {SUBDOMAIN}。$ {ROOT_HOST}
--LETSENCRYPT_EMAIL = admin @ $ {ROOT_HOST}
再起動垞に
ネットワヌク
-プロキシ

ネットワヌク
プロキシ
倖郚
名前プロキシ

このyamlは、私がよく持っおいるものず非垞によく䌌おいたす-visに぀いお説明しおいたす
スケッチ。垞にりェブず呌ばれるサヌビスがありたすが、バックアップするこずもできたす
ミニAPIサヌバヌずデヌタベヌスを備えたコンテナによっお。 想定されおいる
https://github.com/jwilder/nginx-proxyが前面に座っおリッスンしおいる
実際のポヌト80および443に。

珟時点では、ロヌカルマシンを䜿甚しおいる堎合でも、リモヌトサヌバヌを䜿甚しおいる堎合でも、
.envを維持し、すべおを確認するこずを忘れないでください
そこで環境倉数が蚭定されたす。 たずえば、私が忘れおしたった堎合
サブドメむン、コンテナは起動したすが、Webサヌバヌは壊れたたたです。

default_envセクションを自由に䜿甚できるので、すべおの本番環境を䜿甚できたす。
倉数が配眮されおいれば、サヌバヌに.env.distをコピヌする必芁はありたせん。
ロヌカルマシンでは、1぀の倉数を.envに入れるだけです。
ROOT_HOST = example.com.devたたは倚分私ぱクスポヌトするこずさえできたす
bashプロファむルのROOT_HOST = example.com.dev

芁玄するず、docker-compose.ymlのdefault_envセクションは
今説明しおいる問題を解決したすが、さらにいく぀かの優れた䜿甚法を有効にするこずもできたす
シナリオ

WDYT

—
このスレッドにサブスクラむブしおいるため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/compose/issues/745#issuecomment-282885661 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AAQJJZumr10j3i17gPxrSyA-n8CwvsXTks5rg1X_gaJpZM4DLBNs
。

docker-compose.yml内に「project_name」を含めるず、スタックの問題が解決したす。
耇数のプロゞェクトを凊理する暙準化されたツリヌを備えたモノリスリポゞトリがありたす。これは倚かれ少なかれ次のようになりたす。

projectA/infrastructure/docker-compose.yml
projectB/infrastructure/docker-compose.yml
...

明らかに珟実の䞖界よりも耇雑なので、docker-compose.ymlファむルを「projectA / projectB」フォルダヌに移動するだけでは䞍十分です。

起動するプロゞェクトを尋ねるCLIがルヌトにあり、プロゞェクト名はdocker_compose.ymlの芪フォルダヌに盎接䟝存しおいるため、競合が発生しおいたす。

docker-composeコマンドCLIスクリプト内にラップされおいるを自分で䜜成しないため、コマンドに「-p」匕数を手動で远加するこずはできたせん。
私たちの解決策は、CLIスクリプト内で垞にproject_nameを生成するこずです。そのため、docker-composeを呌び出すずきは、absolute_pathに基づいお垞に「-p」がありたすが、奇劙に聞こえたす。

ここにいる人の䞭には、「ほずんどのプロゞェクトでほずんどの堎合動䜜したす。docker-compose.ymlはプロゞェクトのルヌトフォルダヌ内にあり、プロゞェクトの名前は異なり、競合を回避したす」ず蚀った人もいたすが、私は同意できたせん。この。 垞にルヌトフォルダ内にあるずは限りたせん。

サヌビスのdocker-compose.ymlファむルスケヌリングを無効にするで「container_name」を定矩できるのに、docker-compose.ymlファむル自䜓の「project_name」をず同じレベルで定矩できないのはなぜですか。 「バヌゞョン」/「サヌビス」/「ネットワヌク」/「ボリュヌム」

これは、コンテナ名が明確になるようにscale䜿甚する堎合に必芁ず思われたす。 䟋 <project_name>_<container_name>_1 。

これは、DNSにコンテナ名を䜿甚するずきに圹立ちたす。

これが行われたこずを期埅しおここに来たした。 がっかりしたたた。 3幎以䞊

ええ、それはDockerの最も愚かなナヌザビリティの問題の1぀であり、修正されおいたせん。

私たちはそれに぀いお開発者ず議論するこずに倚くの時間を費やしたした、そしおコンセンサスがあったずしおも、それが悪いデザむンであるずいう承認はありたせんでした。

これに察する明らかなナヌザヌサポヌトがあるのでむラむラしたすが、開発者自身のナヌスケヌスに適合しないため、毎幎毎幎再ハッシュされおいたす。

cliを䜿甚しおオプションを远加する必芁がある堎合、docker-composeのポむントは䜕ですか
呜名スキヌムのおかげで、いく぀かのコンテナが䞊曞きされたした。

今日、私はプロゞェクトに氞続的な名前を付けるために、さらに別の.envファむルを䜿甚しおさらに別のdocker-composeプロゞェクトを蚭定しおいたした。 それで、最埌にチェックしおから数幎が経ちたしたので、この問題をチェックするず思いたした。 しかし、私が芋る限り、ここでは䜕も新しいこずはありたせんか .env回避策を䜿い続ける必芁があるず思いたす。 私には、yamlファむルでプロゞェクトに名前を付けるこずが最も基本的なこずのように思えたすが、ただ解決されおいないため、これに぀いおは理解できないこずがあるず思いたす。

プロゞェクト名を倖郚でコマンドラむンたたは倉数で指定する必芁がありたすが、 docker-compose.ymlファむル他のすべおを完党に指定するファむルでプロゞェクト名を蚭定できないのは無意味です。 芪ディレクトリ名、シェル環境、たたは特定の.env内の特定の行の存圚に関係なく、プロセスが任意のdocker-compose.ymlファむルに基づいおサヌビスの特定のスタックをアドレス指定する必芁がある堎合がたくさんありたす。 .envファむル。 CIゞョブがプロゞェクト名を継続的に「把握」する必芁はありたせん。ゞョブがプロゞェクト名を抜出しお䜿甚できるように、プロゞェクト名をdocker-compose.yml明確に蚘茉する必芁がありたす。

これはこのプロゞェクトで䜕床も起こるようです。 Dockerは玠晎らしいテクノロゞヌですが、開発者が実際に実際の経隓を持っおいるのか、それずも18歳のハッカヌで、自分たちが最もよく知っおいるず思っおいるのでしょうか。 人々は、垞に回避策を探すのではなく、実際の䜜業にこのようなものを䜿甚したいず考えおいたす。

その間、チヌムはこの問題を無芖しおいるず思いたす。 Docker開発者を説埗しようずするこずは、それを穏やかに蚀えば本圓に苊痛になる可胜性がありたす。

明確な議論は、あたり意味をなさないいく぀かの奇劙な論理で察抗されたす。 同じ理由で党員がここに来るずいう珟実䞖界のナヌザヌの意芋は無芖されたす。 それは残念だ。

CIゞョブがプロゞェクト名を継続的に「把握」する必芁がないようにしたす。ゞョブがプロゞェクト名を抜出しお䜿甚できるように、docker-compose.ymlに明確に蚘茉する必芁がありたす。

スタックの名前が「build1234」のようになっおいる、たたはスタックの名前をdocker exec build1234_myservice script.shように別の堎所でどのように䜿甚したいのかずいう問題がありたすか


どのナヌスケヌスにも適合しないかもしれたせんが、それを蚀っおもらうために...

私たちのセットアップでは、クロヌンプロゞェクトをセットアップするずきに.envファむルのみを倉曎したす。 倉曎たたは動的構成が必芁な堎合は、 docker-compose.yml .env倉数を再利甚したす。 利点は、倉数が欠萜しおいる堎合、docker-composeが譊告たたは倱敗するこずです。

私もこの問題に悩たされおいたので、ワヌクフロヌを倉曎する必芁があるずは蚀いたくありたせん。
基本的には、 docker-compose.ymlぞの倉曎を゜ヌスコヌドぞの倉曎のように扱いたすが、 .envは単なる構成です。 しかし、プロゞェクトに倧きく䟝存するnetworkように、 docker-compose.ymlにはいく぀かのオプションがあるこずにも同意したす。 䞊蚘に戻りたす。 ネットワヌクの.env倉数を定矩したす。 🀐

私もこの問題に悩たされおいたので、ワヌクフロヌを倉曎する必芁があるずは蚀いたくありたせん。

自分の状況をもう少し考えたした。 プロゞェクト名を倖郚で蚭定するこずに実際には問題はありたせん。実際、これは-p <project_name>フラグを䜿甚しお行いたす。これにより、CI内のスタックの䞀意のむンスタンスを分離し、耇数のスタックを同時に実行できたす。必芁。 そのCIチェヌンだけがそのプロゞェクト名を知っおいる必芁があるので、自動生成たたはランダムただし既知で問題ありたせん。 たた、環境倉数を䜿甚しおデフォルト名をオヌバヌラむドするこずに問題はありたせんが、 .envトリックは自明ではありたせん。

ただし、プロゞェクトの_デフォルト名_をどこかに明瀺的に定矩しおおくず䟿利な状況もありたす。 では、なぜ芪ディレクトリ名をこの名前の゜ヌスずしお䜿甚するのでしょうか。 それが私にずっおの匱点です。 それはどこからでも取るこずができたす-芪ディレクトリの遞択は恣意的であり、倚くの理由はありたせんたずえば、ほずんどすべおの私のプロゞェクトでは、 docker-compose.ymlファむルはdockerずいうサブディレクトリにありたす。 したがっお、任意にする堎合は、倚くの堎合、ディレクトリのコンテンツから完党に独立しおいる必芁がある芪ディレクトリ名に圱響を䞎えお倖郚の副䜜甚を䜜成するのではなく、ymlファむルなどのより明瀺的な堎所に保存したす幎に基づく再利甚可胜なリ゜ヌスでの䜜業経隓。

それはどこからでも取埗できたす-芪ディレクトリの遞択は恣意的であり、理由はあたりありたせんたずえば、ほずんどすべおのプロゞェクトで、docker-compose.ymlファむルはdockerずいうサブディレクトリにありたす。

ランダムID以倖のものが必芁な堎合は、芪ディレクトリに代わるものはありたせん。 少なくずも、スタックが「どこから来たのか」を知るチャンスがありたす。
しかし、私もあなたに同意したす。私たちのプロゞェクトでは、 .envファむルがないず-互いにひどく衝突するtestsフォルダヌにテストスタックしおいるからです。 そのため、私はdocker-compose.envずいうファむルを優先するこずを提案したした。これは私芋でははるかに明確です。

あなたたちは、あなたが気にしないこずを認めおこのバグを閉じるだけですか、それずも私たちの倧倚数が望んでいる信じられないほど単玔なこずを実装したすか 2。86幎埌です。 ポットを降りたす。 あなたの決定を所有するか、あなたの間違いを修正しおください。 しかし、あなたはそれを芋たいです。 䜕もしないでください。

@matsamanず圌のコメントを

あなたたちは、あなたが気にしないこずを認めおこのバグを閉じるだけですか、それずも私たちの倧倚数が望んでいる信じられないほど単玔なこずを実装したすか 2。86幎埌です。 ポットを降りたす。 あなたの決定を所有するか、あなたの間違いを修正しおください。 しかし、あなたはそれを芋たいです。 䜕もしないでください。

「君たち」は誰ですか オヌプン゜ヌスでは、コミュニティが決定を所有し、他の人の間違いを修正したす。 Dockerはオヌプン゜ヌスです。 泣き蚀を蚀う代わりに、プルリク゚ストを送信するこずを怜蚎しおください。

これがただ実装されおいないのも残念です。 しかし、オヌプン゜ヌスでは、貢献するか、蟛抱匷く埅぀かのどちらかです。

CLI匕数

$ cd foo
$ docker-compose up
$ docker-compose -p bar up
... some time later wanting to take down bar forgetting '-p'
$ docker-compose down
Stopping foo_nginx_1 ... done
Stopping foo_mysql_1 ... done
Removing foo_nginx_1 ... done
Removing foo_mysql_1 ... done
$ FU@$_!@*#%$(!_*@
-bash: FU@!@*#%$: command not found

䞍合栌。

環境ファむル

$ cd foo
$ source foo.env
$ docker-compose up
$ source bar.env
$ docker-compose up
... some time later wanting to take down foo forgetting to `source .foo.env`
$ docker-compose down
Stopping bar_nginx_1 ... done
Stopping bar_mysql_1 ... done
Removing bar_nginx_1 ... done
Removing bar_mysql_1 ... done
$ FU@$_!@*#%$(!_*@
-bash: FU@!@*#%$: command not found

䞍合栌。

ymlファむルにプロゞェクト名が含たれる提案された゜リュヌション

$ cd foo
$ docker-compose -f foo.yml up
$ docker-compose -f bar.yml up
... some time later
$ docker-compose down
ERROR:
        Can't find a suitable configuration file in this directory or any
        parent. Are you in the right directory?

        Supported filenames: docker-compose.yml, docker-compose.yaml

わヌい

$ COMPOSE_PROJECT_NAME=foo docker-compose up -d
$ COMPOSE_PROJECT_NAME=bar docker-compose up -d
... some time later
$ docker-compose down -v
Removing network project_default
WARNING: Network project_default not found.

O /

「君たち」は誰ですか

@benjaminwoodこのプロゞェクトのメンテナヌです。 私たちが耇雑な倉化に぀いお話しおいお、誰もそれをする時間を芋぀けられないなら、あなたの議論は理にかなっおいたす。

これは、ここでは圓おはたらないこずは明らかです。実装は、コヌドベヌスに粟通しおいる人にずっおは非垞に簡単で、倖郚の人にずっおははるかに難しいでしょう。 ですから、誰もそれをする時間がないずいうこずではなく、むしろメンテナがそれをしたくない

ここに䜕床も投皿されおいる回避策はすべおよく知られおいたすが、すべおの人に適甚できるわけではありたせん。 そしお、 docker-compose.yml機胜でプロゞェクト名だけが省略されおいる理由は、ただ答えが芋぀かりたせんdocker-compose.yml 。 誰かが考えた堎合、それはそこに属しおいないので、䜿甚しないでください しかし、それに察する需芁が圧倒的に明癜である堎合は、他人に察するあなたの意芋を劚げないでください。

これを別の芳点から芋おみたしょう。

docker-compose.ymlファむルのあるフォルダヌにいる堎合、スタックのプロゞェクト名を確認するにはどうすればよいですか
これはかなり基本的な質問ですが、簡単な答えはありたせん。

珟圚は優先床で゜ヌト

  • -pの倀
  • ご䜿甚の環境からのCOMPOSE_PROJECT_NAMEの倀
  • .envファむルからのCOMPOSE_PROJECT_NAMEの倀
  • 珟圚のディレクトリ名

悪魔の擁護者になるために、なぜこのすでに混乱しおいる蚭定に5番目のものを远加するのですか

その決定にもかかわらず、珟圚の名前に関する「ドラむラン可胜な」情報があるはずです。 docker-compose configはそれがなく、スタックが実行されおいない堎合はdocker-compose psもありたせん。
たぶんdocker-compose createが珟圚利甚可胜な最良のオプションですが、完璧にはほど遠いです。

少なくずもdocker-compose config --project-nameようなものが必芁です。 珟圚、䞊蚘の堎所を知り、正しい順序で確認する必芁がありたす。

docker-compose.ymlファむルのあるフォルダヌにいる堎合、スタックのプロゞェクト名を確認するにはどうすればよいですか

繰り返しになりたすが、䜿甚したくない堎合は䜿甚しないでにずっお良いです!! 䜕も倉わらないので、混乱するこずはありたせん

しかし、他の人が異なる芁件を持っおいるこずを受け入れるこずはできたせんか 必芁なのは、この論理的に欠萜しおいる郚分が最終的に远加されるこずです。

悪魔の擁護者になるために、なぜこのすでに混乱しおいる蚭定に5番目のものを远加するのですか

混乱する可胜性がある唯䞀の理由は、プロゞェクト名が最初にdocker-compose.ymlから陀倖されたためです。 それ以倖の堎合は、すべおがそのファむルに含たれるようになりたす。 優先順䜍のリストを定矩できたす-問題ではありたせん。

珟圚、䞊蚘の堎所を知り、正しい順序で確認する必芁がありたす。

プロゞェクトのDocker名がわからないのはなぜですか。たた、それが自分に関係しおいるのはなぜですか。 そしお、それがあなたをずおも混乱させるなら、なぜあなたはあなたのすべおのプロゞェクトで同じメカニズムを䜿わないのですか

繰り返しになりたすが、䜿甚したくない堎合は䜿甚しないでください。 あなたがあなたの解決策に満足しおいるなら-あなたにずっお良いです!! 䜕も倉わらないので、混乱するこずはありたせん

私の質問は、新しい機胜の䜿甚に぀いおではなく、既存の機胜の欠劂に぀いおでした。 プロゞェクト名は、 docker-composeが特定のコンテナセットを開始および停止するために䜿甚する唯䞀の関連情報です。
プロゞェクト名はスタックのはないため、このスレッドの人々は間違ったコンテナヌを匷制終了するこずに぀いお䞍平を蚀いたす。

しかし、他の人が異なる芁件を持っおいるこずを受け入れるこずはできたせんか 必芁なのは、この論理的に欠萜しおいる郚分が最終的に远加されるこずです。

これを远加するず、事前にディレクトリ名を䜿甚しおいたため、スタックの䞀郚であるため、間違ったコンテナを匷制終了するこずに぀いお䞍平を蚀うでしょう。

混乱する可胜性がある唯䞀の理由は、プロゞェクト名が最初にdocker-compose.ymlから陀倖されたためです。 それ以倖の堎合は、すべおがそのファむルに含たれるようになりたす。 優先順䜍のリストを定矩できたす-問題ではありたせん。

実際には、これをBCりェむに远加するこずはできたせん。これは、ディレクトリ名ずしおの優先順䜍を䜎くする必芁があり、圹に立たなくなるためです。 だから「プロゞェクト名の取埗方法」を聞いおいたした。

プロゞェクトのDocker名がわからないのはなぜですか。たた、それが自分に関係しおいるのはなぜですか。

私は通垞ディレクトリ名を䜿甚したすが、 .envカスタム倀を䜿甚するこずもあるため、プロゞェクト名はアクションが実行されるコンテナを定矩するため、関連性がありたす。

cd /some/path/test
docker-compose up -d
cd /a-completely-different-path
docker-compose -p test down -v --remove-orphans

これにより、最初のスタックが匷制終了されたす。 ymlファむルのプロゞェクト名ず同じになりたす。

そしお、それがあなたをずおも混乱させるなら、なぜあなたはあなたのすべおのプロゞェクトで同じメカニズムを䜿わないのですか

私はそうです、私はデフォルトのdocker-compose機胜を䜿甚しおいたす。 ほずんどの堎合、ディレクトリ名は問題ありたせんが、名前を倉曎する必芁があるが、同じコンテナセットで䜜業を続けたい堎合は、 .envファむルを远加したす。

これを远加するず、以前にディレクトリ名を䜿甚しおいたため、スタックの䞀郚であるため、間違ったコンテナを匷制終了するこずに぀いお䞍平を蚀うでしょう。

それは意味がありたせん。 誰かがプロゞェクト名をdocker-compose.yml远加しなければ、䜕も倉わりたせん。 そしお、圌らがそれを远加した堎合、それは圌らがそこにそれを望んでいるからです 圌らがそれを必芁ずしない限り、誰もそれを远加したせん。

そしお、たずえそうだずしおも、すべおが順調です。 ここでどの問題を構築しようずしおいるのかわかりたせん。 あなたは物事を耇雑にしすぎおいたす。

プロゞェクト名を構成できるすべおのオプションを組み合わせるず、これが問題だず思いたす。 あなたはそれをするべきではありたせん。

ディレクトリに耇数の名前付き䜜成ファむルがあるず、優先床ツリヌの4぀のオプションのうち3぀は無意味になりたす。 サブディレクトリを䜜成するように蚀わないでください。サブディレクトリ間で.envファむルを共有しおいるからです。

サブディレクトリを䜜成するように蚀わないでください。サブディレクトリ間で.envファむルを共有しおいるからです。

env_file䜿甚されるアプリケヌション固有の.envファむルを共有しおいたすか
たたは、 docker-compose䜿甚するものですか
それずも混ぜたすか

それは意味がありたせん。 誰かがプロゞェクト名をdocker-compose.ymlに远加しなければ、䜕も倉わりたせん。

それは問題ではありたせんが、远加されるず動䜜が倧幅に倉わりたす。

䞀時むンスタンスを生成するために぀たり、アップグレヌドをテストするためにスタックを新しいディレクトリにコピヌする堎合、 docker-compose.ymlに觊れる必芁はたったくありたせん。 ただし、これがスタックの䞀郚である堎合は、 .envオヌバヌラむドするか、 docker-compose.yml倉曎するかを決定する必芁がありたす。

ええ、そもそも远加されるべきで

4぀の名前付きcomposeファむル同じディレクトリ内が䜿甚する共通の単䞀の.envファむルがありたす。 環境倉数はありたせん。 シェルスクリプトはありたせん。 私はただ䜜曲を䜿いたす。

私はこれを奜む

docker-compose -f service1.yml up -d

代わりにそれはこのようなものです

docker-compose -f service1.yml up -d
# F#&$, forgot the -p flag.   Curse the compose devs for 3 years of c#*$blocking
docker-compose -f service1.yml down
docker-compose -f service1.yml -p service1 up -d

@ schmunk42これは、docker-composeコマンドごずに、おそらくcomposeファむル名に加えお、

サヌビスごずに1぀のフォルダヌを䜿甚しおも、䞀番䞊のフォルダヌに.envファむルを保持するこずはできたせんか

docker-compose -f service1/docker-compose.yml up -d
docker-compose -f service2/docker-compose.yml up -d

プロゞェクト名をファむル-パスに曞き蟌むだけです😉

あきらめる。 このための顧客ベヌスが倉わったこずは明らかです。

私があなたに提案したこずの䜕が問題なのか教えおください。

最初は同じ懞念がありたしたが、利甚可胜な機胜に合わせおワヌクフロヌを調敎したした。

私たちのチヌムの誰もが、過去2幎間に誀っおスタックを殺したこずを芚えおいたせん。 この方法で、玄1.000個のコンテナヌず1.000個の自動たたは手動の再デプロむで200を超えるスタックを実行しおいたす。

私はここに参加したくありたせん...しかし、私は抵抗できたせん。

珟圚の状況を考えるず「解決策」ず、存圚する可胜性を考えるず「正しい」解決策ずの間には非垞に重芁な違いがありたす。 この問題に焊点を圓おるべきなのは、「正しい」解決策を芋぀けるこずです。これは、私に関する限り、ただ同意しない人もいるかもしれたせんが、かなり明癜です。

@ schmunk42 

私たちのチヌムの誰もが、過去2幎間に誀っおスタックを殺したこずを芚えおいたせん。

私は尋ねなければなりたせん。 あなたは䞡方ずもcodemix組織の䞀郚であるこずがわかりたす。 あなたは同僚ですか 舞台裏で2人がrotflであるかどうか疑問に思い始めおいたす。

珟圚は優先床で゜ヌト

  1. -pの倀
  2. ご䜿甚の環境からのCOMPOSE_PROJECT_NAMEの倀
  3. .envファむルのCOMPOSE_PROJECT_NAMEの倀
  4. 珟圚のディレクトリ名

悪魔の擁護者になるために、なぜこのすでに混乱しおいる蚭定に5番目のものを远加するのですか

私が芋おいる問題は、珟圚䜿甚可胜な_すべおの単䞀の倀_が_環境固有_であるずいうこずです。 プロゞェクト固有のオプションを提䟛する方法はありたせん。

1 +2。 コマンドを呌び出すナヌザヌが手動で提䟛する必芁がありたす。

  1. 共有できたすが、実際には.envは無芖し、正圓な理由で共有しないでください。 私は.env.example共有するこずでこれを回避したすが、それでも远加の手動手順が必芁です。
  2. 事実䞊ランダムであり、ナヌザヌ/環境に固有です。 プロゞェクト名を䜜成する必芁があるため、これもフォヌルバックず芋なしたす。同じ名前の異なるディレクトリに競合するプロゞェクトが存圚する可胜性があるため、これはあたり良いフォヌルバックではありたせん。

私の意芋では、そしおこのスレッドの倚くの人は、3から4の間に存圚するオプションがあるはずです。このプロゞェクトで䜿甚されおいるdocker-composeファむルにデフォルトのプロゞェクト名を指定でき、最初のプロゞェクトずしお䜿甚されたす。埌退する。 この倀は、このプロゞェクトを展開するすべおの人によっお共有されたす。 オプション1〜3はその倀を䞊曞きし、オプション4は指定されおいない堎合にのみ䜿甚されたす。

@benjaminwoodこの問題に぀いお誰も笑っおいないこずを保蚌できたす。 はい、私たちはかなり長い間お互いを知っおいたす、そしおそれは私たちが根本的に反察するのは初めおではありたせん。 ここの䜕人かのナヌザヌには迷惑に聞こえるかもしれたせんが、それは私の意図ではありたせん。 実際、私は自分の経隓を共有し、解決策を提案したいず思いたす。 私はこのトピックに぀いお豊富な経隓を持っおいるず思いたす。 この機胜が提案どおりに導入された堎合、セットアップで発生する可胜性のある゚ラヌの膚倧な原因が発生したす。

@joshuajabbour

  1. 共有するこずもできたすが、実際には.envは無芖し、正圓な理由で共有しないでください。

これはセットアップによっお異なりたすが、すべおのプロゞェクトリポゞトリで無芖されおいたす。
ただし、ステヌゞングおよび本番スタックのみのリポゞトリでは無芖したせん。 あなたはでコミット名前を共有する堎合はdocker-compose.ymlあなたもコミットするこずができたす.env このファむルはのみですdocker-compose -䜕もないコマンド

  1. 事実䞊ランダムであり、ナヌザヌ/環境に固有です。

docker-compose.yml倀よりも倚かれ少なかれランダムではありたせん。スタック構成を単䞀のファむルではなく、フォルダヌずしお衚瀺する必芁がありたす。 その堎合、 .env名前を付けるか、サブフォルダヌ名を付けるこずができたす。


最埌にもう1぀遞択肢がありたす。

docker stack deploy -c docker-compose.yml the-project-name

*スりォヌムモヌドでのみ䜿甚可胜

将来、プロゞェクト名をymlファむルに配眮する方法がわかりたせん。これは、スタック定矩の抂念ず完党に矛盟し

@ schmunk42に感謝したす。 このスレッドに衚瀺されたすべおの匷い意芋の䞭で、あなたずあなたは物事を非垞にうたく凊理したず思いたす。

セットアップで発生する可胜性のある゚ラヌの膚倧な原因が発生したす。

擊れがありたす。 問題を閉じたす。

これはセットアップによっお異なりたすが、すべおのプロゞェクトリポゞトリで無芖されおいたす。 ただし、ステヌゞングおよび本番スタックのみのリポゞトリでは無芖したせん。

それで、他の誰もが望んでいるこの機胜は、あなたの倉わったリポゞトリアヌキテクチャを壊しおしたうので、導入すべきではありたせんか

コミットあなたが名前を共有する堎合はdocker-compose.ymlあなたもコミットするこずができたす.env  -䜕もこのファむルが唯䞀のドッキングりィンドり-コンコマンドのですが。

ええず、私の.envファむルの唯䞀のものがCOMPOSE_PROJECT_NAMEだったずしたら、そうです。 しかし、コミットしたくない他の倚くの_secure_倉数が入力されおいたす。 そしお、それらをdocker-composeにenvironmentプロパティを䜿甚しおむンポヌトしたす。 これが.envファむルの䞀般的な目的です...

私の提案では、ディレクトリから取埗したデフォルトのプロゞェクト名を䞊曞きするだけなので、これがセットアップをどのように壊すのかはただよくわかりたせん。 そしお、それに䟝存しおいる堎合リポゞトリが耇補されるディレクトリではなく、リポゞトリにコミットされたディレクトリであるため、docker-compose.yml蚭定によっおどのようにオヌバヌラむドされたすかこれもコミットされおいるためあなたのリポゞトリに;あなたはあなたのシナリオで䞡方のものを制埡したす

@ schmunk42あなたの蚀うこずは、「新しい機胜は必芁ない。それ以倖の堎合は、プロゞェクトのセットアップが理解できなくなったからだ」ずいうこずです。

真剣に これは、これを必芁ずする他のすべおの人になしでやっおもらいたい理由です。

念のために蚀っおおきたすが、私もここにいたす。 気軜に問題を解決しおください。 ここでの議論は無意味になりたした。

それで、他の誰もが望んでいるこの機胜は、あなたの倉わったリポゞトリアヌキテクチャを壊しおしたうので、導入すべきではありたせんか

私は、それが远加の゚ラヌの原因をもたらす可胜性があるずいう懞念を衚明しおいたす。

ええず、私の.envファむルにあるのがCOMPOSE_PROJECT_NAMEだけだった堎合は、そうです。 しかし、コミットしたくない他の倚くの安党な倉数が入力されおいたす。 そしお、environmentプロパティを䜿甚しおそれらをdocker-composeにむンポヌトしたす。

䜿甚secrets.envのためのものずを経由しお、それをむンポヌトenv_file 。
それはワヌクフロヌにどのように圱響したすか

これは、.envファむルの䞀般的な目的です...

本圓です...しかし、問題はdocker-composeが.envファむルを乗っ取るずいうこずだず思いたす。

これらの倉数に加えお、 IMAGE_VERSIONなどのdocker-compose.ymlのトップレベルで䜿甚される倉数を、 docker-compose.envずいうファむルに蚭定できるずしたら、どうでしょうか。

私はあえおCOMPOSE_COMMAND_ENV_FILENAME=.envを提案したこずはありたせん-今たで:)

私はただこれがあなたのセットアップをどのように壊すのか本圓に理解しおいたせん...

それがすぐに壊れないのは事実ですが、それは単に私の最初のポむントに぀いおであり、さらに倚くのオプションを導入しおいたす。

耇数のファむル-f docker-compose.A.yml -f docker-compose.B.ymlを䜿甚するこずを考えおみおください。たずえば、Aがプロゞェクトであり、ディレクトリごずにプロゞェクト名に䟝存しおいるずしたす制埡するため、これを行いたす。 project_name: extraの远加サヌビスのセット。プロゞェクト名をCOMPOSE_PROJECT_NAME=testingで䞊曞きした.envファむルのあるフォルダヌでテスト䞭に誀っお導入されたした。

しかし、 .envファむルなしで開始されたプロゞェクトは、 extraずいう名前になりたす。 💥

耇数の*.envファむルを含む、耇数のレベルでファむルをマヌゞしおいたす。これは非垞に有効なナヌスケヌスです。

真剣に これは、これを必芁ずする他のすべおの人になしでやっおもらいたい理由です。

譊告トピックから少し倖れおいたすが、Dockerに関連しおいたす...

@mikehaertl私はあなたがそれをこのように芋おいるのだろうかず本圓に思っおいたす;

みなさん、

私たちはこのスレッドで熱心な議論を取り䞊げたしたそれを瀌儀正しく心のこもったものにしおくれた皆さんに感謝したすそしおプロゞェクト名はComposeファむル内に属しおいないず基本的に信じおいたすが、私たちは䜕を思い぀いたのですか私たちは、次のPRで合理的な䞭間点であるず信じおいたす5378。 ずは蚀うものの、それがあなたのニヌズに確実に答えられるように、これに぀いおのフィヌドバックをいただければ幞いです。

芁点は次のずおりです。

  • 䜜成ファむル内にx-project-name゚ントリを远加できたす。 このキヌはデフォルトでは無芖されたす。
  • 環境たたは.envファむルにCOMPOSE_X_PROJECT_NAMEが蚭定されおいる堎合、ComposeはComposeファむル内のx-project-name゚ントリからプロゞェクト名を取埗しようずしたす。
  • このオプションの優先床は、 COMPOSE_PROJECT_NAMEおよび--project-nameよりも䜎くなりたす。

これに関する質問や懞念に喜んでお答えしたす。

@ shin-では、機胜をアクティブにするには、 COMPOSE_X_PROJECT_NAMEを1に蚭定する必芁がありたすか

もしそうなら、 COMPOSE_ENABLE_X_PROJECT_NAMEも考えるべき名前かもしれたせんが、これらは私の2セントです-ずにかくそれを䜿甚したせん😄

@ schmunk42 「truth-y」の倀ならどれでも機胜したすが、そうです、それがアむデアです。

@matsamanかっこいい、䟿利で実甚的なフィヌドバックをありがずう。

゚ンドナヌザヌに倉数を蚭定するかパラメヌタを呌び出すように指瀺する必芁があるず蚀う代わりに、゚ンドナヌザヌに倉数を蚭定するかパラメヌタを呌び出すように指瀺する必芁があるず蚀っおいたす。

正盎なずころ、そしお本圓に䜕の意味もありたせんが、あなたがこれをどのように解決策ず考えおいるのか想像できたせん。

@ shin-この倉曎がどのように有甚な違いをもたらさないかを説明したす

䜜成ファむルでプロゞェクト名を怜玢できるように環境倉数を蚭定する必芁があるこずは、プロゞェクト名自䜓に環境倉数を蚭定するこずずほが同じです{䜜業量、忘华のリスク、および利䟿性}。

䜜成ファむルにプロゞェクト名を蚭定するこずの芁点は、環境倉数を䜿甚する必芁がないようにするこずです。 プロゞェクト名環境倉数の優先順䜍を䜿甚しお、䜜成ファむル内のプロゞェクト名をオヌバヌラむドするオプションをナヌザヌに䞎えるこずができたす。

BCを壊さず、䞊蚘のようにマヌゞ䞭に゚ラヌが発生するのを回避できるため、非垞に優れた゜リュヌションだず思いたす。

䜜成ファむルでプロゞェクト名を怜玢できるように環境倉数を蚭定する必芁があるこずは、プロゞェクト名自䜓に環境倉数を蚭定するこずずほが同じです{䜜業量、忘华のリスク、および利䟿性}。

そうではありたせん。この蚭定は、環境内でグロヌバルに1回行うこずができたす。すべおのプロゞェクトでこれを行う必芁はありたせん。

そうではありたせん。この蚭定は、環境内でグロヌバルに1回行うこずができたす。すべおのプロゞェクトでこれを行う必芁はありたせん。

私はあなたがあなたのコンピュヌタ䞊でスポヌンするあなたのすべおのシェルでグロヌバルに意味しおいるず仮定しおいたす。 そうするず、たったく関係のないプロゞェクトで望たしくない動䜜が発生する可胜性がありたす。 たた、開発者がバヌゞョン管理からプロゞェクトをプルし、環境倉数の蚭定を忘れた堎合にも混乱が生じたす。

䜜成ファむルにプロゞェクト名を含めるこずの最も重芁な目暙の1぀は、䜜成プロゞェクトに関係するすべおの倉数がバヌゞョン管理に栌玍されるようにするこずです。

@nhooey @matsaman
これは特に、同じディレクトリに耇数の䜜成ファむルがあり、 .envファむル゜リュヌションを遞択できない人を支揎するこずを目的ずしおいたす。 プロゞェクトでこれを垞にオンにする必芁がある堎合は、 .envファむル、 .profile 、たたはx-project-nameが垞に䜿甚されるようにするその他の堎所に簡単に蚭定できたす。考慮に入れたす。

゚ンドナヌザヌに倉数を蚭定するかパラメヌタを呌び出すように指瀺する必芁があるず蚀う代わりに、゚ンドナヌザヌに倉数を蚭定するかパラメヌタを呌び出すように指瀺する必芁があるず蚀っおいたす。

これに関する私たちの䞻な関心事は、「゚ンドナヌザヌ」が独自のプロゞェクトを持っおおり、名前の競合を絶察に避けたいずいうこずです。 その点で、圌らはディストリビュヌタヌではなく、プロゞェクト名を管理する必芁がありたす。 「タヌンキヌ」プロゞェクトを顧客に出荷する堎合、関連する.envファむルにCOMPOSE_X_PROJECT_NAMEを蚭定するこずも同様に簡単です。したがっお、正盎に蚀うず、これのどの郚分が懞念事項であるか混乱しおいたす。

そうするず、たったく関係のないプロゞェクトで望たしくない動䜜が発生する可胜性がありたす。

䟋を挙げおいただけたすか シェルにCOMPOSE_X_PROJECT_NAMEを蚭定しただけでは、望たしくない動䜜は考えられたせん。

䜜成ファむルにプロゞェクト名を含めるこずの最も重芁な目暙の1぀は、䜜成プロゞェクトに関係するすべおの倉数がバヌゞョン管理に栌玍されるようにするこずです。

なぜ.envを䜿甚できないのですか .envをバヌゞョン管理に保存するこずを犁止する人は誰もいたせんはい、それは䞀般的ではありたせん。

最初は.envでした。 あなたは明らかに䌚話党䜓を逃したした。

@matsamanあなたは真剣にあなたの態床を

混乱のいく぀かを明確にするために

あなたはすでにそれをするこずができたす

以前は、環境倉数を䜿甚しおプロゞェクト名を蚭定できたした。 新しい環境倉数は名前ではなく、䜜成ファむルにプロゞェクト名を蚭定できる機胜を有効にするトグルです。

私はあなたがあなたのコンピュヌタ䞊でスポヌンするあなたのすべおのシェルでグロヌバルに意味しおいるず仮定しおいたす。 そうするず、たったく関係のないプロゞェクトで望たしくない動䜜が発生する可胜性がありたす。

「他のプロゞェクト」ずいう意味では、「䜜曲されおいないものがこれを読んで壊れおしたう」ずいうのは珟実的ではないず思いたす。 すべおのシェルにはたくさんの環境倉数が蚭定されおいたす。 環境倉数は、「COMPOSE_X_」ずしお適切に名前空間が付けられおいたす。

「他の䜜成プロゞェクト」を意味する堎合、この倉数が必芁な理由に぀いお実際に議論しおいるず思いたす。 この機胜がデフォルトで有効になっおいる堎合、珟圚のデフォルトの動䜜に䟝存しおいる人はだれでも壊れおしたいたす。

どちらでもない堎合は、明確にしおください。

たた、開発者がバヌゞョン管理からプロゞェクトをプルし、環境倉数の蚭定を忘れた堎合にも混乱が生じたす。

プロゞェクトが特定のプロゞェクト名でのみ機胜する堎合は、他にも問題があるず思いたす。 プロゞェクトが単䞀の名前でのみ機胜する堎合は決しおありたせん。

これは、プロゞェクト名を䜜成ファむルに入れないためのもう1぀の匕数ず考えおいたす。 プロゞェクト名が䜜成ファむルにある堎合、2぀のプロゞェクトで同じ名前が䜿甚され、競合が発生しお䞡方のプロゞェクトが砎損する可胜性がありたす。 名前は、他のプロゞェクト名がすでに䜿甚されおいるこずを知っおいる開発者が実際に蚭定する必芁がありたす。

残念ながら、1幎以䞊前にすでに述べた理由から、これは私にずっおも圹に立ちたせん。

環境倉数を含む゜リュヌションでは、最初にそれらを䜜成する方法を知る必芁があるナヌザヌが必芁になりたす。 信じられないかもしれたせんが、タヌミナル内で党員が働いおいるわけではありたせん。 繰り返したすが、リポゞトリに.envを配眮するこずは私にずっおオプションではありたせん。

docker-composeの矎しさはupです。 その通話を蚭定する方法に぀いおの説明ではありたせん。

@fiveanddone

繰り返したすが、リポゞトリに.envを配眮するこずは私にずっおオプションではありたせん。

それを拡匵できたすか 技術的な知識が少ないナヌザヌに぀いおは完党に耳にしたすが、ナヌザヌがコヌドや環境ず察話するこずを意図しおいない堎合、プロゞェクトに.envファむルを含めるこずが問題になるのはなぜですか

@ shin-ええ、問題ありたせん。

そのファむルをリポゞトリに含めおいる堎合もありたすが、垞に機胜するずは限りたせん。 私のナヌスケヌスは䞻に、開発者の技術的知識が倧きく異なる可胜性があるWeb開発に関係しおいたす。

.envは、他のフレヌムワヌクで䜿甚されるパラメヌタヌが栌玍されおいたす。 .env内の倉数のいく぀かは、SMTPなどの倖郚サヌビスの資栌情報です。 私のチヌムの開発者のほずんどは、独自の.envファむルを䜿甚しお、これらのサヌビスを独自の゚ンドポむントにポむントしおいたす。 .envがない堎合は、デフォルトがありたす。

CSSを倉曎したいだけの技術的でない開発者にずっお、アプリケヌションは.envファむルがなくおも問題なく動䜜したす。 これは、すべおのプロゞェクトフォルダに同じ名前が付けられおいるわけではないこずを前提ずしおいたす。 :)

それほど倚くはないように思われるかもしれたせんが、党囜にたたがる耇数の開発者やデザむナヌず仕事をしおいる堎合は、シンプルであるほど良いでしょう。

Dockerは私の人生をずおも楜にしおくれお、このプロゞェクトにずおも感謝しおいたすが、このスレッドの呚りのフラストレヌションに関係するこずができたす。

@fiveanddone掞察力をありがずう それで、 .envファむルが代わりにdocker-compose.env たたは同様のものず呌ばれた堎合、それはあなたの懞念を軜枛したすか

@ shin-

はい、それは私のナヌスケヌスに圓おはたりたす。

envファむルはDockerComposeによっお自動的にロヌドされたすか

そうでない堎合、 docker-compose.envを自動的にロヌドできたすか

@nhooey .envずいう名前の堎合、envファむルは自動的にロヌドされたす。 たた、サヌビスごずに個別にenvファむルを指定するこずもできたす。 ドキュメントを参照しおください。

.envずいう名前の堎合、envファむルは自動的にロヌドされたす。 たた、サヌビスごずに個別にenvファむルを指定するこずもできたす。 ドキュメントを参照しおください。

ここではニトピッカヌではありたせんが、それは実際には正しくありたせん。 そしお私芋は、トピック党䜓の誀解の最倧の原因です。

.envの倉数は、明瀺的に転送しない堎合、いずれかを䜿甚

env_file: 
  - .env

たたは

environment:
  - VAR_FROM_DOTENV
  - FOO=${ANOTHER_VAR_FROM_DOTENV}

.envファむルは自動的にロヌドされたす。はい。ただし、远加の構成を行わないず、これらのComposeCLI環境倉数にのみ適甚され

これをデフォルトでdocker-compose.env名前倉曎するこずを匷くサポヌトしたす。これは、その倉数であるため、1぀のENV

それを瀌儀正しく心のこもったものにしおくれた皆さんに感謝したす

私はあなたの蚀うこずを聞きたす、そしお私はい぀も私の萜ち着きを保぀ずは限らないずいう眪を犯しおいたす。 そのために残念。 いく぀かのコメントは時々本圓に私を始めさせたす...それでうたくいくでしょう。

プロゞェクト名が䜜成ファむルにある堎合、2぀のプロゞェクトで同じ名前が䜿甚され、競合が発生しお䞡方のプロゞェクトが砎損する可胜性がありたす。

これに関する私たちの䞻な関心事は、「゚ンドナヌザヌ」が独自のプロゞェクトを持っおおり、名前の競合を絶察に避けたいずいうこずです。 その点で、圌らはディストリビュヌタヌではなく、プロゞェクト名を管理する必芁がありたす。

@ shin-これは䞀般的に合意されおいるように聞こえたすが、 docker-compose.ymlは垞にプロゞェクトの䞀郚であり、プロゞェクトリポゞトリに存圚したす。 それは必ずしも真実ではないず思いたす。 docker-compose.yml共有しない人

たた、「名前の競合を回避する」に぀いおプロゞェクト名ずの名前の競合の代わりに、ファむルシステムレベルでIMOより重倧な名前の競合が発生したした。 .envは、プロゞェクトがプロゞェクトを定矩するために䜿甚する䞀般的な名前です。アプリ固有の蚭定。 開発者が本圓にそうしたいのでない限り、Docker蚭定で汚染されるべきではありたせん。 ただし、この決定は開発者に任せる必芁がありたす。

提案は次のずおりです。プロゞェクト名に他の2぀のオプションを远加し、 docker-compose.yml V4で.env䜿甚を非掚奚にするのはどうですか 䞀぀は、 project_nameでdocker-compose.yml 、別のファむルである.dockerproject名のみが含たれおいたすし、リポゞトリに提出すべきではない決しお。 ロヌカルファむルである必芁がありたす。

優先順䜍に぀いおの私の提案は次のずおりです最初に最高

  • -p CLI匕数
  • .dockerprojectファむル
  • project_nameでdocker-compose.yml あれば、避けるべきであるdocker-compose.ymlプロゞェクトず䞀緒に配垃されたす
  • 環境からのCOMPOSE_PROJECT_NAME
  • COMPOSE_PROJECT_NAMEから.env 非掚奚
  • ディレクトリ名

このようにしお、誰かが分散docker-compose.ymlハヌドコヌディングした堎合でも、゚ンドナヌザヌは垞に.dockerprojectプロゞェクト名を䞊曞きできたす。

曎新 .dockerproject代わりに.dockerenvたたはdocker.envを䜿甚しお生掻するこずもできたす。 ただし、問題を解決するには優先順䜍を高くする必芁がありたす。ここでは、 docker-compose.ymlハヌドコヌドされたプロゞェクト名をオヌバヌラむドする必芁がありたす。

こんにちは、みんな、

たず、このケヌスを芋おくれた@dnephinず@ shin-に感謝したす。 @ shin-が送信した倉曎は、この問題を解決するための倧きな䞀歩のように芋えたす。

次のナヌスケヌスに぀いお、テストプロゞェクトでPR 5378を怜蚌したした A default project name defined by the project, that can be checked in https://github.com/docker/compose/issues/745#issuecomment-282858900。 そのために、さたざたな可胜性を瀺すgitリポゞトリを䜜成したした https 

ナヌスケヌスを郚分的にカバヌしおいるPR5378を芋぀けたした。 問題は、゜リュヌションにCOMPOSE_X_PROJECT_NAME env倉数が必芁なこずです。 可胜な解決策

  1. プロゞェクトのフォルダヌにenv倉数を氞続化したす。 .envファむルを詊したしたが、docker-composeが別の堎所から呌び出された堎合は機胜したせんコマンドの䟋、ファむルの䜜成を参照
  2. COMPOSE_X_PROJECT_NAMEをグロヌバルに定矩したす.profileたたは同等のもの。 それは機胜したすが、プロゞェクトで指定するこずはできたせん。぀たり、ナヌスケヌスdefined by the project, that can be checked in゜リュヌションではありたせん。
  3. 別のオプションはありたすか

うたくいけば、ここで取り䞊げるナヌスケヌスを説明するこずができたした。

芪愛なるメンテナ、docker-composeファむルにオプションのproject_nameプロパティを導入するPR5369によっおナヌスケヌスがどのように解決されるかを怜蚎しおください。 このプロパティの優先床は䜎くなりたすが、環境や䜜業ディレクトリには䟝存したせん。

  1. 別のオプションはありたすか

このオプションdocker-compose --project-directory <PATH> 代替䜜業ディレクトリを指定がありたす。 .envファむルでも機胜するはずです。

別の埮劙なナヌスケヌスをミックスに远加するには
私のナヌスケヌスでは、2぀のリポゞトリがありたす。1぀はメむンプロゞェクトビルド/デプロむに䜿甚甚で、もう1぀はdevopsDockerfile、docker-compose.ymlなどを含む甚です。
珟圚のセットアップでは、メむンプロゞェクトリポゞトリはルヌト./にあり、devopsリポゞトリはサブディレクトリ./devops/にチェックアりトされおいたす。

この蚭定では、.envファむルの䜿甚は次のようにする必芁があるため機胜したせん。

docker-composeコマンドが実行されるフォルダヌ珟圚の䜜業ディレクトリに配眮されたす。
ドキュメント参照

docker-compose -f devops/docker-compose.ymlずしお呌び出されるため、これは機胜したせん。
もちろん、ここに-pパラメヌタヌを远加するこずもできたす。これは珟圚䜿甚しおいるものですが、䞊蚘で参照したように人為的゚ラヌが発生しやすくなりたす。

.envたたは提案されたdocker-compose.envファむルをdocker-compose.ymlず同じディレクトリから読み取るこずができれば、そこでプロゞェクト名を定矩するこずでうたくいくでしょう。

docker-compose.yml内でenv_fileディレクティブを䜿甚しおも機胜したせん。これは、これらのenv倉数がコンテナヌ内でのみ適甚され、コンテナヌの䜜成には適甚されないためです。

最終的に、私の目暙は、実際のプロゞェクトコヌドベヌスを汚染しない方法で、devops関連のファむルを自己完結型に保぀こずですが、そのリポゞトリず䞊行しおアクセス/実行するこずはできたす。

このオプションがありたすdocker-compose--project-directory代替の䜜業ディレクトリを指定したす。 .envファむルでも機胜するはずです。

@ schmunk42は良いショットかもしれたせんが、 --project-directoryは.envファむルでは機胜したせん。 次のように詊したしたが、.envファむルは無芖されたしたプロゞェクトファむル

docker-compose -f PR_5378/docker-compose.yml -f PR_5378/docker-compose2.yml --project-directory PR_5378 down

今埌は、䌚話に貢献しないコメントを建蚭的に削陀しおいきたす。 私は子䟛たちず亀流するこずに興味がありたせん。

蚭定可胜な.env名を持぀こずに぀いお
どの.envファむルを䜿甚するかを指定する環境倉数を持぀こずの問題は、それが本質的に埪環䟝存であるずいうこずです。 環境倉数の解釈方法に䟋倖を導入する必芁がありたす。これは、賢明ではありたすが、本質的に盎感に反したす。

.env名前自䜓に぀いお
.env名前が倚数の゜フトりェアやフレヌムワヌクで䜿甚されおおり、通垞はバヌゞョン管理でコミットするこずを意図しおいないこずは、今では明らかです。 重倧な倉曎を加えるこずに非垞に敏感ですが、前者が存圚しない堎合は、 .envファむルぞのフォヌルバックを䜿甚しお代替名䟋 docker-compose.env を導入するこずができたす。他のナヌザヌず共有される堎合がありたす。

䜜成ファむルにproject_nameを远加する堎合
私たちはすでにこれに察する私たちのスタンスを䜕床か繰り返したした-私たちがその倉曎を行うこずに反察しおいるいく぀かの理由に぀いおは、ダニ゚ルの最新のコメントを参照しおください。 それは難しいこずではありたせん。 それは私たちがそれに぀いお考えなかったずいうこずではありたせん。 私たちはそれを評䟡するのに倚くの時間を費やしたした、そしお私たちはそれをこの圢で远加するこずを正圓化する結果ずしおプロゞェクトの品質があたりにも悪くなるだろうず感じおいたす。 珟実的に蚀えば、5378は、オプトむンおよび䞋䜍互換性のある方法でこれを機胜させるために行うこずができる最善の譲歩です線集もちろん、これらのパラメヌタヌ内でその提案を改善する提案を受け入れたす

--project-directory
少し正接ですが、このオプションは珟圚少し壊れおいるこずを私は知っおいたす。 振り返っおみるず、解決するよりも倚くの問題が発生するため、たったく远加しないほうがよかったず思いたす。 私はそれが修正可胜かどうかを確認するためにしばらく時間を費やしたすが、それは本圓に信頌できないものにする奇劙な゚ッゞケヌスがたくさんありたす。


そうは蚀っおも、 docker-compose.env +5378が満足のいく解決策ではない人はいたすか 私はそれがあなたの奜たしい解決策ではないかもしれないこずを理解しおいたす、しかし私はそれがあなたが察凊できる合理的な譲歩をしおいるのかどうか尋ねおいたす。

冗談はさおおき...

ダニ゚ルの最新のコメントが「プロゞェクトの質」にどのように関係しおいるかはただわかりたせん。 さらに、蟞曞にキヌを远加しおも䞋䜍互換性が損なわれるこずはないずいうのが䞀般的な経隓則です。 プログラマヌがそうではない方法で物事を実装した堎合は垞にありたすが、私は䜙談です。

プロゞェクトの「名前」はツヌルの倚くの偎面の基本であるため、 project-name たたはその他フィヌルドを必芁ずするキャンプは正圓化されるず思いたす。 このキャンプの人々は、環境倉数やフラグのようなコマンドのようなより䞀時的な解決策の問題を回避するために、この名前を石のどこかに単に曞き留めたいず思うかもしれたせん。

これが建蚭的なものであったこずを願っおいたす。

@estarterこれはバグだず思いたすが、別の問題を開く䟡倀があるかもしれたせん

実際、これはディレクトリPR_5378の.envファむルで機胜するず思いたす。

docker-compose --project-directory PR_5378 -f docker-compose.yml -f docker-compose2.yml down

䜜成ファむルにproject_nameを远加する堎合

@ shin-決定はすでに行われおいるようです。 しかし、私はただ背景を理解しようずしおいたす。 私は以前にこれを尋ねたしたが、答えは埗られたせんでしたこれが、議論が私にずっおずおも迷惑だず感じた理由の1぀です。

我々が持っおいるなぜあなたは、私が理解しお助けをしおもらえcontainer_nameずさえnetworkでdocker-compose.yml  1぀目は、朜圚的な競合の原因になる可胜性もありたす。 そしお埌者は非垞にホスト固有です。 あなたの論理に埓うず、それらの2぀および他のもそこにあるべきではありたせん。 project_nameずの違いがわかりたせん。

この質問を二床ず無芖しないでください。

@ michael-k project_nameはcontainer_nameず同じだず蚀っおいたすか そういえば、1぀のプロゞェクトが耇数のコンテナで構成されおいる可胜性があるこずをお知らせしたす。 それずも私はあなたを誀解したしたか

network堎合、必ずしもホスト固有である必芁はありたせん。 プロゞェクトで、1぀のコンテナが他のネットワヌクず盞互䜜甚する䞭倮の分離されたネットワヌクが必芁な堎合が倚くありたす。 そしお、その構成はdocker-compose.yml保存されたす。

@AyushyaChitranshあなたは誀解したした。 問題は、 container_name 、 networkなどがdocker-compose.ymlのに、 project_nameがそこにあるこずを蚱可されるべきではないのはなぜですか それらはすべお、共有すべきではない競合たたはホスト固有の構成の同じ可胜性を共有したす。

@aanand私はこの機䌚に぀いお知っおいたす。 たた、コンテナ名に぀いおも同じこずが蚀えたすが、䜜成ファむルにコンテナ名を蚭定する機䌚はありたすか

はい、でもそれを远加するのは良い考えではないず思いたす。

関連するディスカッションからdocker-composeファむルでネットワヌク名を指定したす。

@estarterこれはバグだず思いたすが、別の問題を開く䟡倀があるかもしれたせん

@ schmunk42メンテナがこれを認識しおいるこずがわかりたすのコメントのOn --project-directoryに加えお、4709、4933、4841を参照しおください

実際、これはディレクトリPR_5378の.envファむルで機胜するず思いたす。
docker-compose --project-directory PR_5378 -f docker-compose.yml -f docker-compose2.yml down

--project-directoryが-fパラメヌタヌに圱響を䞎えるず仮定したした。
実際にはそうではありたせん、このコマンドはIOError: [Errno 2] No such file or directory: u'./docker-compose.yml'䞎えたす

--project-directoryが-f圱響を䞎えないのは非垞に良いこずです。そうでなければ、 --project-directoryず耇数のdocker-composeファむルをすべお異なるディレクトリで䜿甚するこずは悪倢になるず想像しおください。

私が解決した問題ず芋なしおいるこずに぀いお倚くの審議が行われおいるのを芋お、私は非垞に驚いおいたす。

これは私が芋慣れおいる優先順䜍です

  1. ハヌドコヌドされおいる
  2. CLIオプション
  3. 環境
  4. project.rc
  5. 正気のデフォルト

project_name 、珟圚、オプション1もオプション4もありたせん。 これは人々が盎面しおいる根本的な問題であり、䞋䜍互換性のある方法で解決するのは簡単なようです。

私たちは玔粋さに぀いお哲孊的な議論をしおいるようですが、それは圹に立たないかもしれたせん。 䞀方、非垞に䞀般的なOSSカスケヌド構成スキヌムを䜿甚するず非垞に圹立ちたす。

私たちは玔粋さに぀いお哲孊的な議論をしおいるようですが、それは圹に立たないかもしれたせん。

しかし、この議論を持぀こずは実際には目的ではありたせん。 圓初から、Composeファむルでのプロゞェクト名の定矩に関しお私たちがどこに立っおいるかに぀いお非垞に明確でした。

しかし、これに぀いおは透明にさせおください。 これはdocker-composeでは決しお起こりたせん。 それがこの問題に察しお受け入れおも構わないず思っおいる唯䞀の解決策である堎合は、プロゞェクトをフォヌクしお自分で実行するずいう非垞にOSSプロセスを実行する必芁がありたす。 コヌドは利甚可胜であり、非垞に寛容なラむセンスで共有されおいたす。

docker-compose.ymlにcontainer_name、さらにはネットワヌクがある理由を理解するのを手䌝っおいただけたせんか 1぀目は、朜圚的な競合の原因になる可胜性もありたす。 そしお埌者は非垞にホスト固有です。 あなたの論理に埓うず、それらの2぀および他のもそこにあるべきではありたせん。 project_nameずの違いがわかりたせん。

container_name堎合、そのオプションはプロゞェクトの存続期間の非垞に早い段階で導入されたした。 @ schmunk42が指摘したように、
networkに関しおは、あなたの心の䞭でどのように比范されるのか完党にはわかりたせんか

私が蚀及したオプション4はどうですか ロヌカルディレクトリ固有の蚭定に.docker-composeを導入するずいう話を芋たした。 これは、 _x_環境フラグ環境管理が必芁を導入するよりもはるかに望たしいimoでしょう。

次のようになりたす。

# <my-project-dir>/.docker-compose
project_name: foobar

䞊蚘は環境倉数オプションずは異なり、優先順䜍リストの䞋䜍にありたす。

これは私のナヌスケヌスをうたく解決し、リストから別の暙準構成パスをチェックしたす。

@thedeeno私たちの考えでCOMPOSE_PROJECT_NAME 、 .envファむル内のCOMPOSE_PROJECT_NAMEは、すでにそれを達成しおいたすアりトラむンず同じ優先順䜍で。 しかし、我々はあなたを聞いた䞊で.env 、我々が怜蚎しおいる理由である名前のお粗末な遞択、ずいうdocker-compose.env代替ずしお。 それはあなたのために働きたすか

私たちの考えでは、.envファむル内のCOMPOSE_PROJECT_NAMEはすでにそれを達成しおいたす

@ shin-これは私たちが同意しないずころです。 私はそうは思わない。

私は個人的に.envファむルを

これは、䞊蚘のnumber 3環境ベヌスの構成を支揎するのに最適です。

環境にプロゞェクト名を所有させたくない堎合のために、゚スケヌプハッチ number 4 は提䟛されたせん。

私の堎合、開発者はそれぞれ独自の.envファむルVCではないを持っおいたす。 docker-compose.yaml泚入するための秘密が含たれおいたす。 これが倧奜き。

ただし、プロゞェクト名は䞀郚のツヌルず匷く結び぀いおいるため、開発者がプロ​​ゞェクト名を制埡するこずは望たしくありたせん。 .envはバヌゞョン管理されおいないため、このアプロヌチでは開発者に手動でCOMPOSE_PROJECT_NAMEを蚭定させる必芁がありたす。 それは秘密ではないので、他の人ずは異なりたす。

残念ながら、 .envのデフォルトの゜ヌスパスを倉曎するだけでは、ここでは圹に立ちたせん。 .envが自動的に䟛絊されるのが倧奜きです。 プロゞェクト名をそのように指定したくないだけです。

私の緎習から1぀のナヌスケヌスを瀺したす

.envファむルを䜿甚しお画像のバヌゞョンを指定し、奇劙なsed / awk / perl /その他の解析を回避するために、CIの倀を䞊曞きするだけです。

    echo APP_VERSION=$CI_COMMIT_REF_NAME > .env
    docker-compose pull
    docker-compose up -d

埌でdocker-compose.yml 、画像は次のように指定されたす。

    image: my.registry.example.net/app:${APP_VERSION}

この皮の倉数がさらに必芁な堎合は、耇数の.envファむルがサポヌトされおいない限り、解析を行う必芁がありたす。

したがっお、おそらく、 docker-compose.env.d/*たたは.docker-compose.env.d/*たたはdocker-compose.d/*ような「ディレクトリ」サポヌトも远加したす。

ただし、そのようなglobは、゚ディタヌのバックアップ *~ 、 *.bak のマッチングの問題を即座に匕き起こす可胜性があるため、代わりに拡匵機胜を䜿甚するこずをお勧めしたす docker-compose.env.d/*.sh

...しかし、繰り返しになりたすが、 docker-compose.ymlで構成可胜にするだけで、どのルヌトレベルの.envファむルがロヌドされたすか、それずも鶏が先か卵が先かずいう問題が発生したすか 構成パヌサヌがどのように機胜するかわかりたせん:)

少しオフトピックですが、 COMPOSE_PROJECT_NAME envではプレフィックスを完党に制埡できたせん。それでも、 A-Za-z0-9_に䞀臎するように削陀されたす...プレフィックスに-を䜿甚したかったのです。 私は今これを報告した堎所を芋぀けるこずができたせんが、それは察凊されおいたせん

docker自䜓が制限するのず同じ文字を蚱可するのは論理的です。

@glenscこれは環境を管理するための倚くのむンフラストラクチャです。 私は個人的にそれがdocker-composeの責任だずは思いたせん。

私が他のプロゞェクトで行っおいるのを芋たのは、自動的に.env

@glensc @thedeeno理想的には、2぀の*.envファむルがありたす。1぀は他のナヌザヌず共有するためのもので、もう1぀はプラむベヌトに保たれ、䞡方が同じ倉数を定矩する堎合、埌者が前者をオヌバヌラむドしたすか

先週のコメントで、構成可胜な.env名前に぀いお説明したした。

パブリックdocker-compose.env プラむベヌト.env自動゜ヌシングしながらを持぀こずは私たちにずっお玠晎らしいこずです

これをrcファむルのように扱い、゜ヌス管理をコミットしたす。

パブリック/プラむベヌトのenvファむルがあるず、ここに蚘茉されおいるほずんどのナヌスケヌスが解決する可胜性が高いず思いたす。 -がプロゞェクト名でも蚱可されるずしたら、それは玠晎らしいこずです。

@ thedeeno @ glenscパブリックENVファむルの倀をオヌバヌラむドするプラむベヌトENVファむルが必芁なナヌスケヌスを教えおください。

シヌクレットはコンテナに自動転送されないため、 docker-compose.envで定矩しないでください。 それでも.envファむルを䜿甚しお、それを䜿っおやりたいこずができたす。 しかし、 docker-composeずスタック内のコンテナヌを混圚させるのは、私には混乱しおいるように芋えたす。

@ schmunk42私にはそのナヌスケヌスがないので、そこではあたり圹に立ちたせん。 project_nameをバヌゞョン管理にコミットする必芁がありたす。 docker-compose.env解決したす。

私があなたの2番目の段萜に埓うかどうかわかりたせん。 シヌクレットには.envを䜿甚し、手動でdocker-compose.yaml挿入したす。

@ schmunk42 https://github.com/docker/compose/issues/745#issuecomment -346491062

これ${variables} 、 image倀に察しお${variables}を定矩する堎所が.envファむルのように芋えるからです。

@glensc同意したした

しかし、代わりに、 docker-compose.override.envを提案しお、 ymlファむルの珟圚のオヌバヌラむド機胜に合わせたす。

docker-compose.env
docker-compose.override.env
docker-compose.override.yml
docker-compose.yml

私があなたの2番目の段萜に埓うかどうかわかりたせん。 シヌクレットには.envを䜿甚し、docker-compose.yamlに手動で挿入したす。

@thedeeno私はあなたがこれをしおいるず思いたす

environment:
  - ${SECRET_VAR_FROM_DOTENV}

これはdocker-compose.override.envでも可胜です。 たたは、次のこずができたす。

env_file:
  - .env

よりdocker-compose固有のものを優先しお.envを削陀するこずを提案しおいたすか
道

.envの自動゜ヌシングをスキップするず、私の悪圱響になりたす
チヌムのワヌクフロヌ。 他のツヌルに぀いおは、このファむルに䟝存しおいたす。 私たちは結局
私たちの秘密を2぀に入れたす.envずあなたが提案しおいるこの他のファむル
docker-composeが.envの衚瀺を停止した堎合に配眮したす。

1:15トビアス・ムンクの朚、2017幎11月23日には[email protected]
曞きたした

@glensc https://github.com/glensc同意したした

しかし、代わりに、docker-compose.override.envを提案しおそれを調敎したす
ymlファむルの珟圚のオヌバヌラむド機胜。

docker-compose.env
docker-compose.override.env
docker-compose.override.yml
docker-compose.yml

私があなたの2番目の段萜に埓うかどうかわかりたせん。 シヌクレットには.envを䜿甚し、
docker-compose.yamlに手動で挿入したす。

@thedeeno https://github.com/thedeeno私はあなたがこれをしおいるず思いたす

環境

  • $ {SECRET_VAR_FROM_DOTENV}

これはdocker-compose.override.envでも可胜です。 もしくは、あなた
出来たした

env_file

  • .env

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/compose/issues/745#issuecomment-346538315 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AAFIdxtbI7y3wW2TFa401Go6Msj0gC74ks5s5Q1vgaJpZM4DLBNs
。

よりdocker-compose固有のものを優先しお.envを削陀するこずを提案しおいたすか
道

必ずしもそうではありたせん、BCのためにdocker-compose 、ただ芋お可胜性が.env他はず同じ、芋぀からない堎合はfig.yml䞀回。 次の堎合を決定するのは難しいかもしれたせんが

.env
docker-compose.env
.env
docker-compose.override.env
.env
docker-compose.env
docker-compose.override.env

.envは最埌のケヌスでは䜿甚されたせんが、䞀郚のナヌザヌは.envをオヌバヌラむドずしお䜿甚し、他のナヌザヌはフォヌルバックずしお䜿甚するため、最初の2぀を凊理する方法は未定です。

私にずっお、.envはすべおの堎合に䜿甚する必芁がありたす。 特別な意味を持぀ファむルです
より広い生態系で。

3番目のケヌスでは、優先順䜍が最も䜎いファむルだけです。

必芁なのは、プロゞェクト名を゜ヌス管理にコミットする方法だけです。 私はしたせん
特に、より掗緎されたカスケヌド環境に泚意しおください
管理。 私は実際にこのプロゞェクト名戊略には䜕もなかったほうがいいず思いたす
環境倉数を䜿甚したす。

構成ファむルがテヌブルから倖れおいお、コミットする方法がある堎合
あなたが取っおいるこのenvカスケヌドを持぀project_name私はそれを喜んで䜿甚したす
でも

1:31トビアス・ムンクの朚、2017幎11月23日には[email protected]
曞きたした

よりdocker-compose固有のものを優先しお.envを削陀するこずを提案しおいたすか
道

必ずしもそうずは限りたせんが、BC docker-composeの堎合、次の堎合でも.envを確認できたす。
fig.ymlず同じように、他のものは芋぀かりたせん。 かもしれたせんが
次の堎合を決定するのは難しいです。

.env
docker-compose.env

.env
docker-compose.override.env

.env
docker-compose.env
docker-compose.override.env

最埌のケヌスでは.envは䜿甚されたせんが、凊理方法は未定です。
最初の2぀に、䞀郚のナヌザヌは.envをオヌバヌラむドずしお䜿甚し、他のナヌザヌは
埌退する。

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/compose/issues/745#issuecomment-346539891 、たたはミュヌト
スレッド
https://github.com/notifications/unsubscribe-auth/AAFId95kZQIsiWp488JyPQOtGJju0OPbks5s5RFbgaJpZM4DLBNs
。

ネットワヌクに関しおは、あなたの心の䞭でどのように比范されるのか完党にはわかりたせんか

@ shin-

services:
    web:
        build: ./
        networks:
            - my_project_network_on_my_localhost
networks:
    my_project_network_on_my_localhost:
        external: true

docker-compose.ymlをレポにコミットしたこずがないので、間違っおいるず思いたす。 垞にホスト固有の蚭定が含たれおいたす。 プロダクションの開発では、たったく異なるコンテンツが含たれる可胜性がありたす。

私は「4project.rc」のファンですが、おそらく別の圢匏の代わりにdocker-project.yamlようなものを䜿甚するでしょう。 これはたさに元の問題が説明しおいるこずです。 私に関する限り、composeファむルにプロゞェクト名を入れるこずに぀いおの議論は別の問題にあるべきです。

必芁なのは、プロゞェクト名を゜ヌス管理にコミットする方法だけです。

これはただ私にはわからない点です。 ハヌドコヌドされた単䞀のプロゞェクト名を芁求する理由はないはずです。 䞀貫した名前を期埅する倖郚ツヌルがある堎合、そのツヌルがdocker-compose呌び出す前にプロゞェクト名を蚭定しないのはなぜですか

my_project_network_on_my_localhostは私には間違っおいるようです。 倖郚ネットワヌクでプロゞェクト名が必芁なのはなぜですか 䜜成プロゞェクト名ず䞀臎する必芁はありたせん。

my_project_network_on_my_localhostは私には間違っおいるようです。

これはほんの䞀䟋です。 ロヌカル開発マシンず本番サヌバヌのネットワヌク蚭定が異なりたす。 docker-compose.yml他の倚くの蚭定も、本番環境ずは定期的に異なりたす。たずえば、プロゞェクト固有のものを構築したり、デヌタベヌスを維持したりするためにナヌティリティコンテナを定矩しおいたす。

私が理解したように、最初はdocker-compose たたはより良いfig の背埌にある䞻なアむデアは、耇雑なコンテナセットアップ甚の長いdockerコマンドラむンオプションをすべおうたく敎理するこず1぀のオプションが省略されおいたす。 しかし、私はどういうわけか、これがその背埌にある䞻芁なアむデアではなくなったこずを芋逃したようです。

docker-compose.ymlの他の倚くの蚭定も定期的に本番環境ずは異なりたす。たずえば、プロゞェクト固有のものをビルドしたり、デヌタベヌスを維持したりするためにナヌティリティコンテナヌを定矩しおいたす。

ここでも同じワヌクフロヌがありたす。 私たちの堎合、「䞀般的な」docker-compose定矩はほずんど䜕も芁玄し
開発蚭定の䞻芁郚分は別のファむルで定矩され、自動マヌゞは.envファむルを介しお行われたす。 テストのセットアップに぀いおも同じです。

私たちの堎合はフォルダにあるので、次のようなこずができたす

(cd tests && docker-compose up -d)
(cd tests && docker-compose ps)
(cd tests && docker-compose run php codecept run)

テスト甚...たたはこれ

(cd production && docker-compose logs -f --tail 100)

本番甚ボヌナス別のマシンを指すように本番環境でDOCKER_HOSTを定矩できたすが、 docker-compose 。

しかし、ええ、それはファむルではなくフォルダであり、動䜜するには2か所にcp .env-dist .envが必芁です。そうでない堎合、無効な䜜成ファむルで倱敗したす。 実際、私はこのIMHOのきちんずしたワヌクフロヌを共有したかっただけです。

これはただ私にはわからない点です。 ハヌドコヌドされた単䞀のプロゞェクト名を芁求する理由はないはずです。 䞀貫した名前を期埅する倖郚ツヌルがある堎合、そのツヌルがdocker-composeを呌び出す前にプロゞェクト名を蚭定しないのはなぜですか

@dnephin理由がありたす。

はい、回避策がありたす。 質問は、それをより䟿利で予枬可胜にするこずです。

ハヌドコヌドされたプロゞェクト名が圹立぀1぀の䟋を次に瀺したす。traefikのdocker構成は、デフォルトで次の圢匏でコンテナヌのホストルヌルを䜜成したす <service>.<project>.<domain> 。 このフォヌマットは簡単に倉曎できたせん。 Docker-composeサヌビスに同じfqdnを䜿甚するこずは、開発者にずっお非垞に有益です。 䞀貫性を保蚌する唯䞀の方法は、aクロヌンに特定のディレクトリ名を䜿甚するように匷制するbtraefikのルヌルを手動で指定するこずであるため、れロ構成セットアップを䜿甚できれば玠晎らしいず思いたす。 䞡方ずも吞う。

もう1぀は、docker-composeで䜜成されたむメヌゞを参照するこずです。 プロゞェクト名を保蚌できない堎合、これらの画像名を保蚌するこずはできず、自信を持っお参照するこずもできたせん。 確かに、定矩ごずにimage_nameをハヌドコヌディングするこずはできたすが、_コンベンションを䜿甚したい_ので、率盎に蚀っお冗長に感じたすが、異なるファむル名を䜿甚するこずを遞択した開発者がツヌルで非垞に驚くべき倱敗をするこずを懞念しおいたす。

みんな、たくさんの議論...これの状況はどうですか、 .docker-composeファむルにデフォルトのプロゞェクト名を蚭定できたすか
それずも、このスレッドでさらに議論が必芁ですか

プロゞェクト名をdocker-compose.ymlファむルに保存するこずは、PyCharmなどの他のツヌルで䜿甚する堎合に非垞に意味がありたす。

同じYAMLファむルに保存しおおくず䟿利ですが、必芁に応じおオヌバヌラむドするこずもできたす。

この問題の栞心は、デフォルトのプロゞェクト名が珟圚のディレクトリのベヌス名ずしお単玔に_naively_ず蚀うべきですか取られおいるずいう事実から来おいるず思いたす。 これにより、ファむルシステムの名前空間階局がフラットな名前空間に効果的に圧瞮されたす。これは、名前の競合のために問題がありたす。 たずえば、これにより、 ~/fooproject/masterおよび~/barproject/masterサヌビスを実行しおいるナヌザヌに問題が発生したす。

プロゞェクト名は重芁ではないず思いたす。 それで、おそらくdocker-composeを堅牢にする方法は、フルパス぀たりhome_flaviovs_fooproject_master に基づいおプロゞェクト名を生成するこずですか

しかし、私は氞続的なアむデアが奜きです。 プロゞェクト名をGitにコミットできるようにするこずは、そのような䞀般的なナヌスケヌスです。 おそらく読んで.env.defaultの前にファむルを.env BTWだけでなくずしお長幎210の䞖話をするだろう、このためのシンプルな゜リュヌションですか

docker-composeバむナリを独自の関数でラップしお、どこからでも関数を呌び出せるようにするこずで、これを解決したした。 これにより、.envファむルが読み蟌たれ、適切なdocker-composeファむルがどこでも䜿甚されたす。

もちろん、これを拡匵しお、プロゞェクトごずに機胜を持たせるこずもできたす。 それには欠点があるかもしれないず思いたすが、私はそれらを芋぀けおいたせん。

DEFAULT_DOCKER_COMPOSE=~/my-project

function dcompose() {
    pushd $DEFAULT_DOCKER_COMPOSE &> /dev/null;
    /usr/local/bin/docker-compose $@;
    popd &> /dev/null;
}
## maintain auto complete
function _dc {
    pushd $DEFAULT_DOCKER_COMPOSE &> /dev/null;
    _docker_compose;
    popd &> /dev/null;
}

complete -F _dc dcompose

画像の衝突に問題がありたす。非垞に論理的で単玔な解決策に芋えるため、docker-compose.ymlでproject_nameを蚭定できないのは本圓に奇劙に芋えたす。 実際、そもそもプロゞェクトフォルダから名前を付けるのは悪い考えでした。 倚くの堎合、プロゞェクトフォルダヌは/ home / project1 / repository、/ home / project2 / repositoryなどのようになりたす。この堎合、dockerはrepository_appのような同じむメヌゞ名を生成したした。

@vedmant docker-compose.ymlで画像名を蚭定できたす。 imageずbuild䜿甚するだけです。

だから...同じ名前のフォルダ䞊のプロゞェクトで区切られおいるのはどうですか

docker-compose -f /foo/bar up -d
docker-compose -f /foo/foo/foo/bar down

おそらくこれはすでに提案されおいたす。 しかし、 version: 4重倧な倉曎を加えお、 docker-compose.ymlからプロゞェクト名を蚭定できるようにする新しいキヌワヌドを远加しおみたせんか

私の.docker-compose / project-nameが機胜したせんでした..。
-プロゞェクト名は機胜したした

docker-compose.ymlにもプロゞェクト名を蚭定したいず思いたす。

私のナヌスケヌスは、Webアプリずpostgressデヌタベヌスサヌビスを含むdocker-compose.ymlファむルがありたす。
たた、アドホックタスク甚に個別のdocker-compose.ymlファむルが必芁です。基本的には、docker-composeでオヌケストレヌションしたいアドホックタスクに぀いお説明したす。 これらのアドホックタスクは、メむンプロゞェクトで䜿甚されおいるものず同じサヌビス/ネットワヌク/ボリュヌムを掻甚する必芁がありたす。

docker-composeを䜿甚しおオヌケストレヌションしたいアドホックタスクの䟋は次のずおりです。 デヌタをpostgressデヌタベヌスに移行したす。 このタスクを実行するために、珟圚のものず䞀緒に远加のサヌビスずボリュヌム、ネットワヌクなどを起動する必芁がある堎合があるため、docker-composeを䜿甚しおこれを調敎するのに圹立ちたす。

したがっお、これを実珟するために、タスクを衚す個別のdocker-compose.adhoctask.ymlファむルを䜜成しお、必芁な堎合にのみそのタスクをオンデマンドで実行できるようにするこずができたす。 元のdocker-composeファむルず同じディレクトリにあるため、デフォルトで同じプロゞェクト名を取埗し、同じネットワヌク、ボリュヌムなどにアクセスできたすか ずものが動䜜したす。

ただし、このアドホックタスクのymlファむルをメむンのdocker-compose.ymlず同じトップレベルディレクトリたたは同じリポゞトリに配眮したくない堎合に問題が発生したす。 たずえば、アドホックタスクdocker-compose.adhoc.ymlをサブフォルダヌに配眮し、 DOCKERFILEず、タスクが必芁ずするアセットを、それ自䜓の懞念事項ずしお適切に分離/グルヌプ化したいずしたす。 サブフォルダヌに移動するずすぐに、プロゞェクト名が䞀臎しなくなりたす。 これは、メむンプロゞェクトで定矩されおいるのず同じボリュヌム/ネットワヌクなどにアクセスできなくなったこずを意味したす。

docker-compose.ymlずdocker-compose.adhoc.yml projectnameを指定できれば、必芁に応じお構造化でき別々のリポゞトリに配眮するこずもできたす、実行する必芁はありたせん。垞に远加のコマンドラむン匕数を指定するか、環境倉数を切り替えたす。

これは私にずっお本圓の問題です。名前の競合が発生するからです。

構造内にいく぀かのプロゞェクトがありたす

/company
    /ab   # project prefix
        /backend   # actual project
        /webapp
    /cd
        /backend
        /webapp

これで、1぀のプロゞェクトでdocker-composeを開始するず、ネットワヌクbackend_defaultが䜜成され、明瀺的に名前が付けられおいないコンテナヌのプレフィックスがbackend_たす。正しいフォルダヌに戻り、最初にdocker-compose downを実行しお競合を防ぎたす。そうしないず、同じネットワヌクで新しいコンテナヌが起動し、それらをオフにするず、orhanがない堎合にorhanに぀いお文句を蚀いたす。

私にずっおも問題です。 私は耇数のプロゞェクトを持っおおり、単䞀のマシン䞊の動的デモスタンドにdocker-composeを䜿甚しおいたす。

/project-1
    /dev # docker-compose.yml inside
    /master # docker-compose.yml inside
    /feature
        /new-feature # docker-compose.yml inside
/project-2
    /dev # docker-compose.yml inside
    /master # docker-compose.yml inside

そのため、「マスタヌ」ず「開発者」はプロゞェクト間で競合しおいたす。 .docker-composeファむルでそれを解決できたす。

@simplesmiler自分自身を繰り返すリスクを冒しお、 .envはすでにそれを解決しおいたす。

@ shin- .envは、バヌゞョン管理されおいないシヌクレットによく䜿甚されたす。

@simplesmilerが望んでいるのは、 .envをバヌゞョン管理の倖に保ちながら、プロゞェクト名をバヌゞョン管理にコミットする方法です。

私の知る限り、これを簡単に行う方法はただありたせん。

@thedeenoそれは圌らの投皿が蚀っおいるこずではありたせん。 䞀緒に働いおいたすか そうでない堎合は、他の誰かのナヌスケヌスが明瀺的に曞かれおいるものを超えおいるず掚枬するべきではありたせん。

私たちは䞀緒に働いおいたせん。 それが圌らの問題の私の解釈です。 完党に公平な点ですが、私は間違っおいるかもしれたせんし、掚枬しおいるかもしれたせん。

コヌヒヌを飲みながら䞀緒に仕事ができたらいいのにず思いたす。 私がここで急いでいるずは思わないでください。

たぶん私はこのスレッドを間違っお芚えおいるだけです .env無芖したたた、プロゞェクト名をバヌゞョン管理にコミットする方法はありたすか

.envを無芖したたた、プロゞェクト名をバヌゞョン管理にコミットする方法はありたすか それずも、これはただ䞍足しおいる機胜ですか

珟圚はありたせん。 数か月前に述べたように^ 1、バヌゞョン管理に含めるこずができるセカンダリenvファむルずしおdocker-compose.envを䜿甚する予定です。 優先順䜍のリストをいくらか䞋回っおいたすが、すぐに到達したいず思っおいたす。

1 / https://github.com/docker/compose/issues/745#issuecomment -345054893

それは良い知らせだ PRを受け入れたすか

私はずっず前に垌望をあきらめたしたが、もう䞀床詊しおみたしょう。

ここにいる倚くの人は、なぜこの蚭定のために2番目のファむルを維持する必芁があるのか​​ただ理解しおいないず思いたす。

私が理解しおいるように、ここでいく぀かの堎合、それは圌らのプロゞェクトのセットアップを壊したす。 しかし、このスレッドの倧倚数にずっお、それは問題ではありたせん。 では、これらの少数の人々が、この機胜を欠いおいる他のすべおの人々にこの制限を課すのはどうしおですか 名前を構成しお決定を私たちに任せる方法に぀いお、いく぀かのオプションがないのはなぜですか

論理的にも意味がありたせん。 docker-compose.ymlにこの蚭定がないこずは明らかであるため、マニュアルでこのオプションを探したずきに、このオプションが欠萜しおいるずは信じられたせんでした。 セットアップのほがすべおの他の偎面をそこで構成できたす。 私にずっお、これは構成ロゞックの明確な䞭断です。

docker-compose.yml ほがすべおの蚭定は、プロゞェクト名によっお「スコヌプ」されおいるず蚀えるず思いたす。

4841で提案されおいるように、䜿甚する.envファむル぀たり--env-file を指定するオプションは非垞に䟿利です。

@roipoussierehttps  //github.com/docker/compose/issues/4841#issuecomment-414543951を参照しおください

@ schmunk42に感謝したす。
しかし、それは私が次のような階局を䜜成しなければならないこずを意味したす

.
├── project_a
│   ├── .env
├── project_b
│   ├── .env

次のような簡単なものの代わりに

.
├── a.env
├── b.env

はい、 https //github.com/docker/compose/issues/745#issuecomment -345054893も参照しおここで非衚瀺になるこずがあるため、新しいりィンドりで開く必芁がある堎合がありたすnerd_face

2番目に--env-file提案です。 そのためだけにチケットを䜜った。 このオプションが必芁な堎合は、行っお

だから私はこのバグ/機胜に぀いおいく぀かのコメントを読んだだけです、そしお議論が続いおいおそれが開かれおいるずいう事実はこれが最初に開かれおから4幎が経ち、ただ解決策がないずいう結論に私を導きたすか 郚分的な決定をしおから先に進むこずはできたすか

確かに、この問題党䜓ず関連するすべおの問題を読んだわけではありたせんが、このトピックには興味深い問題があり、䞀芋したずころよりも耇雑になっおいたす。 たずえば、 .envは䞀般的に秘密の倀に䜿甚されるこずは誰もが知っおいるので、通垞はバヌゞョン管理からそれを無芖したす。

ただし、Stripeを䜿甚しおいるずしたしょう。これにより、テストキヌずラむブキヌ別名を䜿甚できるようになりたす。 䜿甚する2セットのキヌ。 開発ではテストキヌを䜿甚するのが非垞に䞀般的であり、本番環境ではラむブキヌを䜿甚するこずになりたす。

぀たり、環境ごずに異なるキヌがあり、ファむル内の倀を実行ず実行の間に切り替える必芁がないため、 .envを単独で䜿甚しおシヌクレット倀を凊理するこずはできたせん。 devたたはprodのアプリクレむゞヌで非垞に゚ラヌが発生しやすい。

最終的に行う可胜性が高いのは、 .env .env.prodファむルずenv_fileで

ただし、本番環境では、本番環境の䜜成ファむルで.envず.env.prod䞡方を参照したす。

しかし、これがどこに向かっおいるのかわかりたすか 珟圚、Docker Composeでは、オプションのenv_fileファむルを䜿甚できたせん。 ファむルが存圚しない堎合、DockerComposeを実行しようずするずすぐにDockerComposeが爆発したす。

あなたは、自動的に必芁なので、 .envあなたがそれを䜿甚する予定がある堎合は、最埌に存圚するファむルをenv_file 、これはストラむプのいずれかに限定されるものではありたせん。 倚くのWebフレヌムワヌクには、環境固有の特定の蚭定がありたすが、開発ず本番の䞡方で倉曎されたす぀たり、FlaskではSERVER_NAME 。

぀たり、バヌゞョン管理にコミットする.env_exampleファむルのようなものに制限されおおり、゚ンドナヌザヌがそのファむルの名前を.envに倉曎するず、このファむル内に次のファむルが含たれるこずになりたす。私たちの旧友COMPOSE_PROJECT_NAME 。

これで問題が発生したす。 プロゞェクト名を蚭定する別の方法が実際に必芁ですか 私はそうするこずを確信しおいたせんが、カスタムプロゞェクト名を蚭定するこずは、どのプロゞェクトでも、たたは少なくずもフォルダ名以倖の名前を蚭定するこずは良い考えであるず確信しおいたす。名前の競合が発生しやすいからです。

この問題はいく぀かのロヌドマップにありたすか

このナヌスケヌスは、プロゞェクトに耇数のdocker-composeファむルたずえば、dev、test、おそらくbase、おそらくtest localなどがある堎合にCOMPOSE_PROJECT_NAMEを倉曎するこずです。スピンする必芁があるかもしれたせん。互いに分離された2぀の非垞に異なる環境。

この堎合、メむクファむルにCOMPOSE_PROJECT_NAMEを䜜成するこずで、このdocker-composeの制限を回避できたす。

これをcomposeyaml自䜓から構成できるようにしたいず思いたす。

これはただ開いおいたすか 䜕おこずだ...

賌読したした。 たた、composeyamlファむルにプロゞェクト名を蚭定できるようにしたいです。

これは氞遠にかかりたす🀊‍♂

この機胜があるず非垞に圹立ちたす

この機胜は、私が取り組んでいるプロゞェクトでは倧歓迎です。

さお、この長いスレッドから、プロゞェクト名はdocker-compose.ymlファむルに含たれないず結論付けるこずができたす。これは、メむンの開発者がこれに反察しおおり、そのようなプルリク゚ストをマヌゞしないためです。

それでは、元の提案に戻っお、この問題の冒頭にあるプロゞェクト名を氞続化しおください。 ファむル.docker-composeたたはディレクトリ.docker-composeのいずれかを䜿甚するこずは、私には問題ないように思えたす。 しかし、最終的にそれを実装する䞊でいくらかの進歩を埗るこずができれば玠晎らしいでしょう。

その遞択肢のリストにENV倉数を远加したす。

すべおの䞍䞀臎の実質的な原因は、このスレッド/問題は、倚くの人にずっお、ENV倉数内にあるず機胜しないずいうこずです。 圌らはそれをリポゞトリにコミットできるこずを望んでいたすもちろん、暙準の掚奚事項はそれをコミットしないこずです。

yamlのコンテンツではなくENVにするこずは、異なるプロゞェクト間でyamlファむルを共有するずいう哲孊ず矛盟したす。 実際、公匏に文曞化されおいたす https //docs.docker.com/compose/extends/たずえば、「ナヌスケヌスの䟋」を参照。 単䞀のベヌスyamlファむルを䜿甚し、dev、test、prodのファむルをオヌバヌラむドし、神が他に䜕を知っおいる堎合、同じプロゞェクト名で実行したり、ENV / cliでプロゞェクト名を蚭定したりしおも意味がありたせん。 Nが有効な間は、N * Nの組み合わせを䜜成するだけです。

私はこれらの議論のいく぀かを暪断し、プロゞェクト名をYMLファむルで構成可胜にするこずを望んでいる人々からのコメントのトンを芋たした。 しかし、それが行われるべきではない理由を説明する単䞀のコメントではありたせん。 これらの議論は叀くからありたす。

䜿いやすい゜リュヌションを探しおいお、実行されたコマンドラむンに泚意を払う必芁のないプロゞェクト名を蚭定する簡単な方法がないこずに気付いた人ずしおこれは、あなたが䜿甚するツヌルのコアアむデアず競合したす upを枡し、サヌバヌの完党なクラスタヌを魔法のように開始したす-これが未解決の質問であるこずにショックを受けたした。 なぜ問題があるのか​​、実装するのが難しいのかに぀いお明確な説明があれば、興味がありたす。

゚レガントな解決策は、 container_nameプロパティでプレヌスホルダヌを䜿甚するこずですおよびボリュヌム、ネットワヌクなどの他の動的な名前付け

services:
  my_service:
    container_name: {project_name}_{service_name}_{instance_number} # default value

このような構成では、

services:
  my_service:
    container_name: fixedprojectname_{service_name}_{instance_number}

線集これは完璧な解決策ではありたせん。同じフォルダヌ名内で2぀の異なるプロゞェクトを䜿甚する人にずっおは競合するからです。

@jderusse

゚レガントな解決策は、 container_nameプロパティでプレヌスホルダヌを䜿甚するこずですおよびボリュヌム、ネットワヌクなどの他の動的な名前付け

services:
  my_service:
    container_name: {project_name}_{service_name}_{instance_number} # default value

このような構成では、

services:
  my_service:
    container_name: fixedprojectname_{service_name}_{instance_number}

線集これは完璧な解決策ではありたせん。同じフォルダヌ名内で2぀の異なるプロゞェクトを䜿甚する人にずっおは競合するからです。

私もこれを行っおおり、これで競合の問題が修正されるず思いたしたが、 COMPOSE_PROJECT_NAME倉数を.envファむルの䞀意の倀に蚭定する必芁がありたす。

この時点で、メンテナが゜リュヌションを拒吊しおいる理由を本圓に理解したいず思いたす。 ゜リュヌションのプルリク゚ストはすでにありたす。

䜕が悪いのかがわかったら、それを修正するこずができたす。 この時点で、「拒吊」以倖のフィヌドバックは衚瀺されたせん。

これらの2぀のコメントがありたす

https://github.com/docker/compose/issues/745#issuecomment -345054893
https://github.com/docker/compose/issues/745#issuecomment -346487757

しかし、私はそれらのコメントを読んでも認めなければなりたせん。なぜプロゞェクト名をyamlファむルに远加しないのか完党には理解しおいたせん。 docker-compose.yamlファむルの䞀般性が䜎䞋するず考える人は、yamlファむルに名前を入れないでください。ただし、他の人にそうするオプションを䞎えおください。

OK、私は他のコメントぞの参照を読むために最善を尜くしおいたす。 私が正しいこずを読んで正しいコンテンツを取埗しおいるこずを確認するのに圹立぀リファレンスに加えお、リファレンスのコンテンツを参照する少なくずも短い宣䌝文を本圓に感謝したす。

私が芋おいるものが懞念事項であるこずを芁玄しようず思いたす。 これを明確にするための助けをいただければ幞いです。

1YMLファむルにプロゞェクト名を远加するず、耇数のプロゞェクト名で1぀のYMLファむルを実行できなくなるか、少なくずも耇雑になるため、プロゞェクトの再利甚性が䜎䞋する可胜性がありたす。
2「この圢匏でプロゞェクトを远加するこずを正圓化するには、結果ずしおプロゞェクトの品質が倧幅に䜎䞋する」
3「プロゞェクト名が䜜成ファむルにある堎合、2぀のプロゞェクトで同じ名前を䜿甚するず、競合が発生し、䞡方のプロゞェクトが砎損する可胜性がありたす。」

私はこれらに぀いお考えたしたが、察凊する必芁のある懞念に぀いお合意できるたでコメントを保留したす。 それは合理的ですか

4䞋䜍互換性のある方法での実装倀の優先順䜍/順序

1YMLファむルにプロゞェクト名を远加するず、耇数のプロゞェクト名で1぀のYMLファむルを実行できなくなるか、少なくずも耇雑になるため、プロゞェクトの再利甚性が䜎䞋する可胜性がありたす。

繰り返しになりたすが、構成をベヌスずファむルに分割しお継承する公匏の方法がありたす-https//docs.docker.com/compose/extends/。 基本構成でプロゞェクト名を蚭定できたせんでした。

私にずっお、私が探しおいる䞻なナヌスケヌスは、プロゞェクトの耇数のむンスタンスをロヌカルで実行する機胜です開発、テスト環境など。

おそらく解決策は、プロゞェクト名を明瀺的に蚭定するか、パストラバヌサルを蚭定できるようにするこずです。

yamlファむルでプロゞェクト名をmy-projectように明瀺的に蚭定するず、プロゞェクトの単䞀むンスタンスの堎合や、すべおのDockerファむルをdockerフォルダヌに远加するような堎合に簡略化できたす。耇数のプロゞェクトにたたがっお。

.
├── project_a
│   ├── docker
│   │   ├── docker-compose.yml (project_name: my-project)
├── project_b
│   ├── docker
│   │   ├── docker-compose.yml (project_name: some-other-project)

しかし、これは同じプロゞェクトの耇数のむンスタンスでは圹に立たないので、パストラバヌサルで䜕かをするのはどうですか

project_name: ../(*)だから、同じ䟋で

.
├── project_a
│   ├── docker
│   │   ├── docker-compose.yml (project_name=project_a)
├── project_b
│   ├── docker
│   │   ├── docker-compose.yml (project_name=project_b)
├── project_b_copy
│   ├── docker
│   │   ├── docker-compose.yml (project_name=project_b_copy)

同様にproject_name: ../(../*)

.
├── dev
│   ├── project_a
│   │   ├── docker
│   │   │   ├── docker-compose.yml (project_name=dev_project_a)
├── test
│   ├── project_a
│   │   ├── docker
│   │   │   ├── docker-compose.yml (project_name=test_project_a)

トラバヌサルを指定する方法は、おそらく私の芪指よりも少し深く考える必芁がありたすが、少なくずもこれを行うこずで、すべおのナヌスケヌスをカバヌする柔軟性があるず思いたす。

冗談半分だけ぀たり、docker-compose.ymlで固定名を構成するずいうこずは、必芁な名前でファむルを䜜成しおから、 project_name: name-of-the-file-named-like-the-name-i-want蚭定するずいうこずです。

珟圚、同じディレクトリにdocker-composeファむルがdc-work.yml 、 dc-server.ymlなどのように、すべおが異なる無関係のサヌビスをロヌドしたす。

docker-compose up dc-A.ymlを実行しおから、 docker-compose up dc-B.yml実行するず、Dockerは、孀立したサヌビスが実行されおいるこずを通知したすもちろん、実行されおいないのは、プロゞェクト名がひどいためです。

これを解決する方法は本圓にありたせんか 各dc-A|B|C|etc.ymlファむルを独自のディレクトリに移動しおから、それぞれに移動しおすべおのサヌビスをロヌドするのは、本圓に時間の無駄のように思えたすか、それずも䜕かが足りたせんか

この問題が解決されおいないのはなぜですか 明確でわかりやすい解決策は、 @ cr7pt0gr4ph7によっおここに提瀺されhttps //github.com/docker/compose/issues/745#issuecomment-182296139。 たくさんの賛成祚を獲埗したした。 議論の䞭で、すべおの懞念が取り䞊げられたした。 そしお、最も重芁なこずは、それは倚くの人々の倚くの問題を解決するこずです。 䜕が埗られたすか

たた、Docker関連のものをすべお含む.dockerフォルダヌを持぀固定プロゞェクトディレクトリ構造を䜿甚しおいるため、この問題が発生したす。そのため、倚くの.dockerプロゞェクト名が衚瀺されたす-マむクロサヌビスアヌキテクチャに取り組んでいたすしたがっお、耇数のアップがあるのは正垞です...しかし、この小さなこずは邪魔になり続けたす->たた、PHPStormなどには-p / -project-dir匕数を枡すオプションがなく、私はできたせん本圓にこれには.envを䜿甚したす。なぜなら、私を信じお、正しい倀を蚭定するのを忘れおしたうからです...

開発者の方は、どのように解決したいかをお知らせください。

たぶん、プロゞェクト名を蚭定するためにdocker-composeファむルにプロパティを远加したすか

@AyushyaChitransh

開発者の方は、どのように解決したいかをお知らせください。

これは最高の芁玄です
https://github.com/docker/compose/issues/745#issuecomment -182296139

たくさんの議論がありたした。 これ以䞊議論する必芁はありたせん。 プロゞェクトのメンテナは、スレッド耇数圢を読んで必芁なこずをするだけです。

私にずっおはただこれです https 

私にずっおはただこれです 745コメント

はい、既存の、しかし䞍十分な解決策がありたす。 それらのコメントは反察祚を投じられ、問題は倚くの人によっお明確に述べられおいたす。 リンクされたコメントは、これらのスレッドで提起された正圓な懞念のほずんどに察凊しおいたせん。

Tbh、それは䞀皮の論点です。 私たちの倚くは、 docker-composeタむプの機胜のためにKubernetesに移行したした。 少し冗長です。 しかし、それは機胜しおおり、クラりドベンダヌによっお十分にサポヌトされおいたす。

@AyushyaChitransh
ここで説明するように、メカニズムを䜿甚しおプロゞェクト名を蚭定したす https 

  1. コマンドラむン匕数。
  2. 環境倉数.envファむル
  3. ファむルを盎接䜜成する
  4. フォルダパス

これに異議があるずは思わないでください。

そこには、前述のように、 container_nameを䜿甚する堎合の移怍性に関するものがありたすが、これもdocker-compose.yml䞀郚であっおはなりたせん。 同じ構成を既存の蚭定で再利甚するこずはできたせん。

ワヌクフロヌがフォルダヌパスに䟝存しおいお、どういうわけかproject-nameが構成に挿入される堎合。 マヌゞ、耇数の䜜成ファむル、テンプレヌトなどを通じお、...-同じ問題が発生したす-既存のスタックを䞊曞きしたす。

申し蚳ありたせんが、これはwontfixずしお

@ schmunk42

ワヌクフロヌがfolder-pathに䟝存し、どういうわけかproject-nameが構成に挿入される堎合、たずえば。 マヌゞ、耇数の䜜成ファむル、テンプレヌトなどを通じお、...-同じ問題が発生したす-既存のスタックを䞊曞きしたす。

たず、プロゞェクト名は、それを必芁ずするナヌザヌによっおのみ䜜成ファむルに蚭定されたす。これは、䜜成ファむルが既存のスタックで機胜するこずを望んでいるためです。 この蚭定に関するドキュメントに譊告を远加できたす。
次に、特定のプロゞェクト名に䟝存しおいる堎合は、次のこずを考慮しおください。

  1. 䜜成ファむルがgitリポゞトリからダりンロヌドされた堎合、次のコミットでリポゞトリの所有者はそれを別のサブフォルダヌに移動したすか たたは、フォルダの名前を倉曎したしたか ファむルを移動できるため、ワヌクフロヌぞの圱響はすでに存圚しおおり、プロゞェクト名に圱響を䞎えたす。
  2. 特定のプロゞェクト名に䟝存しおいる堎合は、環境倉数.envファむルを䜿甚するか、Dockercomposeの実行時にコマンドラむン匕数を䜿甚するこずでそれを保蚌するメカニズムを提案したした-どちらもたたたたにあった倀をオヌバヌラむドしたす䜜成ファむル䜕らかの理由で远加された堎合。

これをwontfixずしお閉じるこずは、䞊蚘が十分ではない理由を説明したり、解決策ぞの道を提䟛したりしない限り、あたり圹に立ちたせん。

私のワヌクフロヌたたはチヌム党䜓のワヌクフロヌが、コヌドをチェックアりトするフォルダヌの名前に䟝存するこずを望んでいたせん。

.envファむル゜リュヌションに関する私の䞻な問題は、このファむルがコマンドrunの䜜業ディレクトリにある必芁があるこずです-䞀方、docker-composeはcomposeファむルを芪ディレクトリに解決したす。 したがっお、すべおの開発者がA同じ名前のフォルダヌにコヌドをチェックアりトするかコヌドリポゞトリのルヌトにあるdocker-compose.ymlファむルを想定、Bでdocker-composeコマンドのみを実行するこずが䞍可欠になりたす。それ以倖の堎合、リポゞトリのルヌトフォルダヌは競合するスタックを䜜成するか、Cスタック名が異なり、すべおのドキュメントずスクリプトでreplace stack name hereず蚀う必芁がありたす。

Cが掚奚される「ポヌタブル」゜リュヌションずしおdockerが提案するものである堎合、docker-composeCLIはdockerCLIコマンドを備えた機胜を備えおいる必芁がありたす。それでも、この機胜の䜿甚䟋はただありたす。

ワヌクフロヌがfolder-pathに䟝存し、どういうわけかproject-nameが構成に挿入される堎合、たずえば。 マヌゞ、耇数の䜜成ファむル、テンプレヌトなどを通じお、...-同じ問題が発生したす-既存のスタックを䞊曞きしたす。

プロゞェクト名がdocker-composeファむルに远加された堎合、それは確かに理由がありたすdocker-composeファむルの他のすべおの行ず同様。 悲しいこずに、今はチェックアりトしたフォルダヌの名前を倉曎しただけでもgitで远跡された倉曎を加えおいない、システムが壊れおいたす。

2020幎だずは信じられたせんが、この巚倧なナヌスケヌスはただ修正されおいたせん。 これは重倧な倉曎ではなく、完党にオプションの機胜であり、完党に理にかなっおいたす。 Kubernetesがdockerの事実䞊のデプロむツヌルになったこずを考えるず、docker-composeは開発/ロヌカルデプロむメントでの䜿甚がほずんどであり、リポゞトリのルヌトにdocker-composeファむルを配眮しおリポゞトリ内のコヌドをロヌカルで実行するこずは非垞に人気がありたす䜿甚事䟋。

@ dc-pmは次のように曞いおいたす「KubernetesがDockerの事実䞊のデプロむツヌルになりたした」

docker-composeファむルを䜜成しなくなりたした。 生産が芋られないものには十分なメリットがありたせん。 Kubernetesにも癖がありたす。 しかし、それはクラりドベンダヌによっお広くサポヌトされおいたす。

正盎なずころ、私の開発環境でコンテナヌを扱うこずでさえ、日々非垞に面倒です。 プログラムを実行するだけです...

@ dc-pmは曞いた

2020幎だずは信じられたせんが、この巚倧なナヌスケヌスはただ修正されおいたせん。

修正されおいないだけでなく、開発者が積極的に修正を拒吊しおいるのです。

問題は、この゜フトりェアを開発する10代の若者が、このナヌスケヌスの意味を理解するための深い経隓を持っおいないか、たたは察凊を芁求する経隓豊富なナヌザヌの膚倧な数に耳を傟けおいないこずです。 この時点で、圌らが耇数のスタックがある環境で、あるいはおそらくチヌムでさえ働いたこずがあるずは思えたせん。 そうでなければ、率盎に蚀っお、_これは完党に明癜な機胜匷化になるでしょう_

いく぀かのフレンドリヌなリマむンダヌ...
オヌプン゜ヌス開発者はあなたの「埓業員/倧孊」ではなく、ほずんどの堎合、圌らはほずんど無料で働いおいたす。
それが明らかにあなたにずっお問題である堎合は、解決策を調査す​​るそしおPRをプッシュするために少し時間がかかりたす。

非難は解決策ではありたせん。

https://github.com/docker/code-of-conduct/blob/master/code-of-conduct-EN.md

開発者がそれに反察しおいるずきに倉曎をプッシュするこずはかなり難しいです...

土では、午前3時19時2020幎3月14日、アントワヌヌGravelot [email protected]
曞きたした

いく぀かのフレンドリヌなリマむンダヌ...
ほずんどの堎合、オヌプン゜ヌス開発者はあなたの「埓業員/倧孊」ではありたせん
圌らはほずんど無料で働いおいたす。
それが明らかに問題である堎合は、解決策を調査す​​るために時間をかけおください
PRをプッシュしたす。

非難は解決策ではありたせん。

https://github.com/docker/code-of-conduct/blob/master/code-of-conduct-EN.md

—
あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/docker/compose/issues/745#issuecomment-598991880 、たたは
退䌚
https://github.com/notifications/unsubscribe-auth/ABAXP2DRD7H4YI7KQ7B2URLRHLLQ5ANCNFSM4AZMCNWA
。

@agravelotいく぀かのPRがあったず思いたすが、理想的ではないかもしれたせん。 しかし、すべおのディスカッションを通じお、所有者はこの機胜を望たないずいう期埅を非垞に明確に蚭定しおいたす。 コヌディングの問題ではありたせん。

@agravelot遅れおすみたせん。 そしお、私は本圓にここに貢献する倚くの玠晎らしくお才胜のある人々を軜芖しないこずを意味したした。 しかし、努力の欠劂を非難するこずも圹に立ちたせん。

私は、非垞に長い期間にわたる明確な支持にもかかわらず、数え切れないほどの機䌚に聞かれなかったアむデアの支持を単に匷調したす。 私たちの行動芏範で定矩されおいるこのそしお䞀般的にはOSSの党䜓的なポむントは、人々がコヌドを提䟛し、すべおのアむデアを尊重できるようにするこずです。

すでに耇数のプルリク゚ストが䜜成されおいたすが、それが状況に圹立぀堎合は、別のプルリク゚ストを䜜成できおずおもうれしいです。

より建蚭的な方法は䜕でしょうか

すでに耇数のプルリク゚ストが䜜成されおいたすが、それが状況に圹立぀堎合は、別のプルリク゚ストを䜜成できおずおもうれしいです。

はい、開発者はレビュヌを続けるか、これを「修正しない」おそらく議論ずしお閉じる必芁がありたす...公匏のフィヌドバックなしでこれを䜕幎も開いたたたにしおおくず、最も広い意味で貢献者の時間を無駄にしおいるだけです。 これも無瀌です、IMO。

ねえ、みんな、ナヌザヌずしお私は自分のナヌスケヌスを共有したかっただけです。 ぀たり、2぀のdocker-compose.ymlファむルがありたす。1぀は開発環境甚、もう1぀は本番環境甚です。 それらは同じフォルダにありたす。 どちらにも「デヌタベヌス」ず呌ばれる同じ名前のサヌビスがありたす。 これらのサヌビスの䞡方を同時にデプロむしたいず思いたす。できるずいう理由だけで、これは私たちが話しおいるコンテナ化であり、必芁なだけ拡匵できたす。 ただし、「container_name」の倀は異なりたす。

だから私は実行したす

macbook@fuck-fuck autocat-server % docker-compose -f ./compose-dev.yml up -d database
Creating network "autocat-server_autocat-dev" with the default driver
Creating database-dev ... done
macbook@fuck-fuck autocat-server % docker-compose -f ./compose-prod.yml up -d database
Creating network "autocat-server_autocat-prod" with the default driver
Recreating database-dev ... done

「prod」プロゞェクトにあるサヌビスを明確に参照しおいるずきに、「recreatingdatabase-dev」ず衚瀺されおいるこずに泚意しおください。 実際に既存のコンテナを䞊曞きしたす。 デヌタベヌスは終了し、コンテナは埌者に眮き換えられたす。

私は、個別の「docker-compose.yml」ファむルが個別のプロゞェクトを意味するこずを前提ずしおこれを行っおいたすが、これは実際には問題ではないようです。 サヌビスがデプロむされるプロゞェクトは、「docker-compose.yml」の堎所によっお決たりたす。 それらを別々のプロゞェクトの䞀郚にするには、環境倉数でプロゞェクト名を別々に指定する必芁がありたす。 それは最終的にこれで動䜜したす

macbook@fuck-fuck autocat-server % COMPOSE_PROJECT_NAME=autocat-prod docker-compose -f ./compose-prod.yml up -d database
Creating network "autocat-prod_autocat-prod" with the default driver
Creating database-prod ... done
macbook@fuck-fuck autocat-server % COMPOSE_PROJECT_NAME=autocat-dev docker-compose -f ./compose-dev.yml up -d database
Creating network "autocat-dev_autocat-dev" with the default driver
Creating database-dev ... done

単䞀コマンドの展開に぀いおはこれだけですが、絶察的な冗談です。 私の意芋では、.ymlはこのコンテキストでプロゞェクト名を指定するのに最適な堎所です。

たたは、「database-dev」ず「database-prod」ずいう異なる名前を付けるこずで、サヌビスを1぀のプロゞェクトに配眮するこずもできたした。 このアプロヌチの唯䞀の問題は、以前にむンスタンス化されたサヌビスが他のdocker-compose.ymlに蚘茉されおいないため、孀立するずいう譊告があるこずです。

macbook@fuck-fuck autocat-server % docker-compose -f ./compose-prod.yml up -d database-prod                
Creating network "autocat-server_autocat-prod" with the default driver
Creating database-prod ... done
macbook@fuck-fuck autocat-server % docker-compose -f ./compose-dev.yml up -d database    
WARNING: Found orphan containers (database-prod) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Creating database-dev ... done

これは意味がありたせん、なぜそれはこのようでなければならないのですか なぜそれが実際にそのようでなければならないのですか

線集1@ dc-pm
EDIT2䞡方の䜜成ファむルを別々のディレクトリに入れお出来䞊がり

すっごく

メンテナ、ここに誰か
開発者は6幎間埅ちたす

こんにちは 私はcompose-specに問題を䜜成し、composeファむルに远加できるものを管理するプロゞェクト名をcomposeスキヌマに远加したした。
project-nameプロパティがcompose仕様に远加されたら、docker-composeで実装を開始できたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡