コンテンツにスキップ

Dockerfile と Docker イメージのビルド

uml diagram

Dockerfile

Dockerfile リファレンス — Docker-docs-ja 24.0 ドキュメント

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# ベースにNode.jsイメージを使用する
FROM node:20.16.0

# アプリケーションを動作させるディレクトリを指定する
WORKDIR /usr/app

# アプリケーションをコピーする
COPY . .

# 依存関係をインストールする
RUN npm i

# アプリケーションを起動するためのコマンドを記載する
CMD ["npm", "run", "start"]

docker-compose.yml

docker-compose.yml

Docker イメージのビルド

1
2
3
# -t: イメージ名を設定する。"名前:タグ"の形式になる。タグは省略するとlatestになるらしい。
# 末尾の".": カレントディレクトリに置かれているファイル全てを対象にDockerイメージをビルドする。
$ docker build -t $IMAGE_NAME .

トラブルシューティング

設定が反映されない、正しく動作しない

初回起動時はコンテナのビルドが必要なのでdocker-compose up --buildで起動する。(以降は--buildはいらない)

Docker Compose でサービス間で通信できない

localhostのハードコーディングを見直す

コンテナ内においてlocalhostコンテナを動作させているマシンではなくコンテナ自身を指す。

別のコンテナの URL を定義する場合は、localhostではなくdocker-compose.ymlで定義したサービス名を使用する。

ポート設定を見直す

サービス間で通信するときのポートはホストにマッピングしたポートではなくコンテナ側のポートになるので注意すること。