Masayan tech blog.

  1. ブログ記事一覧>
  2. Dockerコマンド1発でDockerfile、compose.yml、.dockerignoreを自動生成する

Dockerコマンド1発でDockerfile、compose.yml、.dockerignoreを自動生成する

公開日

手順

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からこれらのファイルを用意しつつ、全てを理解して最適化するのはかなり難易度が高いので、コマンドによる自動生成をぜひ参考にしてみてください