読書備忘録:開発系エンジニアのためのDocker絵とき入門
※ このブログのamazonリンクは、アフィリエイトリンクにより収入を得ています。
※ これは私個人の意見であり、会社の公式見解ではありません。
本の概要
この本に決めた理由
Dockerについて基礎の基礎から学びたく、表紙の「buildしたのにrunできない」という謳い文句に共感したため。
DockerとKubernetesの双方を基礎から学べる本もあったが、今回はDockerのみを勉強したかったため。
読んだ際の関連知識
Linuxについて、数ヶ月前に「新しいLinuxの教科書」で基礎を学んだばかり
業務でDocker上で動いているコードを少し触ったことはあるが、Docker自体は一切触ったことはない
データ分析でコードを書いたことはあるが、アプリケーションを作成した経験はない
全体の感想
Docker初心者でも読みやすい本でした。
phpのコードが出てきて焦りましたが、解説が丁寧なのでほとんどハマらずにDockerを勉強することができよかったです。
また、難しいLinuxのコマンドが出てこず、Linux初心者でも困らずに読み進められました。
ハマったところ
第6部の「ウェブサービス開発環境の構築例」を写経する際に少しハマりました。
ハマったところ1 ~phpのコードがうまく書けなかった~
phpが初めてだったため、phpのコードで何箇所かエラーが出ました。
モグラ叩きの要領でデバックしていくだけだったため、あまり深刻ではなかったです。
私が簡単に調べたところ、公式のサンプルコードは見当たらなかったため、少し困りました。
ハマったところ2 ~docker-entrypoint-initdb.dが実行されなかった~
問題
localhost:8000を実行すると、「データベースに接続できませんでした」と出てくる。
何度更新しても、「データベースに接続できませんでした」という文言が出てくる。
解決法
こちらの記事を参考にボリュームを再起動すると、docker-entrypoint-initdb.dが実行できました。
おそらく次の事象が発生したものと思われます。
+ docker-entrypoint-initdb.dが実行されたが、何かしらのトラブルでuserテーブルが作成される前にエラーになる
+ docker-entrypoint-initdb.dは一度実行されたため、データベースがすでに存在していると認識され、docker-entrypoint-initdb.dが実行されない
+ userテーブルが作成されないため、何度更新してもエラーになる
//すべてのコンテナを停止する (コンテナが使用中の場合、volumeを削除できないため)
docker container stop app mail db
//すべてのボリュームを削除する
//(すべてのボリュームを削除する必要はないかもしれませんが、完全に初期化しました)
docker volume rm work-db-volume
docker volume rm work-mail-volume
//ボリュームを再起動する
docker volume create work-db-volume
docker volume create work-mail-volume
//コンテナを再実行する(コマンドは省略)
その他に試したこと
dockerのmysqlの公式ドキュメントを読みましたが、上手く理解できませんでした
この記事が気に入ったらサポートをしてみませんか?