お疲れ様です,Mass です.
いつも開発環境の立ち上げ時にDev Containerで楽をしていてDockerの使い方を忘れるので備忘録を残します.
環境構築
Dockerのインストールは省略.
Docker Desktopを利用.
Docker 編
1. Dockerfile作成
Dockerfileの配置場所は任意.
# FROMはベースとなるコンテナのOSイメージを指定
# AS [ステージ名] でステージ名を定義
FROM ubuntu:latest AS builder
# WORKDIRはディレクトリの絶対パスを指定
# この命令を書いた行以降はこのディレクトリで操作が行われる
WORKDIR /app
# RUNは指定されたシェルコマンドを実行
# build-essential は ビルドツールをまとめたパッケージ
# apt-get clean と rm -rf /var/lib/apt/lists/* はイメージサイズ縮小用
RUN apt-get update && apt-get install -y \\
build-essential \\
&& apt-get clean \\
&& rm -rf /var/lib/apt/lists/*
# CMDはコンテナ起動時にデフォルトで実行されるコマンド
# RUN はレイヤを作るが,CMDはレイヤを作らない点に注意
# 起動後に対話形式で操作がしたかったためbashを起動(exec形式で記述)
CMD ["/bin/bash"]
#ビルドターゲットステージがdevの場合,以下をbuilder部分の実行後に実行
FROM builder AS dev
RUN apt-get update && apt-get install -y \\
git \\
curl
RUN git config --global --add safe.directory /app
#ビルドターゲットステージがprodの場合,以下をbuilder部分の実行後に実行
FROM builder AS prod
# COPYは指定したファイルやディレクトリをコンテナ内にコピーする
# COPY [コピー元] [コピー先]
COPY ./src /app/src
2. Dockerイメージ作成
docker build
Dockerfileがあるディレクトリにてdocker build
コマンドを実行.
# docker build <DOCKERFILE_DIRECTORY> -t <IMAGE_NAME>:<TAG>
docker build . -t hogeimage:latest
docker image ls
でイメージの作成に成功したか確認する.
docker image ls
3. Dockerコンテナ作成&起動
docker run
docker run
コマンドで作成&起動.{IMAGE ID}
の部分はdocker image ls
を実行した際に表示されたIMAGE IDを指定する.
docker run -it [IMAGE ID]
docker start
コンテナ作成後はdocker start
コマンドで起動.
docker run [CONTAINER ID]
4. Dockerコンテナ停止&削除
docker stop
docker stop
コマンドでコンテナを停止.
docker stop [CONTAINER ID]
docker rm
コンテナ停止後docker rm
コマンドでコンテナを削除.
docker rm [CONTAINER ID]
5. Dockerコンテナ内に入る
docker exec
docker exec
コマンドでコンテナ内に入り,bashシェルを立ち上げ.
docker exec -it [CONTAINER_NAME] bash
Docker Compose 編
1. Dockerfile作成
Docker編と同じなので省略.
2. compose.yml作成
Docker Compose を利用することで複数のコンテナを一括管理できる.(今回は単一コンテナ)compose.yml
にコンテナ構成を記述する.
services:
app: #サービス名
build:
context: . # docker build コマンドを実行した場所を指定
target: dev # マルチステージビルドのターゲットステージを指定
volumes:
- .:/app # ホスト-コンテナ間のファイルマウント設定 [ホスト側]:[コンテナ側]
env_file:
- .env # 環境変数のパスを指定
ports: # ホスト-コンテナ間のポートマッピング設定 [ホスト側]:[コンテナ側]
- 8080:8080
2. Dockerイメージ作成
docker-compose build
docker-compose build
コマンドでイメージのみの作成ができる.
docker-compose build
3. Dockerコンテナ作成&起動
docker-compose up
docker-compose up
コマンドでイメージのキャッシュがある場合はイメージの構築から,コンテナの作成&起動を行う.
docker-compose up
イメージのキャッシュが無い場合は--build
オプションをつけることでイメージの作成から行う.
docker-compose --build
docker-compose start
docker-compose start
コマンドで既存のコンテナを起動.
docker-compose start
4. Dockerコンテナ停止&削除
docker-compose down
docker-compose down
コマンドでコンテナの停止&削除を実行.
docker-compose down
docker-compose stop
docker-compose down
コマンドでコンテナの停止のみ実行.
docker-compose stop
5. Dockerコンテナ内に入る
docker-compose exec
docker-compose exec
コマンドでコンテナ内に入り,bashシェルを立ち上げ.
docker-compose exec [サービス名] bash