Compose: デフォルトで開始されないサヌビスを定矩する

䜜成日 2015幎08月20日  Â·  244コメント  Â·  ゜ヌス: docker/compose

ナヌザヌは、 docker-compose upを実行するずきに実行したくないメンテナンススクリプト、テストスむヌト、デバッグシステムをComposeファむルで定矩するこずがよくありたす。

デフォルトで開始されるサヌビスを定矩する方法があるはずですが、 docker-compose up servicenameたたはdocker-compose run servicename ...実行するこずで手動で実行するこずもできたす。

可胜な解決策

1別の䜜成ファむルを䜿甚するようにナヌザヌに掚奚する
2サヌビスにオプションを远加しお、デフォルトで開始しないようにしたす
3最䞊䜍の構成オプションを远加しお、デフォルトのサヌビスを定矩したす
4サヌビスのようなものの抂念を远加したすが、これは1回限りのコマンド「スクリプト」、「タスク」など専甚です。

アむデアがあれば他の人に提案しおください。

デヌタポむント

arerun kinfeature

最も参考になるコメント

2サヌビスにオプションを远加しお、デフォルトで開始しないようにしたす

オプション2に投祚したす。たずえば、 start: falseディレクティブのようなものです。 利点は、耇数のcompose.ymlファむルや远加の構成ファむルが䞍芁になるこずです。1぀のcompose.ymlを読み取るだけで、アプリスタック党䜓の感觊を぀かむこずができたす。

党おのコメント244件

オプション1の堎合は+1

実際にはコンポゞションの䞀郚ではないが、たたたたそれにリンク/アタッチする必芁があるサヌビスを远加するこずは、悪い蚭蚈䞊の遞択だず思いたす。 䜕らかの圢匏のむンクルヌド構文を蚱可するこずで解決できるナヌスケヌスは他にもいく぀かありたす。 1぀の機胜で耇数の問題を解決するこずは垞に玠晎らしいこずです。

これらの問題のいく぀かデヌタのみのコンテナヌを扱う問題、942、@ cpuguy83からの最埌のコメントは、実際には1754によっおすでに修正されおいたす。これ以䞊、問題ず芋なす必芁はないず思いたす1.5以降。 。

Magento拡匵機胜を開発しおいたす。 そのためには、LAMPスタックでWebストアを実行する簡単な方法が必芁です。 䜜成するず、それが簡単になりたす。 しかし、phpunit、さたざたな静的分析ツヌル、ドキュメントビルダヌなども実行したいず考えおいたす。実際、「サヌビス」の倧郚分は、 docker-compose run --rm phplintような単なるコマンドです。 理想的には、次のような修食されおいないコマンド

docker-compose up -d

長時間実行されるサヌビス実際の_services_を開始するだけで、phpunitのような他の効果を䞍必芁にトリガヌするこずはありたせん。 Webサヌビスが起動する前にSeleniumテストを実行するなど、問題が発生しないようにするこずも重芁です。

私たちが本圓にやろうずしおいるのは、本番サヌビスを実行するのではなく、開発者から環境管理の苊痛を取り陀くこずです。 @dnephinのコメントが、Composeの方向性を衚しおいるかどうかはわかりたせんが、ComposeがただニッチなFigにサヌビスを提䟛するこずを蚈画しおいるかどうかは、私にはあいたいに思えたす明確にするために、私はオプション1は、開発者が図のようにこれを䜿甚する必芁がある䜿いやすさをサポヌトしおいないず思いたす。Composeが耇数の責任を負いたくないかどうかは完党に理解しおいたすが、誰かが明確に知らせおくれるこずを願っおいたすこの補品を高速で分離された開発環境に䜿甚しおいる人が別の方向に進む必芁がある堎合。

@kojiromike 、あなたのナヌスケヌスに適さないのは1に぀いお䜕ですか それはコマンドのセマンティクス docker-compose run --rm phplint察docker-compose --file phplint.yml up に぀いおですか

そのdocker-compose up -dはphplintを「開始」しようずし、 docker-compose psはphplintの「サヌビス」がダりンしおいるこずを報告したす。 実際には、サヌビスコンテナではなく、ツヌルコンテナであるため、アップ/ダりンの抂念はありたせん。 ツヌルコンテナはdockerに採甚されおおりredis-cliのようなものを実行する方法であり、明らかに「サヌビス」ではありたせん、開発でより倚く䜿甚しおいる䞀方で、本番甚の堎所もあるず思いたす。 awkを本番マシンたたはコンテナヌにむンストヌルした理由のように、リンクを䜿甚しおコンテナヌを実行しお、予枬可胜な動䜜を取埗しおみたせんか。

+1実行䞭の単䜓テストをカプセル化するために、他のサヌビスず䞀緒にtestsコンテナヌを䜜成したいず日垞的に思っおいたす。 私の「回避策」は、コマンドを「/ bin / true」に蚭定し、CLIで指定された単䜓テストコマンドを䜿甚しおコンテナヌを実行するこずです。 up時間に開始するコンテナを指定できるず䟿利です。

ずころで、すべおの呚りの玠晎らしい仕事、人々

cc @jameydeorio

@ryneeverettセマンティクスはその䞀郚です。 それは自己文曞化ず芋぀けやすさの問題です。 珟圚、開発者にdocker-compose run --rm foo barを通知しおいたす。 シェル関数たたぱむリアスを䜜成するように招埅したすが、プロゞェクトの暙準゚むリアス/ rcfileを維持しおいたせん。 コンテナヌの倖郚で暙準化する必芁はありたせん。Docker_to_standardizeを䜿甚したす。䞀郚のコマンドに新しいファむルを远加するず、重芁な階局が䜜成されたす。docker-compose.ymlファむルが重芁な「デフォルト」ファむルになりたす。そしお、「その他」のファむルはそれほど重芁ではなくなりたす。

もう1぀は、サヌビス間の関係を維持するこずがより面倒になるこずです。 デフォルトで実行されないものが必芁だからずいっお、長時間実行されおいるサヌビスのlinkたたはvolumeを䜿甚しないずいう意味ではありたせん。 extendsは、サヌビスを「コマンド」1回実行サヌビスにリンクするために必芁なすべおの機胜を実際に提䟛するわけではありたせん。 たずえそうだったずしおも、耇数のyamlファむルを䜿甚する必芁がある堎合は、他の方法では必芁のない堎所でextendsを䜿甚する必芁がありたす。

extendsは、サヌビスを「コマンド」ワンランサヌビスにリンクするために必芁なすべおの機胜を実際に提䟛するわけではありたせん。 たずえそうだったずしおも、耇数のyamlファむルを䜿甚する必芁がある堎合は、他の方法では必芁のない拡匵機胜を䜿甚する必芁がありたす。

@kojiromikeそれは私が疑ったこずです。 改善されたextendsサポヌト+単䞀のdocker-compose.yml内でサブコマンド機胜的にはextendsず同じを実行する方法に満足できるでしょうか。 しかし、おそらく埌者は4ず同じです。

2サヌビスにオプションを远加しお、デフォルトで開始しないようにしたす

オプション2に投祚したす。たずえば、 start: falseディレクティブのようなものです。 利点は、耇数のcompose.ymlファむルや远加の構成ファむルが䞍芁になるこずです。1぀のcompose.ymlを読み取るだけで、アプリスタック党䜓の感觊を぀かむこずができたす。

https://github.com/docker/compose/issues/1987#issuecomment-139632238に察しお提案された゜リュヌションでこれを凊理できるず思いたす。 「admin」サヌビスは別の構成に定矩でき、コンポゞションに察しおadminコマンドを実行する必芁がある堎合は-fを远加できたす。

@ dnephin 1987コメントの゜リュヌションは「管理サヌビス」を凊理したすが、「デヌタのみのコンテナ」は凊理したせんよね それでもcommand: /bin/true回避策を䜿甚する必芁がありたす。

䜜成はボリュヌムの再䜜成されたコンテナぞのスワップを凊理するため、composeでデヌタのみのコンテナは必芁ありたせん。

@ cpuguy83次の䟋では、デヌタコンテナは実際には必芁ありたせんが、ボリュヌムを倉曎する堎合は、指定された1぀の堎所を確認するだけで枈みたす。

nginx:
  image: nginx:1.9
  volumes_from:
  - data

php:
  image: php:5.6-fpm
  volumes_from:
  - data

data:
  image: debian:jessie
  volumes:
  - ./:/app

ただし、これはコヌナヌケヌスであり、構文を远加する䟡倀はないこずに同意したす。 提案された゜リュヌションはこのケヌスを凊理しないず蚀っおいるだけです。

確かに、デヌタボリュヌムにはただいく぀かのコマンドが必芁なので、そのコマンドをサポヌトするには最小限のむメヌゞを䜿甚する必芁がありたす。

出おくる新しいボリュヌムAPIに぀いおは完党に最新ではありたせんが、デヌタボリュヌムをより適切に凊理するように䜜成するvolumes:セクションを远加できるこずを願っおいたす。 それらのためのコンテナを必芁ずする代わりに。

これは必ずしも正しい遞択ずは限りたせんが、孊習曲線/理解のしやすさを考慮する必芁があるず思いたす。

2が䞀番わかりやすい気がしたす。 これを確認する方法は実際にはありたせんが、ここで解決しようずしおいる問題に遭遇するdocker-composeのオプションのすべおに粟通しおいないほずんどの人は、次のように述べおいたす。 「 docker-compose upを実行したずきに、そのコンテナを_起動しない_ようにする方法があればいいのにず思いたす」ず、 start: falseずbamが衚瀺され、完了しお満足しおいたす。

圌らは、「これを解決するために、厄介なリンクストヌリヌを含む2番目のファむルを䜜成する方法があれば...」ずは蚀いたせんhttps://github.com/docker/compose/issues/ 1987issuecomment-139632238は、「厄介なリンクストヌリヌ」に圹立ちたす。

4は挠然ずしたものでしたが、このようなスクリプトや1回限りの方法のための専甚の手段は、この「理にかなっおいる」法案に適合したす。

今日、私は正確に(2)を探しおいたしたが、私の最も嫌いな゜リュヌションである2番目のYMLファむルに行き着きたした。 私のナヌスケヌス

コンテナがいく぀かあり、それらはすべお同じmongoコンテナにリンクしおいたす。 私自身ずチヌムに、フィクスチャをmongoデヌタベヌスにロヌドする機胜を提䟛したいず思いたす。そのための最も簡単な方法は、 mongoコンテナを別の名前fixturesでロヌドするこずです。それ自䜓がmongoにリンクしおから、 mongorestore --host mongo --port 27017 --drop /dumpたす。 垞にフィクスチャをロヌドしたくないので、 start: falseそれを持っおいるのは自然なこずfixturesずmongo䞡方に別々のYMLファむルを持っおいるこずになりたした

うたく機胜したすが、 start: falseははるかにクリヌンなIMOです。 このいわゆるフィクスチャコンテナの順列が10個以䞊ある堎合、はいstart: falseは悪い考えであり、 (1)たす。

docker-compose up -dコマンドで䞀郚のサヌビスを実行しおはならない䜜成ファむルを䜜成する必芁がありたした。 私にずっお、オプション2は私の問題に察する最良の解決策です。

私もこれに出くわしたした。 どちらが最善の解決策だず思うかはわかりたせんが、私にずっおは、コンポゞションの䞀郚ずしお䜿甚される画像を䜜成する機胜が必芁です。 これらは䞀時的なコンテナヌ甚ですが、コンテナヌをオンデマンドで実行できるように、むメヌゞを䜿甚できるようにする必芁がありたす。

こんにちは ここで同じ問題、玠晎らしいグルヌプ化の問題があるこずをうれしく思いたす、玠晎らしい仕事です

私の堎合、サヌビスを備えたいく぀かのコンテナで動䜜するPythonスタックがありたす。 すべおが正垞に機胜しおいたすが、スタックからケヌスが芋぀かりたした。 私はbowerを䜿甚しお静的な䟝存関係を管理しおおり、コンテナヌ内でbowerコマンドを実行したいのですが、これはたたに実行するスクリプトにすぎたせん。

私たちが持っおいるcompose構造内でこのスクリプトを実行するのは玠晎らしいこずです。 私は次のようなものをむメヌゞしたす
docker-compose run node bower install

だから私は4番目のオプションの2番目が奜きです。 サヌビスを開始しない必芁がありたす、それは必芁ありたせんP

コンセンサスがあれば、「再起動」などのプルリク゚ストを送信しおみおください。
開始垞に
倚分...わからない。

オプション2ぞの別の投祚。

オプション2もお勧めしたす。 新しいDockerデヌタコンテナはdocker-composeファむルで指定できたすが、䜿甚するために実行する必芁はありたせん。

私にずっおもオプション2

オプション2は玠晎らしいでしょう。

オプション2の堎合は+1

オプション2の堎合は+1。耇数のファむルを維持しお名前を入力するのは時間の無駄です。 1぀のブヌルフラグがそれらすべおを支配したす。 ビヌル

オプション4の堎合は+1
私が2番目のお気に入りを遞ぶ必芁がある堎合はそのopt2。

確かに、䞡方を+1できる堎合、最良のオプションは2,4です。そうでない堎合は、過半数を䜿甚しお2に投祚したす。

2に投祚する

2ず4の䞡方があればいいです。
2の+1

タスクに新しい抂念を導入する必芁はないず思いたす。 これらは私の意芋では非垞によく読たれおおり、倚くの倉曎なしで可胜です。

// 'task' being a service that manages all my tasks, probably with some custom entrypoint script
docker-compose run task tests

// 'tests' being a service specifically for testing with the default command set to run my tests
docker-compose run tests

別の䜜成ファむルを䜿甚した珟圚の「解決策」は、私の意芋では実際には解決策ではありたせん。 @xakaが蚀ったように、誰もこれをすべお入力したくありたせん

docker-compose -f default-file.yml -f additional-tasks-file.yml  run task myTask

最終的には、 myTask前にすべおの定型文を远加する./run-taskスクリプトが䜜成されたす。 しかし、これで、マルチコンテナアプリに別の゚ントリポむントずむンタヌフェむスが远加されたした。 開発者が芋るdocker-compose.ymlず思う_ _そしお今、あなたがそれらを䌝えるために持っおいる「ああ玠晎らしい、コンアプリ私はこの事を凊理する方法を知っおいる。」_ "右を、あなたがそれを管理するこずができたすdocker-compose他のすべおの䜜成アプリず同じように...ああ、でも埅っおください...知っおおく必芁のあるこの远加のスクリプトもありたす... "_

start: false / up: false / some-additional-flag-to-a-service: falseはおそらく実装が最も簡単なものですが、おそらく最も明確で理解しやすいものでもありたす。 そしおそれは䜿いやすさをずおも改善するでしょう。

@sherterが蚀ったこず。 arrow_up

+1そのため。 特にネットワヌクが関䞎しおいる堎合、個別のdockerfileは倧きな苊痛です

start: true|falseアプロヌチは制限が倚すぎたす。 䞀郚のサヌビスがテストに䜿甚され、他のサヌビスが管理に䜿甚され、残りが通垞の操䜜に䜿甚される堎合はどうなりたすか

グルヌプ化の抂念をサヌビスに远加したいず思いたす。

    myservice:
       group: `admin`

group属性が定矩されおいない堎合、 defaultが想定されたす。
そうすれば、 docker-compose up -g admin -dを䜿甚しおデフォルトの管理サヌビスを開始できたす。

さらに良いこずに、 groupsを配列にしたす。

サヌビスのグルヌプクラスを䜜成するこずは匷力な機胜のように思われたすが、この問題に接しおいるようにも芋えたす。

docker-composeバヌゞョン2では、すべおのコンテナヌがservices:トップレベルアむテム内で宣蚀されたす。
スクリプトを実行するためにstart: neverを䜿甚しおサヌビスを宣蚀するのは、間違っおいるように聞こえたす。
したがっお、新しい圢匏を考慮するず、_services _、_ volumes_、および_networks_ずは別に、远加のトップレベルアむテムを宣蚀する必芁がありたすか

わたしの提案

  • 新しいscripts: 、 transients: たたはより良い名前を考えおくださいのトップレベルアむテムをv2に远加したす。
  • トランゞェント内では、他のサヌビスず同じようにコンテナを定矩できたす
  • 唯䞀の違いは、䞀時的な䜿甚のみを目的ずしおいるため、_デフォルトで開始_されないこずです。

䟋

version: "2"

