Webサービス開発1 ~ローカル開発環境構築編~
はじめに
今回の目的
- Webサービスを制作するにあたり、開発環境を構築したい。
- 下記前提を使用したうえで開発する事。
- 得た知識・情報等を(すぐ忘れるので)活用できるよう、Qiitaにもれなく投稿する事。
前提
勉強の為、下記を使用します。
なおサービスを公開するかは未定ですが、一応そこを念頭に置いて本番環境と差分が少ないDockerで構築する事に決めました。
ホストOS
- Windows10 home
実行環境
- LAMP(PHP 7.0.14-2/MySQL 5.7.25)
仮想マシン
- Docker version 18.03.0-ce
- Docker-machine version 0.14.0
- Docker-compose version 1.20.1
フレームワーク
- Laravel Framework 5.5.45
自身の状況
これまでにPHP・MySQLでのWebサービスの開発に1年半ほど携わった経験あり。(自社サービス・受託の兼務でした。)
今回、やっと初めて個人でWebサービス開発に取り組みます。
まだまだ不慣れなQiita投稿、諸々初めて尽くしですが頑張ります。
本記事のゴール
ローカル開発環境の構築。
作業内容
ローカル開発環境の選定
まず前提である程度固まっているので、これらを使用できるローカル環境を調査。
仮想化に関しては、VirtualBox + Vagrantは構築及び使用経験があった為、未開の地であったDockerを選択。
Dockerについて参考にしたサイト
- http://docs.docker.jp
- https://qiita.com/wMETAw/items/b9bc643ded4b92bf6add
- https://knowledge.sakura.ad.jp/13265/
memo
- Windows10 HomeでHyper-Vというネイテイブ仮想環境が無い為、Docker ToolboxインストーラでVirtual Box含め構築する。
- Docker MachineはVirtual Boxを操作するツール。
- ファイル編集に関しては共有ディレクトリにする(マウントする)事で、コンテナ側のファイルをローカル(ホスト側)のテキストエディタで編集する事が可能。共有ディレクトリの設定については、Docker環境構築工程にて。
- Dockerに色々なイメージ(ソフトウェア)を積んだコンテナが載っている。
Docker-docs-jaより
イメージ(image) とは実行可能なパッケージであり、軽量で、単独で動作(stand-alone)します。パッケージにはコード、ランタイム、ライブラリ、環境変数、設定ファイルなど、ソフトウェアの実行に必要な部品すべてを含みます。
コンテナ(container) とはイメージのランタイム・インスタンス(runtime instance;実行状態にあるモノ)です。言い換えれば、イメージからメモリ内に展開し、実際に実行する何かです。
Dockerコマンド一覧
DockerMachineサブコマンド一覧
Docker-composeコマンド一覧
ローカル開発環境の構築
1. Dockerインストール~Docker環境にLaraDockでapache + Laravelの表示確認まで
参考にしたサイト:https://pg-happy.jp/laradoc-windows10-home-install.html
Windows10 Homeにインストールしたかったので、上記サイトを参考にしてDockerToolBoxでインストールしました。
ターミナルはDocker Quickstart Terminalを利用しています。
Docker Quickstart Terminalを起動すると自動的にVirtualBoxのマシンが起動されるが、終了時にはDocker Quickstart Terminalを閉じただけではマシンは停止しないので、以下のコマンドでマシンを終了させる。
http://devcenter.magellanic-clouds.com/learning/docker-toolbox.html より
# マシン一覧
$ docker-machine ls
# マシンの停止
$ docker-machine stop
また、DockerToolBoxを使用しているので、Laradockをcloneする際もLaradock-ToolBoxをブランチしました。
Laradockをcloneしコンテナ作成後、$ docker-machine ip で確認したIPアドレスにアクセス。
下記のように、apache初期画面が表示されればOK.(参考サイトだとnginxだったので)
さらに、上記参考サイトではWEBサーバーとしてnginxが選択されていますが、今回apacheにしたかったのでトップページでLaravelプロジェクトのpubilc配下を表示させる設定は以下のようにしました。
- DocumentRoot /var/www/
+ DocumentRoot /var/www/laraveltest/public
- <Directory "/var/www/">
+ <Directory "/var/www/laraveltest/public">
- ENV WEB_DOCUMENT_ROOT=/var/www/
+ ENV WEB_DOCUMENT_ROOT=/var/www/laraveltest/public
2. MySQLの接続確認
参考にしたサイト:https://qiita.com/maejima_f/items/34cf3b8eb5ffbe256ad9
その後、文字コード確認
mysql> show variables like 'char%';
すると、見事にlatin1に。。。。なので、以下を追記。
[mysql]
default-character-set=utf8
[mysqld]
character-set-server=utf8
反映されてます~
やっとこ完了です
自分メモ2
docker-compose up ・ run ・ start の違いとは・・・?
公式に答えがありましたε-(´∀`*)ホッ
一般的には docker-compose up が使われるでしょう。 up を使うと docker-compose.yml ファイル中で定義したサービスの開始または再起動を行います。デフォルトは「アタッチド」モードであり、全てのコンテナのログが画面上に表示されます。「デタッチド」モード( -d )では、Compose はコンテナを実行すると終了しますが、コンテナは後ろで動き続けます。
docker-compose run コマンドは「ワンオフ」(one-off;1つだけ、偶発的) または「アドホック」(adhoc;臨時)なタスクの実行に使います。実行するにはサービス名の指定が必要であり、特定のサービス用のコンテナを起動し、かつ依存関係のあるコンテナも起動します。 run の利用時は、テストの実行であったり、データ・ボリューム・コンテナに対するデータの追加・削除といった管理タスクです。 run コマンドは実際には docker run -ti を処理しており、コンテナに対してインタラクティブなターミナルを開き、コンテナのプロセスが終了すると、その時点の該当する終了コードを返します。
docker-compose start コマンドは既に作成済みのコンテナの再起動には便利です。しかし止まっているコンテナを起動するだけであり、新しいコンテナは作成しません。
Author And Source
この問題について(Webサービス開発1 ~ローカル開発環境構築編~), 我々は、より多くの情報をここで見つけました https://qiita.com/munimuni/items/b2aad8c63b606cf4004f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .