LoginSignup
4
3

Dockerfileとdocker-compose.ymlの書き方をまとめてみた

Last updated at Posted at 2023-05-21

はじめに

Dockerfiledocker-compose.ymlの書き方についてまとめてみました

事前知識

Dockerfiledocker-compose.ymlの書き方に入る前にDockerとは何かそしてDocker Composeとは何かについて簡潔にまとめます。

Dockerとは

コンテナ仮想化技術を使って、アプリケーションを開発、配置、実行するための隔離された環境を提供するツール

コンテナとは

パソコンやサーバ上で隔離され干渉されない環境のこと

Docker Composeとは

複数のコンテナを定義して操作するためのツール

Dockerfileとは

Dockerイメージを作成するためのファイル
Dockerfileを使い以下の順番でコンテナ作成が出来る

docker-compose.ymlとは

複数のコンテナを定義するためのファイル

Dockerfileの書き方

代表的なDockerコマンド

コマンド 意味
FROM DockerHubで公開中の元イメージを指定
LABEL 作成者情報・バージョンを指定
COPY イメージにファイルを追加
ADD イメージにファイルを追加。圧縮ファイル指定時は圧縮まで実行される。
RUN イメージをBuildする際に実行するコマンド
CMD コンテナ起動の際に実行するコマンド
ENTRYPOINT イメージ実行時に強要するコマンド
USER RUNCMDENTRYPOINTで指定のコマンドを実行するユーザー
WORKDIR RUNCMDENTRYPOINTADDCOPYの際の作業ディレクトリ
ENV 環境変数を設定
ONBUILD Build完了時に実行するコマンド
EXPOSE イメージ利用者にポートを解放
VOLUME イメージ利用者に永続データが保存される場所を解放
ARG docker build時に指定する引数

Dockerfile記述例

FROM node:18

CMD["npm","start"]

docker-compose.ymlの書き方

ファイル名は必ずdocker-compose.ymlとする必要がある
YAMLファイルは大きくversionservicesnetworksvolumesから構成されている

docker-compose.yml
version: [バージョン]

services:
    コンテナ1:
    コンテナ2:

networks:
    ネットワーク名1:
    ネットワーク名2:

volumes:
    ボリューム名1:
    ボリューム名2:

version

Docker Composeで使用するバージョンを指定する

services

services項目内にコンテナ作成に以下の必要な設定情報を定義していく

項目 意味
image DockerHubで公開中の元イメージを指定
build 作成者情報・バージョンを指定
container_name イメージにファイルを追加
networks イメージにファイルを追加。圧縮ファイル指定時は圧縮まで実行される。
volumes イメージをBuildする際に実行するコマンド
volumes_from コンテナ起動の際に実行するコマンド
ports イメージ実行時に強要するコマンド
environment RUNCMDENTRYPOINTで指定のコマンドを実行するユーザー
depends_on RUNCMDENTRYPOINTADDCOPYの際の作業ディレクトリ
restart 環境変数を設定
command Build完了時に実行するコマンド
env_file イメージ利用者にポートを解放
entrypoint イメージ利用者に永続データが保存される場所を解放
logging docker build時に指定する引数
external_links 設定する外部リンク
network_mode ネットワークモード設定

networks

作成するネットワーク名を定義する

volumes

作成するボリューム名を定義する

参考記事

【Docker】Dockerfileとは|書き方・コマンド一覧・イメージ作成手順を徹底解説
Docker Composeとは|仕組み・使い方・YAMLファイルの書き方に至るまで徹底解説!
Docker ドキュメント日本語化プロジェクト

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3