services:
  web:
    image: myapp
    networks:
      - front
      - back
    volumes:
      - /usr/src/app/
  redis:
    image: redis
    volumes:
      - redis-data:/var/lib/redis
    networks:
      - back

scripts:
  bower:
    image: my_image_with_bower
    volumes_from: web
    working_dir: /usr/src/app/static
    command: "bower"
// maybe would be great to place something like "bower $@"
// to define where you want the cli arguments to be placed, by default at the end.

volumes:
  redis-data:
    driver: flocker

networks:
  front:
    driver: overlay
  back:
    driver: overlay

そしお、あなたは実行するこずができたす

docker-compose script bower <EXTRA_CMD_ARGUMENTS |  default nothing>

docker-compose script bower install

懞念事項

  • 開始を管理するずいうこの目的のためだけに別のトップレベルのアむテムを䜜成するのはOverPoweredのように聞こえたすが、新しいフォヌマットがトップレベルでの動䜜を宣蚀しおいるずいう事実に由来しおいたす。
  • 私はこれが远加するかもしれない䜙分な柔軟性そしお問題を想像しようずしおいたす。

最埌に、_groups機胜_に぀いおはいいように聞こえたすが、グルヌプ化がそれほど倚くある堎合は、それぞれにdocker-composeファむルを䜜成しおも問題は発生したせん。 おそらくあなたが望む機胜はdocker-composeファむルの継承です、それは玠晎らしいでしょう

PD @bfirshアむデアが気に入ったら、「考えられる提案」に远加できたす。

第二に、これはサヌビスを宣蚀する差し迫った新しいフォヌマットのために、 4番目の提案の改良です。

オプション2ぞの投祚最も明確で読みやすく、新しい抂念を孊ぶ必芁がない
デフォルトで起動しないサヌビスが欲しいだけです

disabled: trueようなものはどうですか

@ cpuguy83これは、 runであっおも、サヌビス党䜓が無効になっおいるこずを意味しおいるようです。 玛らわしいず思いたす。

@qchoうヌん、1.6からDockerに慣れおきたので、あなたず@gittycatが䜕に぀いお話しおいるのかがわかりたす。 その意味で、 @ gittycatのアプロヌチが本圓に奜き

groups: # if no groups, all services are in the "default" group by
default
    - foo
    - bar
services:
  foo:
    image: imagine
    groups: foo
  bar:
    image: energy
    groups: bar
  baz:
    image: money
    # no groups, so "default"
   quux:
    image: word
    groups:
      - bar
      - default

䞀方、シェルでは 

docker-compose up -d # Up all services in default group, so 'baz' and quux
docker-compose up -d --groups foo # Up all services in the foo group
docker-compose up -d --groups foo,default # You get the idea
docker-compose run --rm bar somecommand # We never started 'bar', so it can be a one-off command

このようなアプロヌチは玠晎らしく、このチケットの必芁性を排陀したすが、その範囲を超えおいたす。

@kojiromikeそうは思いたせん。 これは、initシステムが自動的に起動しおはならないサヌビスを参照する方法です。

たた、これは単玔であり、「混乱」はドキュメントで解決できたす。
たた、サヌビス開始の抂念ずはたったく関係のないこのグルヌプ化よりもはるかに混乱が少ないず思いたす。

@ cpuguy83 「サヌビス」のセマンティクスは、そもそも混乱を招くものだず思いたす。 グルヌプ化はスコヌプクリヌプであるこずに同意したす。 その意味で、私はオプション4 / @qchoのアプロヌチを奜みたす。このアプロヌチでは、「サヌビス」ず「サヌビスではないもの」を明確に区別したす。

それがポむントです。なぜ、サヌビスを実行しないコンテナを「サヌビス...無効」カテゎリに入れる必芁があるのですか。 誰かが䜜った醜いパッチのように聞こえたすが、盎感的ではありたせん。

たぶん、フォヌマットの「バヌゞョン2」はこの問題を考慮に入れるべきでした。 たずえば、別の仕様は

version: 3?
containers:
  webserver:
    ...
  database:
    ...
  cache:
    ...
  some_script_container:

services: (they are groups):
  production:
    webserver:
      ...
    database:
      ...
    cache:
      ...
  development:
    webserver:
      ... DEFINE SOME CUSTOM DEV STUFF ABOVE basic container definition
    database:
      ...
    cache:
      ...     

これで、グルヌプ定矩を䜿甚した適切なサヌビスができたした。 生産たたは開発サヌビスグル​​ヌプを開始できたす。 たたは、some_script_containerでスクリプトを実行するだけです。 どのサヌビスでも定矩されおいないため、誰も開始されたせん

@qchoサヌビスの定矩によっお異なりたすが、いずれにせよ、たたにしか実行しないものに疑問を投げかけ、実行するかどうかを刀断できるのは人間だけです。

したがっお、composeがjobオブゞェクトのようなものを採甚するずしたす。

  1. ゞョブは1回だけ実行されたす
  2. サヌビス埌にゞョブが開始されたす
  3. ゞョブは終了する予定です
  4. ???

珟圚、composeは、ゞョブに関するロヌカル状態を維持する必芁もありたすが、珟圚はたったく実行しおいたせん。

これが、単玔なauto-up: falseたたはautorun: false远加するこずが、これを凊理するための最も簡単で䞍気味なスコヌプ単䜍の方法である理由です。

@ cpuguy83あなたは私が蚀っおいるこずをもっず耇雑なもので拡匵しおいるず思いたす。 私はdocker-composeが仕事やワヌクフロヌに぀いお知っおいる぀もりはありたせん。 そのために倖郚スクリプトを䜜成できたす。 私が意図しおいるのは、docker-composeは、アプリケヌションを実行するためのスタック党䜓を定矩する必芁があるずいうこずです。

スクリプトを䜜成し、あなたが蚀っおいる状態を維持するこずを想像できたす。 サヌビス開始盎埌ではなく、サヌビス開始前にスクリプトを呌び出すこずもできたす。 むンポヌトする必芁のあるボリュヌム、たたは未知のコンテナヌでファむルから抜出しお適甚するスクリプトを実行するために必芁な構成を確認する必芁があるため、自分でコンポヌザヌファむルを解析しおいるずは思いたせん。 したがっお、docker-composeはそのコンテナヌを提䟛する必芁があるず思いたす。 スクリプトを実行しお状態を維持するこずが私の問題です。

なぜ人々がそれを蚀い続けるのか分かりたせん

services:
  my-script-container:
    auto-up:false

以䞋よりも単玔です

scripts/containers/transients/you_name_it:
  my-script-container:

それは同じレベルの耇雑さです。 しかし、意味的にはハッキヌではありたせん。

1぀のスレッドでアむデアを埗るには、2803を参照しおください。

ナヌスケヌス倚くのコンポヌネントずナヌザヌが䜕を遞択しおむンストヌルするかを遞択したプロゞェクトがありたすが、圌はファむルを䜜成しおそれらすべおをむンストヌルしたす。

提案docker.composeで定矩された画像を陀倖するためにdocker-cmpose.overrider.ymlに配眮するオプションを远加したす

すなわち

いく぀かの画像
陀倖はい

動䜜は、docker-compose.ymlのその゚ントリを無芖するこずです。

チヌムの考えを教えおください。倉曎を加えるこずに興味がありたす。

2にも投祚したす...今日このニヌズに遭遇したした。

@jimzuckerの提案も機胜したすが、メむンの.yamlファむルに「startfalse」が衚瀺されおいるので、明瀺的に呌び出さないずこの「サヌビス」が実行されないこずがすぐにわかりたす。 それ以倖の堎合、あなたたたは私の堎合はdocker-composeファむルを枡した゚ンドナヌザヌ/開発者は、オヌバヌラむドファむルを探すこずを忘れないでください。

+1for2。composeの䞀郚ずしおDockerむメヌゞを䜜成する必芁があるのに、サヌビスずしお実行されないずいう状況がありたす。 他のサヌビスDocker゜ックスが内郚にマりントされおいるは、むメヌゞからコンテナヌを頻繁に実行したす。

2の堎合は+1、文蚀ずしお「自動アップ」たたは「自動実行」の堎合は+1。

そしお、サヌビスのグルヌプのケヌス@gittycatで説明されおいるは、環境倉数ala "auto-up$ {ADMIN}"を介しお凊理できたせんか

たた、 docker-compose.yml内のサヌビスを、単玔なdocker-compose up自動的に開始するのではなく、明瀺的にのみ開始するようにマヌクする実際のナヌスケヌスもありたす。

解決策1は珟圚可胜な方法の1぀ですが、 docker-compose upを呌び出しおファむルを分割たたは耇補するのではなく、1぀以䞊のymlファむルを指定する必芁があるため、私の意芋では面倒です。

解決策2のようなものが本圓に芋たいので他の倚くの人もそうです、3047でこれの抂念実蚌を実装したした。これを少し詊しお、実行可胜かどうかを確認しおください。解決。

オプション2の堎合は+1

オプション2の堎合は+1

オプション2の堎合は+1

オプション2ず4の䞡方で+1

オプション2および4の堎合は+1

オプション4の堎合は+1。䞀郚の構成はスクリプトに蚱可されるべきではありたせん䟋再起動垞に

オプション2を䜿甚するず、次のような奇劙なケヌスが発生する可胜性がありたす。

service:
  run_tests:
    build: ./tests/
    restart: always
    auto-start: "false"

それはどういう意味ですか

@mathroc 「composeの実行時にこのコンテナを自動起動しないでください。このコンテナが停止したら明瀺的に起動した埌、終了コヌドに関係なく再起動しおください。」 䜕がおかしいの

@nikoそうそう、投皿する前にもう少し考えおおく必芁がありたす...

オプション2の「投祚」を+1に倉曎する

オプション2の+1は、耇数のプロゞェクトでこれが必芁でした。

ping @bfirsh @dnephin 
この問題に関する最新情報を教えおください。 ここでのほずんどのコメントはオプション2を支持しおいるので、珟圚そのようなものたたはオプション3/4を実装する蚈画はありたすか
プルリク゚スト3047を磚き䞊げお、マヌゞを怜蚎する堎合は、テストずドキュメントで完了するこずができたす。

ありがずうございたした。

オプション2の堎合は+1

オプション2の堎合は+1

オプション2の堎合は+1

オプション1は機胜するず思いたすが、次の冗長性を枛らすためのより良い方法が必芁です。

docker-compose -f docker-compose.yml -f docker-compose.tests.yml up

おそらく、簡略化/拡匵フラグを远加できたすか docker-compose --augment tests upあり、 docker-compose.ymlバリ゚ヌションである堎合は自動的に解決されたす。そうでない堎合、ナヌザヌは明瀺的である必芁がありたす。

私は新しいトップレベルのキヌワヌドのアむデアが本圓に奜きです、おそらくsuitesずcommands 

次の構成では、次のこずが可胜になりたす。

docker-compose run -s application
docker-compose run -c cache-clear

suites:
    application:
        services:
            - database
            - memcached
            - application
    tests:
        extends: application
        services:
            - application

commands:
    cache-clear:
        service: application
        workdir: /var/www
        command/entrypoint: php app/console ca:cl

コヌドから、「1回限りの」サヌビスの抂念がすでに存圚するこずがわかりたすIMHOはdocker-compose runが呌び出された堎合にのみ䜿甚されたす。
再利甚できたすか
コンテナにcom.docker.compose.oneoff=Trueラベルを付けるず、コンテナを起動しようずしたすか

それ以倖の堎合は、オプション2に投祚したす。

私はこれに偶然出くわしたので、ここに私の2぀のナヌスケヌスがありたす。

  1. 「グロヌバル」環境倉数ここで掚奚されるアプロヌチは、 extendsを䜿甚するこずです。これは問題ありたせんが、拡匵元ずしおimageを定矩する必芁がありたす。 、 scratch䜿甚するこずもできたせんしたがっお、https//hub.docker.com/r/tianon/true/になりたした。
  2. 「スケヌリング」サヌビスデフォルトでは1぀のMongoDBむンスタンスがありたすが、䞀郚のテストでは、2぀目の非アクティブなむンスタンスを定矩したいので、それらのテスト甚に起動できたす。 ここでは、別のファむルでextendsを䜿甚するこずは、実行可胜なアむデアのように芋えたすdocker / docker-composeず関連するベストプラクティスに぀いおはただ孊習しおいたす。

オプション2の堎合は+1

オプション2の堎合は+1

オプション2の堎合は+1
単玔な倉曎のようです...

+1オプション2

envずconfigの共通セットを共有する耇数のコンテナのナヌスケヌスでは、拡匵するベヌスコンテナを構築するこずは理にかなっおいたすが、実際にはコンテナを開始するこずはありたせん。

auto-start:true|false

昚幎9月以来、 rocker-composeず呌ばれる優れた゜リュヌションがあるので、実行するこずをお勧めしたす_always_ | _once_ | _決しお_。 私も状態が奜きです_running_ | _ran_ | _created_も。

この機胜のためだけに別のプロゞェクトを䜿甚するのが奜きではないので、これが実装されるたで、私はtianon / trueプロゞェクトからTrueasmコヌドコマンドを盗むこずになりたした。

たた、最初はオプション2が最適だず思っおいたしたが、制限が厳しすぎお、远加しおすぐに、1回限りのタスクが必芁になるず思い始めたした。 実際、私は珟圚、次のナヌスケヌスが必芁なプロゞェクトに取り組んでいたす。

  • スタック内で、最初のデプロむで1回実行され、将来の実行は倖郚でのみトリガヌされるコンテナヌを定矩できるようにしたいのでスケゞュヌル/むベント、API呌び出しなどを介しお、メむンサヌビスコンテナヌの状態を初期化/曎新できたす。同じスタック内DBデヌタ/スキヌマ、デヌタボリュヌムの入力など
  • スタック内で、倖郚でのみトリガヌされるコンテナヌを定矩しお、ナヌティリティ/管理タスク状態/デヌタ怜査などおよびスケゞュヌルに埓っおトリガヌされるプロセスバックアップなどをカプセル化するために䜿甚できるようにしたい、たたは倖郚むベントによるたずえば、S3バケットぞの倉曎時にプロセスをトリガヌする

私の堎合、 state: created 0回実行ずstate: ran 実行> = 1回の区別は重芁です。ナヌティリティ/管理タスクの䞀郚は砎壊的であり、䜿甚されるだけだからです。サヌビスの移行などの特定の状況では。

ロッカヌコンポヌズたたはオプション4のようにstate: running | ran | created傟いおいるこずを考えるず、トップレベルの_task_たたは_job_オブゞェクト+䟝存関係を衚珟する機胜により、サヌビスがタスクをトリガヌしおタスクを前埌に実行できるようになりたす。

これは私のナヌスケヌスにずっお重芁であるこずに蚀及したいず思いたす。 docker-composeを䜿甚しおテスト環境を䜜成し、テストスむヌトを実行したす。 すべおのコンテナヌを䞀床に開始する堎合の問題は、テストスむヌトを実行する前にサヌビスコンテナヌデヌタベヌスやセロリワヌカヌなどを簡単に初期化できないこずです。

次のようなこずを達成できるこずが望たしいでしょう。

$ docker-compose --file="docker-compose-testing.yml" up -d --exclude=tests
$ sleep 5
$ docker-compose --file="docker-compose-testing.yml" run --rm tests

初期化が行われたこずを確認するためにsleep 5よりも耇雑なものを曞くこずができるず想像できたすが、サンプルスニペットでは必芁ありたせん。

CLIフラグに関するオプションを読みたせんでした。 したがっお、オプションのリストに--excludeフラグを远加するこずを提案したす。 --excludeフラグは、指定されたコンテナヌを開始しないようにupコマンドに指瀺したす。 --excludeフラグは、必芁に応じお耇数のコンテナヌを起動から陀倖できるように解析されたす。

+1

オプション2が適切な゜リュヌションずなる別のナヌスケヌスを怜蚎したす。既存のアプリケヌション内の新しいサブサヌビスを反埩凊理したす。 プロゞェクトのほずんどの開発者はただ新しいサヌビスを必芁ずしないでしょう、そしおあなたは間違いなく圌らの仕事を劚げる問題を望んでいたせんが、あなたはたた長期間ツリヌ倖のブランチを維持するこずを避けたいかもしれたせん時間。

別の「docker-compose-experimental.yml」ファむルは機胜する可胜性がありたすが、コンポヌネントがただ実隓的である間にそのコンポヌネントで䜜業するためのすべおのドキュメントを䞀方向に蚘述し、暙準セットの䞀郚になったら改蚂する必芁があるこずを意味したすサヌビスの。

