LoginSignup
8
13

More than 3 years have passed since last update.

【Windows10 Home】dockerで PHP + Apache + MySQL + phpMyAdmin + Laravel を構築し、GitHubに上げるまで

Last updated at Posted at 2019-06-22

20201107追記

現在はWLS2を利用して簡単にdockerを利用することができますが、過去の遺産としてこの記事は残しておきます。

Windows10 Homeでも流行りのDockerを使いたい!

※Dockerが流行っているかは私個人の感想です
※駆け出しエンジニアの為、間違えている箇所があるかもしれません(ご指摘いただけますと嬉しいです。)
※構築の手順だけ知りたい?そんな冷たいこと言わないでください

私のPCの環境
- Windows10 Home 64ビット(ノートPC)
- メモリ12GB

はじめに

Dockerという存在を知ったのは5月の事で、それまではローカル環境でPHP開発をしようと思うとXamppに頼ってました
ぶっちゃけXampp使っていても全然よかったのですが、なんか世間ではDockerというものが流行っているらしいというのを見聞きしてちょっくら勉強してみようかなと思った次第です
あと、Laravelも今後使っていきたかったので、そのための準備としてもうってつけかなと思って

調べていった(作業していった)順序

  • Dockerとは何ぞや&何ができるんだろう?
  • じゃぁDockerでPHPの環境ってどうやって作るんだろー
  • なんかできそうだしやってみるかー → 手順調べる
  • PHP環境構築できたからLaravel入れてみるか
  • 最後にGitHubにpushして終了!

Dockerとは何ぞや&何ができんの?

外部サイトですがこちらを見て
『ほーん仮想環境みたいなの作って色々開発環境作れるのか』※実際は違うみたいなのですが詳しいことは自分で調べてください
『ローカルに直接構築するわけじゃないから、不要なデータは楽に削除することもできるのか』
くらいの感覚です(今もそんな感覚)

じゃぁDockerでPHPの環境ってどうやって作るんだろー

Qiitaで調べると手順がいっぱい出てきます

  • ymlというのを使って設定をしていくのか
  • Dockerfileっていうのがあって、そこで色々設定ができるのか

といった感じで、「なんかできそうだな」と思えてきました

なんかできそうだしやってみるかー

Dockerの導入

一般的であれば
Windows proでCPUの仮想化を有効にしてHyoer-Vも有効にする
といったものなのですが、そもそも私のパソコンはWindows Homeです
なんだアップグレードしないとできないのかーと思ったのですが、こちらを参考にやってみることにしました
めっちゃ参考になりました。
ちなみに私の場合「Docker Quickstart Terminal」の起動には結構時間がかかります(長い時は5分くらい)

