https://qiita.com/ryome/items/ab23eeadf3c2ff6b35bd
最終更新日 2024年02月09日投稿日 2024年01月11日
事前知識
GitHub
今回の記事で紹介したソースコードをGitHubで公開しています。
実行方法
以下コマンドで各項目が実行できます。
コマンド
docker-compose up -d
DB関連
DynamoDB
docker-compose.yml
version: '3.8'
services:
  dynamodb-local:
    image: amazon/dynamodb-local
    ports:
      - "8000:8000" # ローカルポート8000をコンテナの8000ポートにマッピング
    volumes:
      - dynamodb-data:/home/dynamodblocal/data # データの永続化
    command: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"
  dynamodb-admin:
    image: aaronshaf/dynamodb-admin
    environment:
      DYNAMO_ENDPOINT: http://dynamodb-local:8000
    ports:
      - "8001:8001" # ローカルポート8001をコンテナの8001ポートにマッピング
    depends_on:
      - "dynamodb-local"
volumes:
  dynamodb-data: # データボリュームの定義
このdocker-compose.ymlファイルは、Amazon DynamoDB LocalとDynamoDB Adminという2つのサービスを定義しているDocker Composeの設定ファイルです。
1. dynamodb-local
このサービスは、AmazonのDynamoDB Localを使用しています。
DynamoDB Localは、AWSのDynamoDBのオンプレミスバージョンで、開発やテスト目的でローカル環境でDynamoDBを模倣するために使用されます。
- イメージ: amazon/dynamodb-localは、DynamoDB Localの公式Dockerイメージです。
- ポート: "8000:8000"は、ホストマシンの8000ポートをコンテナの8000ポートにマッピングします。これにより、ホストマシンの8000ポートを通じてDynamoDB Localにアクセスできます。
- ボリューム: dynamodb-data:/home/dynamodblocal/dataは、コンテナ内のDynamoDB Localのデータをホストマシン上の名前付きボリューム(dynamodb-data)に保存します。これにより、コンテナが停止または削除されてもデータが保持されます。
- コマンド: "-jar DynamoDBLocal.jar -sharedDb -dbPath ./data"は、DynamoDB Localを起動するためのコマンドです。-sharedDbオプションにより、すべてのクライアントが同じデータベースインスタンスを共有し、-dbPathオプションでデータの保存場所を指定しています。
2. dynamodb-admin
このサービスは、DynamoDB Localのデータを管理するためのWebベースの管理ツール、DynamoDB Adminを使用しています。
- イメージ: aaronshaf/dynamodb-adminは、DynamoDB AdminのDockerイメージです。
- 環境変数: DYNAMO_ENDPOINT: http://dynamodb-local:8000は、DynamoDB Adminが接続するDynamoDB Localのエンドポイントを指定します。
- ポート: "8001:8001"は、ホストマシンの8001ポートをコンテナの8001ポートにマッピングします。これにより、ホストマシンの8001ポートを通じてDynamoDB Adminにアクセスできます。
- depends_on: depends_on: - "dynamodb-local"は、dynamodb-adminサービスが起動する前にdynamodb-localサービスが起動していることを保証します。
volumes
- dynamodb-data: このセクションで、dynamodb-dataという名前のデータボリュームが定義されています。これはdynamodb-localサービスで使用され、データの永続化を可能にします。
MySQL
docker-compose.yml
version: '3.8'
services:
  mysql:
    image: mysql:8.0
    volumes:
      - mysql-data:/var/lib/mysql # データの永続化
      - ./my-custom.cnf:/etc/mysql/conf.d/my-custom.cnf # カスタム設定ファイル
    environment:
      MYSQL_DATABASE: mydb
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      MYSQL_ROOT_PASSWORD: rootpassword
    ports:
      - "3306:3306" # ホストマシンのポートをコンテナにマッピング
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_HOST: mysql
      PMA_PORT: 3306
    ports:
      - "8080:80" # ホストマシンのポート8080をコンテナの80ポートにマッピング
    depends_on:
      - mysql
volumes:
  mysql-data: # データボリュームの定義
このdocker-compose.ymlファイルは、MySQLデータベースサーバーとphpMyAdminインターフェースをセットアップするためのDocker Composeの設定です。
1. mysql
このサービスはMySQLデータベースを構築します。
- イメージ: mysql:8.0は、MySQLのバージョン8.0を使用することを指定しています。
- ボリューム:
- mysql-data:/var/lib/mysql: これにより、MySQLのデータはDockerボリューム(- mysql-data)に保存され、データの永続性が保証されます。コンテナが削除されても、データは保持されます。
- ./my-custom.cnf:/etc/mysql/conf.d/my-custom.cnf: これはホストマシンのカスタム設定ファイル(- my-custom.cnf)をコンテナ内のMySQL設定ディレクトリにマウントします。これにより、デフォルトの設定を上書きできます。
 
- 環境変数: MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD,MYSQL_ROOT_PASSWORDこれらはMySQLの初期設定(データベース名、ユーザー名、ユーザーとrootのパスワード)を定義します。
- ポート: "3306:3306"はホストマシンの3306ポートをコンテナの3306ポートにマッピングします。これにより、ホストからMySQLサーバーにアクセスできます。
2. phpmyadmin
このサービスは、WebベースのMySQLデータベース管理ツールであるphpMyAdminを提供します。
- イメージ: phpmyadmin/phpmyadminはphpMyAdminの公式Dockerイメージです。
- 環境変数:
- PMA_HOST: mysqlはphpMyAdminが接続するMySQLホスト(この場合は- mysqlサービス)を指定します。
- PMA_PORT: 3306はMySQLのポートを指定します。
 
- ポート: "8080:80"はホストマシンの8080ポートをコンテナの80ポート(phpMyAdminのデフォルトポート)にマッピングします。これにより、ホストの8080ポートを通じてphpMyAdminにアクセスできます。
- depends_on: depends_on: - mysqlは、phpMyAdminサービスが起動する前にMySQLサービスが起動していることを保証します。
volumes
- mysql-data: このセクションで、mysql-dataという名前のデータボリュームが定義されています。これはmysqlサービスで使用され、MySQLデータベースのデータの永続化を可能にします。
PostgreSQL
docker-compose.yml
version: '3.8'
services:
  postgres:
    image: postgres:14
    volumes:
      - postgres-data:/var/lib/postgresql/data # データの永続化
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql # 初期化スクリプト
    environment:
      POSTGRES_DB: mydb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    ports:
      - "5432:5432" # ホストマシンのポートをコンテナにマッピング
  pgadmin:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: root
    ports:
      - "5050:80" # ホストマシンのポート5050をコンテナの80ポートにマッピング
    depends_on:
      - postgres