オプション2に+1

オプション2の堎合は+1

オプション2の堎合は+1

オプション2の堎合は+1

オプション2の堎合は+1

@acranプルリク゚ストを送信しお、これを前進させるための牜匕力を埗るこずができるかどうかを確認しおください。おそらく、リベヌスしお3047の競合を解消するず、問題が発生したす。これに泚意を向ける方法がわかりたせん。

@jimzucker well3047はすでにプルリク゚ストであり、

䞊蚘の私のコメントを参照し

+1オプション2

@acran 、関連するドキュメントずテストケヌスの曎新をお手䌝いしたいず思いたす。 倧䞈倫ですか 

+1オプション2

たたは、Kubernetesのように、ある皮のゞョブを定矩したすか

オプション2の堎合は+1

Docker-composeには耇数のサヌビスがあり、そのうちの1぀デヌタベヌスは開発環境で起動する必芁がありたすが、本番環境では起動しないでください。 したがっお、2぀のdocker-composeファむルを維持する必芁がありたす。 オプション2はたさに私たちが探しおいるものです

+1オプション2の堎合

+1オプション2

@acranフィヌドバックを取埗するための適切なプロセス/チャネルを芋぀けるために、ここSFのいく぀かの接続に

オプション2の堎合は👍

オプション2の堎合は+1

+1オプション2

+1オプション2

たた、私はオプション2に投祚したす

別のアむデアトップレベルのnetworksずvolumesができたので、 imagesオプションも远加できたす。 これは、アプリケヌションが機胜するためにこれらのむメヌゞをプルたたはビルドする必芁があるこずを䜜成するためのヒントになりたすが、 docker-compose up実行するず実行されたせん。

これは、頭のおっぺんから離れた2぀のナヌスケヌスで機胜したす。

1ここでの䞀般的な問題。ある皮の管理コマンドを実行する必芁がありたす。 docker-compose runは、サヌビスが存圚しない堎合、実行䞭のむメヌゞにフォヌルバックする可胜性がありたす。
2Dockerむメヌゞを実行するこのようなアプリですが、垞に実行されおいるわけではありたせん。

/ cc @dnephin @aanand @ shin-

短期コンテナが必芁ずするすべおのオプション぀たり、ボリュヌム/マりントポむント、ネットワヌク、リンク、名前などをdocker-composeファむルで構成できるず䟿利な堎合を陀いお、そうしないようにしたす。そのコンテナを実行する必芁があるたびにそれらを远加し続ける必芁がありたす...

2016幎9月13日午前3時58分41秒AM CDTには、ベンFirshmanの[email protected]は曞きたした

別のアむデアトップレベルのnetworksずvolumesができたので、
imagesオプションも远加したす。 これは、これらを䜜成するためのヒントになりたす
アプリケヌションを機胜させるには、むメヌゞをプルたたはビルドする必芁がありたすが、むメヌゞは
docker-compose up実行するず、実行されたせん。

これは、頭のおっぺんから離れた2぀のナヌスケヌスで機胜したす。

1ある皮の管理が必芁なここでの䞀般的な問題
実行するコマンド。 docker-compose runは実行䞭のむメヌゞにフォヌルバックする可胜性がありたす
サヌビスが存圚しない堎合。
2のようなアプリこれ
Dockerむメヌゞですが、垞に実行されおいるわけではありたせん。

/ cc @dnephin @aanand @ shin-

あなたがコメントしたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺しおください。
https://github.com/docker/compose/issues/1896#issuecomment -246618909

K-9Mailを䜿甚しおAndroidデバむスから送信されたした。 簡朔に申し蚳ありたせん。

これに぀いおは@mgriegoに同意したす。 ビルド生成コンテナに぀いお考えおみおください。コマンドずオプションをすべお蚭定し、 docker-compose up fooだけを蚭定しお、ビルドず終了を実行するのが最善です。

ここでより倚くの理解を埗ようずしおいたすオプション2は、より䞀般的な「 docker-compose.yml initial_scale倀が必芁」の特殊なケヌスですか 1661、2496などを参照

@ankonは

images远加[セクション]

@bfirshこれは、 https//github.com/dnephin/dobiで取った方向に動き始め

  1. networksずvolumesは、実際に盎接操䜜されるこずはなく、コンテナによっお必芁に応じお䜜成されるだけです。 画像を独自のセクションに分割しおも、珟圚の動䜜は倉わりたせん。䜜成構成がより耇雑になるだけです。 むメヌゞを䜜成するだけの堎合は、 docker-compose buildたす。
  2. この問題で特定された問題が実際に修正されるずは思いたせん。 人々は画像だけでなくコンテナを望んでいたす

スレッドず、䜜成ファむルでのスケヌリング制玄の宣蚀に関する2496の説明を読み盎すず、オプション2よりもオプション4぀たり新しいトップレベルセクションを優先するようになりたした。

具䜓的には、 utilitiesようなセクション名が適しおいたす。通垞は必芁ないコンポヌネントですが、必芁な堎合は、リンクする他のコンポヌネントを事前に構成しおおく必芁がありたす。人々に適切なdocker run呪文を自分で構築しおもらいたす。

このアプロヌチでは、1回限りの管理コマンドだけでなく、pgwebやCelery Flowerなどの補助的なデバッグおよびむントロスペクションサヌビスもカバヌされたすこれらは開発で実行するず非垞に䟿利ですが、セキュリティが匷化されおいるため、通垞は本番環境では必芁ありたせん。圌らが䜜成する脅嚁の衚面積。

これらの新しい「notservices」のセマンティクスの定矩もはるかに簡単になりたす。 docker-compose buildような非修食コマンドを陀いお、 services その圢匏に察する今埌のすべおの倉曎を含むず_正確に_同じです。 docker-compose build 、 docker-compose pull 、およびdocker-compose upそれらを完党に無芖したす。「サヌビス」ではなく「ナヌティリティ」にリストされおいるコンポヌネントを凊理する堎合は、具䜓的に名前を付ける必芁がありたすただし、 docker-compose rmの珟圚のオプションず同様に、おそらく--allオプションである可胜性がありたす。 ただし、これらのナヌティリティを名前で操䜜するためのCLIは、通垞のサヌビスを操䜜するためのCLIず同じであり远加のナヌティリティ構成ファむルを指定する必芁がある珟状ずは異なり、docker-composeが名前の競合を防ぎたす。サヌビスずナヌティリティの定矩の間。

2496のスケヌリング提案は、この動䜜を実珟するためにab䜿甚される可胜性がありたすが、適切に蚭蚈された機胜ずいうよりは、回避策のように感じられたす。

私はそのデザむンが奜きです、@ ncoghlan。

utilities代わりに、 .servicesどうですか これは圓然、 servicesず.servicesがたったく同じセマンティクスを䜿甚するこずを䌝えたす。唯䞀の違いは、 .servicesがデフォルトで実行されないこずです。 これは、デフォルトで衚瀺されないファむル名に非垞によく䌌おいたす。 欠点は、2぀の違いが少し埮劙なこずだず思いたす。

@ncoghlanがそこで話しおいる基本的な考え方は奜きですが 

  1. _all_unqualifiedコマンドがデフォルトでこれらのナヌティリティを無芖するこずに同意しないでください。 私の意芋では、コンテナが実行されるコマンドを陀いお、すべおのコマンドは正垞に実行されるはずです。 ぀たり、基本的に、 upずstartです。
  2. @dsemのコメントに関しおは、「。services」よりも「utility」のセマンティクスの方が奜きです。 私は䞀矩的な隠しファむルの掚論を理解しおいたすが、これらは単なる隠しサヌビスではなく、サヌビスヘルパヌです。

@bfirsh @ncoghlan @dnephinに完党に同意したす

この問題で特定された問題が実際に修正されるずは思いたせん。 人々は画像だけでなくコンテナを望んでいたす

私そしおここにいるほずんどの人が私の垌望するワヌクフロヌに必芁なのは単玔なサヌビスです。 通垞のサヌビスず同じように定矩され、通垞のサヌビスず同じように開始/停止されたす。
_only_の違いは、デフォルトでは単玔なdocker-compose upによっお自動的に開始されるのではなく、明瀺的に指定された堎合たたは䟝存関係ずしおプルされた堎合にのみ開始されるこずです。

したがっお、これらの1回限りのコンテナヌに぀いお、新しいトップレベルセクションや完党に新しい抂念は必芁ないず思いたすが、サヌビスごずの構成パラメヌタヌはオプションです。
これは、抂念実蚌ずしおプルリク゚スト3047に実装したした。 これは非垞に小さな倉曎ですが、私のナヌスケヌスを完党に満足させるでしょう。 それで、私にできるこずがもっずあるなら、これをマヌゞするために、私に知らせおください=

これをテストしたい人のために、ここにdocker-composeをコンテナヌでビルドしお実行するコマンドがありたす。

# download and build
git clone [email protected]:acran/compose.git -b auto_up
cd compose
docker build -t docker-compose .

# create an example docker-compose.yml
cat > docker-compose.yml <<EOF
version: "2"
services:
  foo:
    image: busybox
    auto_up: false
    command: echo foo
  bar:
    image: busybox
    auto_up: false
    command: echo bar
    depends_on:
      - foo
  baz:
    image: busybox
    command: echo baz
EOF

# start all default services only, i.e. baz
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -ti -v $(pwd):$(pwd) -w $(pwd) docker-compose up

# start service foo only
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -ti -v $(pwd):$(pwd) -w $(pwd) docker-compose up foo

# start service bar, foo is pulled in as a dependeny
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -ti -v $(pwd):$(pwd) -w $(pwd) docker-compose up bar

# clean up all services, i.e. foo, bar and baz
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -ti -v $(pwd):$(pwd) -w $(pwd) docker-compose down

@acran 、関連するドキュメントずテストケヌスの曎新をお手䌝いしたいず思いたす。 倧䞈倫ですか 

@ dattran-vn01もちろん、私は幞せですsmiley

この䟋のup bazを䜿甚しお実行できたす。
耇数の䜜成ファむルを䜿甚しお同じこずを実行するこずもできたす。

䞀郚のコマンドをデフォルトサヌビスの異なるリストで動䜜させるこずは非垞に混乱しおいるように思われ、この機胜が気に入らない理由の1぀です。

あなたの䟋の@acranは、珟圚のComposeずは異なる動䜜をする唯䞀のコマンドであり、その動䜜は
耇数の䜜成ファむルを䜿甚しお同じこずを実行するこずもできたす。

@dnephinはい、正確に、私は知っおいたす、そしおこの䟋ではそれが最も簡単な方法でしょう。
しかし、これを10個のサヌビスず1回限りのサヌビス「init」たたは「backup」/「dump」などで想像しおみおください。その堎合、1぀のサヌビスを陀いおすべおのサヌビスをコマンドラむンにリストする必芁がありたす- docker-compose up service1 service2 ... service10ようなオフサヌビス以䞋を参照。 特に、すべおのサヌビスを芚えお、 docker-compose.yml倉曎を手動で远跡する必芁がありたす。

耇数のYAMLファむルを䜿甚する可胜性に぀いおも知っおいたす。䞊蚘の最初のコメントを参照し

問題を芖芚化するための別の䟋docker-compose.ymlを次に瀺したす。

version: "2"
services:
  init:
    image: busybox
    auto_up: false
    command: echo "I do one-time initializing"
  service1:
    image: busybox
    command: echo "I'm service #1"
  service2:
    image: busybox
    command: echo "I'm service #2"
  service3:
    image: busybox
    command: echo "I'm service #3"
  service4:
    image: busybox
    command: echo "I'm service #4"
  service5:
    image: busybox
    command: echo "I'm service #5"
  service6:
    image: busybox
    command: echo "I'm service #6"
  service7:
    image: busybox
    command: echo "I'm service #7"
  service8:
    image: busybox
    command: echo "I'm service #8"
  service9:
    image: busybox
    command: echo "I'm service #9"
  service10:
    image: busybox
    command: echo "I'm service #10"

単玔なdocker-compose up _with_ auto_up属性は、サヌビスinitを陀くすべおのサヌビスをここから開始したす。 それなしで同じこずを達成するには、10個のサヌビスではるかに長いコマンドを入力するか、YAMLファむルを分割しお耇数のファむルを指定する必芁がありたす。

したがっお、ここで芁求される機胜は、完党に新しい機胜ではなく、利䟿性ずCLIでの入力の削枛に関するものです。

「耇数の構成ファむルを䜿甚する」オプションこれは実際に珟圚利甚可胜な最良のオプションですに関しお、それに関するナヌザビリティの問題は、実際には次のように芋えるこずです。

$ docker-compose up one-shot-command
ERROR: No such service: one-shot-command
$ docker-compose up -f docker-compose.yml -f docker-compose-utils.yml one-shot-command
# Actually goes & does the requested thing

次に、䞍䞀臎がプロゞェクトのドキュメントず自動化の_すべお_に圱響したす。ナヌティリティコマンドを実行したいすべおの人が_two_構成ファむルを䜿甚できるようにする必芁がありたす。ナヌティリティファむル内のコマンドに察しお完党な呌び出しが行われるようにする必芁がありたす。コマンドがある堎合は、たたは、サヌビスが「垞に実行䞭」から「明瀺的に芁求された堎合にのみ実行」に降栌される堎合は、構成ファむル名を提䟛しない呌び出しを芋぀けお远加する必芁がありたす。

これはすべお_実行可胜_です。䜜成ファむルで「これは明瀺的に芁求された堎合にのみ実行し、デフォルトでは実行しないでください」ず蚀うこずができるのに比べお面倒です。

ある人が私にこう蚀ったこずがありたす。

このカヌドはこの兞型的な䟋のようです:)

dockerが長時間実行されるコマンドに察しおネむティブにサヌビスの抂念をサポヌトするようになったため、最善のアプロヌチは、コマンドず呌ばれる新しいセクションを远加するこずです。これにより、再起動ポリシヌを陀いおサヌビスず同じ機胜が可胜になりたす。

私のセットアップでは、むンフラストラクチャnginx、デヌタベヌス、りェブサヌバヌ、メッセヌゞキュヌなどを実行するために必芁なサヌビスがdocker-composeにありたす。 たた、デバッグの理由でのみ必芁な远加のサヌビスデヌタベヌスのWeb GUIなどを定矩したした。

「デバッグ」サヌビスを自動的に開始しないようにしたいのですが、远加したい堎合は、単玔なdocker-compose up -d database-guiで远加でき、远加されるだけです。

たた時々気が倉わっお、これらのサヌビスの1぀を垞に開始したい... =>オプション2を䜿甚するず、その1぀のフラグを倉曎できたす

=>オプション2に投祚しおください。これは単玔であり、ここですべおの人の芁件を満たしおいるように芋えるためです。 他のすべおの゜リュヌションは、私には過剰蚭蚈のように感じたす...実際の必芁性ではなく、たれな、たたは想像䞊のナヌスケヌスに基づいお構成を耇雑にしたす。

私の+1を远加するためにここにありたす。 私はDjangoアプリで実行しおいたすが、Dockerで実行する堎合は、シェルやテストを実行するコンテナヌ、さらに蚀えば移行コマンドを実行するコンテナヌがあるず䟿利です。 しかし、アプリを起動するたびにこれらのいずれも実行したくありたせん。 耇数の構成ファむルを䜿甚するこずはできたすが、1マむルの長さのコマンドラむンを入力、スクリプト化、たたぱむリアス化する必芁がありたす。 䜜曲をたったく䜿甚しないようにしたい堎合は、コンテナヌをシェルスクリプト化するだけですたたはPythonスクリプトを䜜成したす...コンテナヌ構成を栌玍するために統合YAMLファむルを远加したす...埅っおください...コンテナでデヌタベヌスの移行を実行するためだけにdocker-compose -f common.yml -f dev.yml -f local.yml -f commands.yml up migrateようなこずはしたくありたせん。 別の方法は、コマンドずしお/bin/trueを䜿甚し、 docker-compose -f common.yml -f dev.yml -f local.yml up commands 'python3 manage.py migrate'ようなこずを実行するこずですが、これも゚レガントではありたせん。 したがっお、構成のどこかに1回限りのコマンドを栌玍しおおくず非垞に䟿利です。 オプション2、3、4のどれでも私にはうたくいくでしょう。

このスレッドからのフィヌドバックに郚分的に基づいお私が取り組んできたツヌルであるdobiをご芧になるこずをお勧めしたす。

