Containerizing applications has its benefits and downfalls. Troubleshooting can be trouble if you don’t know where to look. This is a quick overview of diagnosing a database container.
Database Troubleshooting
Create the database in the container by attaching to the container. docker ps
and run docker exec -it ${container_name} bash
and then mysql -u root -p
and password, and then show databases;
to list the databases and if it isn’t created, use create database webcommandcenter;
. docker-compose up -d db
exposes the ports.
Ensure you use the correct RAILS_ENV when deploying! Run docker-compose run website rake db:migrate RAILS_ENV=test
to fix the failed database migrations.
Essentially the problem is the rails app attempts to use the development environment and fails to connect to the mysql server.
Create a database in db Container
CREATE DATABASE db_name;
i.e. webcommandcenter_dev
for the dev environment and webcommandcenter
for the prod environment.
Then run the database migration with RAILS_ENV=development rake db:migrate
and it will update the database. This will also update the schema.rb
.
More Database
See this SO for more on running a migration and updates.
Database rollbacks are also your friend, rake db rollback STEP=?
.