Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
DockerでLaravel環境を構築する
Yuki Kitagawa
November 29, 2019
Technology
0
160
DockerでLaravel環境を構築する
Yuki Kitagawa
November 29, 2019
Tweet
Share
More Decks by Yuki Kitagawa
See All by Yuki Kitagawa
FatControllerからの卒業
tamayan_18
0
1.6k
Other Decks in Technology
See All in Technology
RDRA + JavaによるレジャーSaaSプロダクトの要件定義と実装のシームレスな接続
jjebejj
PRO
3
510
GeoLocationAnchor and MKTileOverlay
toyship
0
110
スクラムのスケールとチームトポロジー / Scaled Scrum and Team Topologies
daiksy
1
410
HoloLens2とMetaQuest2どちらも動くWebXRアプリをBabylon.jsで作る
iwaken71
0
170
視座とアジャイル / shiza_and_agile
kyoshimoto
0
180
アジャイル推進活動におけるBeAgileへの変化の兆し/Signs_of_Change_to_"Be_Agile"_in_Agile_Promotion_Activities
m_iyama
0
110
アーキテクチャを明文化して開発に臨んだ話
akihiyo76
0
250
インフラのCI/CDはGitHub Actionsに任せた
mihyon
0
100
OPENLOGI Company Profile
hr01
0
280
ラブグラフ紹介資料 〜プロダクト解体新書〜 / Lovegraph Product Deck
lovegraph
0
130
組織の崩壊と再生、その中で何を考え、感じたのか。 そして本当に必要だったもの
kosako
8
2.7k
ソフトウェアテスト 2022 / Software Testing 2022
ak1210
1
1.6k
Featured
See All Featured
The Brand Is Dead. Long Live the Brand.
mthomps
46
2.7k
4 Signs Your Business is Dying
shpigford
169
20k
How to name files
jennybc
40
60k
Embracing the Ebb and Flow
colly
73
3.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
56
2.3k
Principles of Awesome APIs and How to Build Them.
keavy
113
15k
Statistics for Hackers
jakevdp
781
210k
5 minutes of I Can Smell Your CMS
philhawksworth
196
18k
Designing for Performance
lara
597
63k
Producing Creativity
orderedlist
PRO
333
37k
BBQ
matthewcrist
74
7.9k
Fireside Chat
paigeccino
11
1.3k
Transcript
DockerでLaravelの ローカル環境を構築する tambourine meetup #
⾃⼰紹介 • 北川 雄紀 • クラウドインテグレーション部 • バックエンドやモバイルアプリを担当 • PHP,
Kotlin, Java, Swiftなど • 最近はB C Commerce Cloudを⽤いて、ECサイトの開発をしてます
サンプルコード IUUQTHJUIVCDPNUBNBZBOEPDLFSDPNQPTFUFNQMBUF
このスライドのターゲット • Docker環境構築しらいけど何からすればいいかわからない • 複数⼈で開発環境を揃えたい • コマンド⼀つで環境を切り替えたい
アジェンダ • Dockerを使わない場合の環境構築 • Dockerとは? • 環境構築の構成 • 実際に環境構築をする •
まとめ
Dockerがなかったころ の環境構築
ローカルに環境構築 • ローカルマシンに直にミドルウェアをインス トールする • MAMPやXAMPなどのディストリビューションで ローカル環境を構築する
ローカルに環境構築する場合の問題 • プロジェクトによって⼿動で環境を切り替える必要があ り、都度コマンドを実⾏する必要がある • 開発メンバー全員が同じ⼿順で環境構築する必要がある(時 間がかかる) • 異なるOSで環境構築にコストがかかってしまう場合がある (WindowsとMacで環境構築が異なる場合がある)
Vagrantで環境構築 • あらかじめ⽤意されているboxというVMのイメージを 指定して、コマンドを実⾏することでVMを作成します • Vagrantfileに構成を記述し、コマンドを実⾏するとVM を作成することができる • Vagrantfileを共有することで、他者への共有ができる •
VM作成時にシェルスクリプトでミドルウェアのインス トールができる
Vagrantで環境構築する場合の問題 • ホストOS上にVMを動かしているので、オーバーヘッドが ⼤きい • とくにメモリなどのリソースはVMに割り当てた分を使うこ とになるので、マシンスペックがないと厳しい • シェルに定義するコマンドがVMのOSに依存するので、OS ごとにシェルを書き換える必要がある(aptやyumコマンド)
VMだと困ること • 複数のVMを起動するとまともに開発ができないくらいマシ ンリソースがなくなる • とにかくPCが重くなり、まともに開発ができなくなる
None
Dockerとは? • 開発元: Docker.Inc • コンテナ型仮想化環境を提供するオープンソースソフト ウェア • ミドルウェアやOSをイメージという単位で扱い、まるごと 環境構築することができるツール
“Dockerは、コンテナと呼ばれるOSレベルの仮想化環境を提供するオープン ソースソフトウェアである。VMware製品などの完全仮想化を⾏うハイパー バイザ型製品と⽐べて、ディスク使⽤量は少なく、仮想環境 (インスタンス) 作成や起動は速く、性能劣化がほとんどないという利点を持つ。” 8JLJQFEJB IUUQTKBXJLJQFEJBPSHXJLJ%PDLFS
Dockerの特徴 • コンテナ型と呼ばれる仮想環境をホストOSに直接作成するため、VMに⽐べて オーバーヘッドを少なくできる • コンテナは移植性が⾼く、Dockerさえインストールしていれば、Windows‧ Mac‧Linux系で動かすことができる • 複数のコンテナを同時に扱うことができ、プロジェクト単位で環境を切り替える ことが容易できる
• コンテナの作成や削除が容易にできるので、使い捨てが容易にできる
ϩʔΧϧΠϯετʔϧ 7BHSBOU 7. %PDLFS
⽤語の説明 • Dockerイメージ • Docker Hub • Dockerfile • Dockerコンテナ
• docker-compose
Dockerイメージ • コンテナを起動するために必要なOSやミドルウェアの設 定‧コマンドを⼀つにまとめたテンプレートのようなもの • 通常ホストOSにアプリケーションをインストールし、初期 設定やカスタマイズをする⼯程をテンプレート化すること で設定済みにイメージを作ることができる • Linux
Kernel上にあるファイルシステムにアプリケーショ ンをインストールすることができるため、テンプレート化 が可能になる
Docker Hub • Docker HubのサイトからDockerイメージを探して、イメージをロー カルに保存ができる • Docker Hubには公式がアップロードしたイメージや、公式のイメー ジを扱いやすくラップしたイメージも存在する
• 30万以上のDockerイメージが存在する • ⾃作のイメージをDocker Hubにアップロードすることもできる • $ docker pull イメージ名
Dockerfile • Dockerイメージと初期設定などを定義しておくファイルの こと • コマンドを実⾏することで、Dockerfileの内容からDocker イメージを作成する • $ docker
build イメージ名
Dockerコンテナ • Dockerイメージを元に作成される仮想環境(コンテナ)の実⾏ 部分のこと • Dockerイメージを元にコンテナを作成するようなイメージ
docker-compose • Dockerにはdocker-composeという機能があり、複数のコン テナを連携させる機能も持つ • docker-composeの機能を使うにはdocker-compose.ymlを 作成する必要がある • docker-compose.ymlはyaml形式で記述が可能で、Dockerへ のパスやポートフォワーディングの設定を⾏うことができる
• $ docker-compose up -d
構築する環境の構成
• PHP( . ) • Apache • PostgreSQL • composer
ディレクトリ構成
実際にLaravelの環境を構築する
まとめ1 • OS依存がなく、導⼊が容易 • 案件ごとに異なる環境を構築できるため、特定のPC依存を 回避できる • ミドルウェア導⼊や新インフラ環境のテストが各⾃のPCで 可能に •
⾔語やツールのバージョンアップテストが容易になる • チームメンバー全員が各⾃のPCでデバッグ可能になる
まとめ2 • インフラの知識やミドルウェアの知識が必要 • 学習コストが⾼い • コンテナ作成に失敗した場合などコンテナのログを⾒る⼒ が必要
ご清聴ありがとうございました。