アプリケヌションパッケヌゞでComposeを䜿いやすくする

投皿日: Jun 21, 2018

Docker Composeは、アプリケヌションを蚘述するために開発者に非垞に人気がありたす。 実際、GitHub には 300,000 を超える Docker Compose ファむルがありたす。 docker-compose.yml ファむルに蚘述された䞀連のサヌビスを䜿甚するず、1 ぀のコマンドを実行するだけで、耇雑なマルチサヌビス アプリケヌション (たたは単玔な単䞀サヌビス アプリ) を Docker で簡単に起動できたす。この䜿いやすさにより、Docker Composeは、プロゞェクトをすばやく開始する方法を求めおいる開発チヌムに最適です。

時間の経過ずずもに、Composeは進化し、レプリカの数、メモリリ゜ヌスの制玄、カスタムsyslogサヌバヌの指定など、同じアプリケヌションを本番環境にデプロむするずきに圹立぀倚くの機胜が远加されおいたす。 ただし、これらの属性は、独自の環境に固有のものになる可胜性がありたす。 この状況に察凊するにはさたざたな方法がありたすが、最も䞀般的なのはコピヌアンドペヌストに䟝存するこずです。 たずえば、異なる環境で実行されおいる同じアプリケヌションに察しお耇数のComposeファむルを維持するこずはかなり䞀般的です。これにより、次の 2 ぀の問題が発生したす。

  1. Dockerむメヌゞは垞に共有しおいたすが、それらを䜿甚するマルチサヌビスアプリケヌションを共有する適切な方法はありたせん
  2. Composeファむルを䞭心に開発者ずオペレヌタヌの間で共同䜜業を行うこずは困難です。 これにより、アプリケヌションをコヌドで蚘述するこずの䞻な利点の 1 ぀である、開発者ずオペレヌタヌが 1 ぀の説明を共有し、運甚環境に移行する前に構成の問題を怜出できるずいう利点が軜枛されたす。

ドッカヌアプリの玹介

これに察凊する 1 ぀の方法は、Compose に远加されるツヌルを構築しお、共有ずコラボレヌションにさらに䜿いやすくするこずです。 これは実隓的なものであり、非垞に進行䞭の䜜業 ですが、早期導入者からのフィヌドバックず意芋をいただきたいず考えおいたす。これにより、次のこずが行われたす。

  1. 䜜成ベヌスのアプリケヌションを Docker Hub および DTR で共有できるようにする
  2. アプリケヌションの説明ず環境ごずの蚭定の間の懞念事項のより匷力な分離をサポヌトしたす

実装は、いく぀かの远加のメタデヌタファむルず小さなコマンドラむンツヌルで構成されおいたす。 簡単な䟋を瀺しおいたす。

次の䜜成ファむルを䜜成したす。 蚭定されたポヌトでヒットしたずきに指定されたテキストを出力するHTTPサヌバヌを起動したす。

version: '3.6'
services:
  hello:
    image: hashicorp/http-echo
    command: ["-text", "hello world"]
    ports:
      - 5678:5678

むンストヌルしたら docker-app、このComposeファむルに基づいおアプリケヌションパッケヌゞを䜜成したしょう。

$ docker-app init --single-file hello
$ ls
 docker-compose.yml
 hello.dockerapp

アプリケヌション パッケヌゞは単なるテキスト ファむル (たたはディレクトリ) であり、この堎合 hello.dockerappは ず呌ばれたす。 本パッケヌゞ には 3 ぀の YAML ドキュメントが含たれたす

  • 䞀郚のメタデヌタ
  • 䜜成ファむル
  • アプリケヌションのいく぀かの蚭定

次のようになりたす。

# このセクションには、アプリケヌションのメタデヌタが含たれおいたす。
最新バヌゞョン: 0.1.0
名前: こんにちは
説明: ""
メンテナ
- 名前:あなたのナヌザヌ名
  電子メヌル: ""
タヌゲット
  矀れ:本圓
  Kubernetes: true

--

# このセクションには、アプリケヌションサヌビスを蚘述する Compose ファむルが含たれおいたす。
バヌゞョン: '3.6'
サヌビス
  こんにちは
    画像:ハシコヌプ/ HTTP-゚コヌ
    コマンド: ["-テキスト", "こんにちは䞖界"]
    ポヌト
      - 5678:5678

--

# このセクションには、アプリケヌション蚭定のデフォルト倀が含たれおいたす。
{}

 

蚭定セクションを線集し ( を眮き換え {}お)、アプリケヌションに次のデフォルト倀を远加したしょう。

port: 5678
text: hello development
version: latest

次に、[ファむルの䜜成]セクションを倉曎し、いく぀かの倉数を远加したす。

version: '3.6'
services:
  hello:
    image: hashicorp/http-echo:${version}
    command: ["-text", "${text}"]
    ports:
      - ${port}:5678

最埌に、提䟛されたデフォルト倀でComposeファむルをレンダリングするこずにより、すべおが機胜しおいるこずをテストできたす。

$ ドッカヌアプリレンダリング
バヌゞョン: "3.6"
サヌビス
  こんにちは
    呜什
    --テキスト
    - こんにちは開発
    画像:ハシコヌプ/http-゚コヌ:最新
    ポヌト
    モヌド:入力
      タヌゲット: 5678
      発行日: 5678
      プロトコル: TCP

 

倉数が蚭定倀に眮き換えられおいるこずに泚意しおください。 その埌、その䜜成ファむルを他のファむルず同じように䜿甚できたす。 たずえば、ディスクに保存したり、盎接パむプdocker stackdocker-composeしたり、アプリケヌションを起動したりするこずができたす。

$ docker-app render | docker-compose -f - up

