手順
Docker Desktop App
ver 4.18 以降のDocker Desktop Appを用意する。
ソースコード
今回はnodeのコンテナを作るために、expressのサーバーを起動するためのソースコードを用意する
プロジェクトの初期化、依存関係インストール
npm init
npm install express
サーバー起動用のスクリプトを追加("start")の部分
package.json
{
"name": "sample",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js"
},
"author": "",
"license": "ISC",
"dependencies": {
"express": "^4.18.2"
}
}
Expressサーバー起動用のコード
const express = require("express");
const app = express();
const port = 3000;
app.get("/", (req, res) => {
res.send("Hello World!");
});
app.listen(port, () => {
console.log(`App listening on port ${port}`);
});
Dockerコマンドの実行
docker init
Welcome to the Docker Init CLI!
This utility will walk you through creating the following files with sensible defaults for your project:
- .dockerignore
- Dockerfile
- compose.yaml
Let's get started!
まず、このアプリケーションで使われているプラットフォーム(言語)を選択する。この際、プロジェクトのソースコードから検知されたものは(detected)と表記されるので、基本的にはEnterの連続になる
? What application platform does your project use? [Use arrows to move, type to filter]
> Node - (detected) suitable for a Node server application
Go - suitable for a Go server application
Python - suitable for a Python server application
Rust - suitable for a Rust server application
ASP.NET - suitable for an ASP.NET application
Other - general purpose starting point for containerizing your application
Don't see something you need? Let us know!
Quit
Nodeのバージョンを聞かれる
? What version of Node do you want to use? (18.16.1)
パッケージマネージャーを選択
? Which package manager do you want to use? [Use arrows to move, type to filter]
> npm - (detected)
yarn
pnpm
アプリケーションを起動するためのコマンドをきかれる
? What command do you want to use to start the app? [tab for suggestions] (npm start)
アプリケーションの起動ポートを聞かれる。今回は3000で待ち受けているので、3000とする
? What port does your server listen on?
これだけで、.dockerignore、compose.yaml、Dockerfileが自動生成される
CREATED: .dockerignore
CREATED: Dockerfile
CREATED: compose.yaml
✔ Your Docker files are ready!
Take a moment to review them and tailor them to your application.
When you're ready, start your application by running: docker compose up --build
Your application will be available at http://localhost:3000
動作確認
docker-compose up -d
http://localhost:3000/にアクセスしてHello worldが表示されていれば成功
まとめ
いかがでしたでしょうか。本記事では、Dockerfile、compose.yml、.dockerignoreを自動生成するdocker initコマンドについて紹介しています。1からこれらのファイルを用意しつつ、全てを理解して最適化するのはかなり難易度が高いので、コマンドによる自動生成をぜひ参考にしてみてください