composeは、「環境」を圢成する長期実行サヌビスを開始するように蚭蚈されおいたす。
dobiは、シヌケンシャルプロゞェクトビルドタックに焊点を圓おおいたす。

探しおいるものシェルの実行、単䜓テストの実行、移行の実行はすべおプロゞェクトタスクであるため、dobiモデルにはるかによく適合したす。

dobiずcomposeは非垞にうたく連携し、 composeリ゜ヌスを䜿甚しおdobiからcomposeを起動できたす。

compose=dev-environment:
  files: [docker-compose.yml, local.yml]
  project: 'theprojectname'

これを䜿甚しお実行できたす

dobi dev-environment

ここに、構成統合ず実行䞭のデヌタベヌス移行の䟋がありたす https 

倚くのワヌクフロヌテストの実行、むンタラクティブシェルの開始、リリヌス、最小限のむメヌゞの構築などの䟋がここにありたす http 

2の堎合は+1。 私たちの芳点では、1回限りのコマンドのような珍しいナヌスケヌスを考えお議論する必芁はありたせんが、䜜成されおすぐに䜿甚できる実際のサヌビスが必芁ですが、必芁に応じおオンデマンドで開始できたすデフォルトでは消費されたせんリ゜ヌス。

「珍しいナヌスケヌス」 デヌタベヌスの移行を実行しおいたすか ナニットテストを実行したすか lintを実行したすか webpack

はい、私は走っおいたすが、私の意芋では、それはコンテナ内で達成および制埡できたす。 しかし、私はあなたの芋解や芁求を損なうこずを望たないので、この議論を炎䞊させないようにしたしょう。 dockercomposeに関する芁件は必ずしも矛盟しおいたせん。

mysqlコンテナ内のデヌタベヌスを消去し、ダりンロヌドしたダンプからスキヌマを再ロヌドするスクリプト甚のdocker-composeコンテナを䜜成する方法を芋぀けようずしおいるこのスレッドに出くわしたした。 これは非垞に時間のかかる砎壊的なプロセスであるため、サヌビスを起動するたびに実行する必芁はありたせんが、独自のdockerfileを䜿甚しお構成されたコンテナヌのセット内で実行する必芁もありたす。

それらをタスク、コマンドなどず呌んでください。

私はこれを偶然芋぀けお、他の䜕かを探しおいたした。ナヌスケヌスにチップを入れたかっただけです...私たちの開発者は、サヌビスからバックアップするデヌタを定矩する胜力が最も高いこずがわかりたした。 docker-compose.ymlファむルが手元にあり、名前付きボリュヌムが䜿甚されおいるため、これを䜿甚しおバックアップ戊略を定矩するこずにしたした...これは私たちが䜿甚しおいた叀いdocker-compose.ymlの芁玄䟋です。

version: '2'
services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    restart: always
    ports:
      - "5555:5555"
    volumes:
      - gitlab_config:/etc/gitlab
      - gitlab_logs:/var/log/gitlab
      - gitlab_data:/var/opt/gitlab
      - certificates:/etc/gitlab/ssl
      - registry_data:/var/opt/gitlab/gitlab-rails/shared/registry
  gitlab-runner:
    image: gitlab/gitlab-runner:latest
    restart: always
    volumes:
      - certificates:/etc/gitlab-runner/certs
      - /var/run/docker.sock:/var/run/docker.sock
volumes:
    gitlab_config:
      driver: local
    gitlab_logs:
      driver: local
    gitlab_data:
      driver: local
    certificates:
      driver: local
    registry_data:
      driver: local

ボリュヌムデヌタをバックアップできるようにするために、必芁なデヌタをtarするためにbusyboxコンテナヌを䜿甚するこずにしたしたが、柔軟性があり、開発者がバックアップしたいボリュヌムのみを実行する必芁がありたす。 最埌に、すべおのボリュヌムを個別にバックアップできるはずです。 これを実珟するために、すべおのdocker-compose.ymlに3぀のサヌビスを远加したした

  boot:
    image: busybox
    depends_on:
      - gitlab
      - gitlab-runner

  backup:
    image: busybox
    volumes:
      - gitlab_config:/data/gitlab_config
      - gitlab_data:/data/gitlab_data
      - registry_data:/data/gitlab_data
      - /backups/latest:/backup
    command: find . -type d -maxdepth 1 -mindepth 1 -exec tar cvf /backup/{}.tar {}  \;
    working_dir: /backup

  restore:
    image: busybox
    volumes:
      - gitlab_config:/data/gitlab_config
      - gitlab_data:/data/gitlab_data
      - registry_data:/data/gitlab_data
      - /backups/latest:/backup
    command: find . -type f -iname "*.tar" -maxdepth 1 -mindepth 1 -exec tar xvf {} \;
    working_dir: /backup

バックアップおよび埩元サヌビスは、ボリュヌムを䜿甚しお構成する必芁があるだけで、残りはコマンドが実行したす。 バックアップたたは埩元するボリュヌムを遞択できるように、構成を少し远加するこずを蚈画しおいたすが、今のずころ、すべおを実行したす...これら2぀のサヌビスをすべおのdocker-composeで開始したくないためです。 upコマンドでは、必芁なすべおのサヌビスを指定する必芁がありたしたが、これは面倒な堎合がありたす...そこで、bootずいうダミヌのサヌビスを远加したした。実行する必芁のあるすべおのサヌビスに䟝存するだけで、これを呌び出すだけです。 docker-構成したす。

これは小さなハックでいっぱいですが、 docker-compose up backupを簡単に実行しお、バックアップをホストの/ backups / latestに保存し、そこからバヌゞョン管理/プルヌニングロゞックを実行できたす。

同様のこずを達成しようずしおいる人に圹立぀こずを願っおいたす...しかし、最終的には、docker-composeにこれらの2぀のサヌビスを起動しないように指瀺できるので、3番目のサヌビスは必芁なく、docker-composeupコマンド。

開発䞭、珟圚4぀のdocker-composeファむルがありたす。

  • docker-compose.yml アプリを完党に操䜜するために必芁なコアサヌビスを定矩したす。たずえば、redis、MySQL、php-fpm、Laravelキュヌプロセッサヌ、nginx、Solr
  • docker-compose-utils.yml 開発タスクの実行に必芁なナヌティリティサヌビスを定矩したす。たずえば、gulp、npm、artisanLaravel、composer、redis-cliなど、通垞は䞊蚘のサヌビスで実行されたす
  • 䞊蚘のサヌビスの環境ずボリュヌムを定矩するためのさらに2぀のdocker-composeファむル

Dockerの倖郚では、開発環境の䟝存関係が最小限であるため、このセットアップは適切に機胜したす。 欠点は、単玔なナヌティリティを実行するために必芁なすべおの.ymlファむルを指定するために必芁な扱いにくいコマンドラむンです。

macOS、Windows、Linuxで開発しおいたす。 さらに、開発タスクの倚くは䜕らかのパラメヌタヌ化を必芁ずするためDB移行の䜜成、独自の匕数を䜿甚したcomposer / artisan / npmコマンドの実行など、れロむンストヌルクロスずしおschmich/runxを䜜成したした。䞀般的な開発タスクをバンドルするプラットフォヌムタスクランナヌ。

たずえば、これにより、 runx merge make create_some_tableを䜿甚しおdocker-compose -f docker-compose.yml -f docker-compose-utils.yml -f docker-compose-dev.yml -f docker-compose-utils-dev.yml run --rm artisan migrate:make create_some_tableを効果的に実行したり、 runxnpmを叀くしお叀いJS䟝存関係を衚瀺したりできたす。

䞊蚘のdobiは䜿甚しおいたせんが、 runxは、Docker環境に合わせお調敎されおいたせんが、粟神的には䌌おいたす。 最終的には、絶察に必芁な堎合を陀いお、どこでも䟝存関係を避けたいず思いたす。サヌビス自䜓ず、開発に必芁なナヌティリティスクリプトです。

連絡あった この機胜があれば本圓にいいず思いたす defaultようなトップレベルの構成の゜リュヌションに投祚したす。ここでは、実行する必芁のあるサヌビスを指定できたす。
bootダミヌサヌビスは玠晎らしいですが、私はプロセスをフォアグラりンドのたたにしおおくこずを奜みたす。したがっお、この䜜業が終了したら、タヌミナルを閉じるだけですべおを停止できたす。 デフォルトで出力をアタッチするのも良いこずですが、これはダミヌサヌビスでは発生したせん。

nobobyが.envファむルを䜿甚しおナヌスケヌスにコメントしたので、ここに私のものがありたす

docker-compose.yml、docker-compose.local.yml、docker-compose.prod.yml、docker-compose.ci.ymlの4぀の䜜成ファむルがありたす。 環境ごずに異なる.envがありたす。

CI .env:
COMPOSE_PROJECT_NAME=foo
COMPOSE_FILE=docker-compose.yml:docker-compose.ci.yml
WEB_PORT=8081
...

Test/dev/etc .env:
COMPOSE_PROJECT_NAME=foo
COMPOSE_FILE=docker-compose.yml:docker-compose.local.yml
WEB_PORT=80
...

等々...

環境はすでに個別に構成されおいるため、ナヌザヌやスクリプトは、䜿甚する䜜成ファむルに぀いお心配する必芁はありたせん。

しかし、最終的に実行するメンテナンスむンスタンスがあり、メむンのdocker-compose.yml内で構成するこずはできたせん。解決策のひず぀は、docker-compose.worker.ymlを䜜成し、3぀の「-f」オプションを倉曎しおコマンドラむンを実行するこずです。各環境で。 これぱラヌが発生しやすく、䜿甚可胜なオプションにはなりたせん。

私が芋぀けた解決策は、ディレクトリ「worker」を䜜成し、そこにymlファむルを配眮し、䞊䜍の.envファむルをこのディレクトリにリンクしお、空のdocker-compose。[ci | local | prod] .ymlファむルを䜜成するこずでしたそうでない堎合は、 COMPOSE_FILE倉数の倀を倉曎したす。

これは問題なく機胜したすが、最適ずは蚀えたせん。 OPの他の゜リュヌションは、混乱するこずなくこれを解決したす。

ここでの議論、倚くの䜿甚䟋の䟋、およびこれに頻繁に重耇する問題があるずいう事実は、「デフォルトで開始されないサヌビスを定矩する」可胜性に察する倚くのナヌザヌによる実際の芁求があるこずを明確に瀺しおいるず思いたす。 "。

そのため、ここでの議論を、これをもっず実装する必芁がある堎合から、どのように実装する必芁があるかずいうこずに移したいず思いたす。 私たちはおそらくこれに同意できたすか

_how_に関しお、これは達成できたした@bfirshは、冒頭のコメントにいく぀かのオプションをリストしたした。

1別の䜜成ファむルを䜿甚するようにナヌザヌに掚奚する

これは、このナヌスケヌスで珟圚利甚可胜な唯䞀の゜リュヌションです。 ただし、䞊蚘のように、この堎合は、長いコマンドラむンを手動で入力し、実行するコマンドに含める䜜成ファむルを芚えおおく必芁があるため、より倚くの回避策がありたす。
もちろん、CIセットアップたたは本番環境ぞの自動展開では、これは問題ではありたせん。コマンドラむンを䞀床定矩するだけで、手動で入力する必芁がないためです。 したがっお、これは、自動化されおいない環境、぀たり、 docker-composeマニュアルによるずCompose自䜓の䞻なナヌスケヌスの1぀である開発での利䟿性に関するものです。

これらの機胜を組み合わせるこずで、開発者がプロ​​ゞェクトを開始するための䟿利な方法が提䟛されたす。 Composeを䜿甚するず、耇数ペヌゞの「開発者入門ガむド」を1぀の機械可読なComposeファむルずいく぀かのコマンドに枛らすこずができたす。

ロヌカルセットアップを初期化するためだけにdocker-compose -f docker-compose.yml -f docker-compose-utils.yml run initようなものを入力する必芁があるこずは、私には_䟿利_に聞こえたせんが、_耇数ペヌゞの「開発者入門ガむド」_にあるようなものです。

そしお、ここでオプション1bを怜蚎したす。

ラッパヌスクリプト/ツヌルを䜿甚しお個別の䜜成ファむルを䜿甚するこずをナヌザヌに掚奚したす

このためだけに远加のツヌルず䟝存関係を取埗する必芁がある堎合、そもそもなぜdocker-composeを䜿甚するのですか docker-composeが行うこずはすべお、理論的には、カスタムシェルスクリプトずネむティブのdockerクラむアントだけで盎接実行するこずもできたす。
暙準化されたナヌザヌむンタヌフェむスにdocker-composeの䞻な利点がありたすプロゞェクトのクロヌンを䜜成し、そこにdocker-compose.ymlがあり、開始するにはdocker-compose upを実行する必芁があるこずを知っおいたす 。 この利点を倧幅に匱めるものに䜿甚する䜜成ファむルを垞に知る必芁がありたす。

2サヌビスにオプションを远加しお、デフォルトで開始しないようにしたす
3最䞊䜍の構成オプションを远加しお、デフォルトのサヌビスを定矩したす

これらの2぀のオプションは、基本的に同じです。1぀の䜜成ファむルでデフォルト
ほずんどの堎合、単䞀の䜜成ファむルに「1回限りのサヌビス」よりも倚くのデフォルトサヌビスがあるこずを考えるず、他のすべおのサヌビスをホワむトリストに登録し、デフォルトサヌビスが取埗されるたびにホワむトリストを曎新するよりも、1぀のサヌビスをブラックリストに登録する方がおそらく簡単です。远加たたは削陀されたした。 たた、オプション2を䜿甚するず、耇数の䜜成ファむルをマヌゞする方がおそらく簡単です。

4サヌビスのようなものの抂念を远加したすが、これは1回限りのコマンド「スクリプト」、「タスク」など専甚です。

䞊蚘の䟋のほずんどでは、目的の1回限りのコンテナヌは基本的に他のサヌビスず同じように定矩されおおり、通垞のサヌビスずほが同じように定矩されおいるため、オプション4はオプション2たたは3の特殊化にすぎないず思いたす。 'デフォルトでは開始されたせん。 たたは、「サヌビス」ずの倧きな違いを芋逃したしたか。

したがっお、私の意芋では、オプション2が最適です。倉曎が最小限で枈みたすが、同時に、ここで説明するほずんどたたはすべおのナヌスケヌスを満たすのに十分な柔軟性があり、同時に䜿甚するず非垞に䟿利です。
それでも、オプション3たたは4のようなものがアップストリヌムにマヌゞされるのを芋るのも同様に嬉しいです。 それで、ここで1幎以䞊議論した埌、これがい぀起こるか、たたは起こるかどうかのタむムラむンはありたすか

オプション2がおそらく最も䟵襲性が䜎いこずに同意したす。 オプション4が提䟛する可胜性がある唯䞀の機胜は、既存のコンテナヌでコマンドを実行する機胜ですdocker execメカニズムを䜿甚。 たずえば、デヌタベヌスの移行たたは単䜓テストを実行するだけの堎合、アプリを実行しおいるコンテナヌが既にある堎合は、そのコンテナヌ甚にたったく別個のコンテナヌを䜜成する理由がない可胜性がありたす。 ずは蚀うものの、コンテナは軜量であり、オプション2で完党に満足しおいたす。

@MadWombatオプション4に぀いおも同じ気持ちです。そのため、このナヌスケヌスに別の機胜を提案したした4096。 ここで説明する機胜ず重耇しおいたすが、それ自䜓で、たたはこれに加えお圹立぀可胜性があるず思いたす

@mathroc @acranがオプション2ず4の間に有意差があるかどうかを尋ねたので、 docker execを䜿甚しおオプション4に぀いお蚀及したした。ただし、具䜓的にコマンドを実行したい実際のナヌスケヌスを思い付くこずができたせん。目的のために別の同様のコンテナを立ち䞊げるのではなく、既存のコンテナ。 䞀郚のサヌビスたたは既存のコンテナによっおすでに䜿甚されおいる他の制限されたリ゜ヌスぞの氞続的な接続が制限されおいるシナリオがあるかもしれたせんが、私はそれを考えるこずができたせん。

オプション4が提䟛する可胜性がある唯䞀の機胜は、既存のコンテナヌでコマンドを実行する機胜ですdocker execメカニズムを䜿甚。

これは確かに、サヌビスずは異なる新しいトップレベルの抂念を導入するこずを正圓化するそしお必芁ずする新しいナヌスケヌスです。 ただし、既存のサヌビスコンテナ内でdocker execを介しおコマンドを実行する必芁がない限り、既存のサヌビスの抂念で十分です。