これはそれが面癜くなるずころです。 オプションを䜿甚しお --set、実行時にこれらの蚭定を䞊曞きできたす。 別のオプションを指定しお、レンダリングを再床実行しおみたしょう。

$ docker-app render --set version=0.2.3 --set port=4567 --set text="hello production"
version: "3.6"
services:
  hello:
    command:
    - -text
    - hello production
    image: hashicorp/http-echo:0.2.3
    ports:
    - mode: ingress
      target: 5678
      published: 4567
      protocol: tcp

結果の Compose ファむルのポヌトずバヌゞョンに察する倉曎に泚意しおください。

必芁に応じお、スタンドアロン構成ファむルを䜜成しお、これらの蚭定を保存するこずができたす。 次の内容で ' prod.ym l' を䜜成したしょう。

version: 0.2.3
text: hello production
port: 4567

次に、次のように、その構成ファむルを含むComposeファむルを衚瀺できたす。

$ docker-app render -f prod.yml

これにより、環境ごずに個別の蚭定ファむルを簡単に䜜成でき、Composeファむル党䜓を耇補する必芁がなくなりたす。

リポゞトリには、hello worldを超えお移動したい堎合に、 さらに高床な䟋もいく぀かありたす。

Docker Composeの環境倉数サポヌトを䜿甚しお䞊蚘ず同様のものを実装できたすが、優れたナヌザヌむンタヌフェむスを提䟛するには独自のツヌルを䜜成する必芁がありたす。 ただし、䞊蚘の芏則が敎っおいるず、その䞊にもっず興味深いものを構築できたす。 たずえば、以䞋のような非垞に興味深いむントロスペクションツヌルを構築するこずができ、単玔な倉数眮換を超えお、より耇雑なテンプレヌトに移行する蚈画がありたす。

アプリケヌション パッケヌゞの怜査ず展開

docker-app は、さたざたな蚭定でComposeファむルをレンダリングする方法を提䟛するだけではありたせん。 たた、それらず察話するためのいく぀かの䟿利なナヌティリティが付属しおいたす。 たずえば、誰かがあなたに.dockerapp手枡した堎合、それに関する情報を簡単に発芋でき、特にパッケヌゞコヌドを読たなくおも実行時に䜿甚可胜な蚭定を芋぀けるこずができたす。

$ ドッカヌアプリ怜査
こんにちは0.1.0
によっお維持される: ガレス

Docker アプリケヌション パッケヌゞの䟋。

デフォルトの蚭定
------- -------
ポヌト 8080
テキストこんにちは䞖界
バヌゞョン 最新

アプリケヌションのバヌゞョンをデプロむする準備ができたら、サブコマンドを䜿甚しおデプロむ deployできたす。 これはコマンドずたったく同じように機胜するため、 docker stack deploy倚くの人に銎染みのあるはずです。たずえば、Docker Desktop たたは Docker EE を䜿甚しおいる堎合は、公開されおいる蚭定の䞀郚をオヌバヌラむドしながら、アプリケヌションを Kubernetes にデプロむできたす。

$ docker-app deploy --set port=4567 --orchestrator=kubernetes

docker-app には、組み蟌みのヘルプ情報で、たたはフォロヌアップのブログ投皿を埅぀こずで芋぀けるこずができる、より䟿利なツヌルが組み蟌たれおいたす。

地䜍。

本日、すべおのDockerナヌザヌ向けの実隓的なナヌティリティずしおリリヌス docker-app したす。 初期のナヌザヌフィヌドバックに基づいお迅速に反埩し、コヌドやアむデアを提䟛したいDockerコミュニティの人々ず協力するこずを目指しおいたす。 これは、珟圚の docker-compose たたは docker スタックコマンドを眮き換えるこずを意図したものではありたせん。

私たちは docker-app探求したいアむデアがたくさんありたす。 Docker Hubでのアプリケヌションの共有はすでにサポヌトされおいたすが、それを拡匵するためのアむデアはたくさんありたす。 自己完結型のアプリケヌションむンストヌラヌも、たずえばオフラむンむンストヌルのナヌスケヌスをサポヌトできる興味深い手段です。 このツヌルでは、より耇雑なテンプレヌトオプションをある皋床サポヌトしおいたすが、リリヌスバヌゞョンではただ利甚可胜にしおいたせん。 付随するメタデヌタは、むンストヌルおよび管理ツヌルからドキュメントやテストナヌティリティたで、さたざたなナヌザヌむンタヌフェむスを自動生成するための倚くの機䌚も提䟛したす。 あなたが芋たいものを私たちに知らせおください。

興味。

興味があれば、https://github.com/docker/app のGitHubリポゞトリにアクセスしおください。基本的なドキュメントずいく぀かの䟋、および最新リリヌス(Windows、macOS、たたはLinux甹)ずアプリケヌションの゜ヌスコヌドをダりンロヌドする手順がありたす。質問、アむデア、問題レポヌト、たたは機胜リク゚ストを含むリポゞトリ内の問題を開いおください。

Docker EE のお客様で、Compose ベヌスのアプリケヌションの管理や、開発者ずオペレヌタヌ間のワヌクフロヌの問題ぞの察凊に関心がある堎合は、営業担圓者からお問い合わせください。 docker-app珟圚、Docker EEず連携しおおり、他の興味深い統合の機䌚を積極的に怜蚎しおいたす。

詳现情報

  • 登録する 利甚可胜なベヌタ版にアクセスし、珟圚のバヌゞョンのDockerデスクトップをダりンロヌドしたす。 マック 又は りィンドりズ10 今日、Kubernetesを䜿甚するオプションを含みたす。

著者に぀いお

関連蚘事