volumes:
  postgres-data: # データボリュームの定義
このdocker-compose.ymlファイルは、PostgreSQLデータベースとpgAdminというWebベースの管理ツールをセットアップするためのDocker Composeの設定です。
1. postgres
このサービスはPostgreSQLデータベースを構築します。
- イメージ: postgres:14は、PostgreSQLのバージョン14の公式Dockerイメージを指定しています。
- ボリューム:
- postgres-data:/var/lib/postgresql/data: これにより、PostgreSQLのデータがDockerボリューム(- postgres-data)に保存され、データの永続性が保証されます。コンテナが削除されても、データは保持されます。
- ./init.sql:/docker-entrypoint-initdb.d/init.sql: ホストマシンの- init.sqlスクリプトをコンテナ内のPostgreSQL初期化ディレクトリにマウントします。コンテナ起動時にこのスクリプトが実行され、データベースの初期設定やスキーマの作成が行われます。
 
- 環境変数: POSTGRES_DB,POSTGRES_USER,POSTGRES_PASSWORDはそれぞれPostgreSQLのデータベース名、ユーザー名、ユーザーパスワードを指定します。
- ポート: "5432:5432"はホストマシンの5432ポートをコンテナの5432ポートにマッピングします。これにより、ホストからPostgreSQLサーバーにアクセスできます。
2. pgadmin
このサービスは、WebベースのPostgreSQLデータベース管理ツールであるpgAdminを提供します。
- イメージ: dpage/pgadmin4はpgAdminの公式Dockerイメージです。
- 環境変数:
- PGADMIN_DEFAULT_EMAIL: pgAdminのデフォルトログインメールアドレスを設定します。
- PGADMIN_DEFAULT_PASSWORD: pgAdminのデフォルトログインパスワードを設定します。
 
- ポート: "5050:80"はホストマシンの5050ポートをコンテナの80ポート(pgAdminのデフォルトポート)にマッピングします。これにより、ホストの5050ポートを通じてpgAdminにアクセスできます。
- depends_on: depends_on: - postgresは、pgAdminサービスが起動する前にPostgreSQLサービスが起動していることを保証します。
volumes
- postgres-data: このセクションで、postgres-dataという名前のデータボリュームが定義されています。これはpostgresサービスで使用され、PostgreSQLデータベースのデータの永続化を可能にします。
OS関連
Debian
Dockerfile
# Debianイメージをベースとする
FROM debian:12.2-slim
# 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
    bash \
    curl \
    git \
    vim \
    zip \
    unzip \
    build-essential \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  dev:
    build: .
    volumes:
      - .:/app
    tty: true
このDocker構成は、カスタムDebianベースの開発環境をセットアップするために使用されます。
Dockerfileはイメージのビルド指示を含み、docker-compose.ymlファイルはそのイメージを使用してコンテナを起動するための設定を定義します。
Dockerfile 解説
このDockerfileは、Debianベースのカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM debian:12.2-slimこの行は、軽量版のDebian 12.2をベースイメージとして使用します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]この命令は、bash, curl, git, vim, zip/unzip, およびビルドツール(build-essential)など、開発に必要な一連のパッケージをインストールします。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*これは、インストールプロセスで生成されたキャッシュを削除し、イメージのサイズを削減します。
- 作業ディレクトリ: WORKDIR /appこの命令は、イメージ内の作業ディレクトリを/appに設定します。
- デフォルトコマンド: CMD ["bash"]コンテナが起動されたときに、bashシェルを起動するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上述のDockerfileを使用して開発環境コンテナをセットアップします。
- バージョン: version: '3.8'は、使用するComposeファイルのバージョンを指定します。
- サービス:
- dev: このセクションは- devという名前のサービスを定義します。
- build: .これはDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/appこの命令は、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できるようになります。
- tty: trueこの設定は、コンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるようにします。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Ubuntu
Dockerfile
# Ubuntuイメージをベースにする
FROM ubuntu:23.04
# 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
    bash \
    curl \
    git \
    vim \
    zip \
    unzip \
    build-essential \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  dev:
    build: .
    volumes:
      - .:/app
    tty: true
この構成は、カスタムUbuntuベースの開発環境をセットアップするためのDocker設定を示しています。
Dockerfileはイメージのビルド手順を含み、docker-compose.ymlファイルはそのイメージを使用してコンテナを起動するための設定を定義します。
Dockerfile 解説
このDockerfileは、Ubuntuベースのカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM ubuntu:23.04は、Ubuntu 23.04をベースイメージとして使用します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash, curl, git, vim, zip/unzip, およびビルドツール(build-essential)など、開発に必要な一連のパッケージをインストールします。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*でインストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appでイメージ内の作業ディレクトリを/appに設定します。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用して開発環境コンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- dev: このセクションは- devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Webサーバ関連
Apache
docker-compose.yml
version: '3.8'
services:
  apache:
    image: httpd:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/local/apache2/htdocs
    command: ["httpd-foreground"]
このDocker構成は、httpd(Apache HTTPサーバー)を使用してWebサーバー環境をセットアップするためのものです。
docker-compose.yml 解説
docker-compose.ymlファイルは、Apache Webサーバーのコンテナを設定します。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- apache: このセクションは- apacheという名前のサービスを定義します。
- image: httpd:latestは、Apache HTTPサーバーの最新の公式Dockerイメージを使用することを指定します。
- ports: - "80:80"は、ホストマシンの80ポートをコンテナの80ポートにマッピングします。これにより、ホストマシンのポート80からApacheサーバーにアクセスできます。
- volumes: - ./html:/usr/local/apache2/htdocsは、ホストマシンの現在のディレクトリ内の- htmlフォルダをコンテナ内のApacheのドキュメントルート(- /usr/local/apache2/htdocs)にマウントします。これにより、ホストマシン上の- htmlフォルダ内のファイルがWebサーバーを通じて提供されます。
- command: ["httpd-foreground"]は、コンテナが起動するときに実行されるコマンドを指定します。このコマンドはApacheをフォアグラウンドで実行し、コンテナが動作し続けるようにします。
 
Nginx
docker-compose.yml
version: '3.8'
services:
  nginx:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    command: ["nginx", "-g", "daemon off;"]
