docker コマンド一覧
(1) 一覧
$ docker ps -a
$ docker ps
$ docker images
(2) ログ
$ docker logs <container_id>
(3) 構築
$ docker-compose stop
$ docker-compose down
$ docker-compose build
$ docker-compose up
(4) 破壊
$ docker container prune
$ docker images prune -a
$ docker images prune
$ docker system prune -a
$ docker volume prune
rails コマンド
(1) ファイル生成
$ docker-compose run web bundle exec rails generate model Hello
$ docker-compose run web bundle exec rails generate controller Welcome index show
※ ファイルが生成されたという成功ログが出ているのにも関わらず、ファイルが実際に生成されない問題が起きたら、Dockerfile と docker-compse.yml のマウントするディレクトリ名が一致していないミスを起こしているかもしれない。
私はこの記事 でこれが原因であることに気が付いた。
(2) DB
$ docker-compose run web rails db:create
$ docker-compose run web rails db:migrate
$ docker-compose run web rails db:reset
(3) コンソール
$ docker-compose run web rails dbconsole
$ docker-compose run web rails console
※ コンソールが起動しているときは、docker-compose down
が機能しないので、コンソール上で exit を使って抜けてください。
(4) A server is already running. Check /my_app/tmp/pids/server.pid.
エラー
docker-compose down
ではなくて、CTRL+C でコンテナを停止すると、間違いなく 3000 ポートで起動してないのにも関わらず、再び 3000 ポートを使った起動ができない問題が起きる。
/my_app/tmp/pids/server.pid
というキャッシュファイルが残っているのが原因みたい。
$ docker-compose up
...
A server is already running. Check /my_app/tmp/pids/server.pid.
...
$ lsof -i :3000
$ docker-compose run web rm /my_app/tmp/pids/server.pid
$ docker-compose up