Dockerfileは、Dockerイメージを構築するためのレシピです。
これがワークフローです。最初にDockefileを作成し、次にdocker buildを使用してDockerイメージをビルドしました。 、最後に画像からコンテナを実行します。
Dockerfileは、イメージの作成方法を説明したテキストファイルです。
これらの手順は、FROMなどのキーワードを含む構成言語の一部です。 、LABEL 、RUN 、COPY 、ENTRYPOINT 、CMD 、EXPOSE 、ENV など。
最初のDockerfileを作成しましょう:
app.jsで構成される単純なNode.jsアプリを含むフォルダーがあるとします。 、package.json アプリを実行する前にインストールする必要のあるいくつかの依存関係をリストしたファイル、およびpackage-lock.json 。
その中に、Dockerfileという名前のプレーンテキストファイルを作成します 、拡張子なし、このコンテンツ:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json app.js ./
RUN npm install
EXPOSE 3000
CMD ["node", "app.js"] 注:二重引用符を使用してください
CMDで ライン。一重引用符はエラーになります。
最初の行で、どの画像から始めたいかを示します。これがベースイメージになります。この場合、ノード14を使用してAlpine Linuxに基づく公式のNode.jsイメージを取得します。Dockerfileからコンテナーを作成する場合、DockerはDockerHubからそのイメージを取得します。
次に、作業ディレクトリを/usr/src/appに設定します 、つまり、再度変更するまで、すべてのコマンドがそのフォルダーで実行されます。これは、ノードイメージにすでに存在することがわかっているフォルダです。
package.jsonをコピーします 、package-lock.json (*を使用 ワイルドカード)およびapp.js 現在のフォルダの作業ディレクトリにあるファイル。
npm installを実行します package.jsonにリストされているパッケージをインストールするには ファイル。
次に、ポート3000を外部に公開します。これは、アプリが実行されているためです。 EXPOSEを使用してそのポートの1つを公開しない限り、コンテナはネットワークから100%分離されます。 指図。コンピューターのポートをDockerコンテナーのポートにマップする方法については後で説明します。
最後に、node app.jsを実行します アプリを起動します。
これはDockerfileであり、実際にコンテナを作成する方法がすぐにわかります。