このDocker構成は、nginx(Nginx HTTPサーバー)を使用してWebサーバー環境をセットアップするためのものです。
docker-compose.yml 解説
docker-compose.ymlファイルは、Nginx Webサーバーのコンテナを設定します。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- nginx: このセクションは- nginxという名前のサービスを定義します。
- image: nginx:latestは、Nginxの最新の公式Dockerイメージを使用することを指定します。
- ports: - "80:80"は、ホストマシンの80ポートをコンテナの80ポートにマッピングします。これにより、ホストマシンのポート80からNginxサーバーにアクセスできます。
- volumes: - ./html:/usr/share/nginx/htmlは、ホストマシンの現在のディレクトリ内の- htmlフォルダをコンテナ内のNginxのドキュメントルート(- /usr/share/nginx/html)にマウントします。これにより、ホストマシン上の- htmlフォルダ内のファイルがWebサーバーを通じて提供されます。
- command: ["nginx", "-g", "daemon off;"]は、コンテナが起動するときに実行されるコマンドを指定します。このコマンドはNginxをフォアグラウンドで実行し、コンテナが動作し続けるようにします。
 
フレームワーク
FastAPI
Dockerfile
# Pythonイメージをベースにする
FROM python:3.10
# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    bash \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# FastAPIとUvicorn(ASGIサーバー)のインストール
RUN pip install fastapi uvicorn
# ホストマシンからのファイルコピー用ディレクトリ
VOLUME [ "/app" ]
# コンテナ起動時に実行されるコマンド
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--reload"]
docker-compose.yml
version: '3.8'
services:
  python-dev:
    build: .
    volumes:
      - .:/app # 現在のディレクトリをコンテナの/appにマウント
    tty: true
この構成は、Pythonをベースにした開発環境をセットアップし、FastAPIを使用してWebアプリケーションを開発・実行するためのものです。
Dockerfile 解説
このDockerfileは、FastAPIを使用するPython開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM python:3.10は、Python 3.10をベースイメージとして使用します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash, git, vimなどの基本的な開発ツールをインストールします。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*は、インストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。
- Pythonパッケージのインストール: RUN pip install fastapi uvicornは、FastAPIとUvicorn(ASGIサーバー)をインストールします。
- ボリューム: VOLUME [ "/app" ]は、ホストマシンからのファイルをコンテナ内の/appディレクトリにコピーするためのボリュームを設定します。
- デフォルトコマンド: CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--reload"]はコンテナが起動した際に、Uvicornを使用してFastAPIアプリケーションを実行するように設定します。--reloadフラグは開発中のコードの変更が自動的に反映されるようにします。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してPython開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- python-dev: このセクションは- python-devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Flask
Dockerfile
# Pythonイメージをベースにする
FROM python:3.10
# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    bash \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# Flaskのインストール
RUN pip install flask
# ホストマシンからのファイルコピー用ディレクトリ
VOLUME [ "/app" ]
# コンテナ起動時に実行されるコマンド
# Flaskアプリケーションのエントリーポイントを指定
CMD ["flask", "run", "--host=0.0.0.0"]
docker-compose.yml
version: '3.8'
services:
  flask-dev:
    build: .
    ports:
      - "5000:5000" # Flaskのデフォルトポートをホストとマッピング
    volumes:
      - .:/app # 現在のディレクトリをコンテナの/appにマウント
    tty: true
この構成は、PythonをベースにしたFlask開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Flaskを使用するPython開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM python:3.10は、Python 3.10をベースイメージとして使用します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash, git, vimなどの基本的な開発ツールをインストールします。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*は、インストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。
- Pythonパッケージのインストール: RUN pip install flaskは、WebフレームワークであるFlaskをインストールします。
- ボリューム: VOLUME [ "/app" ]は、ホストマシンからのファイルをコンテナ内の/appディレクトリにコピーするためのボリュームを設定します。
- デフォルトコマンド: CMD ["flask", "run", "--host=0.0.0.0"]はコンテナが起動した際に、Flaskアプリケーションを実行するように設定します。--host=0.0.0.0はアプリケーションをコンテナ外からアクセス可能にします。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してFlask開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- flask-dev: このセクションは- flask-devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- ports: - "5000:5000"は、ホストマシンの5000ポートをコンテナの5000ポートにマッピングします。これにより、ホストからFlaskアプリケーションにアクセスできます。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
GraphQL
Dockerfile
FROM node:20
WORKDIR /app
COPY package.json /app/
RUN npm install
COPY . /app/
CMD ["npm", "start"]
docker-compose.yml
version: '3.8'
services:
  graphql-server:
    build: .
    ports:
      - "4000:4000"  # ホストマシンのポートをコンテナのポートにマッピング
    volumes:
      - .:/app  # ホストとコンテナ間でフォルダを共有
    tty: true
この構成は、Node.jsをベースにしたGraphQLサーバーの開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Node.jsベースのアプリケーションのカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM node:20は、Node.jsのバージョン20をベースイメージとして使用します。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。
- ファイルのコピー:
- COPY package.json /app/は、ホストマシンの- package.jsonファイルをコンテナ内の- /appディレクトリにコピーします。
- COPY . /app/はホストマシンの現在のディレクトリのすべてのファイルをコンテナの- /appディレクトリにコピーします。
 
- 依存関係のインストール: RUN npm installは、package.jsonで指定された依存関係をインストールします。
- デフォルトコマンド: CMD ["npm", "start"]はコンテナが起動した際に、npm startコマンドを実行するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してGraphQLサーバーのコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- graphql-server: このセクションは- graphql-serverという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- ports: - "4000:4000"は、ホストマシンの4000ポートをコンテナの4000ポートにマッピングします。これにより、ホストからGraphQLサーバーにアクセスできます。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Spring(Maven)
Dockerfile
# OpenJDKを含む基本的なJavaイメージをベースにする
FROM openjdk:11
# Mavenをインストール
RUN apt-get update && apt-get install -y \
    maven \
    bash \
    curl \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  spring-dev:
    build: .
    ports:
      - "8080:8080"
    volumes:
      - .:/app
    tty: true
このDocker構成は、Java(特にSpring Frameworkを想定)の開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Javaベースの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM openjdk:11は、OpenJDK 11を含む基本的なJavaイメージをベースとして使用します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、Maven(Javaのビルドツール)、bash、curl、git、vimなどの開発に必要なツールをインストールします。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*は、インストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してJava開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- spring-dev: このセクションは- spring-devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- ports: - "8080:8080"は、ホストマシンの8080ポートをコンテナの8080ポートにマッピングします。これにより、ホストからSpringアプリケーションにアクセスできます。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
プログラミング言語関連
Go
Dockerfile
# Go言語のイメージをベースにする
FROM golang:1.16
# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    bash \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# ホストマシンからのファイルコピー用ディレクトリ
VOLUME [ "/app" ]
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  go-app:
    build: .
    volumes:
      - .:/app # 現在のディレクトリをコンテナの/appにマウント
    tty: true