ただし、その目的のために別の同様のコンテナヌを起動するのではなく、既存のコンテナヌでコマンドを実行したいずいう実際のナヌスケヌスを思い぀くこずはできたせん。

私が考えるこずができる最も近いケヌスは、コンテナヌ内の構成ファむルを倉曎し、アプリケヌションによるリロヌドをトリガヌするようなものです。 4096の@mathrocの䟋を䜿甚

version: "2"
services:
  my_service:
    image: my/service
shortcuts:
  start-debugging:
    service: my_service
    command: echo "debug=true" > /etc/myapp/conf.d/debug.conf && mydaemon --reload-config
  stop-debugging:
    service: my_service
    command: echo "debug=false" > /etc/myapp/conf.d/debug.conf && mydaemon --reload-config

この問題に関連しおいたすが、4096には独自のナヌスケヌスがあり、オプション4をそこに移動するのが最善でしょうか

1幎以䞊の議論があり、私たちはこれ以䞊先に決定を䞋すこずができないようです。 @bfirshはスタむルを遞んでそれを

+1

+1、それは非垞に䟿利な機胜です。

そしお、オプション2の+1は、 auto-start: falseやenabled: falseです。

私のナヌスケヌスはサヌビスの拡匵です。 depends_on蚭定されおいるサヌビスを拡匵するこずはできないので、私がやりたいのは、サヌビステンプレヌトを定矩し、そこからいく぀かのサヌビスを拡匵するこずです。 明らかに、テンプレヌトを䜜成する必芁がありたすが、自動で実行しないでください。

私は独自の゜リュヌションを䜜成し、自由に䜿甚できるようにしたした。
ただベヌタ版です:)

https://github.com/jonathanborges/picles-docker

ここにはたくさんの玠晎らしいオプションがありたす。 この機胜の必芁性は珟実のものです。

オプション2は、明らかにより人気のある出来事です。

1-> 4
2-> 52
3-> 3
4-> 10

オプション2の別の👍

これは、最初の゚ントリポむントたたは単に戻るコマンドを䜿甚する「ツヌル」サヌビスでかなり簡単に凊理できたす。 次に、別のコマンドを䜿甚しおこのサヌビスを実行し、必芁な凊理テストやデヌタのシヌドなどを実行したす。 䟋えば

docker-compuse up -d
docker-compose run tools tests

はい、ツヌルサヌビスはdocker-compose psで「停止」ず衚瀺されたす。 これが受け入れられない堎合は、 https//github.com/docker/compose/pull/2051のマルチファむルオプションが機胜し

docker-compose -f docker-compose.yml -f docker-compose-tools.yml up -d
docker-compose -f docker-compose-tools.yml logs -f tools

倚くのオヌケストレヌションヘルパヌがこの必芁性のために曞かれおいるように芋えたすが、私も1぀に取り組んでいる眪を犯しおいたす:)。

個人的には、十分な回避策があり䞊蚘の2぀、゚ントリポむント/コンテナでクリ゚むティブになる、および/たたはシェル゚むリアス/ヘルパヌでマルチファむルアプロヌチを䜿甚する、䜜成をシンプルに保぀こずができるず思いたす。

@briceburgは、䞊蚘の説明を参照しおください。ここでの問題は、他の方法では実行できなかった機胜の欠萜に関するものではありたせん。 ここの人々が達成したいほずんどすべおの回避策がありたす。 しかし、それらはdocker-composeの通垞のナヌスケヌスではなく、回避策ずダヌティハックです。

それは䟿利さに぀いおであり、CLIでdocker-compose -f docker-compose.yml -f docker-compose-tools.yml upを手で入力する必芁がないこずに぀いおです。それがdocker-compose run tools testsかdocker-compose run utils testsかを芚えおおく必芁がないか、あるいは頌る必芁さえありたせん。 _耇数ペヌゞの「開発者入門ガむド」_ですが、代わりに開発者向けの統䞀されたシンプルなむンタヌフェむスを備えおいたす。

ここでも、CCing @bfirsh、@dnephinあなたはこの問題に_any_フィヌドバックを提䟛しおくださいだろうか docker-composeの今埌のロヌドマップでこのようなものを芋るこずができるずいう垌望はありたすか

単玔な環境の@briceburgは、回避策が受け入れられる堎合もありたすが、受け入れられない堎合もありたす。 私の蚭定を芋おください

rancher<strong i="7">@rancher</strong>:~/servers/sgi/docker$ ls -l 
total 64
-rwxrwxr-x 1 rancher rancher  303 Dec  8 20:05 cleanup.sh
drwxrwxr-x 3 rancher rancher 4096 Dec 16 15:26 conf
drwxrwxrwx 4 rancher rancher 4096 Dec 15 20:03 data
-rw-rw-r-- 1 rancher rancher   94 Dec 14 19:40 docker-compose.amt.yml
-rw-rw-r-- 1 rancher rancher  295 Dec  8 20:05 docker-compose.auth.yml
-rw-rw-r-- 1 rancher rancher  332 Dec  8 20:05 docker-compose.ci.yml
-rw-rw-r-- 1 rancher rancher  112 Dec  8 20:05 docker-compose.dbext.yml
-rw-rw-r-- 1 rancher rancher  347 Dec 14 19:40 docker-compose.dbint.yml
-rw-rw-r-- 1 rancher rancher  688 Dec 15 16:31 docker-compose.full.yml
-rw-rw-r-- 1 rancher rancher   81 Dec  8 20:05 docker-compose.local.yml
-rw-rw-r-- 1 rancher rancher  288 Dec 15 16:31 docker-compose.yml
-rwxrwxr-x 1 rancher rancher  721 Dec 14 19:40 redeploy.sh
-rwxrwxr-x 1 rancher rancher  861 Dec  8 20:05 setup.sh
-rwxrwxr-x 1 rancher rancher   66 Dec  8 20:05 shutdown.sh
-rwxrwxr-x 1 rancher rancher  269 Dec 14 19:40 startup.sh
drwxrwxr-x 2 rancher rancher 4096 Dec 14 19:40 worker

workerディレクトリにあるファむルの他に、8぀の䜜成ファむル耇数の組み合わせで䜿甚があり、「デフォルトでは開始しない」コンテナヌを構成したす。 workerディレクトリ芪にリンクされた.envファむルず、芪の.env COMPOSE_FILE倉数に準拠するためのいく぀かの空の䜜成ファむルを含むが私の回避策ですが、次の゜リュヌションがあれば、私の生掻ははるかに楜になりたすこの問題。

@vipseixasファむルリストからこの゜リュヌションの健党性を

ほずんどの堎合、テストを実行する前に、䟝存するサヌビス/コンテナヌでヘルスチェックが枡されるこずを確認する必芁がありたす。たずえば、これらのテストを実行する前に、jenkinsが皌働しおいる8080などで接続を受け入れる。 以前、私はこれにdockerizeを䜿甚したした。

特効薬を提案する堎合、環境倉数DOCKER_COMPOSE_PROFILE = "tests"などを介しお䜜成プロファむルを蚭定できるようにし、サヌビスをプロファむルに䟝存できるようにしたす。すべおのサヌビスはデフォルトで「デフォルト」になりたす。 「プロフィヌルか䜕か。 たた、別のサヌビスに䟝存しおいるサヌビスも、そのサヌビスのHEALTHCHECKに_䟝存_しおいるこずを確認したす。 だから䜕かのような

app:
  image: myapp:v1

tests:
  image: myapp:tests
  dependencies:
    - profile: "tests"
    - service: "app"
      healthcheck: true
# run the things
docker-compose up -d

# test the things
DOCKER_COMPOSE_PROFILE="tests" docker-compose up -d
DOCKER_COMPOSE_PROFILE="tests" docker-compose logs -f

オプション2の堎合は+1。

ここの倚くは興味深い新機胜を提案しおいたすが、ここでの問題の栞心は䜕ですか 私はそれをできるだけ単玔に保぀こずに投祚したす。

珟圚のずころ、docker-compose.yml内のすべおのサヌビスはdocker-compose up起動されるず想定しおいたす。 私たちは皆、独自のカスタムブヌトストラップスクリプト、makefile、ビルドツヌルなどを䜿甚しおいたす。幞い、docker-composeずdockerはどちらも、キッチンシンクが「皌働」するず、個々のコンテナヌを管理するための広範なAPIを公開したす。

私の唯䞀の必芁性、この議論に私を導いた䞭心的な必芁性は、私が定矩したサヌビスの1぀が、䜕らかの理由でデフォルトで「アップ」したいものではないこずを指定するこずです。

私たち党員にずっお「それを成し遂げる」最も簡単な機胜は䜕ですか これは、 docker -compose.yml仕様 autostart: false指定できたす。

私は投祚したす「私たちのために䜕かをしおください、ありがずう」。 投祚したす。少なくずも1぀の答えが必芁です。 4神

私たち党員にずっお「それを成し遂げる」最も簡単な機胜は䜕ですか これはdocker -compose.yml仕様

それは他のどの遞択肢よりもずっず良いです:)

ずおも簡単です。
scale: 0
https://github.com/docker/compose/issues/1661

@ drew-r䜕
image

@ jonathanborges1542 docker-compose scale servname=2です。 docker-compose.ymlファむルに同等のものはありたせん。

@ drew-r scale: 0珟圚、サヌビスのすべおのコンテナヌにSIGTERM / SIGKILLを送信するようにdockerデヌモンに指瀺しおいたす。 これにより、メンテナンスゞョブがただ完了しおいない堎合でも、メンテナンスゞョブが匷制終了されたす。 それが予想される動䜜です。 これを倉曎するこずは、珟時点で明確な動䜜であるものをオヌバヌロヌドする悪いケヌスになりたす。

@gittycatわかりたしたが、ここで必芁なのは「docker-compose up」ず入力するこずで、すべおの準備が敎いたす。 その堎合、それは機胜したせん。

私はこのトピックを1幎以䞊フォロヌしおいたすほずんどの投皿はDocker偎にありたす。
「サヌビス」、「ボリュヌム」、「ネットワヌク」ず共存する新しいトップレベルの「仕事」が最良の遞択肢だず思いたす。 これは、䞊蚘のOPリストのオプション4です。
これは、Dockerリポゞトリでの提案でもありたす。
https://github.com/docker/docker/issues/23880

@briceburg

ファむルリストからこの゜リュヌションの健党性を刀断するのは困難です

倚くのファむルの組み合わせがあり、耇数の「-f」オプションを䜿甚するず゚ラヌが発生しやすく、手動で実行できないこずを瀺すこずが目的でした。

自動起動したくないサヌビスに察しおは䜕もしないデフォルトの゚ントリポむント/コマンドを䜿甚するこずをお勧めしたす。

時には運呜から逃れるこずはできたせん。 しかし、私は自分の解決策を奜みたす。「構成」されるこずのない別のディレクトリを䜿甚するので、環境を汚染する無駄な停止コンテナはありたせん。 そのため、芪「.env」にリンクされた「.env」を持぀ワヌカヌディレクトリがありたす。

特効薬を提案する堎合は、環境倉数DOCKER_COMPOSE_PROFILE = "tests"などを介しお䜜成プロファむルを蚭定できるようにしたす。

それが最善の解決策です。 しかし、開発者が耇雑さを増す傟向があるずは思いたせん...

ベヌスむメヌゞを䜜成し、これを同じdocker-compose.ymlで「拡匵」しお、2番目のむメヌゞのみを開始したす。これは、珟時点では1぀のステップでは実行できたせん。 オプション2の堎合はそうなりたすが、ベヌスむメヌゞの䜜成が行われる「ビルドステヌゞ」ず「実行ステヌゞ」を䜿甚する方がより適切でクリヌンな方法かもしれたせん。 珟時点では、1぀だけでなく2぀のコマンドを実行する必芁がありたす。

+1 @ draw-r1661

この問題はある時点で実装される予定ですか、それずも構成開発者がやりたくないこずですか コミュニティが別の解決策を探し始めるこずができるように知っおおくずいいでしょう。

ちなみに私はオプション2に投祚したす。

ありがずうございたした

オプション2の堎合は+1。
ただし、明瀺的な䟝存関係は尊重されたすか... linksなど

docker-compose up [service]で起動するサヌビスを指定しおいる堎合、問題のサヌビスずその䟝存関係以倖のサヌビスを開始するこずはめったにありたせん。

オプション2ぞの別の投祚。 @ acranが䜜成しお

䜜成開発者がこれを望たない堎合は、それを䞀床だけ述べおから、チケットを閉じおロックし、コメントを防ぐ必芁がありたす。

@msabramoの䜜成は、基本的にDocker゚ンゞンレベルで決定される内容によっお劚げられたす。

リク゚ストは、Docker゚ンゞンリポゞトリhttps://github.com/docker/docker/issues/23880で远跡され
そこから決定/䜜業が行われたす。

この問題を解決するこずをお勧めしたす。

@gittycat composeには、゚ンゞンにサヌビスを開始するように指瀺するかどうかのオプションがありたす。 これはただ非垞に有効なリク゚ストです。

私は本番環境でDockerをあきらめたしたが、倚くの問題がありたす。 次に、vagrantに移行したす。

2ぞの別の投祚

2ず4の別の投祚。

ナヌスケヌスを指摘するために、䞀郚のサヌビスには埪環䟝存関係があり、構成ファむルを生成する必芁があり、他の倚くの可胜性の䞭でテストスむヌトを実行したす。 Dockerから切り離したり、他のツヌルを䜿甚したりできたすが、プロゞェクトの蚭定が䞍必芁に耇雑になりたす。

セットアップやテストのための簡単なコマンドがあるず、物事がずっずきれいになりたす。

2にもう䞀床投祚しおください

このスレッドを読んだこずがありたすが、新しい投皿https://github.com/docker/compose/issues/4650を䜜成するこずにしたした。この投皿は閉じられ、ここで玹介されたした。 私が蚀いたかったのは、このスレッドでの議論のほずんどは実行䞭のコンテナヌを無効にするフラグに関するものですが、私のナヌスケヌスは3番目の状態であるコンテナヌの䜜成です。

コンテナヌが実行されないようにするだけでなく、最初からコンテナヌを䜜成できないようにしたい私のナヌスケヌスでは、これを実珟するナヌザヌ䞻導のプロセスがありたす

@ekkisどうしおそうなったのか

あなたの問題に぀いおもっず詳しく教えおいただけたせんか

@frnco 、あなたが䜕に぀いおもっず詳しく知りたいのかわかりたせん。 コンテナを䜜成せずにむメヌゞを䜜成したい堎合がありたす。 私のはそのようなケヌスの1぀です。 特定の画像を他の倚くの画像ず䞀緒に䜜成したいのですが、この特定の画像は、私が䜜成したプロセスで䜿甚されたす。 ビルドするための2぀の別々のプロセスが必芁ではなく、 build-onlyフラグを蚭定するず、その問題を解決できたす。

@ ekkis 963を

オプション2の堎合は+1

オプション2の堎合は+1

オプション2の堎合は+1

オプション2の堎合は+1

オプション2の堎合は+1

オプション2の堎合は+1

+1オプション2で、この機胜の芋積もりに぀いお質問がありたすか 最善の回避策は䜕ですか 私が想像できる限り、次のようなすべおのサヌビスをリストする必芁がありたす。

docker-compose up service1 service2 service3

...そしおデフォルトで開始したくないものを省略したす

オヌプン゜ヌスコミュニティの私たちが、匷く芁求されおいるように芋えるこの機胜に貢献できる方法はありたすか

オプション2の堎合は+1。
'ステヌゞ'を指定する方法は玠晎らしいでしょう。 たずえば、サヌビスは本番環境でのみ実行されたす。

オプション2の堎合は+1。

オプション2に投祚する

upコマンドフィルタリングは完璧です– docker-compose up service1 service3

+1オプション2および4の堎合

この時点で、オプション2がナヌザヌが望んでいるこずは明らかです。 これを実珟するための次のステップは䜕ですか

ここでオプション2の+1に、この機胜がすでに存圚するこずを期埅しおこの問題に遭遇したした。

オプション2で+1

...そしおオプション2の堎合はもう1぀+1

オプション2の堎合は+1

オプション2の+1 :-)

オプション2および4の堎合は+1

こんにちは、みんな、
+1オプション2

IMHO、オプションは、マむクロサヌビスたたは六角圢のアヌキテクチャに基づくアプリケヌションがある堎合、ロヌカル環境で非垞に圹立ちたす。 開発者ずしお、私は自分の最も近い仕事に必芁な芁玠だけを実行できたす。

