どうもやまうちです。
PhpStormとLaradockを使ってXdebugの導入をしようと思っていたところエラーとの戦いになりました。
docker-compose up --build nginx mysql workspace
これをしたらめっちゃエラー出ました(;´Д`)
エラー出ると冷静になります。
間違えました、放心状態になります。
かっこよく言うと茫然自失です(今調べました)。
とはいえXdebugの導入がスタートラインなので立ち止まるわけには行きません。
結果としては無事導入できました。
ということで今回の記事は解決記録です。
この記事を書くまでの話
※いきなり本編の裏話的な話なので次まで飛ばしても1ミリの支障もございません
「今週はデバッグの記事書くぞ~!」
と意気込む午後10時。
Qiitaを開き導入文を書き始める。
ちょっと知識を得て調子に乗っているボクは、デバッグをまだ使っていない後輩たちを煽るために奮い立たせるために、手を止めることなく導入文を書き終えた。
叩くキーボードの音に心地良ささえ感じていた。
その余韻に浸かっているさなか、ボクは気づいた。
「そういや職場のPCにはデバッグ環境あるけど、自宅PCにはねえな」
「軽く導入でもするか---」
ナッパがあいさつがわりに「クン」と東の都を消したときのように、
ボクもXdebugの導入を「クン」した。
その「クン」が戦いの合図になるとも知らずに・・・。
環境
- Winddows10 pro
- Docker for windows
- Laradock
- PhpStorm
PhpstormにXdebugを導入
何も見ずに導入できるハズもなくググりました。
そこでたどり着いたこの記事を参考に導入を進めました。
参考記事:Laradock+PhpStormでXdebug - けけずんセルフハッキング
- xdebug.iniを編集
- .envを編集
-
docker-compose up --build nginx mysql workspace
を実施 - エラー出る
- (;・∀・)
docker-compose up --build nginx mysql workspace
こいつでエラーか。
ちっ、しゃーねーなぁ。
workspaceのエラー
こんなエラーが出ました。
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
ERROR: Service 'workspace' failed to build: The command '/bin/sh -c if [ ${INSTALL_XDEBUG} = true ]; then apt-get install -y php${LARADOCK_PHP_VERSION}-xdebug && sed -i 's/^;//g' /etc/php/${LARADOCK_PHP_VERSION}/cli/conf.d/2
0-xdebug.ini && echo "alias phpunit='php -dzend_extension=xdebug.so /var/www/vendor/bin/phpunit'" >> ~/.bashrc ;fi' returned a non-zero code: 100
これから分かることは
- workspace関連のエラー
以上!!
要するになんもわからん!!!!wwwwwwwwwwwwww
いや草も生えねえよ、こんなエラー。
とりあえずググってこのページにたどり着く。
Php 7.2 XDebug install error · Issue #1847 · laradock/laradock · GitHub
英語アレルギーの症状が出ているがそんなこと言っている場合でもなく、冷静にボタンを押す。
このページを翻訳しますか? [翻訳] ポチ
読めるっ!読めるぞおおおお!!!!!
laradock/workspace/Dockerfileを編集する
なんかこんなことが書いてあった。
edit file laradock/workspace/Dockerfile line 261
apt-get install -y php\${LARADOCK_PHP_VERSION}-xdebug && \
to
apt-get update && apt-get install -y php\${LARADOCK_PHP_VERSION}-xdebug && \
then run docker-compose build workspace
何を言ってるのかはわからないが()、なんかそれっぽいのでDockerfileの該当箇所を編集してみた。
そしてdocker-compose up --build nginx mysql workspace
お!挙動が変わった!うまくいっ・・・ん?
php-fpmのエラー
またエラー。
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
ERROR: Service 'php-fpm' failed to build: The command '/bin/sh -c if [ ${INSTALL_IMAGEMAGICK} = true ]; then apt-get install -y libmagickwand-dev imagemagick && pecl install imagick && docker-php-ext-enable imagick ;fi'
returned a non-zero code: 100
上の方にもっと色々出てたけど、とりあえずこちら↑のみ掲載。
例のごとく何言ってるのかわからないので、ググる。
そしてQiitaの記事にたどり着く。
laradock(Docker)+PhpStorm環境のxdebug導入でphp-fpmのエラーが起きる - Qiita
laradock/php-fpm/Dockerfileを編集
laradock/php-fpm/Dockerfile
のImageMagickのこれ↓を
RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \
apt-get install -y libmagickwand-dev imagemagick && \
pecl install imagick && \
docker-php-ext-enable imagick \
;fi
こう↓しろって書いてあったからする
RUN if [ ${INSTALL_IMAGEMAGICK} = true ]; then \
rm -rf /var/lib/apt/lists/* && \
apt-get update && \
apt-get install -y libmagickwand-dev imagemagick && \
pecl install imagick && \
docker-php-ext-enable imagick \
;fi
んでdocker-compose up --build nginx mysql workspace
よし!いい感じ!今度こそうまk・・・おいいいぃぃぃ!!
nginxのエラー
今度はこんなエラー
adduser: group 'www-data' in use
ERROR: Service 'nginx' failed to build: The command '/bin/sh -c apk update && apk upgrade && apk --update add logrotate && apk add --no-cache openssl && apk add --no-cache bash && adduser -D -H -u 1000 -s /bin/ba
sh www-data' returned a non-zero code: 1
まあ似たような内容のエラー。
workspaceのエラーとphp-fpmのエラーの経験を活かして頑張ろうとしたけど、1ミリもわからずにググった。
Laradockコンテナのビルドで ”adduser: group 'www-data' in use” が発生したときの対応【メモ】 - I am a software engineer
laradock/nginx/Dockerfileを編集
記事にはこう書いてた。
RUN apk update \
&& apk upgrade \
&& apk add --no-cache openssl \
- && apk add --no-cache bash \
- && adduser -D -H -u 1000 -s /bin/bash www-data
+ && apk add --no-cache bash
+
+RUN set -x ; \
+ addgroup -g 82 -S www-data ; \
+ adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1
ARG PHP_UPSTREAM_CONTAINER=php-fpm
ARG PHP_UPSTREAM_PORT=9000
昔の自分ならよくわからん書き方だが、今なら分かるっ!
ということでlaradock/nginx/Dockerfile
のこれ↓を
RUN apk update \
&& apk upgrade \
&& apk --update add logrotate \
&& apk add --no-cache openssl \
&& apk add --no-cache bash \
&& adduser -D -H -u 1000 -s /bin/bash www-data
こう↓した
RUN apk update \
&& apk upgrade \
&& apk --update add logrotate \
&& apk add --no-cache openssl \
&& apk add --no-cache bash
RUN set -x ; \
addgroup -g 82 -S www-data ; \
adduser -u 82 -D -S -G www-data www-data && exit 0 ; exit 1
んで、docker-compose up --build nginx mysql workspace
うまく行きました!!!
あとは進むだけ
Laradock+PhpStormでXdebug - けけずんセルフハッキング
あとはこの↑記事通り進んで無事にデバッグできるようになりました。
ということでデバッグに関する記事はまた後日・・・。
エラーとの戦い
とりあえず無事にXdebugの導入という目標は達成したわけですが、
エラーに関しては裏側で何が起きてて、Dockerfileを編集したことどう変わったのかはわかりません!!!(;・∀・)
それはおいおい知識を付けていきますm(_ _)m
エラーが発生したらググる!
ボクがやっているレベルくらいの話であれば、たいていこれで解決できるはずです。
解決しないときはググり力が足りていないんだと思います。
どういうワードで検索したら良いかわからないことはよくあると思います。
とりあえずそれっぽいワードなんでもいいので調べましょう。
そしたらそれっぽいワードを拾えたりするので、それをまたググる。
そんなことをしてたら答えに近づいていけます!
先輩が教えてくれた記事を共有しますので、読んでみてください。
Vue.js未経験のベテランプログラマーに作業依頼したところ難なくこなしてしまうのですが、隠れて努力してるのでしょうか?それとも経験により新しいフレームワークにも対応できてしまうのでしょうか?に対する阿部 誠 (Makoto Abe)さんの回答 - Quora
エラーに負けずに戦おう!