このDocker構成は、Go言語(Golang)の開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Go言語ベースの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM golang:1.16は、Go言語のバージョン1.16を含む基本的なイメージをベースとして使用します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash、git、vimなどの開発に必要な基本的なツールをインストールします。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*は、インストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。
- ボリューム: VOLUME [ "/app" ]は、ホストマシンからのファイルをコンテナ内の/appディレクトリにコピーするためのボリュームを設定します。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してGo言語開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- go-app: このセクションは- go-appという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Java
Dockerfile
# OpenJDKを含む基本的なJavaイメージをベースにする
FROM openjdk:11
# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    bash \
    curl \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  java-dev:
    build: .
    volumes:
      - .:/app
    tty: true
このDocker構成は、Javaを使用した開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Javaベースの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM openjdk:11は、OpenJDK 11を含む基本的なJavaイメージをベースとして使用します。これにより、Javaアプリケーションをコンパイルし実行するための環境が提供されます。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash、curl、git、vimなど、基本的な開発ツールをインストールします。これらはコードの編集やバージョン管理に便利です。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*は、インストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。これはJavaアプリケーションのソースコードやビルドファイルを格納する場所となります。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してJava開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- java-dev: このセクションは- java-devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Kotlin
Dockerfile
# 基本イメージとしてOpenJDKを使用
FROM openjdk:11
# Kotlinのバージョンを指定
ENV KOTLIN_VERSION=1.6.10
# Kotlinコンパイラのダウンロードとインストール
RUN curl -sSL "https://github.com/JetBrains/kotlin/releases/download/v$KOTLIN_VERSION/kotlin-compiler-$KOTLIN_VERSION.zip" -o kotlin-compiler.zip \
    && unzip kotlin-compiler.zip -d /usr/share \
    && rm kotlin-compiler.zip
# 環境変数の設定
ENV PATH=$PATH:/usr/share/kotlinc/bin
# 作業ディレクトリの設定
WORKDIR /app
# ホストマシンとのフォルダ共有のためにボリュームを指定
VOLUME ["/app"]
# Bashの起動
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  kotlin-dev:
    build: .
    volumes:
      - .:/app
    tty: true
このDocker構成は、Kotlin言語の開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Kotlinベースの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM openjdk:11は、OpenJDK 11を含む基本的なJavaイメージをベースとして使用します。KotlinはJVM(Java Virtual Machine)上で動作するため、Javaの実行環境が必要です。
- 環境変数: ENV KOTLIN_VERSION=1.6.10で使用するKotlinのバージョンを指定します。
- Kotlinコンパイラのインストール:
- RUN curl -sSL [...] -o kotlin-compiler.zipは、指定されたKotlinバージョンのコンパイラをダウンロードします。
- unzip kotlin-compiler.zip -d /usr/shareでダウンロードしたzipファイルを解凍し、- /usr/shareにインストールします。
- rm kotlin-compiler.zipでzipファイルを削除し、容量を節約します。
 
