6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

laradockでXdebugを使おうとしたらエラーと戦うことになった話

Posted at

どうもやまうちです。

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 - けけずんセルフハッキング

  1. xdebug.iniを編集
  2. .envを編集
  3. docker-compose up --build nginx mysql workspaceを実施
  4. エラー出る
  5. (;・∀・)

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

これから分かることは

  1. 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

エラーに負けずに戦おう!

6
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?