Example of Phoenix application with database multi-tenancy. A practical way to see the concepts tackled in this post from my website.
There's a user in the seeds to use for testing purposes:
- Email: example@example.com
- Password: 123456
If you want to create some migration for every tenant:
> docker-compose run multi_tenancex mix multi_tenancex.gen.tenant_migration create_some_table
If you want to migrate the migrations for every tenant:
> docker-compose run multi_tenancex mix multi_tenancex.ecto.migrate_tenants
If you want to rollback the migrations for every tenant:
> docker-compose run multi_tenancex mix multi_tenancex.ecto.rollback_tenants
This project is Docker friendly from day one. To start working on it:
- Setup the multi_tenancex container with
docker-compose build multi_tenancex
. - Install dependencies with
docker-compose run multi_tenancex mix deps.get
. - Create your database with
docker-compose run multi_tenancex mix ecto.create
. - Migrate your database with
docker-compose run multi_tenancex mix ecto.migrate
. - Run seeds for default data with
docker-compose run multi_tenancex mix run priv/repo/seeds.exs
. - Install Node.js dependencies with
docker-compose run multi_tenancex bash -c "cd assets; npm install"
. - Start the application with
docker-compose up
This step assumes you already followed instructions from previous paragraph.
- Create your testing database with
docker-compose run multi_tenancex env MIX_ENV=test mix ecto.create
. - Migrate your testing database with
docker-compose run multi_tenancex env MIX_ENV=test mix ecto.migrate
. - Run the test suite with
docker-compose run multi_tenancex env MIX_ENV=test mix test
. - Run the test suite with coverage report on
cover
folder with:docker-compose run multi_tenancex env MIX_ENV=test mix coveralls.html
.
This project was developed by dreamingechoes. It adheres to its code of conduct and contributing guidelines, and uses an equivalent license.