ラボ > サーバ:Docker

Docker LAMP環境を用意する

DockerでLAMP(Linux、Apache、MySQL、PHP)を用意して「ハローワールド」をブラウザで表示

作成日:2020-09-28, 更新日:2020-09-28

基本

まったく分かっていない状態で作業を行う。

やりたいこと

XAMPPの代わりにDockerってヤツを使う
→分からないままDockerってヤツはインスト済み(Docker(+Win)をインスト

初期目標

ありがちな「ハローワールド」を表示

最終目標

環境にしろ諸々の構成を理解するコト

流れ

1.環境の素を取得
2.インストール

1.環境の素を取得

・「GitHub: Docker-LAMP」からZIPでDL
・任意の場所で解凍

2.インストール

CMDより、解凍先のフォルダにカレントを移して「docker-compose」でインスト。
※laravelもインストされている感じっぽいけど・・・ドコにインストされたかは不明

インスト後は「http://localhost/index.php」にアクセスすれば表示される
「server」フォルダの中にhtml、PHPファイル(or HTMLファイル)を置けば良い感じ
→「ハローワールド」を記載したHTMLファイルをおいて「http://localhost/〇〇〇.html」にアクセスすればOK

▼解凍先のPATHが「C:\Docker-LAMP」の場合

> cd C:\Docker-LAMP
> docker-compose up -d

「docker-compose」が使えるか確認

▼バージョンが表示されるなら使える

C:\Users\〇〇〇> docker-compose -v
docker-compose version 1.27.2, build 18f557f9

エラーがでたとき

人によっては色々なエラーが出るそうだ。

・「docker」を起動していない状態で「docker-compose」のコマンド実行したとき
・MySQLの問題
・composer-setup.phpの問題
・・・他にもあるそうだ

私の場合は下記のような感じ。

MySQLの問題

▼出力されたエラー

E: Package 'mysql-client' has no installation candidate
ERROR: Service 'php' failed to build : The command '/bin/sh -c apt-get update   && apt-get install -y zlib1g-dev mysql-client   && docker-php-ext-install zip pdo_mysql' returned a non-zero code: 100

→2020年9月時点ではmysql-clientはmariadb-clientに統合済み

解決法

「docker\php」内にある「Dockerfile」というファイルを開いて「mysql-client」を「mariadb-client」に変更。

composer-setup.phpの問題

▼出力されたエラー

Could not open input file: composer-setup.php
ERROR: Service 'php' failed to build : The command '/bin/sh -c php composer-setup.php' returned a non-zero code: 1

解決法

▼「docker\php」内にある「Dockerfile」というファイルを開いて下記のハッシュ値のトコを書き換える

RUN php -r "if (hash_file('sha384', 'composer-setup.php') === 'ハッシュ値') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"

▼ハッシュ値は公式を確認
公式:Download Composer

各ファイル

「/docker-compose.yml」と「Dockerfile」の二つがインスト時に重要な役割があるっぽい

インスト時の環境

・「/docker-compose.yml」が各種環境
※phpMyAdminの設定があるけど・・・使うには別途phpMyAdminをインストする必要があるかも? 面倒ならAdminerのファイルを置けば解決。

▼接続先

HOST(container_name) mysql_host
ID(MYSQL_USER) docker
PW(MYSQL_PASSWORD) docker
DB(MYSQL_DATABASE) test_database

インスト時の実行内容

・「/docker/php」内の「Dockerfile」という名のファイル
※PHPのバージョン指定もこのファイルっぽい

HTMLやPHPファイルを置く場所

・「/server」フォルダ内
※「/docker-compose.yml」を修正すれば別名にできそうな予感

PHPやMySQLの設定

・「/docker」フォルダ内
※「/docker-compose.yml」を修正、元ファイルを置けば色々と使えるようになりそうな気はする
※「nginx」がWEBサーバにあたる

不明点

ひとまず放置している不明点

phpMyAdmin

・CMDで「>docker images」を実行する「phpMyAdmin」がいる
・「phpMyAdmin」にアクセスするURLが分からない

laravel

・インスト時にlaravelの何かをDLしてたっぽい
・DLしたファイルたちがドコにいるのか不明(そもそもフレームワークのlaravelと同じモノなのかも不明)

localhost/tutorial

・「http://localhost」にアクセスすると「http://localhost/tutorial/」にリダイレクトされている
・その設定はドコでしているのか不明