Dockerが開発者環境を構成する理由


この記事はもともとmy blog
新しい仕事の喜び.
あなたの最初の日に、導入の後、あなたの最初のタスクを与えられます:プロジェクトを取得し、あなたのdevボックスで実行する.
このタスクにはWikiへのリンクがあります.
  • ダウンロードX
  • Y
  • をインストールする
  • を実行します
  • はZ
  • にZをコピーします
  • は確かにfooを作ります、しかし、バー
  • でない
  • .
  • あなたは、それが終わるつもりである方法を知っています.そして、あなたが疑問を持っていた場合には、あなたの新しい上司が確認します.
    「それはおそらく少しの日付ですので、あなたがどんな問題を見つけるならば、あなたがそれを更新することができますか?」
    日後、あなたは勝利をemerge、あなたの達成を誇り、あなたの顔に笑顔で:あなたの更新された指示は、次の人の参加は、永遠に感謝されるように正確です.

    または


    wikiの指示は、チームの各メンバーが一度だけ試練を通過する必要があることを考えると、十分な解決策のようです.以外は
  • 新しい、光沢のあるdevのボックスを取得します.
  • あなたのDEVボックスは死にます.
  • あなたは別のプロジェクトに移動します.
  • あなたは、元のプロジェクトに戻ってください.何ももう動作しません.
  • 新機能ZooKeeper、およびすべてのローカルZooKeeperクラスタを設定する必要があります!
  • あなたのオペレーティングシステムはアップグレードされます、そして、「あなたのfavデータベースを挿入してください」はもう起動したくありません.DLL地獄へようこそ.
  • あなたのチームがまだ維持している古いプロジェクトはMaven 2.1.1を必要としますが、現在のプロジェクトには3.3が必要です.
  • Polyglotマイクロサービス会社!Maven、Gradle、NPM、糸、ノード、make、go、ruby、rake、lein、sbt、rebar、Cassandra、MongoDB、redis、PostgreSQL、CouchBaseをインストールします
    しかし、時々いくつかのコンポーネントは、いくつかの未知の理由は、どうにか、作業を停止し、それは再び開始しません.

    Dockerの作成


    Dockerの構成は、1つのファイルを使用して、マルチコンテナシステムを定義し、Dockerでそれらを実行するには、システムを分離するプライベートネットワークを作成することができますツールです.
    DockerはPostgresを起動するファイルを作ります.
    version: "3"
    services:
      postgres:
        image: postgres:9.5
        volumes: 
          - ./db-provision:/docker-entrypoint-initdb.d/
        ports: 
          - 5432:5432
      redis:
        image: redis:3.2.9
    
    プロジェクトのコンテナーを構成することができますし、Docker Composeは新しい環境を作成することができますし、内部コンテナとDevボックスの間のポートとファイルの一部をマッピングできます.
    以下のようになります.

    Dockerを使用してローカル開発環境を設定して実行します.

    ハウ
    システムを設定し起動するコマンド
    ドッカー合成
    新しいコンポーネントをアップグレードまたは追加するコマンド
    Dockerの作成-ビルド
    システムを停止するコマンド
    ドッカー構成停止
    システムのトレースを片づけるコマンド
    Dockerはダウンを構成します
    正確で反復可能なプロセス
    Docker構成ファイルはマシンによって実行されますので、不正確な余地はありません.あなたがイメージの不変のバージョンを使用することを確認してください.
    決して時代遅れになる過程
    チームが彼らの発展のために日常的にDockerを使用するので、システムのどんな変更もDockerファイルの中でされなければなりません.
    バージョン管理可能なプロセス
    Dockerファイルはプレーンテキストで、プロジェクトソースコードの残りの部分と並びます.
    実験を可能にする過程
    システムを破壊し、再構築するのは簡単ですし、Dockerファイルをロールバックすることができますので、コンポーネントの新しいバージョンを試したり、構成を処理したりするリスクはありません.
    同じプロジェクトまたは複数のプロジェクトのバージョンよりも
    残念ながら、これはおそらくDocker Composeファイルで公開されたポートのいくつかを再マップするいくつかの手動フィドルを必要としますが、少なくともすべてのポートは1つのファイルにあります.その後の単純な:Dockerの作成- p私のプロジェクトを1つ- D ;マイ・プロジェクト・アゲイン

    環境のような生産か?


    Dockerについて話すとき、通常言及される利点の1つは、それがどこでも環境のような生産を走らせることができるということです.
    確かにこれは大きな利益です.あなたのCIサーバはバージョンのようなプロダクションに対してテストを実行するべきです、そして、あなたは局所的にそのようなバージョンを走らせることができなければなりません、しかし、日々の開発経験のために、あなたは速いフィードバックサイクルを考慮に入れるセットアップを望みます.
    たとえば、それぞれの変更ごとにJavaScriptファイルを最小化したくないので、いくつかのオートリフレッシュが必要になります.
    高速フィードバックだけでより重要です.
    この開発環境には、プロジェクトが必要とするビルドツールが含まれている必要がありますので、セットアップ手順には「インストールMaven/NPM」ステップはありません.それらのツールはDockerコンテナ内に来るはずです.この方法では、チーム内の誰もが同じ操作版で同じツールバージョンを使用します.

    結論


    あなたが生産にDockerを使用しない場合であっても、それはちょうど設定を作るか、dev環境をアップグレードするためにそれを使用する価値があります.
    このプロセスは可能な限り「Docker作成」に近いはずです.それ以上.
    あなたのdevボックスをいくつかの大きなグローバルな可変変数として扱うな.使用してDockerの作成は、素敵な不変の1つとして扱います.
    あなたは、Dockerがローカル開発者環境を構成する方法のhere a detailed exampleを持ちます.