👋

Docker設定ファイルの基本メモ✐

2024/10/19に公開

docker-compose.yml
Dockerコンテナは、dockerイメージから作られる。
dockerイメージは、Dockerfileから作られる。

docker-compose.ymlは?

Docker Composeを使用するための設定ファイル
Docker Composeでは複数のコンテナを生成、アプリの実行ができる。

Dockerfileとの違い
Docerfileは1つのコンテナに対する設定ファイルだけど、
docker-compose.ymlでは複数のコンテナの設定が可能で、
コンテナ間の関係についても設定できる。

■ドキュメントルートの設定について

環境構築で1つのDBを共有する2つのサービスをdockerで立ち上げた。

<ファイル構成>

ワークスペース
├── Dockerfile
|  ├── www/index.php
|   └── admin/index.php
|
├── mysql
│   └── 20241001.sql 
├── php
│   └── php.ini
└── var
|   └── www
|       └── html
|
└── docker-compose.yml

<ymlファイル>

docker-compose.yml
services:
  php1:
    image: php:7.4.29-apache  
    build: ./dockerfiles/www
    container_name: php1
    volumes:
      - ./var/www/html:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/php.ini
    ports:
      - 8080:80
    depends_on:
      - db
    environment:
      - APACHE_DOCUMENT_ROOT=/var/www/html/work

  php2:
    image: php:7.4.29-apache  
    build: ./dockerfiles/admin
    container_name: php2
    volumes:

  • image: php:7.4.29-apache
    webサーバーコンテナに対して、指定したPHPバージョンとapacheのイメージがdockerhubからインストールされる。

  • build: ./dockerfiles/www
    Dockerfileがある場所のパスを書く

  • container_name:
    コンテナ名。同じコンテナ名は付けれない

  • volumes:
    コンテナは簡単に生成/削除できる一時的な環境なので、コンテナ削除されたときにデータもなくなるけど、volumesによってコンテナ生成する際にデータをコンテナに反映することができる。
    → コンテナ生成時にローカルのデータをコンテナに反映させるようにパスを記載する。

  • ports:
    このポート番号を異なるものにすると、同時にwebサーバーを立てることができる

  • depends_on:
    コンテナの依存関係の設定
    例えば- dbを記載すると、dbコンテナが起動してからphpコンテナを起動される

  • environment:
    Apacheの設定を記載する

■docker-composeコマンド

  • docker-compose up -d
    ・まだイメージが作成されていなければ、イメージを作成して、さらにコンテナを作成・起動する
    ・コンテナをバックグラウンドで起動させる。同ターミナルで作業を続行できる。

  • docker-compose up
    ・すでにコンテナが存在すれば、イメージ・コンテナの再作成は行わず、(停止中の)コンテナを起動するだけ

Discussion