[PHP,MySQL,phpMyAdmin]の構築

  1. ここでは以下のディレクトリ構成を目指します

    work/
     ├ html/
     │ └ index.php
     ├ mysql/
     ├ php/
     │ └ php.ini
     └ docker-compose.yml

  2. 初めに
    こちらを参考にやってみました
    ここで重要な事!!
    windows HomeでDockerを使う場合、マウントできるディレクトリは限られてきます
    マウントするディレクトリはuser配下に作ってください!!(適当にディレクトリを作ってマウントできない原因がわからず2日潰れました)
    別途設定すれば問題ないそうなのですが、それはここでは取り扱いません
    私は(ここで解決しました)[https://qiita.com/kikako/items/7b6301a140cf37a5b7ac]
    【例】
    C:\Users\あなたのPCのユーザー名\work
    workというディレクトリを作成しました

  3. docker-composeのカスタマイズ
    カスタマイズをするためにこのようなディレクトリ構成に変更しました

docker-compose.yml
version: '3'

services:
  php:
    image: php:7.2-apache
    volumes:
      - ./php/php.ini:/usr/local/etc/php/php.ini
      - ./html:/var/www/html
    ports:
      - 32778:80
  mysql:
    image: mysql:5.7
    volumes:
      - ./mysql:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test
      MYSQL_USER: test
      MYSQL_PASSWORD: test
    command: --innodb-use-native-aio=0
    ports:
      - "32780:3306"
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      PMA_ARBITRARY: 1
      PMA_HOST: mysql
      PMA_USER: test
      PMA_PASSWORD: test
    restart: always
    links:
      - mysql:mysql
    ports:
      - '32779:80'

こんな感じに設定をして、htmlディレクトリ配下にphpinfo()を記述したindex.phpを置いて、http://192.168.99.100:32778にアクセス
表示されなかったらどこか設定が悪いので色々調べる

PHP環境構築できたからLaravel入れてみるか

よっしゃ構築できたーということで今度はLaravelを入れてみる
1. ここでは以下のディレクトリ構成を目指します

work/
 ├ html/
 │ └ my-laravel-app/
 │   └ いろいろなファイル
 │   └ public
 ├ mysql/
 ├ php/
 │ └ php.ini
 └ docker-compose.yml

2. コンテナからcomposerを使えるようにする
ymlファイルの一部を変更する必要があるのでphpの記述している箇所を以下に変更してみた

docker-compose.yml
  app:
    build:
      context: ./dockerfile
      dockerfile: Dockerfile
    volumes:
      - ./php/php.ini:/usr/local/etc/php/php.ini
      - ./html:/var/www/html
    ports:
      - 32778:80

あと、これに伴ってcomposerを使う必要があるのでdockerfileディレクトリ配下に以下を記述

FROM php:7.2-apache
RUN apt-get update -y
RUN curl -sS https://getcomposer.org/installer | php
RUN mv composer.phar /usr/local/bin/composer

ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_NO_INTERACTION 1
  • COMPOSER_ALLOW_SUPERUSER 1  これはDocker内でcomposerを使う時にsuper userで使用することを許可するコマンド
  • COMPOSER_NO_INTERACTION 1  これはDocker内でcomposerを使う時にいちいち質問されないように設定するコマンド

こちらを参考にしました。

3.Laravelを置きたいディレクトリに移動
cd C:\Users\あなたのPCのユーザー名\work

4.コマンド実施
  1. コンテナ内に入る
     docker-compose exec app /bin/bashまたはdocker-compose exec app /bin/sh
  2. Laravelをインストール!(結構時間かかると思います)
    外部サイトですがこちらを参考にして行いました
   composer create-project --prefer-dist laravel/laravel my-laravel-app

5.ドキュメントルートの変更
 ドキュメントルートを変更する必要があるので、以下を行います
 ちなみにこちらを参考にしました
 参考にしたページではコンソール上で書き換えているみたいなのですが、それができなかったのでいったんホストに移動させてサクラエディタで書き換えた後に上書きをしています
  1. cp /etc/apache2/apache2.conf /var/www/html
  2. cp /etc/apache2/sites-available/000-default.conf /var/www/html
  3. apache2.confと000-default.confを変更

apache2.conf
170 <Directory /var/www"ここから"/html/public"ここまで追加">
171         Options Indexes FollowSymLinks
172         AllowOverride All
173         Require all granted
174 </Directory>
000-default.conf
 10 
 11         ServerAdmin webmaster@localhost
 12         DocumentRoot /var/www"ここから"/html/public"ここまで追加"
 13 

  4. cp /var/www/html /etc/apache2/apache2.conf
  5. cp /var/www/html /etc/apache2/sites-available/000-default.conf

6.dockerのマウントする場所を変更
このままだとhttp://192.168.99.100:32778でうまく表示されないので、docker-composeを変更する

docker-compose.yml
  app:
    build:
      context: ./dockerfile
      dockerfile: Dockerfile
    volumes:
      - ./php/php.ini:/usr/local/etc/php/php.ini
      - ./html/my-laravel-app:/var/www/html
    ports:
      - 32778:80

7.コンテナの再ビルド
  1. exit <- まずはコンテナから出ます
  2. docker-compose stop
  3. docker-compose rm
  4. docker-compose up -d --build

8.http://192.168.99.100:32778にアクセス!!!!!
表示されたー!ひゃhhhっほおおーい
となります

最後にGitHubにpushして終了!

最後にGitHubにpushします(外部サイトですがこちらを参考にしました)
1. アカウントを作成(こちらからできます)
2. レポジトリを作る
3. gitのインストール(こちらを参考にやってみると笑顔になれます)
4. コンソールでlaravelが置いてあるところに移動します
(例)cd C:\Users\あなたのPCのユーザー名\work\my-laravel-app
5.コマンド色々
git init -> git remote add origin git@github.com:ユーザ名/リポジトリ名.git -> git config --global user.name "Your Name" -> git config --global user.email "you@example.com" -> git fetch -> git pull origin master
6. commitしてpushします(その前にbranch作ってもいいかもしれません)
git commit -m '名前' -> git push -u origin master

最後に

あなたのお役に立てたら幸いです
間違った記載や誤字があればコメントいただけますと両手を上げて喜びます

追記

https://teratail.com/questions/47368
これをしないとPOSTがうまくいかないのでやること

8
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
13