1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerfileとdocker-compose.ymlとは?役割と違いをわかりやすく解説

Last updated at Posted at 2024-11-14

Dockerfiledocker-compose.ymlの役割や使い分け、関連性について説明しますね。

1. Dockerfile

  • Dockerイメージを作成するための設計図です。
  • 各ステップに従って、ソフトウェアや設定がイメージに組み込まれます。
  • たとえば、Dockerfileには次のような情報を記述できます:
    • ベースイメージ(例:FROM ubuntu:20.04
    • 必要なソフトウェアのインストールコマンド(例:RUN apt-get install -y python3
    • アプリケーションの実行に必要な設定(例:COPYでアプリケーションファイルをコピーしたり、CMDで実行コマンドを指定する)

使用例:

# ベースイメージを指定
FROM python:3.9

# アプリケーションコードをイメージにコピー
COPY . /app

# 作業ディレクトリを設定
WORKDIR /app

# 必要なパッケージをインストール
RUN pip install -r requirements.txt

# アプリケーションを起動するコマンド
CMD ["python", "app.py"]

2. docker-compose.yml

  • 複数のコンテナを管理するための設定ファイルです。
  • アプリケーションが複数のサービス(たとえば、Webサーバーとデータベース)で構成される場合、それらをまとめて起動・管理するのに便利です。
  • docker-compose.ymlでは、どのDockerfileを使うか、ネットワーク設定、ボリュームの設定、依存関係などを指定できます。
  • コマンド一つで複数のコンテナを連携して起動したり停止したりできるので、開発やテストに非常に便利です。

使用例:

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/app
    depends_on:
      - db
  db:
    image: postgres:13
    environment:
      POSTGRES_USER: example
      POSTGRES_PASSWORD: example
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Dockerfileとdocker-compose.ymlの関連性

  • Dockerfileは、各サービスのイメージの作成に必要で、個々のコンテナの動作環境を定義します。
  • docker-compose.ymlは、全体を構成する複数のコンテナの起動や設定に使われ、Dockerfileを基にした各サービス(コンテナ)の関連性を管理します。

まとめ

  • Dockerfile:個々のコンテナイメージの設計図を定義。
  • docker-compose.yml:複数のコンテナをまとめて管理し、相互に連携させる設定。

これにより、アプリケーションを構成する複数のサービスを手軽に扱えるようになります。

1
0
1

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?