やりたかったこと
Dockerが提供するNodeイメージからコンテナを作成しexpressのインストールを行いブラウザ上で「HELLO WORLD」表示までできたが、毎回立ち上げるたびに作業が発生して面倒くさい(楽したい)ので、Dockerfileを使ってみました
やったこと
- 環境構築
・Dockerインストール
・自身のPCに作業用ディレクトリ作成 - コーディング
・expressのルーティングで使用するindex.js作成
・コンテナ作成時に使用するDockerfileの作成 ★今回のメイン - Dockerfileからコンテナを作成
・DockerfileからDockerImageを作成
・作成したImageからコンテナを立ち上げ
・立ち上げたコンテナへブラウザからアクセス Fin
環境構築/Dockerインストール & 自身のPCに作業用ディレクトリ作成
まずはとりあえずDockerを使えるようにインストールをしていきます。
Docker公式サイトよりDocker Desktop on Windowsをインストール
適当なパスに作業用のフォルダを作成してください。
私はドキュメント配下に「node」というフォルダを作成しています。
コーディング/expressのルーティングで使用するindex.js作成
作成したnodeフォルダ配下に以下のファイルを作成
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("HELLO WORLD");
});
app.listen(80, () => {
console.log("Start server on port 80");
});
コーディング/コンテナ作成時に使用するDockerfileの作成
index.jsと同様にnodeフォルダ配下に以下のファイルを作成
FROM node:latest
WORKDIR /var/www
RUN npm install express
COPY ./index.js /var/www/.
CMD ["node","index.js"]
Dockerfileからコンテナを作成/DockerfileからDockerImageを作成
コマンドプロンプトor PowerShellより以下のコマンドを実行しDockerImageを作成する
cd <自身で作成したnodeフォルダ>
docker build -t express-image .
cdでnodeフォルダに移動しないとdocker build
コマンドがDockerfileが見つからないためエラーとなるので注意してください。
Dockerfileからコンテナを作成/作成したImageからコンテナを立ち上げ
コマンドプロンプトor PowerShellより以下のコマンドを実行し作成したImageをベースにしたコンテナを作成
docker container run -it --name express -p 8000:80 -d express-image
自身のPCですでに8000ポートを使用している場合、同一ポートを複数アプリで使用することになりエラーが発生します。その際には8000の部分には使用していないポート番号を指定してください。
Dockerfileからコンテナを作成/立ち上げたコンテナへブラウザからアクセス
任意のブラウザ(GoogleChrom/safari/InternetExplorerなど)からhttp://localhost:8000
へアクセス
以下の画面が表示されればExpress環境の構築完了です!お疲れ様でした~