takaya030の備忘録

PHP、Laravel、Docker などの話がメインです

Windows 上に構築した Docker 環境で Laravel を動かす

Windows の Docker 環境(boot2docker)で Laravel を動かすまでの作業手順メモ

Laravel のインストール

下記の手順で Windows 上で Laravel をインストールします。
Windows で composer を使う方法についてはこちらの記事を参照してください。

c:\>cd workspace
c:\workspace>mkdir laravel
c:\workspace>cd laravel
c:\workspace\laravel>composer create-project "laravel/laravel" --prefer-dist .

docker-compose.yml の作成

Docker ホストマシン (CoreOS) に /home/docker/laravel ディレクトリを作り、そこに下記の内容でファイルを配置します。

laravel
│  docker-compose.yml
│  
└─webapp
        Dockerfile
        httpd.conf
        index.html
        phpinfo.php

docker-composer.yml

webapp: 
  build: ./webapp
  hostname: webapp
  command: /usr/sbin/httpd -DFOREGROUND
  ports: 
    - "80:80"
  volumes: 
    - /workspace/laravel:/webapp
  links: 
    - mysql
    - memcached

mysql: 
 image: mysql:5.6
 environment: 
    - MYSQL_ROOT_PASSWORD=password
 ports: 
    - "3306:3306"
 volumes: 
    - /mnt/sda1/var/lib/mysql:/var/lib/mysql

memcached:
 image: memcached

webapp 以下はこちらの記事と同じ内容になります。

コンテナの起動

docker@dev:~$ cd /home/docker/laravel
docker@dev:~/laravel$ docker-compose up -d

動作確認

web ブラウザで http://192.168.99.100/ にアクセスして下の画像のように表示されるか確認。

コンテナの停止

docker@dev:~$ cd /home/docker/laravel
docker@dev:~/laravel$ docker-compose stop

Windows版boot2docker のホスト OS (CoreOS) に Windows のフォルダをマウントする

Windows 上に "docker-machine create" で作成した docker ホストマシン (CoreOS) に Windows のフォルダをマウントさせる手順のメモ

VirtualBox 共有フォルダ設定

Windowsコマンドプロンプトで下記のコマンドを実行

C:\> VBoxManage sharedfolder add "dev" -name "workspace" -hostpath "C:\workspace"

フォルダのマウント

docker ホストマシン上で下記コマンドを実行

docker@dev:~$ sudo mkdir /workspace
docker@dev:~$ sudo mount -t vboxsf -o uid=1000,gid=50 workspace /workspace

bootlocal.sh の変更

起動時に自動でマウントさせたい場合は /var/lib/boot2docker/bootlocal.sh に下記スクリプトを追加する

sudo mkdir /workspace;sudo mount -t vboxsf -o uid=1000,gid=50 workspace /workspace

docker-machine で Windows 上に構築した docker 環境で docker-compose を使う

dduportal/fig (コンテナ版fig) のサポートが終了したので docker-compose を docker ホストにインストールしたときの手順メモ

dokcer-compose のダウンロード

docker ホスト (CoreOS) で下記コマンドを実行

docker@dev:~$ sudo curl -L -o /var/lib/boot2docker/docker-compose https://github.com/docker/compose/releases/download/1.4.0/docker-compose-Linux-x86_64
docker@dev:~$ sudo chmod +x /var/lib/boot2docker/docker-compose

bootlocal.sh の変更

/var/lib/boot2docker/bootlocal.sh に下記スクリプトを追加

if [ -x /var/lib/boot2docker/docker-compose -a ! -e /usr/local/bin/docker-compose ]; then
  ln -s /var/lib/boot2docker/docker-compose /usr/local/bin/docker-compose
fi

docker ホストをリブートするか、下記コマンドを入力することで使用可能になる

docker@dev:~$ sudo ln -s /var/lib/boot2docker/docker-compose /usr/local/bin/docker-compose

動作確認

docker@dev:~$ docker-compose -v
docker-compose version: 1.4.0

MinGWのターミナルからは ssh 経由で実行します

$ docker-machine ssh dev "docker-compose -v"
docker-compose version: 1.4.0 

最近参考にした Laravel 関連のリンク

開発業務で Laravel を使っていますが、問題が発生したときに参考にさせてもらったサイトのリンク集です
Larvel のバージョンは 4.2.16 です

データベース

キャッシュ

ログ

リクエストと入力

OAuth

OpenCV 2.3.1 を MinGW32 環境で使う

Windows7 にインストールした MinGW32 環境で OpenCV 2.3.1 をセットアップしたときのメモ。

OpenCV 2.3.1 のインストール

こちらのサイトから OpenCV-2.3.1-win-superpack.exe をダウンロードして実行します。
OpenCV - Browse /opencv-win/2.3.1 at SourceForge.net

環境変数 Path に OpenCV の dll パスを追加

D:\prog\opencv2.3.1 にインストールした場合、下記のパスを環境変数 Path に追加します。

D:\prog\opencv2.3.1\opencv\build\x64\mingw\bin

動作確認

テストプログラムです。(test.c)

#include <opencv/cv.h>
#include <opencv/highgui.h>

int main ()
{
	cvNamedWindow ("test", CV_WINDOW_AUTOSIZE);
	cvWaitKey (0);
	cvDestroyWindow ("test");
	return 0;
}

Makefile

#
#	Makefile for OpenCV test
#
#	gcc (MinGW32)
#

TARGET = test
TARGET_EXE = $(TARGET)

INCDIR = D:/prog/opencv2.3.1/opencv/build/include
LIBDIR = D:/prog/opencv2.3.1/opencv/build/x64/mingw/lib

OBJS = test.o
LIBS = -lopencv_core231 -lopencv_highgui231
CC = gcc
CFLAGS = -O3 -static-libgcc -I $(INCDIR) -L $(LIBDIR)


$(TARGET_EXE) : $(OBJS)
	$(CC) $(CFLAGS) -o $@ $(OBJS) $(LIBS)

.c.o:
	$(CC) $(CFLAGS) -c $*.c

test.o: test.c

clean:
	del *.o
	del $(TARGET_EXE)

以下のコマンドでビルド

D:\test> mingw32-make

実行

D:\test> .\test.exe

このウィンドウが表示されていれば成功です。

boot2docker の /home/docker を永続化する

boot2docker のホストOS (CoreOS) 上で以下のコマンドを実行する。

$ sudo su -
# cat > /var/lib/boot2docker/bootlocal.sh <<EOF
> echo "tar cf /var/lib/boot2docker/userdata.tar . -C /home/docker/" >> /opt/shutdown.sh
> EOF
# chmod +x /var/lib/boot2docker/bootlocal.sh
# sudo reboot

/var/lib/boot2docker/profile に以下を追加

export TZ="JST-9"
ulimit -n 65535

更新履歴

  • (2016/03/16) ulimit に "-n" オプション追加