業界トップクラスの求人数を誇る転職エージェントPR

リクルートグループのコネクションを活かした非公開求人も充実、他にはない好条件の求人と出会える

3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Webサービス開発1 ~ローカル開発環境構築編~

Posted at

はじめに

今回の目的

  • 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について参考にしたサイト

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だったので)

docker_001.png

さらに、上記参考サイトではWEBサーバーとしてnginxが選択されていますが、今回apacheにしたかったのでトップページでLaravelプロジェクトのpubilc配下を表示させる設定は以下のようにしました。

dockerWorkspace\laradock\apache2\sites\default.apache.conf
-  DocumentRoot /var/www/
+  DocumentRoot /var/www/laraveltest/public

-  <Directory "/var/www/">
+  <Directory "/var/www/laraveltest/public">
dockerWorkspace\laradock\apache2\Dockerfile
-  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に。。。。なので、以下を追記。

/laradock/mysql/my.cnf
[mysql]
default-character-set=utf8

[mysqld]
character-set-server=utf8

再度確認…
docker_003.png

反映されてます~
やっとこ完了です:sweat_smile:

自分メモ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 コマンドは既に作成済みのコンテナの再起動には便利です。しかし止まっているコンテナを起動するだけであり、新しいコンテナは作成しません。

3
3
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

Qiita Conference 2025 will be held!: 4/23(wed) - 4/25(Fri)

Qiita Conference is the largest tech conference in Qiita!

Keynote Speaker

ymrl、Masanobu Naruse, Takeshi Kano, Junichi Ito, uhyo, Hiroshi Tokumaru, MinoDriven, Minorun, Hiroyuki Sakuraba, tenntenn, drken, konifar

View event details
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?