Install Docker Desktop on Macをダウンロードしてインストール
$ git clone https://github.com/Laradock/laradock.git
laradock/.env #Dockerコンテナイメージ & 設定
projects/ #Laracelプログラムソース
自分が開発する場合、複数のプロジェクトを一つのサーバで管理するため、projects とした。
例) projects/blog/ projects/shop/ ※Laravelプロジェクト直下に、.htaccess でmod_rewirte(Apacheの場合)
$ cd laradock/
$ cp env-example .env
#Dockerのwebサーバーの同期ディレクトリ
#ホスト側のディレクトリを指定
APP_CODE_PATH_HOST=../projects/
#Dockerのstorage等を保存
#ホスト側のディレクトリを指定
DATA_PATH_HOST=../.laradock/data
#PHP
PHP_VERSION=7.3
PHP_INTERPRETER=php-fpm
# php-fpm で PostgreSQLドライバをインストール(MySQLはインストールしない)
PHP_FPM_INSTALL_PGSQL=true
PHP_FPM_INSTALL_MYSQLI=false
コンテナー名が自動的にホスト名になるので、docker-compose.yml で明示的にホスト名を設定します。
### PHP-FPM ##############################################
php-fpm:
hostname: laradock //ホスト名を明示的に設定
build:
context: ./php-fpm
必要に応じてコンテナを指定して、ビルド & 起動(初回は時間がかかります)
$ docker-compose up --build -d apache2 postgres
$ docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------------------------
laradock_apache2_1 /opt/docker/bin/entrypoint ... Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_postgres_1 docker-entrypoint.sh postgres Up 0.0.0.0:5432->5432/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
$ docker network list
NETWORK ID NAME DRIVER SCOPE
1f2d988e2454 bridge bridge local
c2ddd125b91c docker-hello_default bridge local
7376c045c61c host host local
48598c23f7d5 laradock_backend bridge local
63cead02763c laradock_default bridge local
1954ef460361 laradock_frontend bridge local
f8f6d3c3cfe3 none null local
$ docker-compose exec workspace bash
# hostname -i
# composer create-project laravel/laravel project-name
指定したPostgreSQL ホスト、ユーザ情報を Laravelプロジェクトの .env を設定
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=blog
DB_USERNAME=default
DB_PASSWORD=secret
複数のLaravelプロジェクトを Dockerで動かしたいので、プロジェクト直下に .htaccess を作成して、server.php に mod_rewrite をします。
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]
RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php
localhost にルーティングされているので、ブラウザで アクセスします。
$ docker-compose stop