Labs

<< 最初 < 前ページ 次ページ > 最後 >>
icon MacからLaradock PostgreSQLで接続エラー (2020/01/21)
Laradock の接続は psql のバージョンが 12 だとプロトコルエラーとなった。
$ psql -h localhost -U default -l
psql: error: could not connect to server: FATAL: unsupported frontend protocol 1234.5679: server supports 2.0 to 3.0

Macにインストールした psql のバージョンを変更する。

psql のパスを確認


$ which psql
/usr/local/opt/libpq/bin/psql

Homebrew で任意のPostgreSQLをインストール


$brew search postgresql
...
$ brew install postgresql@11

エイリアスを追加


$ alias psql='/usr/local/opt/postgresql@11/bin/psql'

icon Mac で Laradock の構築 (2020/01/18)

事前準備


Install Docker Desktop on Macをダウンロードしてインストール

Laradock ダウンロード


$ git clone https://github.com/Laradock/laradock.git

ディレクトリ構成


laradock/.env  #Dockerコンテナイメージ & 設定
projects/ #Laracelプログラムソース

自分が開発する場合、複数のプロジェクトを一つのサーバで管理するため、projects とした。
例)
projects/blog/
projects/shop/
※Laravelプロジェクト直下に、.htaccess でmod_rewirte(Apacheの場合)

.env を作成(コピー)


$ cd laradock/
$ cp env-example .env

.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 ビルド & 起動


必要に応じてコンテナを指定して、ビルド & 起動(初回は時間がかかります)
$ docker-compose up --build -d apache2 postgres


Docker 起動確認


$ 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 内部にアクセスしてLaravelプロジェクト作成


$ docker-compose exec workspace bash

# composer create-project laravel/laravel project-name


Laravelプロジェクトの PostgreSQL 設定


指定したPostgreSQL ホスト、ユーザ情報を Laravelプロジェクトの .env を設定
DB_CONNECTION=pgsql
DB_HOST=postgres
DB_PORT=5432
DB_DATABASE=blog
DB_USERNAME=default
DB_PASSWORD=secret


.htadcess の設定


複数の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



ブラウザアクセス


http://localhost/

Docker 停止


$ docker-compose stop
icon Dockerで不要なイメージを削除 (2020/01/18)
Dockerでディスク容量を圧迫してしまいがちで、タグのついていない不要なイメージを削除する。

不要なイメージを検索


   $ docker images --filter "dangling=true"


不要なイメージを削除


 $ docker rmi $(docker images -f "dangling=true" -q)
<< 最初 < 前ページ 次ページ > 最後 >>