DockerでLaravel環境を構築する
by
Yuki Kitagawa
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
DockerでLaravelの ローカル環境を構築する tambourine meetup #
Slide 2
Slide 2 text
⾃⼰紹介 • 北川 雄紀 • クラウドインテグレーション部 • バックエンドやモバイルアプリを担当 • PHP, Kotlin, Java, Swiftなど • 最近はB C Commerce Cloudを⽤いて、ECサイトの開発をしてます
Slide 3
Slide 3 text
サンプルコード IUUQTHJUIVCDPNUBNBZBOEPDLFSDPNQPTFUFNQMBUF
Slide 4
Slide 4 text
このスライドのターゲット • Docker環境構築しらいけど何からすればいいかわからない • 複数⼈で開発環境を揃えたい • コマンド⼀つで環境を切り替えたい
Slide 5
Slide 5 text
アジェンダ • Dockerを使わない場合の環境構築 • Dockerとは? • 環境構築の構成 • 実際に環境構築をする • まとめ
Slide 6
Slide 6 text
Dockerがなかったころ の環境構築
Slide 7
Slide 7 text
ローカルに環境構築 • ローカルマシンに直にミドルウェアをインス トールする • MAMPやXAMPなどのディストリビューションで ローカル環境を構築する
Slide 8
Slide 8 text
ローカルに環境構築する場合の問題 • プロジェクトによって⼿動で環境を切り替える必要があ り、都度コマンドを実⾏する必要がある • 開発メンバー全員が同じ⼿順で環境構築する必要がある(時 間がかかる) • 異なるOSで環境構築にコストがかかってしまう場合がある (WindowsとMacで環境構築が異なる場合がある)
Slide 9
Slide 9 text
Vagrantで環境構築 • あらかじめ⽤意されているboxというVMのイメージを 指定して、コマンドを実⾏することでVMを作成します • Vagrantfileに構成を記述し、コマンドを実⾏するとVM を作成することができる • Vagrantfileを共有することで、他者への共有ができる • VM作成時にシェルスクリプトでミドルウェアのインス トールができる
Slide 10
Slide 10 text
Vagrantで環境構築する場合の問題 • ホストOS上にVMを動かしているので、オーバーヘッドが ⼤きい • とくにメモリなどのリソースはVMに割り当てた分を使うこ とになるので、マシンスペックがないと厳しい • シェルに定義するコマンドがVMのOSに依存するので、OS ごとにシェルを書き換える必要がある(aptやyumコマンド)
Slide 11
Slide 11 text
VMだと困ること • 複数のVMを起動するとまともに開発ができないくらいマシ ンリソースがなくなる • とにかくPCが重くなり、まともに開発ができなくなる
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
Dockerとは? • 開発元: Docker.Inc • コンテナ型仮想化環境を提供するオープンソースソフト ウェア • ミドルウェアやOSをイメージという単位で扱い、まるごと 環境構築することができるツール
Slide 14
Slide 14 text
“Dockerは、コンテナと呼ばれるOSレベルの仮想化環境を提供するオープン ソースソフトウェアである。VMware製品などの完全仮想化を⾏うハイパー バイザ型製品と⽐べて、ディスク使⽤量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。” 8JLJQFEJB IUUQTKBXJLJQFEJBPSHXJLJ%PDLFS
Slide 15
Slide 15 text
Dockerの特徴 • コンテナ型と呼ばれる仮想環境をホストOSに直接作成するため、VMに⽐べて オーバーヘッドを少なくできる • コンテナは移植性が⾼く、Dockerさえインストールしていれば、Windows‧ Mac‧Linux系で動かすことができる • 複数のコンテナを同時に扱うことができ、プロジェクト単位で環境を切り替える ことが容易できる • コンテナの作成や削除が容易にできるので、使い捨てが容易にできる
Slide 16
Slide 16 text
ϩʔΧϧΠϯετʔϧ 7BHSBOU 7. %PDLFS
Slide 17
Slide 17 text
⽤語の説明 • Dockerイメージ • Docker Hub • Dockerfile • Dockerコンテナ • docker-compose
Slide 18
Slide 18 text
Dockerイメージ • コンテナを起動するために必要なOSやミドルウェアの設 定‧コマンドを⼀つにまとめたテンプレートのようなもの • 通常ホストOSにアプリケーションをインストールし、初期 設定やカスタマイズをする⼯程をテンプレート化すること で設定済みにイメージを作ることができる • Linux Kernel上にあるファイルシステムにアプリケーショ ンをインストールすることができるため、テンプレート化 が可能になる
Slide 19
Slide 19 text
Docker Hub • Docker HubのサイトからDockerイメージを探して、イメージをロー カルに保存ができる • Docker Hubには公式がアップロードしたイメージや、公式のイメー ジを扱いやすくラップしたイメージも存在する • 30万以上のDockerイメージが存在する • ⾃作のイメージをDocker Hubにアップロードすることもできる • $ docker pull イメージ名
Slide 20
Slide 20 text
Dockerfile • Dockerイメージと初期設定などを定義しておくファイルの こと • コマンドを実⾏することで、Dockerfileの内容からDocker イメージを作成する • $ docker build イメージ名
Slide 21
Slide 21 text
Dockerコンテナ • Dockerイメージを元に作成される仮想環境(コンテナ)の実⾏ 部分のこと • Dockerイメージを元にコンテナを作成するようなイメージ
Slide 22
Slide 22 text
docker-compose • Dockerにはdocker-composeという機能があり、複数のコン テナを連携させる機能も持つ • docker-composeの機能を使うにはdocker-compose.ymlを 作成する必要がある • docker-compose.ymlはyaml形式で記述が可能で、Dockerへ のパスやポートフォワーディングの設定を⾏うことができる • $ docker-compose up -d
Slide 23
Slide 23 text
構築する環境の構成
Slide 24
Slide 24 text
• PHP( . ) • Apache • PostgreSQL • composer
Slide 25
Slide 25 text
ディレクトリ構成
Slide 26
Slide 26 text
実際にLaravelの環境を構築する
Slide 27
Slide 27 text
まとめ1 • OS依存がなく、導⼊が容易 • 案件ごとに異なる環境を構築できるため、特定のPC依存を 回避できる • ミドルウェア導⼊や新インフラ環境のテストが各⾃のPCで 可能に • ⾔語やツールのバージョンアップテストが容易になる • チームメンバー全員が各⾃のPCでデバッグ可能になる
Slide 28
Slide 28 text
まとめ2 • インフラの知識やミドルウェアの知識が必要 • 学習コストが⾼い • コンテナ作成に失敗した場合などコンテナのログを⾒る⼒ が必要
Slide 29
Slide 29 text
ご清聴ありがとうございました。