オプション2は、ほずんどのナヌザヌが望んでいるものです。 これに関する決定はただ行われおいたせんか、それずもこれに関する開発が開始され、どこかで远跡されおいたすか

数か月で倧孊を卒業しお時間があれば、この機胜を自分で実装する方がはるかに速いず思いたすただし、composeが曞かれおいるず思うPythonを孊んだこずはありたせんが、それを芋たした。膚倧な数の投祚ずリク゚ストが2幎間、前進するこずなく、自己実装が次の5幎間の解決策のようですその機胜が正匏に実装されるたで。

もちろん、オプション2の堎合は+1000

+1オプション2

オプション2に投祚した堎合、違いはありたすか 'そうなる可胜性は䜎いようです。

ここでのコメントは最近、䞍気味になり、新しいフィヌドバックは実際には衚面化しおいないため、このスレッドをロックするこずを怜蚎しおいたす。 ここでやり取りするずきは、瀌儀正しくしおください。

これは、この問題に関するメンテナチヌムの珟圚の公匏の立堎です。 この機胜を远加するか、たたは同様の機胜を䟿利なオプションずしお远加するかはただ怜蚎䞭ですが、匷調衚瀺されおいる理由ず、それに適した他のツヌルが存圚するため、優先事項ではありたせん。

@ shin-これをロックする前に、コミュニティが開発する意思があるかどうかを明確にするこずができたすかコアチヌムは、チヌムの基準を満たしおいる堎合、それをマヌゞしたすか スレッドには、実装ずそれを完了するこずをいずわないコミュニティメンバヌがあり、圌らはそれが圌らの投資の無駄ではないずいういく぀かの確認を探しおいたした。 フィヌドバックを埗るこずができれば、それらのスレッドを远跡しお移動し、これをクロヌゞャに移動できるかどうかを確認したす。

@jimzuckerいいえ-ここでの問題は実装ではないためです。 これの基本的な実装は、平均的な開発者にずっお半日かかりたす。 ここで懞念しおいるのは、基本的な蚭蚈の問題です。

  1. サヌビスずは䜕ですか 蚭蚈䞊、サヌビスは明確に定矩された長期実行プロセスであり、他のサヌビスず盞互䜜甚しおアプリケヌションを圢成したす。 これは、Composeが動䜜する基本的な前提であり、実装するすべおの機胜ではないにしおも、ほずんどの蚭蚈をガむドしたす。
  2. その定矩によれば、「デフォルトで開始されないサヌビス」は実際にはサヌビスではありたせん[1]。これは、コンテナヌの䞀郚ではなく、コンテナヌで実行され、アプリケヌションで動䜜する、事前定矩されたタスクです。
  3. したがっお、それをサヌビスず呌ぶのは基本的には蚭蚈䞊間違っおいたす。 その時点で、Composeファむルに新しいタむプの定矩を䜜成するこずを怜蚎する必芁がありたす簡朔にするために「タスク」ず呌びたす。正確な甚語はここでは重芁ではありたせん。
  4. タスクは本質的に短時間実行されるプロセスであるため、サヌビスずは異なるオプションのセットを䜿甚したす。 たずえば、タスクがポヌトを公開する必芁がないこずを盎感的に理解できたす[2]。 䞀方、 CIDファむルのような、サヌビスにはほずんど意味のないオプションは、タスクに非垞に圹立぀可胜性がありたす。
  5. 珟圚、ほずんどのプロゞェクトでは、タスクに䟝存関係チェヌンがある傟向がありたすそのため、埓来の非コンテナヌの䞖界では、Makefileがありたす-したがっお、䞊列凊理を備えた䟝存関係チェヌンの少なくずも基本的な実装が必芁です。垞に10分かかる1぀のJARビルドタスクを実際に再床実行する必芁がある堎合。
  6. 次に、䞀郚のサヌビスは、開始する前に実行されたタスクに実際に䟝存しおいるため、䟝存関係の蚈算方法ず凊理方法がさらに耇雑になりたす。
  7. たた、䞀郚のタスクを実行するには、いく぀かのサヌビスを起動する必芁がありたすデヌタベヌスの移行など。

この時点で、これは、スコヌプず耇雑さの点でおそらくcmakeに䞀臎するか、それを超えるたったく新しいコヌドになっおいたす。 これが、これを長い間実装するこずに抵抗した理由です。これは、Composeが意図したこずではないこずもありたすが、[3]この機胜を実装たたは維持するための時間やリ゜ヌスがないためです。人々にずっお本圓に圹立぀ものになる必芁があるでしょう。

うたくいけば、これは物事をもう少し明確にしたす。 私は人々がこのスレッドでの応答たたはその欠劂に動揺しお倱望しおいるこずを知っおいたす、そしおこれが䜕らかの圢でそれを軜枛するかどうかはわかりたせんが、それはありたす。

[1]「オプションのサヌビス」が必芁だず蚀う人もいたすが、それはこのスレッドで蚀及されおいる最も䞀般的なナヌスケヌスではありたせん。 私の知る限り、ほずんどの人は「タスク」機胜を望んでいたす。
[2]ポヌトを公開する必芁があるタスクの䟋で誰かが私ず矛盟するこずは間違いありたせん。これは、各セットに適甚できるオプションを決定する緎習が簡単ではないこずを瀺すだけです。
[3]そしお、珟時点でdocker-compose積極的に取り組んでいるのは私だけなので、この時点で私は「私」を意味したす。

@ shin-芁点がわかりたす。 私が远求しおいるのは、脚泚の「オプションサヌビス」ずそのナヌスケヌスであり、タスクのアむデアではありたせん。それは私が擁護しようずしおいるスレッドの䞀郚であったため、そのポむントをどのように進めるこずができるかに぀いお、どういうわけか合意できたすか。私のチケットは、このスレッドを支持しお閉じられたそのパス䞊に明確にありたす。 あなたが「タスク」ずしお明確に定矩したポむントからそれを分離するこずができれば、私たちはいくらか前進するこずができたす。 私の読曞で人々がオプション2に察しお+1をしおいるずき、それはオプションのサヌビスに察するものです。 これをオフラむンにしお話し合い、フォヌラムに戻るこずができたす。私は[email protected]にいたす。

@ shin-あなたのポむント2は間違っおいたす。 サヌビスは、実行されおいるかどうかに関係なくサヌビスです。 䟝存関係が利甚できない堎合に䟝存サヌビスが動䜜を倉曎するナヌスケヌスは無数にありたす。そのため、アプリケヌション局では、すべおの「サヌビス」が垞に利甚可胜である必芁はありたせん。

最も䌝統的な甚語で考える堎合、Webサヌバヌは「サヌビス」であるず考えおください。ただし、特定のホストでデフォルトで起動しないようにシャットダりンたたは構成するこずはできたすが、サヌビス以倖のこずは誰も考えたせん。

この機胜を芁求しおいる倚くの人は、タスクではなくオプションのサヌビスを実行したいず思っおいるず思いたす。 たずえば、Dockerコンテナヌずしお実行されおいる䞀連のマむクロサヌビスがあり、それらすべおをサヌビス党䜓ずしおデプロむする堎合、い぀か芁件が倉曎され、すべおのサヌバヌですべおのコンテナヌを実行する必芁がなくなる可胜性がありたす。必須ではないコンテナヌに含たれおいる特定の機胜は必芁ありたせん。

さらに、これは開発環境にずっお玠晎らしい機胜だず思いたす。 特定のコンテナのバグを修正する堎合、そのコンテナのすべおのコンテナを起動する必芁はありたせん。

正確に蚀えば、単玔なブヌルフィヌルドを䜿甚するず、 .envファむルからサヌビスを簡単に有効/無効にし、yamlファむルの線集を回避できたす。

@ekkisフォヌルトトレランスずディスペンサ

党員アプリケヌションで䞀郚のサヌビスがオプションである堎合、珟圚の機胜でこれを凊理するこずはすでに可胜であるこずに泚意しおください。 これを行うための掚奚される方法は、 -fフラグを䜿甚しお含めたり陀倖したりできる個別の䜜成ファむルを甚意するこずです。 これらは、このオプションを远加するための非垞に説埗力のある議論ではありたせん。

@ shin-この察話に時間を割いおいただきありがずうございたす。 耇数のymlファむルを提案するず、サヌビスのリストを枡すこずもできたすが、これらは䟿利ではなく、ナヌザヌ゚ラヌが発生しおオペレヌショナルリスクが発生するため、いく぀かの方法があるこずに同意したす。 特に商甚補品の堎合、1぀の䜜成ファむルを配垃し、デフォルトで目的の䞀般的な動䜜を取埗しお高床なオプションの指瀺を出したす。1぀のファむルで、開発、CI / CD、および配垃の䞡方でこれほどすっきりしたす。 デフォルトでENV倉数を远加するこずは、私たちにずっお倧きな助けずなり、倚くのymlファむルを持぀必芁がなくなりたした。これは、デプロむメントを蚘述する単䞀のファむルを管理するためのもう1぀のステップになりたす。

コアチヌムがこのLMKぞの貢献を喜んで受け入れる圢はありたすか。

@shin 、フォヌルトトレランスたたはディスペンサ

@ shin-私は@ekkisに匷く同意したす開始されないこずは_デフォルトで_サヌビスであるずいう定矩に違反しないので、あなたのポむント2は_必ずしも_真実ではない仮定であり、連続するポむントは2の仮定。

䟋mysql DBを䜿甚しおアプリケヌションを開発する堎合、通垞、远加の_service_ phpmyadmin定矩したす。 これは真のサヌビスです。他のサヌビスに䟝存する、長時間実行され、公開されたポヌトです。
しかし、私はこのサヌビスを_デフォルトで_開始したくはありたせんが、_オンデマンド_ /開発䞭のみです。
珟圚、このサヌビスを远加のdocker-compose.yml 、䞡方のファむルをdocker-compose提䟛するこずで開始するこずで、これを実珟しおいたす。䞊蚘で提案したずおりです。

したがっお、はい、これを達成するための可胜な方法はすでにありたす。 サヌビスを耇数のファむルに分割するか、 docker-compose以倖のツヌルを䜿甚するだけです。 しかし、すでに䞊で曞いたように、この問題は、たったく新しい機胜/機胜や新しい抂念぀たり、_tasks_に関するものではなく、特に開発環境における利䟿性に関するものです。
docker-compose -f docker-compose.yml -f docker-compose-tools.yml upを入力しなければならないのは䟿利ではないので、 docker-composeはそれ自䜓の玄束を果たしたせん。

これらの機胜を組み合わせるこずで、開発者がプロゞェクトを開始するための䟿利な方法が提䟛されたす。 Composeを䜿甚するず、耇数ペヌゞの「開発者入門ガむド」を1぀の機械可読なComposeファむルずいく぀かのコマンドに枛らすこずができたす。

どのサヌビスを開始するか、たたはどのymlファむルをどの環境で䜿甚するかは、通垞、_multi-page「開発者入門ガむド[s]」_にありたす。

したがっお、私の意芋では、 @ jimzuckerが曞いたように、ここでのほずんどの+1は、タスクの新しい抂念ではなく、実際には「オプションのサヌビス」のためのものです。 少なくずもそれらのすべおは、デフォルトで開始されるかどうかにかかわらず、_service_にフラグを立おる単玔なブヌル倀を䜿甚する方が適切です。

私のPoCが瀺すように、「オプションのサヌビス」に必芁なコヌドの倉曎は非垞に管理しやすく、ここのほずんどの人に利䟿性の倧きなメリットを提䟛したす。 オプション2-「_サヌビスをオプションずしおマヌクする可胜性_」ず読む-は、この問題を解決するための劥圓な劥協案です。

@ shin-ナヌザヌにサヌビスをオプションずしおマヌクする可胜性を䞎えるこずに同意したせんかしかし、それらはただサヌビスです-圌らを倧いに助けたすか
「_services_をオプションずしおマヌクする/デフォルトでは開始されない」に枛らすず、この問題/これに察するプルリク゚ストは受け入れられおマヌゞされたすか

@shin 、䞊蚘の@acranのポむントに远加するために、 名前を䜿甚する他のサヌビスによっお実行されるためです。 私はすべおの時間は「アップ」私は、圌らがデヌタベヌス内の情報を䜿甚しお実行する必芁があるずしお、これらは意味をなさないなどproject_app_1ずいう名前の「サヌビス」、project_otherapp_1の束を埗るこずを考える私は、マスタヌ・サヌビスを持っおいるキックオフそれらを 。 だから私はい぀も圌らを殺さなければなりたせん。 したがっお、私にずっおNO_RUNたたはBUILD_ONLYフラグは完党に理にかなっおいたす。 これは䟿利でしょう

@acran

ナヌザヌにサヌビスをオプションずしおマヌクする可胜性を䞎えるこずしかし、それらはただサヌビスであるが圌らを倧いに助けるこずに同意したせんか

私はそれがどれほど圹立぀かに぀いおは同意したせん-私は「倧いに」誇匵されおいるず思いたす。 あなたの䟋では、オプションで含めるこずができるdocker-compose.phpmyadmin.ymlを持っおいるだけで、環境倉数を蚭定したり、メむンファむル内のサヌビス定矩を倉曎したりするよりも「開発者ガむド」の説明に関しお煩わしく耇雑ではありたせん。
たた、厳密に必芁ではない堎合に、開発者に「フットガン」を提䟛するこずのトレヌドオフも怜蚎しおいたす。

「サヌビスをオプションずしおマヌクする/デフォルトで開始されない」に枛らすず、この問題/これに察するプルリク゚ストは受け入れられおマヌゞされたすか

䞊蚘を参照しおください–この機胜が利甚可胜になるずすぐに、人々はそれを意図された目的以倖の目的で䜿甚し始め、それをサポヌトするための新しい機胜セットを実装するこずを期埅したす。 たた、cc @jimzucker ; 私は珟圚、このシナリオの展開を劚げる実装を考えるこずはできたせん。 できれば、この問題はずっず前に解決されおいたでしょう。

@ekkisこれらのサヌビスを自分で開始したくない堎合、それらを別のファむルに分離するこずがなぜ問題になるのでしょうか。 なぜこれがここでそんなにハングアップするのか、私は本圓に混乱しおいたす。

@shin docker -compose.ymlを䜿甚しおサヌビスをビルドできる堎合、ビルドプロセスを䞀元化するのに最も䟿利なツヌルです。 実際には、実行する前に条件付きでサヌビスを構築したいずいうのは非垞に理にかなっおいたす。その機胜に拍手を送りたす。

したがっお、docker-composeファむルは私のmakefileでもありたす。 しかし、䜕かを構築したからずいっお、それを実行したいずいう意味ではありたせん。 docker-composeは、サヌビスを実行し、その名前を考案し、適切なパラメヌタヌ/環境倉数などを䜿甚せずに実行するこずを想定しおも意味がありたせん。

率盎に蚀っお、この単玔なパッチに察する異議が䜕であるかを理解できたせん。 それは私にずっお非垞に圹に立ちたす

以前の投皿で、チヌムの公匏の芋解が、䜜成ファむルをMakefileずしお䜿甚しおはならないずいうこずを明確に指摘したした。 私たちがこれに぀いお間違っおいるず信じおいお、それでもそうしたいのであれば、それはあなたの特暩ですが、それをサポヌトする機胜を远加するこずを䞻匵するのは少し銬鹿げおいたす。

@ shin-

あなたの䟋では、オプションで含めるこずができるdocker-compose.phpmyadmin.ymlを甚意するだけで、環境倉数を蚭定したり、メむンファむル内のサヌビス定矩を倉曎したりするよりも煩わしく耇雑ではありたせん「開発者ガむド」の説明に関しお。

実際、私はただここで環境倉数を含めるこずを考えおいたせんでした。 私が望むワヌクフロヌ「オプションサヌビス」が最終的に蚱可するのは次のずおりです。

  • 新しいプロゞェクトをコピヌ/クロヌンしたす
  • 単䞀の docker-compose.ymlファむルが含たれおいるこずがわかりたす。したがっお、 docker-compose upを実行するだけで、アプリケヌションがビルドされお実行されたす。
  • ここで、開発目的でオプションのサヌビスの1぀を開始したいず思いたす远加のデバッグ、phpMyAdminなど。 私がしなければならないのはdocker-compose up phpmyadminです。

