dockerメモリ不足 と apache2タイムアウトの対応方法

事象

500のエラー画面で原因がよくつかめない事象となりました

Laravelログは下記が発生

[2021-05-03 00:53:15] local.ERROR: Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) {"userId":1,"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException(code: 1): Allowed memory size of 134217728 bytes exhausted (tried to allocate 20480 bytes) at /var/www/html/vendor/dompdf/dompdf/src/Css/Style.php:879)
[stacktrace]
#0 {main}
"} 

原因

  • 1つ目の原因は、Laravelログにでておりましたメモリ不足です。
  • 2つ目の原因はapache でのタイムアウトなのでこちらが 500エラーで原因がつかめなくて時間を消費しました

対策

(1) phpinfo.php を作成し、”<?phpphpinfo();?>” をコーディングしました。こちらを表示して調査しました


(2)メモリ不足は、PHP.ini ファイルです。Docker作成済みなので直接vim で追加しました。vimインストールは
apt-get install vim
vim /usr/local/etc/php/php.ini
を行いました。下記変更です


(3)apacheの設定は
vim /etc/apache2/apache2.conf

docker再起動で変更されますのでお確かめください

その他補足

viの使い方は、下記おすすめです

https://blog.codecamp.jp/vim-command

Docker環境なれると、上記はLinux環境設定です

楽ですね。少し前では大変な開発環境ですが、あっさりできるので最近の若い人たちは恵まれてるなーと感じます。

0

dockerのbuild できなくなった。作成者未記載はできなくなったぞー!

いままでbuild できたのにエラ-になりました

docker Hub の過去の作成者が未記入なものがbuildできなくなっております
その際は設定を変更してください

{
"registry-mirrors": [],
"insecure-registries": [],
"debug": false,
"experimental": false,
"features": {
"buildkit": false
}
}
0

docker でvim 使いたいですよね

vimとは

ファイルの作成や編集時に用いる、linuxの標準的なコマンド。
linuxで、cuiでのファイル編集時には、まず「vim」を利用することが多いのでの操作は覚える必要があります。
GUIに慣れた人には「iキー」が挿入であったり、編集後の書き込みが「:wq」となっていたり、初めはよくわからないと思いますが慣れれば、苦ではありません。

containerにログイン

・docker container exec -ti コンテナ名 bash

Vimのインストール

OSによってインストール方法が変わる。

・Redhat系

yum install vim

・Debian/Ubuntu系

apt-get update
apt-get install vim
0

Dockerで不要なコンテナ・イメージの見つけ方

イメージ

$ docker images --filter "dangling=true"

不要なイメージを削除

$ docker image prune

ちなみに、v1.2.5 以前では以下のコマンドで削除していました。

$ docker rmi $(docker images -f "dangling=true" -q)

コンテナ

不要なコンテナ一覧

$ docker ps -f "status=exited"

停止コンテナ一括削除

$ docker container prune

0

docker 削除(docker-compose.ymlのvolumesセクションに書かれた名前付きボリュームとコンテナにアタッチされたanonymous volumeが削除)

docker-compose down --rmi all --volumes --remove-orphans

downコマンドの特性としては、upコマンドと真逆のことをするコマンドということになる。つまり、upコマンドで作られうるもの(イメージ、コンテナ、ボリューム、ネットワーク)をすべて削除する。やり直しに有効なコマンドなのです

--rmiオプションは、削除するイメージの種類を指定する。allはすべてのイメージ。localはフィールドにカスタムタグのないイメージのみを削除する。--rmiオプションを省略すると、イメージは消されない。

--volumesオプションは、docker-compose.ymlvolumesセクションに書かれた名前付きボリュームとコンテナにアタッチされたanonymous volumeが削除される。

--remove-orphansオプションは、docker-compose.ymlで定義から削除されたサービス用の未定義コンテナも削除される。

0

Dockerインストール方法(Windows10)

1.環境・前提
・Windows 10 Home 64bit
・Docker version 19.03.8
・docker-compose version 1.25.4

この2020年8月からは HomeでもDockerがCPU仮想化対応できるWSL2が一緒にインストールできるので超簡単になりました。
2.Dockerってなに?【参考資料】
https://tech-lab.sios.jp/archives/19191
Windows10 HomeでDocker環境を導入する
https://qiita.com/zeffy1014/items/dda78f4ab0449989dfe1
Windows 10 Home で WSL 2 + Docker を使う
https://qiita.com/KoKeCross/items/a6365af2594a102a817b
【環境構築手順】
3.CPU仮想化確認
タスクマネージャ→パフォーマンス→CPU にて仮想化: 有効となっていればOKです。
4.docker for desktop-windows ダウンロード
https://hub.docker.com/editions/community/docker-ce-desktop-windows
参考サイト)
5.Docker Desktop Installer.exe を「管理者」で実行
▼インストール開始前に確認される画面(この状態でOKクリック)
インストール終わったらPC再起動
Docker起動
6.Docer起動後に下記ダイアログが表示された場合、ダイアログ内のリンクから
WSL2インストール
(サイト内の「 download the latest WSL2 Linux kernel からダウンロード可」)

WSL2インストール後に再度Docer起動(startクリック、次へ進んでいく)


無事起動

以上がdockerインストール方法でした

次回はいよいよLinexイメージ構築です

・・・・続く・・・・

0