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]の構築
-
ここでは以下のディレクトリ構成を目指します
work/
├ html/
│ └ index.php
├ mysql/
├ php/
│ └ php.ini
└ docker-compose.yml 初めに
こちらを参考にやってみました
ここで重要な事!!
windows HomeでDockerを使う場合、マウントできるディレクトリは限られてきます
マウントするディレクトリはuser配下に作ってください!!(適当にディレクトリを作ってマウントできない原因がわからず2日潰れました)
別途設定すれば問題ないそうなのですが、それはここでは取り扱いません
私は(ここで解決しました)[https://qiita.com/kikako/items/7b6301a140cf37a5b7ac]
【例】
C:\Users\あなたのPCのユーザー名\work
workというディレクトリを作成しましたdocker-composeのカスタマイズ
カスタマイズをするためにこのようなディレクトリ構成に変更しました
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の記述している箇所を以下に変更してみた
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を変更
170 <Directory /var/www"ここから"/html/public"ここまで追加">
171 Options Indexes FollowSymLinks
172 AllowOverride All
173 Require all granted
174 </Directory>
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を変更する
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がうまくいかないのでやること