LoginSignup
0
0

More than 3 years have passed since last update.

初学者のプログラミング Docker導入

Posted at

Docker導入奮闘記

およそ三日かけてDockerの導入に成功!嬉しかったので記事に残そうと思う。特にエラーの対処について残していく

エラーその1 タイプミス

エラー文
Invalid value for --database option. Supported for preconfiguration are: mysql, oracle, postgresql, sqlite3, frontbase, ibm_db, sqlserver, jdbcmysql, jdbcsqlite3, jdbcpostgresql, jdbc.

シンプルにタイプミス!docker.compose.ymlの記述に誤りがあった

default: &default
  adapter: postgressql #<='s'が多い
  encoding: unicode
  host: db
  username: postgres
  password: password
  pool: 5

素直に公式ドキュメントから引用すべき!
公式ドキュメント:https://docs.docker.com/compose/rails/#define-the-project

エラーその2 database.ymlのpassword設定ミス

エラー文
db_1   | Error: Database is uninitialized and superuser password is not specified.
db_1   |        You must specify POSTGRES_PASSWORD to a non-empty value for the
db_1   |        superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run".

ここからdocker-compose logsでエラーログを見始める。(もっと早く確認すれば良かった)
ログからパスワード設定に誤りがあると仮定し、公式ドキュメントを確認したら解説があった。

公式ドキュメントより引用

最後に、docker-compose.yml魔法が起こる場所です。このファイルには、アプリを構成するサービス(データベースとWebアプリ)、それぞれのDockerイメージを取得する方法(データベースは事前に作成されたPostgreSQLイメージで実行され、Webアプリは現在のディレクトリから構築されます)、そして、それらをリンクしてWebアプリのポートを公開するために必要な構成。

version: "3.9"
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
    # ここのパスワード設定にミスがあった 公式ドキュメントで解決 #
    environment:  
      POSTGRES_PASSWORD: password
  web:
    build: .
    command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

docker-compose.ymlを訂正して解決できた。

エラーその3 postgresqlのバージョンエラー

デフォルトで設定されるバージョンでエラーが出た。Gemfileを訂正し解決。

エラーその4 失敗したDBデータが残っていたために出るエラー

全てを削除する、筆者曰く「滅びの言葉」を実行し、初めからやり直すことで導入を完了した。

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

参考:《滅びの呪文》Docker Composeで作ったコンテナ、イメージ、ボリューム、ネットワークを一括完全消去する便利コマンド
https://qiita.com/suin/items/19d65e191b96a0079417
大変お世話になりました!ありがとうございました!

まとめ

dockerについてudemyで勉強しながら導入した。しかし、実際に手元で操作すると実行結果に多くの差が出現した。その際にブログも大いに参考になったが、特に公式ドキュメントを参考にすべきだと、改めて痛感した。また、ログを確認することの重要性を再確認できた。まずはログを確認して、どこを対処しなければいけないかを明確にして作業を進めていくべき。

参考

さいごに

プログラミングの初学者です。その日に学んだことを学習の一環としてアウトプットしています。より深く学習していきたいと考えておりますので、内容に誤りがございまいたらご指摘等いただけますと幸いです。

参考図書:パーフェクト Ruby on Rails【増補改訂版】すがわらまさのり/前島真一/橋立友宏/後藤優一/五十嵐邦明

0
0
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
0
0