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であり、実際にコンテナを作成する方法がすぐにわかります。