Dockerから始める


あなたが時間の任意の量のソフトウェアやWeb開発にされている場合、チャンスはあなたが少なくともDockerの聞いたことです.多分、あなたは私のようです、そして、それが固まるか、固まるのが難しく見えるので、それを使うことを避けました.
まあ良いニュースは、それは実際には超簡単です.この記事では、私があなたがこれまで学んだことからDockerで始めることができるいくつかの方法をあなたに示します.

何がDockerですか?


さらに進む前に、Dockerが実際にあるものを定義しましょう.Dockerは、すべての依存関係に加えて、アプリケーションをパッケージ化し、単一のユニットにパッケージ化することができます.
これは、任意のマシン上のどこでも、任意のマシンで、このDockerコンテナを実行すると、アプリケーションが同じ環境を持っているので、同じように動作します.
Dockerコンテナは仮想マシンのようですが、それぞれのコンテナが実際にカーネルを共有していることを除いて、各インスタンスの仮想オペレーティングシステムを作成し実行するオーバーヘッドの多くを排除します.

なぜDocker?


よく、うまくいけば、あなたはすでにこれらの孤立した容器(各々の彼ら自身の環境で)を持つことに大きな利益があるということをすでに見ることができます.すべてのソフトウェア開発と展開サイクルをはるかに簡単にするので、一度コンテナを設定しているので、その環境は外部要因によって変更されません知っている.
コンテナのアプリケーションを構築するだけでなく、Dockerも非常にテストを作成するための人気がありますintegrating them in to your CI/CD workflow . 再び、これは、各テストが完全に新鮮で隔離された環境で実行されることを保証することができますので、テストは他のテストからの副作用によって影響を受けることはありません.
最後に、あなたが迅速に起動し、その上でDockerコンテナを停止することができますので、Dockerとプログラム上でいくつかの本当にクールなものを行う機会がたくさんあります.例えば、ある会社がありますRemote Interview それは企業が潜在的な従業員のためのコードテストを設定することができます.候補はコードオンラインを提出します、遠いインタビューソフトウェアはいくつかのテストを走らせます、そして、候補が通過するか、失敗するならば、候補はわかります.そして、どんな技術が候補コードをテストするのに使用しますか?もちろん、チェッカー!候補がコードの新しい部分を提出するたびに、それは彼らのコードをテストするために新しいDockerコンテナを回します.彼らは親切にもpublic GitHub repo それで、あなたはそれがどのように働くかについて、あなた自身でわかることができます.

例を始める


以下のすべての例はJavaScript/NodeJSプロジェクトのためのものですが、異なる言語/フレームワークのためにそれらを修正するのはかなり簡単です.
私もあなたのマシンにDockerをインストールしていることを想定しています.あなたがそうしないならば、現在それをしてください.
Docker Desktop Download page

ハローワールド


