- Docker v24
はじめに
久しぶりにDockerで開発環境を構築する際に手間取ったため、備忘録として開発環境構築手順を残しています。
Docker Desctopのインストールなど、Dockerの利用準備は済んでいる前提です。
環境構築の流れ
-
compose.yaml
を作成する - 追加操作が必要なサービス毎に
Dockerfile
を用意する -
docker compose up -d
でコンテナを確認
1. compose.yaml
いわゆるdocker-compose.yml
です。最新のDockerだとcompose.yaml
が推奨されているようなので、この記事ではそちらで統一しています。後方互換性があるのでどちらでも大丈夫です。
まずはcompose.yaml
を作成し、必要なサービス毎にコンテナを定義します。
↓はNuxt3とMySQLで作る場合の一例です。
name: my-project # プロジェクト名
services:
# サービス名
front:
# コンテナ名を指定しない場合は{プロジェクト名}-{サービス名}-{連番}が自動で設定される
container_name: my-project-front # コンテナ名
build: docker/front # Dockerfileの場所
volumes:
# ホスト側のディレクトリをコンテナ側にマウント
- ./src:/app:cached
- nuxt_node_modules:/app/node_modules
ports:
# ポートフォワーディング
- "3000:3000"
- "24678:24678" # Nuxt3 HMR
tty: true # コンテナ内でコマンドを実行するために必要
environment:
# 環境変数
- HOST=0.0.0.0
- port=3000
- CHOKIDAR_USEPOLLING=true # Nuxt3 HMR
mysql:
image: mysql:8.0 # イメージ
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
ports:
- 3306:3306
volumes:
- mysql-data:/var/lib/mysql
volumes:
# ボリュームの定義
nuxt_node_modules:
mysql-data:
2. Dockerfile
次に作成時に追加操作が必要なコンテナにDockerfile
を用意します。
↓はNuxt3用Dockerfileの一例です。
# Node.jsのイメージを使用
FROM node:20-slim
# タイムゾーンを設定
ENV TZ Asia/Tokyo
# 作業ディレクトリを設定
WORKDIR /app
# パッケージをインストール
RUN apt-get update \
&& apt-get install -y \
git \
vim
3. コンテナを作成し、開始する
docker compose up -d
コマンドはcompose.yaml
で定義したサービス用コンテナの構築、(再)作成、開始をまとめておこなってくれます。
-d
オプションは--detach
の略でバックグラウンドでコンテナを実行します。
用語
Dockerで使われる用語について、自分なりに簡潔にまとめています。
Docker とは
アプリケーションを開発、配布、実行するためのオープンプラットフォーム。
コンテナ型の仮想環境を運用する。
コンテナ
一つのOS上で、CPU・メモリ・プロセス空間などが独立した仮想環境。
Dockerイメージ
コンテナ作成の元となるテンプレートファイル。
Dockerボリューム
コンテナ上のデータを永続化するための場所。
コンテナが破棄されても消えないようにするため。
Dockerfile
Dockerイメージにレイヤーを追加するためのテキストファイル。
ネット上に公開されているイメージだと足りない部分をDockerfileに追記する。
Docker Compose
複数のコンテナを起動したりする Yamlファイル。
ここでフロント、DB、バックエンドコンテナのように記述しておくことでcompose up で即起動できるようになる。