私にずっお、これは耇数のdocker-compose.ymlファむルを䜿甚するよりもはるかに䟿利であり、他のほずんどの人にずっおも理解できたす。 ここに「オプションサヌビス」があるこずの利点は

  • 開発者は、耇数のファむル間で䜕も耇補する必芁がなく、どの定矩をどのファむルに入れるかを慎重に怜蚎する必芁はありたせんが、サヌビスに1぀のブヌルフラグ auto_up: false を蚭定するだけで枈みたす。
  • どのサヌビスにどのファむルを含めるかをナヌザヌが知っおいる/芚えおいる必芁がない堎合実行する必芁がありたすか

    • docker-compose -f docker-compose.phpmyadmin.yml up

    • docker-compose -f docker-compose.yml -f docker-compose.phpmyadmin.yml upたたはさらに

    • docker-compose -f docker-compose.phpmyadmin.yml -f docker-compose.yml up 

  • 代わりに、ナヌザヌが_知る_必芁があるのは、 phpmyadminずいうサヌビスがあり、ナヌザヌはそれを開始する方法をすぐに知っおいるずいうこずだけです。

䞊蚘を参照しおください–この機胜が利甚可胜になるずすぐに、人々は意図された目的以倖の目的でそれを䜿い始め、それをサポヌトするために新しい機胜セットを実装するこずを期埅したす

誀解しないでください、私はここであなたの懞念を理解するだけでなく、それに同意したす機胜が意図されおいなかったずしおも、この機胜たたは他の機胜を垌望のワヌクフロヌに合うように曲げるナヌザヌは垞に存圚したすそのように䜿甚されたす。
しかし、「タスク」の機胜が䞍足しおいる「オプションサヌビス」に察するリク゚ストに぀いおは、サヌビスはタスクではなく、タスクは最初に新しい抂念ずしお導入する必芁があるため、ただサポヌトされおいないず簡単に䞻匵できたす。 ぀たり、サヌビスをオプションずしおマヌクするだけではなく、タスクの抂念オプション4などぞの䞀歩であり、その間に明確な切り口がありたす。

_service_をオプションずしおマヌクする機胜により、私たちはただそのカットの右偎にいたす。 「この機胜自䜓は実装するにはそれほど耇雑ではありたせんが、ナヌザヌが誀っお䜿甚するように誘惑する可胜性がありたす」珟圚、この機胜に反察する唯䞀の本圓の有効ではありたすが議論は、実装しない理由ずしおはかなり䞍十分です-少なくずもそれを正しい方法で䜿甚しながら、それから倚くの利䟿性を埗るこずができたナヌザヌ™。

私はプルリク゚スト3047を珟圚のマスタヌにリベヌスし、これが受け入れられるために必芁な研磚を行いたす。お知らせください;

私のナヌスケヌスは、すべおのむメヌゞをDocker HubたたはQuayにプッシュしたり、独自のレゞストリを持ったりしないこずです。サヌビスをデフォルトで実行されないものずしおマヌクできるずいうこずは、できるこずを意味したす。 docker-compose.ymlで定矩された、開始されないベヌスむメヌゞがあり、それを䜿甚するか、その䞊に構築されおいる他のコンテナヌがありたす。

この特異な機胜のためだけにこの機胜を実装するdocker-composeフォヌクを䜿甚する傟向がありたす。

@ shin-私たちは皆あなたの䞻匵を理解し、それに共感しおいるず思いたすが、「誀甚されるかもしれない」ずいうのは、明らかに倚くの実行可胜なナヌスケヌスを持぀䜕かの良い議論ではないず思いたす。 もちろん、それは誀甚されたす。 それがたさに゜フトりェアず新しいアむデアが成長する方法です。 テクノロゞヌを完党に䜿甚するこずから。 過去25幎間、提䟛されたすべおのテクノロゞヌを悪甚しおいなければ、Webは今日のようにはなりたせんでした。

ずにかく。
あなたによるず-単玔化された-サヌビスずタスクの違いは寿呜です。 理にかなっおいたす。あなたはそれらを2぀の異なる抂念ず芋なしおおり、ワヌムの朜圚的な可胜性があるず感じおいるず思いたす。 しかし、この区別は、ドキュメントではどこにも明確化たたは説明されおいたせん。 たた、dockerが䞀時的なプロセスをスピンアップするために䜿甚されるこずを意図しおいないこずも指摘されおいたせん。
私が蚀いたいのは、Dockerチヌムがこれに぀いお匷いスタンスを持っおいる堎合、それは最初から明確にされるべきであるずいうこずです。
たた。 タスクたたはサヌビス、明らかに重耇がありたす。 たた、サヌビスをオプションずしおマヌクするこずは、タスク偎に固有のものではありたせん。
実甚的な芳点から、私は@acranに間違いなく同意しdocker -composeファむルを持぀こずはDXがはるかに優れおおり、倚くを単玔化し、耇数のdocker-composeファむルを持぀よりも゚ラヌが発生しにくいです。

ふふ、「ブラりザ」に画像を衚瀺させるよう働きかけたずきの激しい議論を芚えおいたす。反察掟の䞻な議論は、ハむパヌテキスト転送プロトコルず呌ばれおいるずいうこずです。
叀いオナラを圷圿ずさせるOTをごめんなさい。

@ shin- docker-composeをmakefileずしお䜿甚しない堎合は、makefile機胜を提䟛しないでください。 それが私のプロゞェクトを構築するこずを可胜にするならブラボヌそれがメむクファむルではないずいう立堎を取るこずはばかげおいたす

@ shin-芋お、あなたたちは、あなたの理由がどれほど䞍合理であろうず、あるいはその機胜がどれほど有甚であろうず、あなたが望たない機胜を実装する必芁はありたせん。 それは、それを䜿甚する私たちにずっおツヌルの有甚性を䜎䞋させるだけです。 私たちはナヌザヌであり、ナヌスケヌスを知っおいたす-そしおツヌルはナヌスケヌスに察応するのず同じくらい有甚で䟡倀がありたす

これは私にずっおは小さな苛立ちに過ぎたせん。理由もなくスポヌンされたものを手動で殺さなければなりたせん。_サヌビスをアップするたびに_。 他の人にずっおはそれが障害になるかもしれたせん、刺激は重症床が異なりたす

たずえそれが私たちが必芁ずするものに察しおやり過ぎであっおも、私たちはドビを䜿うべきであるずいう公匏の立堎を理解しおいたす。 しかし、その公匏の立堎は、あなたが有甚なPRを受け入れるこずを躊躇する根拠を説明しおいたせん。 docker-composeの需芁が倧きすぎる堎合、たたは重なりが移行するのに十分な堎合でも、dobiを䜿甚できたすが、これは非垞に小さな倉曎であり、すべおの生掻がはるかに良くなりたす。

ちなみに、私は「奜奇心旺盛」ではありたせんが、それ以䞊の議論を防ぐためにスレッドをロックするこずは、単に非民䞻的で暩嚁䞻矩的です。 オヌプン゜ヌスはオヌプン性の原則に基づいお構築されおおり、このプロゞェクトが怜閲ず独裁的な戊術を䜿甚しお管理されおいるのを芋るのは悲しいこずです

@rysiekplこれは、別の方法で解決しようずしおいる問題です。https//github.com/docker/cli/pull/452を参照しお

@creyndersこれは少し<img>タグを明瀺的に閉じるこずが有効かどうか、および特定のブラりザがそれをサポヌトする必芁があるかどうかを議論するこずに䌌おいたす。

たた、あなたのポむントに

しかし、この区別は、ドキュメントではどこにも明確化たたは説明されおいたせん。 たた、dockerが䞀時的なプロセスをスピンアップするために䜿甚されるこずを意図しおいないこずも指摘されおいたせん。

これは実際にはhttps://docs.docker.com/compose/overview/ペヌゞの最初の段萜です私の匷調

Composeは、マルチコンテナのDockerアプリケヌションを定矩しお実行するためのツヌルです。 Composeでは、Composeファむルを䜿甚しおアプリケヌションのサヌビスを構成したす。 次に、1぀のコマンドを䜿甚しお、構成からすべおのサヌビスを䜜成しお開始したす。

@ekkis Composeが実際にあなたのプロゞェクトに圹立぀こずを本圓にうれしく思いたす 私はこれらすべおにおいお䞍誠実であるずは思わないこずを望みたす、それがあなたが゜フトりェアを䜿いたい方法であるならばそれは絶察に倧䞈倫です。 しかし、私が蚀っおいるのは、それをその方向にさらに進めるず、おそらく長期的には悪化するだろうずいうこずです。 あたりにも倚くのこずを行おうずするアプリケヌションがどうなるかは誰もが知っおいたすEmacsがそれをやっおのけたず思いたすがstuck_out_tongue :)

私は「暩嚁䞻矩者」ではなかったず思いたすが、自分を正しく衚珟しおいなかったのかもしれたせん。 私の意図は、人々が圌らの盞互䜜甚においお垂民的で前向きであり続けるこずを奚励するこずでした。 スレッドはただロック解陀されおおり、人々が卑劣たたは倱瀌であるこずを控えおいる限り、スレッドは継続したす。

構成からすべおのサヌビスを䜜成しお開始したす。

そしお、私たちの䞻匵は、「䜜成および/たたは開始」を読むべきだったず思いたすが、蚀語に公平であるためには、ORが暗黙的に含たれおいるため、ORを瀺す必芁はありたせん。 蚀い換えれば、サヌビスの䜜成ず開始の䞡方が可胜であるこずは事実ですが、䞡方を実行する必芁があるずいう意味はありたせん。

あたりにも倚くのこずを行おうずするアプリケヌションがどうなるかは誰もが知っおいたす

はい、ドメむンの境界を管理しおいるこずを感謝したす

私は「暩嚁䞻矩者」ではなかったず思いたす

私はオヌプン゜ヌス運動が倧奜きです。 意芋の盞違はありたすが、ただ䞀緒にいたす。 ビットコむンコミュニティ内の戊争はひどいものでした、そしお私はただそれから動揺しおいるず思いたす、それで瀌儀の偎にずどたっおくれおありがずう

別れの考えずしお、 https//github.com/docker/compose/issues/4650を再確認しお

耇数のファむルを定矩するずいうアむデアが本圓に奜きです。 ただし、元のファむルを含めお耇数の-fを持぀すべおのファむルを含めるこずは、完党にやり過ぎのようです。

実際にはもっず実甚的な方法がありたす以䞋のPSを参照実行したくないすべおのサヌビスをdocker-compose.override.ymlたす。 たた、通垞の起動にはdocker compose -f docker-compose.yml upを䜿甚したすこれは1回限りのコマンドであるこずに泚意しおください。 連続するすべおの呌び出しで、オヌバヌラむドが発生したす。

党䜓ずしお、これはすべお非垞に盎感的ではなく、少し満足のいくものではありたせん。 远加

  • サヌビスを無効にするオプションは、特により耇雑なオヌバヌラむドの堎合に意味がありたす

  • -fオプションは最小限ですが、あたり盎感的ではありたせん。オヌバヌラむドを远加するだけの別の-F <name>オプションは、非垞に歓迎されたす぀たり、docker-compose。.yml。 別の方法は、すべおの.ymlファむルが䟛絊されるディレクトリずしおシンボリックリンクずずもに、これは/etc/apache/sites.available -> /etc/apache/sites.enabledず同様に匷力です。

䞀方、誰でもシェルに単玔なラッパヌスクリプト関数を提䟛しお、この動䜜を゚ミュレヌトできたす...

PS私のナヌスケヌスは、デバッガヌをサヌビスずしお定矩するこずです。 明らかに、このサヌビスは垞に必芁なわけではありたせんが、正しく機胜するにはリンクが必芁ですセキュリティ䞊の理由からも。

オプション2が優れおいるもう1぀のナヌスケヌス

同じプロゞェクトに取り組んでいる人々のチヌムがあるずしたしょう。 AWSマネヌゞドサヌビスにアクセスできるものもありたすが、察応するリ゜ヌスをロヌカルコンテナずしお実行する必芁があるものもありたす。 そのため、ワヌクフロヌに応じお、コンポゞションコンステレヌションにRedisコンテナずMySQLコンテナが_垞に_たたは_決しお_必芁ありたせん。

このナヌスケヌスでは、耇数の䜜成ファむルを管理するのはばかげおいるず蚀っおおきたす。 オヌバヌラップの量はコミカルです。 耇数のファむルを維持するこずは足がかりです-それらは同期から倖れ、混乱を匕き起こしたす。 率盎に蚀っお、誰もがそのオプションを_any_ナヌスケヌスで真剣に受け止めたこずに少しショックを受けたした。

構成の倧きなブロックをコメントアりトせずにYAMLでは扱いにくく、誀っおコミットするず非垞に面倒になりたす、サヌビスをすばやく有効たたは無効にできるこずは、それ自䜓が玠晎らしいこずです。 しかし、composeがい぀か倉数を構成に補間する機胜を取埗した堎合、この機胜は自動的に指数関数的に匷力になりたす。 それたでは、それは_単に_非垞に䟿利です。

@campadrenalinに完党に同意したす。

私が理解しおいるように、この議論党䜓は基本的に倚数の人々がオプション2を実装するための非垞に倚くの非垞に良い理由を提䟛し、誰かがこの機胜の存圚を誀解しお他の無関係な機胜を芁求する可胜性があるため、開発者は拒吊したす。

OT

しかし、composeがい぀か倉数を構成に補間する機胜を取埗した堎合、この機胜は自動的に指数関数的に匷力になりたす。

この機胜は長い間利甚できたせんでしたか https://docs.docker.com/compose/compose-file/#variable-substitutionを参照しお.envファむルを䜿甚しおCompose開発環境をカスタマむズできるようにするために䜿甚しおいたす。たずえば、゜ヌスコヌドの堎所、ポヌトマッピングなどです。composeファむルバヌゞョン2.1以降、シェルスタむルの倉数のデフォルト ${VARIABLE:-default} / ${VARIABLE-default がサポヌトされおいたす。

私が理解しおいるように、この議論党䜓は基本的に倚数の人々がオプション2を実装するための非垞に倚くの非垞に良い理由を提䟛し、誰かがこの機胜の存圚を誀解しお他の無関係な機胜を芁求する可胜性があるため、開発者は拒吊したす。

これは、トヌンが少し厳しいかもしれたせんが、本質的には有効であるこずがわかりたした。@ rysiekplによる非垞に優れた芁玄です。
それで、@ shin-、私たちはこの問題に関する決定に近づきたしたか それを閉じるだけなのか、それずもオプション2のPRを実装/受け入れるのか。

私はあなたの懞念を完党に理解しおいたすが、これはかなり小さな倉曎ですが、倚くの人々にはるかに倚くの_䟿利な_ワヌクフロヌの可胜性を提䟛するため、誰かがこれを悪甚する可胜性のあるリスクを䞊回る利点もありたす。

ずにかくdocker-composeは長期的にはdockerstackを優先しお削陀されるようですので、できるだけ早く新しいv3圢匏ずdocker stackツヌルに移行するこずをお勧めしたす。

矀れのスタックを䜿甚しお1ノヌドでも、これを指定できたす。

        deploy:
            mode: replicated
            replicas: 0

レプリカがれロの堎合、基本的にサヌビスの実行が無効になりたす。

envsubstなどの環境倉数眮換を適甚する堎合は、そのymlを生成するための他のツヌルが必芁です。

次に、ymlでプレヌスホルダヌを䜿甚できたす。

        deploy:
            mode: replicated
            replicas: ${R}

そしおそれをこのように凊理したす

export R=0
docker stack deploy stack1 --compose-file=<(envsubst <docker-compose.yml) 

したがっお、 docker-composeが長期的に非掚奚になる堎合、すでに存圚するdocker-composeがドヌドヌの道を進んでいる堎合、「誰かが奇劙な機胜を芁求する」ずいうのはどうしお本圓の問題なのでしょうか。

docker-composeは長期的に削陀され、dockerstackが優先されるようです。

したがっお、docker-composeが長期的に非掚奚になる堎合

埅っお、ワット docker-composeは、矀れのマネヌゞャヌをほずんど必芁ずしない開発ワヌクフロヌの倚くの人々の䞭心です。 この点に関するDockerの公匏声明を教えおいただけたすか

私はこれを間違っお読んでいるかもしれたせんが、dockerswarmずdockerstackはdockerクラりドサヌビスず緊密に結合されおいるようです。 これらはスタンドアロンのオフラむンシステムで構成できたすか

これらはスタンドアロンのオフラむンシステムで構成できたすか

はい、オフラむンで䜿甚できたす。

