LoginSignup
9
10

More than 3 years have passed since last update.

docker-composeでLAMP環境構築中にハマったメモ

Last updated at Posted at 2018-08-20

LAMP環境をXAMPPからDockerに移す初心者がはまりがちなポイントをまとめました。

docker-compose.ymlやDockerfileを設置してdocker-compose upしたけど、思い通りに動かない...

そもそもdocker-compose buildでビルドしたか?できているか?

  • docker ps -aで停止中コンテナを確認。
  • すべてのコンテナ名が一覧にある:ビルドはできているけど、起動に失敗している →2の「ない」へ
  • 一部またはすべてが一覧にない:念のためdocker-compose downしてから、もう一度docker-compose buildを実行してログを見る。
  • 最終行のコマンドはdocker-compose.ymlのserverに書いた最後のセクションのDockerfileの内容まで走っているか?

コンテナは起動しているか?

docker psで起動中コンテナを確認

  • ある:起動している
  • ない:コンテナが起動していないので、1に戻ってupまたはbuildとupの再試行(だめなら-dつけずに画面でエラーをモニタする)

確認ポイント:docker exec -it <コンテナID>で中を見てみる
volumes:に書いたディレクトリ指定、接続IP/ホスト名/ポート番号、など

今コンテナがどういう状態かわからない...

安定して動くまではdocker-compose up -dではなくdocker-compose upを使うこと。(写経の時に-dオプションがついてることがありがち)
コンテナ名で始まるログが非同期に流れてくるので、停止したり、エラーが発生していないものがないかを全体的に確認する。
<コンテナ名> exited with code 1などの終了ステータスが出ていることもある。
参考:終了ステータス | UNIX & Linux コマンド・シェルスクリプト リファレンス

公式MySQLイメージ編

※執筆時はイメージにmysql:5.7を指定して、5.7.23が取得されています。

ユーザー作成エラー

ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'

例えばdocker-compose.ymlで

docker-compose.yml
services:
 ...
  mysql:
    environment:
      ...
      MYSQL_USER: root

のように、ユーザー名をrootで指定していると出たり出なかったりする。(出ないこともあった

php:7.2-apache-stretch イメージ編

php.iniをvolumes:セクションで上書きしているときに、手元のphp.iniに書いてあるextension指定がコンテナでは使用できない状態でエラーが表示されていることがあるが、動作はしている。(その拡張を使わなければ動いているので無視しても…
拡張を使おうと思ったらDockerfileのRUNコマンドを使ってOSのパッケージインストールとあわせて、docker-php-ext-installを使う。

(以下随時追記...)

リンク

dockerでコンテナが立ち上がらないときやってみること
https://qiita.com/mom0tomo/items/35dfacb628df1bd3651e

9
10
0

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
9
10