Laravelプロジェクトのローカル環境をdocker-composeで簡単に構築できる Laradock ですが、
複数プロジェクトで使おうとしたときや、予期せぬところでハマることがあったので注意点のメモです。
ちなみに初めてLaradockを使用したときはこちらの記事を参考にさせていただきました。
https://qiita.com/kamukiriri/items/73ff35fc7f9083ca68c1#補足2-ローカル開発環境としてlaradockを使用する
前提条件
Version
Laradock: 7.14
ファイル構成
https://laradock.io/getting-started/#A1
こっちのパターンで、Laravelプロジェクトの中にLaradockを置くときの想定です。
laravel/
└ laradock/
気をつけること
以下に挙げていきます。
Laradockのディレクトリ名については参考記事でも言及されていますが、
イメージおよびコンテナ名とは連動していないのでリネームしなくても問題はなさそうです。
.envで設定しておくべきところ
env-example を .env にリネームして必要な項目を設定します。
(コメントアウト行はデフォルトの設定です)
### Paths #################################################
# DATA_PATH_HOST=~/.laradock/data
DATA_PATH_HOST=~/.laradock/my-laradock_data
### Docker compose files ##################################
# COMPOSE_PROJECT_NAME=laradock
COMPOSE_PROJECT_NAME=my-laradock
### NGINX #################################################
# NGINX_HOST_HTTP_PORT=80
# NGINX_HOST_HTTPS_PORT=443
NGINX_HOST_HTTP_PORT=8080
NGINX_HOST_HTTPS_PORT=4430
DATA_PATH_HOST
DBを使用する場合のストレージ。プロジェクトごとに分けた方が都合よさそう。
COMPOSE_PROJECT_NAME
ここで設定した名前がコンテナおよびイメージ名のプレフィックスになります。
複数プロジェクトでLaradockを利用する場合はこれをちゃんと設定しておかないと後で面倒なことに。
公式にも記載があります。
By default the containers that will be created have the current directory name as suffix (e.g. laradock_workspace_1). This can cause mixture of data inside the container volumes if you use laradock in multiple projects. In this case, either read the guide for multiple projects or change the variable COMPOSE_PROJECT_NAME to something unique like your project name.
NGINX_HOST_HTTP_PORT
, NGINX_HOST_HTTPS_PORT
Apacheを使用する場合はそちらの設定を。
1つのプロジェクトならそのままでも良いかもしれませんが、複数プロジェクトのlocal環境を同時に立ち上げたい場合などは重複しないように変更する必要あり。
packagist.orgへの接続状況
これはかなり限定的な場面になりますが・・・
ちょうど新しいプロジェクトを作ろうとしていたときに直面して困ったので一応書いておきます。
2019/4/9に一時的に日本から(?) https://packagist.org/ (Composerが使用しているパッケージリポジトリ)に接続できなくなった時間帯がありました。
Packagist 経路障害っぽいな
— ぜり (zeriyoshi) (@zeriyoshi) 2019年4月9日
packagist、社内からだと経路障害で繫がらない
— くまぽー (@kumapo0313) 2019年4月9日
ComposerでLaravelをインストールしようとした時点で失敗していてこんな状況に。@packagist [Composer\Repository\RepositorySecurityException]
— ςЎβξЯиęł (@cybernet2u) 2019年4月9日
The contents of https://t.co/TACParcKvd
3ccb3e... do not match its signature.
This is a error i'm getting for the last 24 hours, so i've setup new VPS, same error. is it just me ?
$ composer diag
Checking platform settings: OK
Checking git settings: OK
Checking http connectivity to packagist:
The "http://repo.packagist.org/packages.json" file could not be downloaded: failed to open stream: Operation timed out
Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info
[Composer\Downloader\TransportException] The "http://repo.packagist.org/packages.json" file could not be downloaded: php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
failed to open stream: php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known
Checking https connectivity to packagist: [Composer\Downloader\TransportException] The "https://repo.packagist.org/packages.json" file could not be downloaded: failed to open stream: Operation timed out
これに関しては参照先リポジトリを packagist.jp に変更することで解決しました。
https://qiita.com/Hiraku/items/51961aa49f7a2922011d
ですがLaradock内でもworkspaceコンテナを作るのにComposerを使用していて、同じようにエラーに。。😩
何度 docker-compose up -d nginx
ってしてもうまくいかないので悩みましたが、ここが原因でした。
(workspaceコンテナはデフォルトで .env の WORKSPACE_COMPOSER_GLOBAL_INSTALL
がtrueになってるので、なにもしなければ同時に立ち上がるようになっています。)
###########################################################################
# Composer:
###########################################################################
USER root
# Add the composer.json
COPY ./composer.json /home/laradock/.composer/composer.json
# Add the auth.json for magento 2 credentials
COPY ./auth.json /home/laradock/.composer/auth.json
# Make sure that ~/.composer belongs to laradock
RUN chown -R laradock:laradock /home/laradock/.composer
USER laradock
# Check if global install need to be ran
ARG COMPOSER_GLOBAL_INSTALL=false
ENV COMPOSER_GLOBAL_INSTALL ${COMPOSER_GLOBAL_INSTALL}
RUN if [ ${COMPOSER_GLOBAL_INSTALL} = true ]; then \
# run the install
composer global install \
;fi
で、 .env に WORKSPACE_COMPOSER_REPO_PACKAGIST
っていうのがあったのでこれを https://packagist.jp にしてみたりしましたがやっぱりだめでした。
その日は諦めて帰ったら次の日 packagist.org につながるようになっていたのでよかったです。
・・・なにか良い対策法があれば知りたいです🙄