DockerでWebアプリ環境構築


はじめに

本記事は動画( https://youtu.be/vY2z-fOOh6s )で説明に使用している
スライドを記事化したものです。動画と合わせて御覧ください。
vY2z-fOOh6s

※記事化する際に補足説明を加筆しており、内容は動画のスライドと異なります。
※本記事の内容は2020年3月時点の内容となります。OSやミドルウェア、Dockerのバージョンが異なることで記載通りの内容で完了しない場合があります。


構築する環境の構成

  • O S  : Cent OS 7.7
  • Webサービス : Apache 2.4.6
  • DBサービス  :MariaDB 10.4.6
  • Webアプリ言語:PHP 7.3.x

OSの準備

前回の動画: https://www.youtube.com/watch?v=oT-GSZD8bE4
前回の動画の概要:Dokcerインストール、CentOSのインストール。
1. コンテナ起動

    dos > docker run --privileged -d -p 22:22 -p 80:80 -p 8080:8080 -p 443:443 --name [作成コンテナ名] [イメージ名] /sbin/init
    dos > docker exec -it [コンテナ名] /bin/bash
    コンテナ > yum update
  1. ユーザの追加
root > useradd [ユーザ名]
root > passwd [ユーザ名]
  1. SSHインストールと接続!
root > yum install openssh-server
root > systemctl enable sshd.service
root > systemctl start sshd.service

接続はTeraTermをインストールして接続。


Webサービスの準備

  1. Apacheをインストール
root > yum install httpd

※CentOS標準のapacheをインストール


DBサービスの準備

  1. MariaDBリポジトリの追加
root > curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup |  bash
  1. MariaDBのインストール
root > yum install MariaDB-server

※MariaDBパッケージにアップデートがある場合は
root >  yum update MariaDB-server
  1. DBサーバの設定
root > vi /etc/my.ini/
  1. サーバ自動起動の設定とサーバ起動
root > systemctl enable mariadb
root > systemctl start  mariadb
  1. ユーザの設定
root > mysql
mysql > GRANT ALL PRIVILEGES ON *.* TO 'ユーザー名'@'ホスト名' IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
mysql > FLUSH PRIVILEGES;

Webアプリ言語のインストール

  1. リポジトリの追加
> yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
  1. バージョンの確認
> yum info --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql
  1. PHPインストール
> yum -y install --enablerepo=remi,remi-php73 php php-mbstring php-xml php-xmlrpc php-gd php-pdo php-pecl-mcrypt php-mysqlnd php-pecl-mysql
  1. PHPのインストール確認
> php -v

Webサービスの設定

  1. ドキュメントルートの設定
root > mkdir /var/www/webapp
root > chown takemi:takemi webapp
root > vi /etc/group

takemi: x :1000: → takemi : x : 1000 : apache
※takemiはadduser作成した一般ユーザです。adduserしたタイミングでユーザと同名のグループも作成されます。

root > systemctl restart httpd
user > vi /var/www/webapp/index.html
index.html
<html>
    <head>
        <title>Takemi Index</title>
    </head>
    <body>
        <div>Test Page</div>
    </body>
</html>
root > vi /etc/httpd/conf/httpd.conf
httpd.conf
        DocumentRoot=/var/www/html      →  DocumentRoot=/var/www/webapp
        <Directory “/var/www/html”>     → <Directory “/var/www/webapp”>
        Options Indexes FollowSymLinks      → Options Indexes FollowSymLinks  ExecCGI
        AllowOverride None          → AllowOverride All
  1. 設定の確認
    ブラウザでhttp://<コンテナのIP>にアクセスする

  2. PHPの動作確認
    ブラウザでhttp://<コンテナのIP>にアクセスする

  3. PHPの動作確認

user > vi /var/www/webapp/info.php
info.php
<?php phpinfo();

ブラウザで http://<コンテナのIP>/info.php にアクセスする。
phpinfo()の内容が表示される。


以上です!
これでHTMLもPHPも動作し、Webアプリの環境が整いました!
おつかれさまでした~