チュートリアルチュートリアルは、こんにちは世界の例なしで完了するでしょうか?
を作成するindex.js ファイルと単一の行を与える
console.log('Hello World');
その後、JavaScriptファイルと同じディレクトリにDockerfile (はい、拡張モジュールなし).これはDockerコンテナのイメージをビルドするためのファイルです.イメージはDockerコンテナを作成するためのテンプレートです.Dockerfileは次のようになります.
FROM node:latest
WORKDIR /hello-world
COPY ./index.js .
CMD ["node", "./index.js"]
その線を一列に通して歩きましょう.
  • ノードから:最新Docker Hub 我々自身のイメージのためのベースとして使うことができる予め構成されたDocker画像の何千も持っています-ので、可能性は常にあなたのアプリケーションのベースイメージを見つけることができるでしょう.私たちのケースでは、ノードのアプリケーションを実行できるように設定されているすべてのノードを最新のノードイメージから開始したいと思います.
  • Workdir/hello world -コンテナ内の作業ディレクトリを設定するhello-world .
  • コピー.インデックス.jsコピーするindex.js 私たちのマシンからDockerコンテナのワーキングディレクトリにファイルします.
  • cmd ["node ","/index . js "]-ノードを実行するindex.js entrypointとして.
  • 現在、我々は我々のイメージを構築する必要があります.コンソールウィンドウを開き、index.js and Dockerfile ファイルと型:
    docker build -t hello-world .
    
    これは、1のタグでDocker画像を作成しますhello-world からDockerfile このディレクトリの中.ここでは、このコンテナを実行するためにDockerに指示するタグを使用します.
    docker run --rm hello-world
    
    The --rm ここでフラグを実行すると、コンテナが削除されます.これは一般的に良い考えです、さもなければ、あなたはあなたのマシンに座っている何千ものアイドル容器で終わります.
    万事うまくいったら、あなたは今見るべきだHello World 画面に印刷.おめでとう!これで、Dockerであなたの最初のアプリケーションを実行している.

    GithubリポジトリからDockerコンテナを作成する


    私は、ユーザーがgithubリポジトリURLを提出することによってテストのために彼らのコードを提出することができるところで働いているプロジェクトのために、これを思いつきました.私はそれがあまりにもDockerで行うことができます他のクールなもののいくつかを披露し、うまくいけばそれはあなたのアプリケーションにも便利になると思います!
    このDockerコンテナはもう少し複雑でダイナミックにする必要があるので、Dockerコンテナ上で動作するbashシェルスクリプトを作成します.したがって、新しいディレクトリを作成し、ファイルを作成することから始めますdocker.sh :
    #!/bin/bash
    repository_url=$1
    branch=$2
    
    git clone --single-branch --branch $branch $repository_url 
    
    cd $(ls -d */|head -n 1) #cd to first directory
    
    yarn install
    yarn test
    
    もう一度この行を説明します.
  • #!/bin/bash - Linuxでは、これはshebangとして知られています.ただ、bashスクリプトであることをコンソールに伝えます
  • リポジトリは$ 1/branch = $ 2 - 1 & $ 2です.ここでは、変数を変数に代入します.Dockerコンテナを起動するとき、私たちはGITHUBリポジトリURLと私たちがクローンにしたいブランチをコンテナに引数として渡します.
  • GitクローンGitリポジトリをクローンし、希望するブランチをチェックします.The --single-branch オプションは、その分岐のみをダウンロードし、コンテナを実行するときに時間を節約します.
  • 糸のインストール/糸のテスト-これは、我々がクローンしているGithubリポジトリは、Apackages.json テストスクリプトが定義されたファイル.これはすべてのノード依存関係をインストールし、テストスクリプトを実行します.もちろん、これをよりダイナミックにすることについて考えることができますが、それは私の目的のためにうまく動作します.
  • 同じディレクトリで、我々は再び我々の必要Dockerfile :
    FROM node
    
    RUN apt-get update
    RUN apt-get install dos2unix -y
    
    COPY docker.sh /test/docker.sh
    WORKDIR /test
    RUN dos2unix ./docker.sh
    
    ENTRYPOINT ["./docker.sh"]
    
    はい、インストール中ですdos2unix そして、私の./docker.sh ファイル.Windowsマシンでbashシェルスクリプトを書いた場合にのみ必要です.これは、スクリプトが正しく実行するために、行の終了をWindowsからUnix形式に変換する必要があるためです.
    を指定することでdocker.sh entrypoint(現在の引数なしで)スクリプトとして、このスクリプトはDockerコンテナを起動するときに実行されます.また、我々の引数を選択することができますdocker run コマンドは、動的にテストするリポジトリを選択することができます.
    では、以下を実行します.
    docker build -t github-repo .
    docker run --rm github-repo https://github.com/walpoles93/basic-jest-test.git master
    
    私は、Aをセットアップしましたbasic Github repo that you can use for this tutorial . うまくいけばそれもあなた自身のプロジェクトの出発点として役立つでしょう!
    すべてうまく行って、Gitリポジトリがクローンされ、Jestテストがプロジェクトに対して実行されるのを見るべきです.

    結論


    このチュートリアルでは、Dockerから始める簡単な方法をいくつか提供しています.うまくいけば、あなたはDockerが結局それほど怖くないのを見ることができます、そして、実際に、それはコンテナを走らせることが非常に単純で簡単です.もちろん、それを達成することができますより複雑なものが、これはあなたのDockerの旅に良い出発点として機能します.
    このチュートリアルが役に立つ場合は、それを共有し、それをしてください.このような内容については、このブログに従ってください.あなたが望むならば、あなたはまたbuy me a coffee ! 😊