- 環境変数の設定: ENV PATH=$PATH:/usr/share/kotlinc/binでKotlinコンパイラのパスを環境変数PATHに追加します。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。
- ボリューム: VOLUME ["/app"]は、ホストマシンからのファイルをコンテナ内の/appディレクトリにコピーするためのボリュームを設定します。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してKotlin開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- kotlin-dev: このセクションは- kotlin-devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Mojo
Dockerfile
# Ubuntuイメージをベースにする
FROM ubuntu:23.04
# 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
    bash \
    git \
    vim \
    curl \
    && rm -rf /var/lib/apt/lists/*
# Mojo言語のインストール
RUN curl https://get.modular.com | sh - && \
    modular auth mut_~ && \
    modular install mojo
# mut~はhttps://developer.modular.com/downloadで確認します。
# 作業ディレクトリの設定
WORKDIR /app
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  mojo-dev:
    build: .
    volumes:
      - .:/app # 現在のディレクトリをコンテナの/appにマウント
    tty: true
このDocker構成は、UbuntuベースでMojo言語の開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、UbuntuベースのMojo言語開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM ubuntu:23.04は、Ubuntu 23.04をベースイメージとして使用します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash、git、vim、curlなどの基本的な開発ツールをインストールします。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*でインストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- Mojo言語のインストール:
- RUN curl https://get.modular.com | sh -はModularをダウンロードし、インストールスクリプトを実行します。
- modular auth mut_~ではModularの認証を行います。- mut_~はModularのダウンロードページから入手可能なトークンです。
- modular install mojoでMojo言語をインストールします。
 
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してMojo言語開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- mojo-dev: このセクションは- mojo-devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Node.js
Dockerfile
# Node.jsバージョン20のイメージをベースにする
FROM node:20
# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    bash \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# ホストマシンからのファイルコピー用ディレクトリ
VOLUME [ "/app" ]
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  nodejs-dev:
    build: .
    volumes:
      - .:/app # 現在のディレクトリをコンテナの/appにマウント
    tty: true
このDocker構成は、Node.jsの開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Node.jsベースの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM node:20は、Node.jsのバージョン20を含む基本的なイメージをベースとして使用します。このイメージにはNode.jsとnpmがプリインストールされており、Node.jsアプリケーションの開発に必要な環境が提供されます。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash、git、vimなどの基本的な開発ツールをインストールします。これらはコードの編集やバージョン管理に便利です。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*でインストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。これはNode.jsアプリケーションのソースコードやビルドファイルを格納する場所となります。
- ボリューム: VOLUME [ "/app" ]は、ホストマシンからのファイルをコンテナ内の/appディレクトリにコピーするためのボリュームを設定します。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してNode.js開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- nodejs-dev: このセクションは- nodejs-devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
PHP
Dockerfile
# PHPイメージをベースにする
FROM php:8.0-apache
# 必要なパッケージのインストール
RUN apt-get update && apt-get install -y \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# Composerのインストール
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
# 作業ディレクトリの設定
WORKDIR /var/www/html
# Apacheの設定
COPY .docker/apache.conf /etc/apache2/sites-available/000-default.conf
# コンテナ起動時に実行されるコマンド
CMD ["apache2-foreground"]
docker-compose.yml
version: '3.8'
services:
  php-app:
    build: .
    volumes:
      - .:/var/www/html # 現在のディレクトリをコンテナの/var/www/htmlにマウント
    ports:
      - "80:80" # コンテナの80ポートをホストの80ポートにマッピング
    tty: true
このDocker構成は、PHPとApacheを使用したWebアプリケーションの開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、PHPとApacheをベースにした開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM php:8.0-apacheは、PHP 8.0を含むApacheサーバーをベースイメージとして使用します。これにより、PHPアプリケーションの実行環境が提供されます。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、git、vimなどの開発ツールをインストールします。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*でインストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- Composerのインストール: COPY --from=composer:latest /usr/bin/composer /usr/bin/composerは、最新のComposer(PHPの依存関係管理ツール)を別のコンテナからコピーし、インストールします。
- 作業ディレクトリ: WORKDIR /var/www/htmlは、Apacheサーバーのデフォルトのドキュメントルートを作業ディレクトリとして設定します。
- Apache設定のコピー: COPY .docker/apache.conf /etc/apache2/sites-available/000-default.confはカスタムApache設定をコンテナにコピーします。
- デフォルトコマンド: CMD ["apache2-foreground"]はコンテナが起動した際にApacheをフォアグラウンドで実行するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してPHPアプリケーションのコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- php-app: このセクションは- php-appという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/var/www/htmlは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /var/www/htmlディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- ports: - "80:80"は、ホストマシンの80ポートをコンテナの80ポートにマッピングします。これにより、ホストのWebブラウザからコンテナ内のPHPアプリケーションにアクセスできます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。
 
Python
Dockerfile
# Pythonイメージをベースにする
FROM python:3.10
# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    bash \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# 依存関係ファイルのコピー(存在する場合)
COPY requirements.txt /app/
# Python依存関係のインストール
RUN pip install --no-cache-dir -r requirements.txt
# コンテナ起動時に実行されるコマンド
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  python-dev:
    build: .
    volumes:
      - .:/app # 現在のディレクトリをコンテナの/appにマウント
    tty: true
このDocker構成は、Python 3.10をベースにした開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Pythonベースの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM python:3.10は、Python 3.10をベースイメージとして使用します。これにはPythonとpipがプリインストールされており、Pythonアプリケーションの開発に必要な環境が提供されます。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash、git、vimなどの基本的な開発ツールをインストールします。これらはコードの編集やバージョン管理に便利です。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*でインストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。これはPythonアプリケーションのソースコードやビルドファイルを格納する場所となります。
- 依存関係ファイルのコピー: COPY requirements.txt /app/はホストマシンのrequirements.txtファイルをコンテナ内の/appディレクトリにコピーします。このファイルにはPythonの依存関係が記載されています。
- Python依存関係のインストール: RUN pip install --no-cache-dir -r requirements.txtはrequirements.txtで指定された依存関係をインストールします。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してPython開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- python-dev: このセクションは- python-devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Rust
Dockerfile
# Rustの公式イメージを使用
FROM rust:latest
# 作業ディレクトリの設定
WORKDIR /usr/src/myapp
# ホストマシンとのフォルダ共有のためにボリュームを指定
VOLUME ["/usr/src/myapp"]
# Bashの起動
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  rust-dev:
    build: .
    volumes:
      - .:/usr/src/myapp
    tty: true
このDocker構成は、Rustプログラミング言語の開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Rust言語ベースの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM rust:latestは、Rustの最新公式イメージをベースとして使用します。このイメージにはRust言語とCargo(Rustのパッケージマネージャーとビルドツール)がプリインストールされています。
- 作業ディレクトリ: WORKDIR /usr/src/myappはイメージ内の作業ディレクトリを/usr/src/myappに設定します。これはRustプロジェクトのソースコードやビルドファイルを格納する場所となります。
- ボリューム: VOLUME ["/usr/src/myapp"]は、ホストマシンからのファイルをコンテナ内の/usr/src/myappディレクトリにコピーするためのボリュームを設定します。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してRust開発環境のコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- rust-dev: このセクションは- rust-devという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/usr/src/myappは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /usr/src/myappディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
 
Swift
docker-compose.yml
version: '3.8'
services:
  swift:
    image: swift:latest
    volumes:
      - .:/app
    working_dir: /app
    tty: true
    command: /bin/bash
このDocker構成は、Swift言語の開発環境をセットアップするためのものです。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、Swift開発環境のコンテナを設定します。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- swift: このセクションは- swiftという名前のサービスを定義します。
- image: swift:latestは、Swiftの最新の公式Dockerイメージを使用することを指定します。これにはSwift言語と必要なツールがプリインストールされています。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- working_dir: /appは、コンテナ内での作業ディレクトリを- /appに設定します。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。これにより、コンテナ内でインタラクティブな作業が可能になります。
- command: /bin/bashは、コンテナが起動するときに実行されるコマンドを指定します。この設定はbashシェルを起動し、コンテナ内での作業を容易にします。
 
フロントエンド関連
Angular
Dockerfile
# Node.jsイメージをベースにする
FROM node:20
# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    bash \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# パッケージ依存関係のコピー
COPY package.json /app/
COPY package-lock.json /app/
# 依存関係のインストール
RUN npm install
# アプリケーションのファイルをコピー
COPY . /app/
# Angularアプリケーションを起動するコマンド
CMD ["npm", "start"]
docker-compose.yml
version: '3.8'
services:
  angular-app:
    build: .
    ports:
      - "4200:4200" # Angularアプリのデフォルトポートをホストとマッピング
    volumes:
      - .:/app # 現在のディレクトリをコンテナの/appにマウント
    tty: true
このDocker構成は、Node.jsとAngularを使用したWebアプリケーション開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Angularアプリケーションの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM node:20は、Node.jsのバージョン20を含む基本的なイメージをベースとして使用します。Node.jsはAngularアプリケーションの開発に必要な環境を提供します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash、git、vimなどの開発ツールをインストールします。これらはコードの編集やバージョン管理に便利です。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*でインストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。これはアプリケーションのソースコードやビルドファイルを格納する場所となります。
- 依存関係ファイルのコピー: COPY package.json /app/とCOPY package-lock.json /app/はホストマシンの依存関係ファイルをコンテナ内の/appディレクトリにコピーします。
- 依存関係のインストール: RUN npm installはpackage.jsonとpackage-lock.jsonで指定された依存関係をインストールします。
- アプリケーションのファイルのコピー: COPY . /app/はホストマシンの現在のディレクトリのすべてのファイルをコンテナの/appディレクトリにコピーします。
- デフォルトコマンド: CMD ["npm", "start"]はコンテナが起動した際にAngularアプリケーションを起動するコマンドを実行するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してAngularアプリケーションのコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- angular-app: このセクションは- angular-appという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- ports: - "4200:4200"は、ホストマシンの4200ポートをコンテナの4200ポートにマッピングします。これにより、ホストのWebブラウザからコンテナ内のAngularアプリケーションにアクセスできます。
- `volumes: –
 
.:/app は、ホストマシンの現在のディレクトリ(.)をコンテナの/app`ディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。
React
Dockerfile
# Node.jsイメージをベースにする
FROM node:20.9
# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    bash \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# パッケージ依存関係のコピー
COPY package.json /app/
COPY package-lock.json /app/
# 依存関係のインストール
RUN npm install
# アプリケーションのファイルをコピー
COPY . /app/
# Reactアプリケーションを起動するコマンド
CMD ["npm", "start"]
docker-compose.yml
version: '3.8'
services:
  react-app:
    build: .
    ports:
      - "3000:3000" # Reactアプリのデフォルトポートをホストとマッピング
    volumes:
      - .:/app # 現在のディレクトリをコンテナの/appにマウント
    tty: true
このDocker構成は、Node.jsとReactを使用したWebアプリケーション開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Reactアプリケーションの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM node:20.9は、Node.jsのバージョン20.9を含む基本的なイメージをベースとして使用します。Node.jsはReactアプリケーションの開発に必要な環境を提供します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash、git、vimなどの開発ツールをインストールします。これらはコードの編集やバージョン管理に便利です。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*でインストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。これはアプリケーションのソースコードやビルドファイルを格納する場所となります。
- 依存関係ファイルのコピー: COPY package.json /app/とCOPY package-lock.json /app/はホストマシンの依存関係ファイルをコンテナ内の/appディレクトリにコピーします。
- 依存関係のインストール: RUN npm installはpackage.jsonとpackage-lock.jsonで指定された依存関係をインストールします。
- アプリケーションのファイルのコピー: COPY . /app/はホストマシンの現在のディレクトリのすべてのファイルをコンテナの/appディレクトリにコピーします。
- デフォルトコマンド: CMD ["npm", "start"]はコンテナが起動した際にReactアプリケーションを起動するコマンドを実行するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してReactアプリケーションのコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- react-app: このセクションは- react-appという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- ports: - "3000:3000"は、ホストマシンの3000ポートをコンテナの3000ポートにマッピングします。これにより、ホストのWebブラウザからコンテナ内のReactアプリケーションにアクセスできます。
- `
 
volumes: – .:/app は、ホストマシンの現在のディレクトリ(.)をコンテナの/app`ディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。
Vue
Dockerfile
# Node.jsイメージをベースにする
FROM node:20
# 必要なツールのインストール
RUN apt-get update && apt-get install -y \
    bash \
    git \
    vim \
    && rm -rf /var/lib/apt/lists/*
# 作業ディレクトリの設定
WORKDIR /app
# パッケージ依存関係のコピー
COPY package.json /app/
# yarnを使用している場合
# COPY yarn.lock /app/
# 依存関係のインストール
RUN npm install
# yarnを使用している場合
# RUN yarn install
# アプリケーションのファイルをコピー
COPY . /app/
# Vueアプリケーションを起動するコマンド
CMD ["npm", "run", "serve"]
# yarnを使用している場合
# CMD ["yarn", "serve"]
docker-compose.yml
version: '3.8'
services:
  vue-app:
    build: .
    ports:
      - "8080:8080" # Vueアプリのデフォルトポートをホストとマッピング
    volumes:
      - .:/app # 現在のディレクトリをコンテナの/appにマウント
    tty: true
このDocker構成は、Node.jsとVue.jsを使用したWebアプリケーション開発環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、Vue.jsアプリケーションの開発環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM node:20は、Node.jsのバージョン20を含む基本的なイメージをベースとして使用します。Node.jsはVue.jsアプリケーションの開発に必要な環境を提供します。
- パッケージのインストール: RUN apt-get update && apt-get install -y [...]は、bash、git、vimなどの開発ツールをインストールします。これらはコードの編集やバージョン管理に便利です。
- キャッシュのクリア: && rm -rf /var/lib/apt/lists/*でインストールプロセス中に生成されたキャッシュを削除し、イメージのサイズを小さくします。
- 作業ディレクトリ: WORKDIR /appはイメージ内の作業ディレクトリを/appに設定します。これはアプリケーションのソースコードやビルドファイルを格納する場所となります。
- 依存関係ファイルのコピー: COPY package.json /app/はホストマシンのpackage.jsonファイルをコンテナ内の/appディレクトリにコピーします。yarnを使用している場合は、yarn.lockファイルもコピーします。
- 依存関係のインストール: RUN npm installまたはRUN yarn installは、依存関係をインストールします。
- アプリケーションのファイルのコピー: COPY . /app/はホストマシンの現在のディレクトリのすべてのファイルをコンテナの/appディレクトリにコピーします。
- デフォルトコマンド: CMD ["npm", "run", "serve"]またはCMD ["yarn", "serve"]はコンテナが起動した際にVueアプリケーションを起動するコマンドを実行するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してVue.jsアプリケーションのコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- vue-app: このセクションは- vue-appという名前のサービスを定義します。
- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- ports: - "8080:8080"は、ホストマシンの8080ポートをコンテナの8080ポートにマッピングします。これにより、ホストのWebブラウザからコンテナ内の
 
Vue.jsアプリケーションにアクセスできます。
- volumes: - .:/appは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /appディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。
サービス関連
GitBucket
docker-compose.yml
version: '3.8'
services:
  gitbucket:
    image: gitbucket/gitbucket:latest
    ports:
      - "8080:8080"
      - "29418:29418" # Git SSH port
    volumes:
      - ./gitbucket:/gitbucket
    environment:
      - GITBUCKET_HOME=/gitbucket
    depends_on:
      - db
  db:
    image: mysql:5.7
    volumes:
      - ./db_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_DATABASE=gitbucket
      - MYSQL_USER=gitbucket
      - MYSQL_PASSWORD=password
このDocker構成は、GitBucketとMySQLを使用したソースコード管理とコラボレーションプラットフォームをセットアップするためのものです。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、GitBucketとMySQLのコンテナを設定します。
- バージョン: version: '3.8'は使用するDocker Composeファイルのバージョンを指定します。
- サービス:
- gitbucket:- image: gitbucket/gitbucket:latestは、GitBucketの最新版公式Dockerイメージを使用することを指定します。GitBucketはGitベースのソースコード管理ツールです。
- ports: - "8080:8080" - "29418:29418"は、ホストマシンの8080ポートと29418ポートをそれぞれコンテナの同じポートにマッピングします。8080はGitBucketのWebインターフェース用、29418はGit SSH用です。
- volumes: - ./gitbucket:/gitbucketは、ホストマシンの- ./gitbucketディレクトリをコンテナの- /gitbucketディレクトリにマウントします。これにより、GitBucketのデータが永続化されます。
- environment: - GITBUCKET_HOME=/gitbucketは、GitBucketのデータ保存先をコンテナ内の- /gitbucketに設定します。
- depends_on: - dbは、- gitbucketサービスが- dbサービスに依存していることを示し、- dbサービスが先に起動することを保証します。
 
- db:- image: mysql:5.7は、MySQLのバージョン5.7の公式Dockerイメージを使用することを指定します。
- volumes: - ./db_data:/var/lib/mysqlは、ホストマシンの- ./db_dataディレクトリをコンテナの- /var/lib/mysqlディレクトリにマウントします。これにより、MySQLデータベースのデータが永続化されます。
- environmentセクションはMySQLデータベースのルートユーザーパスワード、データベース名、ユーザー名、ユーザーパスワードを設定します。
 
 
Gitea
docker-compose.yml
version: '3.8'
services:
  gitbucket:
    image: gitbucket/gitbucket:latest
    ports:
      - "8080:8080"
      - "29418:29418" # Git SSH port
    volumes:
      - ./gitbucket:/gitbucket
    environment:
      - GITBUCKET_HOME=/gitbucket
    depends_on:
      - db
  db:
    image: mysql:5.7
    volumes:
      - ./db_data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_DATABASE=gitbucket
      - MYSQL_USER=gitbucket
      - MYSQL_PASSWORD=password
このDocker構成は、GitBucketとMySQLを使用したソースコード管理とコラボレーションプラットフォームをセットアップするためのものです。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、GitBucketとMySQLのコンテナを設定します。
- バージョン: version: '3.8'は使用するDocker Composeファイルのバージョンを指定します。
- サービス:
- gitbucket:- image: gitbucket/gitbucket:latestは、GitBucketの最新版公式Dockerイメージを使用することを指定します。GitBucketはGitベースのソースコード管理ツールです。
- ports: - "8080:8080" - "29418:29418"は、ホストマシンの8080ポートと29418ポートをそれぞれコンテナの同じポートにマッピングします。8080はGitBucketのWebインターフェース用、29418はGit SSH用です。
- volumes: - ./gitbucket:/gitbucketは、ホストマシンの- ./gitbucketディレクトリをコンテナの- /gitbucketディレクトリにマウントします。これにより、GitBucketのデータが永続化されます。
- environment: - GITBUCKET_HOME=/gitbucketは、GitBucketのデータ保存先をコンテナ内の- /gitbucketに設定します。
- depends_on: - dbは、- gitbucketサービスが- dbサービスに依存していることを示し、- dbサービスが先に起動することを保証します。
 
- db:- image: mysql:5.7は、MySQLのバージョン5.7の公式Dockerイメージを使用することを指定します。
- volumes: - ./db_data:/var/lib/mysqlは、ホストマシンの- ./db_dataディレクトリをコンテナの- /var/lib/mysqlディレクトリにマウントします。これにより、MySQLデータベースのデータが永続化されます。
- environmentセクションはMySQLデータベースのルートユーザーパスワード、データベース名、ユーザー名、ユーザーパスワードを設定します。
 
 
JMater
Dockerfile
# Javaの公式イメージをベースに使用
FROM openjdk:8
# JMeterのバージョンを指定
ENV JMETER_VERSION 5.4.1
# JMeterのダウンロードとインストール
RUN wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-${JMETER_VERSION}.tgz \
    && tar -xzf apache-jmeter-${JMETER_VERSION}.tgz -C /opt \
    && rm apache-jmeter-${JMETER_VERSION}.tgz
# 環境変数の設定
ENV JMETER_HOME /opt/apache-jmeter-${JMETER_VERSION}
ENV PATH $JMETER_HOME/bin:$PATH
# 作業ディレクトリの設定
WORKDIR /jmeter
# ホストマシンとのフォルダ共有のためにボリュームを指定
VOLUME ["/jmeter"]
# Bashの起動
CMD ["bash"]
docker-compose.yml
version: '3.8'
services:
  jmeter:
    build: .
    volumes:
      - .:/jmeter
    tty: true
このDocker構成は、Apache JMeterを使用したパフォーマンステストおよび負荷テストの環境をセットアップするためのものです。
Dockerfile 解説
このDockerfileは、JMeterのテスト環境のカスタムイメージを作成するための指示を含んでいます。
- ベースイメージ: FROM openjdk:8は、Java 8を含む基本的なイメージをベースとして使用します。JMeterはJavaで動作するため、Javaの実行環境が必要です。
- JMeterバージョンの指定: ENV JMETER_VERSION 5.4.1で使用するJMeterのバージョンを指定します。
- JMeterのダウンロードとインストール:
- RUN wget [...]は、指定されたJMeterバージョンのバイナリをダウンロードします。
- tar -xzf [...] -C /optでダウンロードしたtarファイルを解凍し、- /optにインストールします。
- rm apache-jmeter-${JMETER_VERSION}.tgzでダウンロードしたtarファイルを削除し、容量を節約します。
 
- 環境変数の設定: ENV JMETER_HOME /opt/apache-jmeter-${JMETER_VERSION}とENV PATH $JMETER_HOME/bin:$PATHでJMeterのホームディレクトリと実行パスを環境変数に設定します。
- 作業ディレクトリ: WORKDIR /jmeterはイメージ内の作業ディレクトリを/jmeterに設定します。
- ボリューム: VOLUME ["/jmeter"]は、ホストマシンからのファイルをコンテナ内の/jmeterディレクトリにコピーするためのボリュームを設定します。
- デフォルトコマンド: CMD ["bash"]はコンテナが起動した際にbashシェルを起動するように設定します。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、上記のDockerfileを使用してJMeterのコンテナをセットアップします。
- バージョン: version: '3.8'は使用するComposeファイルのバージョンを指定します。
- サービス:
- jmeter:- build: .はDocker Composeに、現在のディレクトリにある- Dockerfileを使用してイメージをビルドするように指示します。
- volumes: - .:/jmeterは、ホストマシンの現在のディレクトリ(- .)をコンテナの- /jmeterディレクトリにマウントします。これにより、ホスト上のファイルがコンテナ内で直接編集できます。
- tty: trueはコンテナがバックグラウンドで実行されるのではなく、ターミナルに接続された状態で実行されるように設定します。
 
 
Mattermost
docker-compose.yml
version: '3.8'
services:
  mattermost:
    image: mattermost/mattermost-team:latest
    ports:
      - "8065:8065"
    volumes:
      - ./config:/mattermost/config
    depends_on:
      - db
  db:
    image: mysql:5.7
    volumes:
      - ./db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: mattermost
      MYSQL_USER: mattermost
      MYSQL_PASSWORD: password
このDocker構成は、Mattermost(チームコミュニケーションツール)とMySQLデータベースを使用してコラボレーションプラットフォームをセットアップするためのものです。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、MattermostとMySQLのコンテナを設定します。
- バージョン: version: '3.8'は使用するDocker Composeファイルのバージョンを指定します。
- サービス:
- mattermost:- image: mattermost/mattermost-team:latestは、Mattermostチームエディションの最新版公式Dockerイメージを使用することを指定します。Mattermostはオープンソースのチームメッセージングソリューションです。
- ports: - "8065:8065"は、ホストマシンの8065ポートをコンテナの8065ポートにマッピングします。これにより、ホストからMattermostサーバーにアクセスできます。
- volumes: - ./config:/mattermost/configは、ホストマシンの- ./configディレクトリをコンテナの- /mattermost/configディレクトリにマウントします。これにより、Mattermostの設定が永続化されます。
- depends_on: - dbは、- mattermostサービスが- dbサービスに依存していることを示し、- dbサービスが先に起動することを保証します。
 
- db:- image: mysql:5.7は、MySQLのバージョン5.7の公式Dockerイメージを使用することを指定します。
- volumes: - ./db_data:/var/lib/mysqlは、ホストマシンの- ./db_dataディレクトリをコンテナの- /var/lib/mysqlディレクトリにマウントします。これにより、MySQLデータベースのデータが永続化されます。
- environmentセクションはMySQLデータベースのルートユーザーパスワード、データベース名、ユーザー名、ユーザーパスワードを設定します。
 
 
Redmine
docker-compose.yml
version: '3.8'
services:
  redmine:
    image: redmine:latest
    ports:
      - "3000:3000"
    volumes:
      - ./redmine_data:/usr/src/redmine/files
    environment:
      REDMINE_DB_MYSQL: db
      REDMINE_DB_DATABASE: redmine
      REDMINE_DB_USERNAME: redmine
      REDMINE_DB_PASSWORD: password
    depends_on:
      - db
  db:
    image: mysql:8.0
    volumes:
      - ./db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: redmine
      MYSQL_USER: redmine
      MYSQL_PASSWORD: password
このDocker構成は、Redmine(プロジェクト管理ツール)とMySQLデータベースを使用してプロジェクト管理プラットフォームをセットアップするためのものです。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、RedmineとMySQLのコンテナを設定します。
- バージョン: version: '3.8'は使用するDocker Composeファイルのバージョンを指定します。
- サービス:
- redmine:- image: redmine:latestは、Redmineの最新版公式Dockerイメージを使用することを指定します。Redmineはオープンソースのプロジェクト管理ツールです。
- ports: - "3000:3000"は、ホストマシンの3000ポートをコンテナの3000ポートにマッピングします。これにより、ホストからRedmineサーバーにアクセスできます。
- volumes: - ./redmine_data:/usr/src/redmine/filesは、ホストマシンの- ./redmine_dataディレクトリをコンテナの- /usr/src/redmine/filesディレクトリにマウントします。これにより、Redmineのファイルが永続化されます。
- environmentセクションは、Redmineが使用するMySQLデータベースの接続情報を設定します。
- depends_on: - dbは、- redmineサービスが- dbサービスに依存していることを示し、- dbサービスが先に起動することを保証します。
 
- db:- image: mysql:8.0は、MySQLのバージョン8.0の公式Dockerイメージを使用することを指定します。
- volumes: - ./db_data:/var/lib/mysqlは、ホストマシンの- ./db_dataディレクトリをコンテナの- /var/lib/mysqlディレクトリにマウントします。これにより、MySQLデータベースのデータが永続化されます。
- environmentセクションはMySQLデータベースのルートユーザーパスワード、データベース名、ユーザー名、ユーザーパスワードを設定します。
 
 
WordPress
docker-compose.yml
version: '3.8'
services:
  wordpress:
    image: wordpress:latest
    ports:
      - "80:80"
    volumes:
      - ./wordpress:/var/www/html
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: password
      WORDPRESS_DB_NAME: wordpress
    depends_on:
      - db
  db:
    image: mysql:8.0
    volumes:
      - ./db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: password
このDocker構成は、WordPressとMySQLデータベースを使用してコンテンツ管理システムをセットアップするためのものです。
docker-compose.yml 解説
このdocker-compose.ymlファイルは、WordPressとMySQLのコンテナを設定します。
- バージョン: version: '3.8'は使用するDocker Composeファイルのバージョンを指定します。
- サービス:
- wordpress:- image: wordpress:latestは、WordPressの最新版公式Dockerイメージを使用することを指定します。WordPressは人気のあるオープンソースのコンテンツ管理システムです。
- ports: - "80:80"は、ホストマシンの80ポートをコンテナの80ポートにマッピングします。これにより、ホストのWebブラウザからWordPressサイトにアクセスできます。
- volumes: - ./wordpress:/var/www/htmlは、ホストマシンの- ./wordpressディレクトリをコンテナの- /var/www/htmlディレクトリにマウントします。これにより、WordPressのデータが永続化されます。
- environmentセクションは、WordPressが使用するMySQLデータベースの接続情報を設定します。
- depends_on: - dbは、- wordpressサービスが- dbサービスに依存していることを示し、- dbサービスが先に起動することを保証します。
 
- db:- image: mysql:8.0は、MySQLのバージョン8.0の公式Dockerイメージを使用することを指定します。
- volumes: - ./db_data:/var/lib/mysqlは、ホストマシンの- ./db_dataディレクトリをコンテナの- /var/lib/mysqlディレクトリにマウントします。これにより、MySQLデータベースのデータが永続化されます。
- environmentセクションはMySQLデータベースのルートユーザーパスワード、データベース名、ユーザー名、ユーザーパスワードを設定します。
 
 
 
                    
コメントを残す
コメントを投稿するにはログインしてください。