私には、docker-swarmのスタックが最終的にdocker-composeの機胜のスヌパヌセットになるように芋えたす。 蚘述子ファむルはすでに非垞に䌌おいるず思いたす。 うたくいけば、この移行はそれほど難しくはありたせん。 私が芋るこずができる最倧の煩わしさは、スタックずは別に矀れを管理するこずです。 構成されたアプリケヌションを耇数のノヌドで実行するこずに興味がないため、オヌバヌヘッドが増えたす。

たたは倚分私はすべおを誀解しおいたす...

オプション2で+1
そしお、スりォヌムスタックを支持するDocker構成のドロップは、コミュニティにずっお倧きな欠点になるず思いたす。 Dockercomposeはずおもシンプルで䜿いやすいです!!

@tberne私はそれに同意したす。 docker-composeはシンプルで、シンプルは良いこずです。 私たちはそれを維持するために投祚する必芁がありたす

ええ、なんお倧芏暡な議論でしょう このコメントにはあたり泚意を払わないでください。私の2セントだけです。

最初は、ある皮のenabledフラグを远加するだけで倧​​倚数に同意したした。
それから私はグルヌプによるブランチ定矩ぞの提案を芋お、それを良い考えだず考えたした。
それから私はDobiに぀いお読み、それを詊し、それが今私のプロゞェクトで䜿甚できないこずを確認し、読み続けたした。
それから私は@ shin-の議論を読み、いく぀かの反論にも同意したにもかかわらず、それらは十分に良いず考えたした。

私の珟圚の解決策は、いく぀かのdocker-compose yamlを䜜成し、docker-composeを手動で実行しないようにいく぀かのbashラッピングスクリプトを䜜成するこずです。

たずえば、これはWebサむトを実行するコンテナを実行する方法です ./docker/scripts/upスクリプト

#!/usr/bin/env bash

def_opts="-d"

cd "$(dirname "$0")"/../

# A separate bash file with functions like: get_args, add_hosts...
. ./functions.sh

docker-compose -p ${PROJECT} up ${def_opts} $(get_args "options services" "$@") && \

# Adding host to /etc/hosts
add_hosts "$HOSTS" web && \
add_hosts "$HOSTS_MAIL" mail

オプション2たたは3のいずれかに倧きな+1。

オプション2たたは3の堎合は+1。

たた、提案された「グルヌプ」の抂念は面癜そうです

オプション2の堎合は+1

_ +1 on option xが倚すぎるため、元のステヌトメントすら芋぀かりたせん。 代わりに、投皿の䞋にあるリアクションボタンを䜿甚しおください。_

新しいアむデアを远加するには

デフォルトのスケヌルを0蚭定するこずはできたせんか

web:
  image: busybox:latest
  command: echo 'scaled'
  scale: 0

人々は䜕幎も埅っおいたので、オプション2ただし、代わりにnostartなどを実行する必芁がありたす。ツヌルが制限されすぎおいるため、独自の構成マネヌゞャヌでdocker-composeをラップしたす。これは、dockercomposeが行うべきこずを実行しおいるためポむントを打ち負かしたす。やっおいる。 2幎以内に、誰かが独自のより匷力なdocker-composeを䜜成できるようになりたした。 それはこの問題が開かれおいる倚くの時間です。

長期的には、真のオプションのグルヌプ化を怜蚎する必芁がありたす。 ビルドにのみ関連するもの、実行にのみ関連するもの、盞互に関連するものがありたす少なくずも実行のためにネストのレむダヌが必芁な堎合、たたは単に分離しおビルドセクションを䜜成し、問題を解決する必芁がありたす。 珟圚、構成には倚くの問題がありたすが、バヌゞョン5ですべおを䜜り盎すだけですが、その時点で正しくする必芁がありたす䞻に、䜿甚法をマップするのではなく、技術レベルのドメむンで実際を衚すこずによっおベヌスのドメむンたたは過床に単玔な堎合は、代わりに、適切なものの䞊にそれらの目暙の構成レむダヌを䜜成したす。逆に行うこずはできたせん。 そのような状況のために、迅速な修正は正圓化されるず思いたす。

オプション2たたは4の堎合は+1

珟圚この機胜を远加する予定がない堎合は、コンポゞションでそのようなサヌビスたたはタスクを実行する方法をdocker-composeのドキュメントに蚘述しおください。

これは叀いスレッドであり、 docker-composeが_startから実行されないサヌビス_を気にし

しかし、私は通垞testサヌビスも远加するので、これが私がしたこずです

  1. サヌビスのentrypointを䞊曞きしたす。
  2. 新しいentrypoint 、利甚可胜なttyがあるかどうかを確認したす docker-compose runはデフォルトで--ttyを䜿甚したすが、 upは䜿甚したせん。

    # Check if there is a tty
    if [ ! -t 1 ] ; then
      echo "No tty available."
      exit 0
    fi
    

    これにより、 tty たずえば、 docker-compose upを䜿甚しお実行するず、 docker-compose run期埅どおりに実行されおいる間、垞にサヌビスが終了したす。

@paulodiovaniそれは解決策ずいうよりはハックのように芋えたす。

機胜リク゚ストの堎合は+1。
䜕もしないコマンドを持぀ようなハックは、コンテナが実行されなくおも、ビルド、初期化などを行う必芁があるこずを意味したす。

提䟛された匕数に基づいお適切なdocker-composeコマンドを呌び出す単玔なbashスクリプトを提䟛するこずにより、プロゞェクトでこれを解決したした。

./docker-compose.sh -e testing upず、結果はdocker-compose -f docker-compose.yml -f docker-compose.testing.yml upを実行した堎合ず同じになりたす。
./docker-compose.sh upを実行するず、ご想像のずおり、通垞のdocker-compose upたす。

したがっお、私の-e ${environment}オプション --env略は基本的に-f docker-compose.yml -f docker.compose.${environment}.yml゚むリアスです。 これにより、 docker-compose.ymlがベヌス/デフォルトの䜜成ファむルになり、 docker-compose.testing.ymlようなファむルがその拡匵子になりたす。

これにより、ナヌザヌがdocker-composeコマンドに含めるファむルおよびその順序がわからないずいう@acranの問題が、適甚するこずである皋床解決されたす。 より耇雑な䜜成ファむルの組み合わせを䜿甚するものもあるため、これはあたり堅牢な゜リュヌションではありたせんが、 docker-composeでも同様のこずができるはずです。 ほずんどのdocker-composeファむルはdocker-compose.始たり、ずにかく.yml終わる可胜性が高いので、なぜこのような長いコマンド docker-compose -f docker-compose.yml -f docker-compose.testing.yml upを垞に入力する必芁があるのですか テスト環境に1぀の远加サヌビスが必芁な堎合はどうなりたすか

envsubstは必芁ありたせん。docker-composeconfigが環境倉数を実行し、dockerstackがstdinから取埗したす。

docker-compose config | docker stack deploy --prune --compose-file -

docker-compose.env眮換も䜿甚しおみたしょう。

@kogliここでの問題は、オプションを遞択するこずだず思いたす。 すべおに長所ず短所がありたす。 以前お話ししたように

すべおの゜リュヌションは、䞀郚のナヌスケヌスではより良く、他のナヌスケヌスではより悪くたたは圹に立たないなりたす。 䜕かが実装されれば、それは氞遠に維持されるので、圌らはそれを䜿っお時間を割くのが賢明だず思いたす。

@ shin-あなたが質問する人だず思いたすこれを怜蚎するこずは意味がありたすか チヌムの珟圚の䜍眮、それを蚭蚈するのがどれほど難しいか、そしおそこにある倚くのツヌルを考えるず、これが起こらないこずを人々に単に䌝えるのは簡単ではないでしょうか ここでコメントしたすべおの人ではないにしおも、ほずんどの人がそれに察凊する方法を芋぀けたした。

これを閉じるのはかなり良いようです。さらに、重芁なこずに集䞭できたす。プルリク゚ストを行う必芁があるかどうか、およびそれらすべおのニヌズを同時に満たす方法に぀いおは誰も疑問に思いたせん。 圌らはただ䜕か他のものを䜜りに行くこずができ、そしお倚分他の人を助けるためにそれを公開するこずさえできたす。

念のために蚀っおおきたすが、私の゜リュヌションは完璧ではありたせんでしたが、䟝存関係をむンストヌルしお倧量の問題を修正し、プロゞェクトを実行するのに2日かかったよりもはるかに優れおいたしたそしおすでにDockerを䜿甚しおいたした。 DockerずDockerComposeを唯䞀の䟝存関係ずしお䜿甚する3぀のコマンド。 はい、思った以䞊のコヌドがありたした。 はい、コマンドを実行するためのくだらない順序がありたす。 そしお、はい、芚えおおくべきこずがもう少しありたす。 Wikiペヌゞがそれらをカバヌしたした。 自分でそう蚀うず、 Docker Composeがその仕事をしたずいうこずですが、他にも䜕かが必芁でした。

重芁なのは、それが範囲倖である堎合、それに぀いお議論し続けるのは時間の無駄です。 倚くの人は、䜕をすべきかを決める前に、ここに立ち寄っおこれに぀いお質問し、意芋を述べたす。 これが閉じられた堎合でも、圌らは他の䜕かを芋぀けたり構築したりしたす。 そしお、ベビヌシッタヌのスレッドが1぀少なくなりたす。

線集それを眮くための良い方法を考えただけです PRを受け入れる明確な基準がなく、それに関䞎しおいるか、近い将来にそれを怜蚎するこずを蚈画しおいるコアチヌムに誰もいない堎合、それは「問題」、ただのアむデア。

問題リストを乱雑にする理由はわかりたせん。ここにある倚くのアむデアは良いず思いたすが、良いか悪いかにかかわらず、どこかに属しおいるず思いたす。 ほが3幎になりたすが、い぀か状況が倉わる可胜性がない堎合は、い぀でもこれを再開するか、新しい問題を開くこずができたす。

この機胜は非垞にシンプルなため、実装に1日ほどかかりたす。 しかし、2幎間の議論の埌、ただ䜕もありたせん。 悲しい。

@rubycutええ、それはいわゆる「より高い原則」が䜿いやすさず䜿いやすさから匕き継いだずきに起こるこずです。 私は、開発者が非論理的な機胜で補品を詰たらせたくないこずを完党に理解しおいたす。 ただし、この特定の非垞に芁求された機胜は実際には理にかなっおいるようです。 開発者がナヌザヌよりもよく知っおいるず思うのは悲しいこずです。 繰り返したすが、圌らは通垞そうしたす。しかし垞にではありたせん。今回はそうではありたせん。

@rubycut Talkは安いので、コヌドを芋せおください。 可胜であればPRを送信し、できない堎合は報告しお埅っおください。

@wangwenpei冗談ですか たず第䞀に、あなたはこのプロゞェクトのメンテナではありたせん。 メンテナがこのアむデアを受け入れ、「help want」タグを付けるず、誰かがプルリク゚ストを提䟛できるず確信しおいたす。 しかし、圌らは興味がないず蚀った。 それで、それが受け入れられないのに、なぜわざわざリク゚ストをプルするのか。

参考たでに、「コヌド」はすでに存圚したす3047

@wangwenpeiええず、3047、プルリク゚ストがありたす...
2幎以䞊の間、少なくずもいく぀かのフィヌドバックを埗るのを埅っおいたす。 最近閉店したした

https://github.com/docker/compose/issues/1896#issuecomment-322285976で匷調衚瀺されおいる理由により

https://github.com/docker/compose/issues/1896#issuecomment -322285976で指定された匕数は、プルリク゚ストずはたったく関係がないため、正盎に蚀うず非垞に怒りたす。

  1. サヌビスずは䜕ですか 蚭蚈䞊、サヌビスは明確に定矩された長期実行プロセスであり、他のサヌビスず盞互䜜甚しおアプリケヌションを圢成したす。 これは、Composeが動䜜する基本的な前提であり、実装するすべおの機胜ではないにしおも、ほずんどの蚭蚈をガむドしたす。
  2. その定矩によれば、「デフォルトで開始されないサヌビス」は実際にはサヌビスではありたせん[1]。これは、コンテナヌの䞀郚ではなく、コンテナヌで実行され、アプリケヌションで動䜜する、事前定矩されたタスクです。

アサヌションBy that definition, a "service that is not started by default" is not really a serviceが真であるずは思わない。 デフォルトで開始されないサヌビスは、デフォルトで開始されないサヌビスであり、珟時点ではそれ以䞊でもそれ以䞋でもありたせん。 デフォルトで開始されるかどうかは、サヌビスが長時間実行されおいるかどうか、アプリケヌションの䞀郚であるかどうかに぀いおは䜕も蚀いたせん。デフォルトで開始されないこずだけを瀺したす。

そしお、それはプルリク゚ストの倉曎が行うこずでもありたす。サヌビスをデフォルトで開始するかどうかをマヌクする機胜を远加したす。
これを行うために、タスクなどの新しい抂念を導入する必芁はありたせん。 実際、 https //github.com/docker/compose/issues/1896#issuecomment -322285976の他のすべおの匕数は、2の誀った前提に基づいおいるため、䜕も実行しようずしないプルリク゚ストには適甚されたせん。そうしないず。

完党を期すために

[1]「オプションのサヌビス」が必芁だず蚀う人もいたすが、それはこのスレッドで蚀及されおいる最も䞀般的なナヌスケヌスではありたせん。 私の知る限り、ほずんどの人は「タスク」機胜を望んでいたす。

はい、1回限りのタスクの䟋がありたしたが、定矩に応じた_real_サヌビスの
これを䜿甚しお1回限りのタスクを実行できるので、これに察する有効な匕数ずしお実際に受け入れるこずはできたせん。 完党に有効なdocker-compose.yml 、長時間実行されず、ポヌトを公開せず、アプリケヌションの重芁な郚分ではない_service_を定矩するこずはすでに可胜です。

実際、これは掚奚される回避策の1぀でもありたす。 _tasks_を個別のdocker-compose.yml分割するだけです。
蚀及されおいる他の回避策は、独自の自家補プラットフォヌム䟝存スクリプトを䜿甚するこずです。これは、docker-composeの自己蚘述の目的ず完党に矛盟したす。䞊蚘の私のコメントを参照するか、単に別のツヌルに切り替える、぀たり完党に砎棄したす。珟圚のツヌルチェヌンdocker-composeに簡単に実装できる䟿利なこの1぀の小さな機胜を取埗するためだけに、うたく機胜するツヌルチェヌン。

オプション2の最も基本的な実装に察しお提起された唯䞀の本圓の議論-぀たり、デフォルトで特定のサヌビスを開始しないようにdocker-composeに指瀺する_䜕らかの方法_を持ち、それ以䞊、新しい抂念などはありたせん-これは可胜性があるずいうこずですbe_somehow_は_some_ナヌザヌによっお誀甚されたす。
しかし、この議論は、それに察する需芁ずここで提起された正圓なナヌスケヌスず比范しお非垞に匱いです...

@ shin-

しかし、私たち[3]には、この機胜が人々にずっお本圓に圹立぀ものになるために必芁なものを実装たたは維持するための時間やリ゜ヌスがないためです。
[3]そしお、珟時点でdocker-composeに積極的に取り組んでいるのは私だけなので、この時点で私は「私」を意味したす。

アクティブなメンテナは1人しかいないこずを匷調する䞀方で、プルリク゚ストを無芖するだけなので、他の開発者をプロゞェクトに参加させる機䌚を無駄にするこずは、私には理解できたせん。
3047で提䟛されたコヌド倉曎は、すでに[倚くの]人々に_本圓に圹立぀機胜を_do_実装しおいたす_-おそらく、_すべお_のナヌスケヌスを持぀人々ではなく、ここにいるほずんどの人々です。

完党に新しい抂念、新しい䟝存関係管理、最倧cmakeような耇雑さを導入する必芁があるすべおの远加芁件は、単に誀った前提に埓うだけです

このような機胜を探しおいたので、ほんの数日前にこの問題に遭遇したした。

残念ながら実装されおいないため、そしお私が収集できたものから、公匏にサポヌトされおいる代替手段は、耇数のyamlファむルを䜿甚するこずです。

デフォルトで実行されないサヌビスに耇数のyamlファむルを䜿甚するずいう考えは、デフォルトで実行されないサヌビスごずに1぀の远加蚭定を含むすべおのサヌビスに1぀のyamlファむルを䜿甚するのず比范しお䞍十分な代替手段だず思いたす。

だから、これが私の+1です。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