# Docker による環境構築

掲示板開発では、下記のシステム構成( 複合的な動作確認より )で開発を行います。

image

ここでは、ポートフォリオ制作と同様に Docker を用いて開発環境を構築していきます。

環境構築編:複合的な動作確認#ファイルの作成 が完了し、インストールされた Docker がが正常に動くことが確認できている前提で、掲示板開発用の環境構築を行なっていきます。

# プロジェクトの作成

任意のディレクトリ(前章のポートフォリオ作成編では /Users/tsuser/github/ts-userとしていました)に移動し、プロジェクトとなるフォルダを任意の名前で作成します。

ここでは、web-message-boardというフォルダを作成しています。

# 必要なファイルの作成

プロジェクトのルートに docker-compose.yml~~/phpディレクトリを作成し、その中に ~~/php/Dockerfile を作成します。

~~/docker-compose.yml

version: '3.9'

services:
  php:
    image: php_for_bulletin_board
    working_dir: /home/app
    build:
      context: ./
      dockerfile: ./php/Dockerfile
    tty: true
    stdin_open: true
    stop_signal: SIGKILL
    restart: unless-stopped
    environment:
      DB_HOST: 'db'
      DB_PORT: '3306'
      DB_NAME: 'message_board'
      DB_USER: 'user'
      DB_PASS: 'password123456'
    ports:
      - ${PORT:-8080}:80
    volumes:
      - .:/home/app

  db:
    image: mysql:8.0
    restart: unless-stopped
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_ROOT_PASSWORD: password123456
      MYSQL_DATABASE: message_board
      MYSQL_USER: user
      MYSQL_PASSWORD: password123456
    ports:
      - 3306
    volumes:
      - db-data:/var/lib/mysql

  myadmin:
    image: phpmyadmin/phpmyadmin:5.1.1
    environment:
      PMA_ARBITRARY: 1
      PMA_HOST: db
      PMA_PORT: 3306
      PMA_USER: user
      PMA_PASSWORD: password123456
    depends_on:
      - db
    restart: unless-stopped
    ports:
      - ${DB_ADMIN_PORT:-8081}:80

volumes:
  db-data:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54

~~/php/Dockerfile

FROM php:8.1.2-apache
RUN apt-get update
RUN docker-php-ext-install pdo_mysql

# Install composer
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php --install-dir=/usr/local/bin --filename=composer
RUN php -r "unlink('composer-setup.php');"

ENV APACHE_DOCUMENT_ROOT /home/app/public
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf

1
2
3
4
5
6
7
8
9
10
11
12
13

~~/public ディレクトリを作成します。 その中に index.php を作成し、以下の内容を記述します。

~~/public/index.php

<?php
phpinfo();
1
2

現在のディレクトリ構造は以下のようになります。

.
├── docker-compose.yml
├── php
│   └── Dockerfile
└── public
    └── index.php
1
2
3
4
5
6

# Docker コンテナを起動する

Docker Desktop が起動していることを確認してください。

ターミナルで、プロジェクトのルートに移動し、以下のコマンド(docker compose up -d のみ)を入力します。 初回実行時は時間がかかります。

 






$ docker compose up -d
Creating network "xxxxxxxxxxx" with the default driver
Creating volume "xxxxxxxxxx" with default driver
Creating xxxxxxxxx_db_1  ... done
Creating xxxxxxxxx_php_1 ... done
Creating xxxxxxxxx_myadmin_1 ... done
1
2
3
4
5
6

# ページにアクセスする

http://localhost:8080/ (opens new window) にアクセスして確認します。 正常に起動している場合、以下の画面が表示されます。

スクリーンショット 2022-07-23 15 47 55

データベース管理画面(phpMyAdmin)にもアクセスし、適宜設定を行います。 http://localhost:8081/ (opens new window)

スクリーンショット 2022-07-23 15 48 36

phpMyAdmin については、次セクションのデータベースを準備する にて扱います。

ここまで完了すれば、実践編:掲示板アプリの開発に取り掛かることができます。