イノベーション エンジニアブログ


株式会社イノベーションのエンジニアたちの技術系ブログです。ITトレンド・List Finderの開発をベースに、業務外での技術研究などもブログとして発信していってます!


このエントリーをはてなブックマークに追加

Laradockを使ってDockerでLaravelの環境構築をし、Container Registryを使いGCPにイメージをおいたお話。

皆様こんばんは。こへです。 そろそろ寒くなって来ており、
Laradockを使ってDockerでLaravelの環境構築をし、Google Cloud Platform(以下GCP)にimageをおきたい
時期が来ましたので、やってみました。

※まずDockerが入ってない人は
https://docs.docker.com/docker-for-mac/install/#download-docker-for-mac
からdownload。私はStable の方をdownloadしました。

Laradock編

巷の噂でLaravelの環境構築はLaradockを使うと楽と言うことを聞いた気がするので使ってみます。

※あとDockerを使いたかったってのもあります。

適当なディレクトリを作り
git clone https://github.com/LaraDock/laradock.git
そして、laradockに移動
cd laradock
そして、docker-compose 用にenvファイルをコピー
cp env-example .env

envをこんな風に変えていく。
APPLICATION=../aiueo        //任意のバスここでは aiueoしておく。

# NGINX
NGINX_HOST_HTTP_PORT=8080

# MySQL
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
envの内容は docker-composer.ymlの内容に対応しているのでしっかり見ておくこと

docker-compose.ymlをみると使えそうなコンテナがたくさんあって面白い。

続いてnginxの設定

cd nginx/sites/

cp project-1.conf.example aiueo.conf

aiueo.confを↓のように変更
server_name aiueo.dev;
root /var/www/aiueo/public;

hosts の設定

127.0.0.1 aiueo.dev

これで設定終わり!

続いてインストールやらなんやら

docker-compose.ymlファイルがあるディレクトリに移動
workspaceコンテナを起動!
docker-compose up -d workspace
コンテナへいく
docker-compose exec workspace bash

Laravelのプロジェクトを作成
composer create-project laravel/laravel aiueo --prefer-dist
exit

nginx と mysqlを起動!!
docker-compose up -d nginx mysql

これで

で同じみのLaravel環境初期ページへ飛べる。

docker gcp 3.png

Laravel編

ここまでの設定じゃ、

php artisan migrate

とやってもErrorが吐かれるのでそこら辺を設定していく。

まず、aiueoディレクトリに移動する。
そして.envファイルをいじる。

DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret

とりあえずLaradockで設定したやつと合わせる。

そして

docker-compose exec workspace bash

php artisan migrate

テーブルできてる!

GCP準備編

まずは、Google Cloud Platform のプロダクトとサービスのためのコマンドライン インターフェースをインストール。

↑から必要な圧縮ファイルをDLする

python -VPython 2.7.0 以上が入っているかチェック

あとは gcloud init でプロジェクトを選んだりして設定。

セッティングが終わったら

gcloud confg list で 自分が選んだプロジェクトが選択されているか確認。

上手くいかなかったりしたら gcloud init で設定を何回でもやり直せるから安心。

Docker&GCP編

docker image lsでGCPにぶち込みたいimageをチェック

今回のターゲットはコヤツ↓

REPOSITORY TAG IMAGE ID CREATED SIZE

laradock_nginx

latest

a028b33b0cf3

5 days ago

20MB

laradock_nginx にGCPにぶち込むようのTAGを付けていく。

docker tag laradock_nginx gcr.io/xxxxxxxxxxxxx/kohe_nginx

フォーマットはこんな感じ [HOSTNAME]/[YOUR-PROJECT-ID]/[IMAGE]

そしたら docker image lsでもっかい確認

REPOSITORY TAG IMAGE ID CREATED SIZE

laradock_nginx

latest

a028b33b0cf3

5 days ago

20MB 

gcr.io/xxxxxxxxxxxxx/kohe_nginx

latest

a028b33b0cf3

5 days ago

20MB

いい感じ。

あとは gcloud docker — push gcr.io/xxxxxxxxxxxxxxxx/kohe_nginx
で行ける!!
と思いきや Error…

Error response from daemon: login attempt to https://appengine.gcr.io/v2/ failed with status: 404 Not Found

うんうん、なるほどね、とりまググる。

Securely store docker … のチェックを外す。

docker gcp 1.png
8cccea641d3e: Pushed
0e5158e5f8e2: Pushed
1c0bd62a9ea6: Pushed
717d526872c2: Pushed
7989087b5764: Pushed
4ea319796454: Pushed
2ad4411074c9: Pushed
040fd7841192: Layer already exists

お、うまくいってそう。

GCPを確認…

お、来てる!

docker gcp2.png

gcloud docker - - pull gcr.io/xxxxxxxxxxxxxxxxxx/kohe_nginx
ローカルに欲しいときは↑でpull すればおっけー。

後は、mysql imageやらphp-fpm imageやらどんどんGÇPにぶち込んでおけばおっけー。

おわり