Public | Automated Build

Last pushed: a year ago
Short Description
[0.12.0] Caravel for MySQL, PostgreSQL, SQLite, and Amazon Redshift on Python3 (now with redis)
Full Description


AirBnB renamed this project superset. As such this project is effectively dead.

Find the new project at amancevice/superset


Docker image for AirBnB's Caravel.

As of version 0.10.0 this image is based on Alpine Linux and installed with Python 3


Run the caravel demo by entering this command into your console:

docker run --name caravel -d -p 8088:8088 amancevice/caravel
docker exec -it caravel demo

You will be prompted to set up an admin user.

When finished navigate to http://localhost:8088/ to see the demo.

Log in with the credentials you just created.


This repo is tagged in parallel with caravel. Pulling amancevice/caravel:0.10.0 will fetch the image of this repository running caravel version 0.10.0. As it is an automated build, commits to the master branch of this repository trigger a re-build of the latest tag, while tagging master triggers a versioned build. It is possible that the latest tag includes new deployment-specific features but will usually be in sync with the latest semantic version.

Database Setup

Determine where you will store Caravel's database; choose SQLite, MySQL, PostgreSQL, or Redshift. Use the ENV variable SQLALCHEMY_DATABASE_URI to point caravel to the correct database. Be sure to set a SECRET_KEY when creating the container.


If Caravel's database is created using SQLite the db file should be mounted from the host machine. In this example we will store a SQLite DB on our host machine in ~/caravel/caravel.db and mount the directory to /home/caravel/db in the container.

docker run --detach --name caravel \
    --env SECRET_KEY="mySUPERsecretKEY" \
    --env SQLALCHEMY_DATABASE_URI="sqlite:////home/caravel/db/caravel.db" \
    --publish 8088:8088 \
    --volume ~/caravel:/home/caravel/db \


docker run --detach --name caravel \
    --env SECRET_KEY="mySUPERsecretKEY" \
    --env SQLALCHEMY_DATABASE_URI="mysql://user:pass@host:port/db" \
    --publish 8088:8088 \


docker run --detach --name caravel \
    --env SECRET_KEY="mySUPERsecretKEY" \
    --env SQLALCHEMY_DATABASE_URI="postgresql://user:pass@host:port/db" \
    --publish 8088:8088 \


docker run --detach --name caravel \
    --env SECRET_KEY="mySUPERsecretKEY" \
    --env SQLALCHEMY_DATABASE_URI="redshift+psycopg2://" \
    --publish 8088:8088 \

Database Initialization

After starting the Caravel server, initialize the database with an admin user and Caravel tables using the caravel-init helper script:

docker run --detach --name caravel ... amancevice/caravel
docker exec -it caravel caravel-init


Upgrading to a newer version of caravel can be accomplished by re-pulling amancevice/caravelat a specified caravel version or latest (see above for more on this). Remove the old container and re-deploy, making sure to use the correct environmental configuration. Finally, ensure the caravel database is migrated up to the head:

# Pull desired version
docker pull amancevice/caravel

# Remove the current container
docker rm -f caravel-old

# Deploy a new container ...
docker run --detach --name caravel-new ...

# Upgrade the DB
docker exec caravel-new db upgrade

Additional Configuration

A custom configuration can be accomplished through mounting a Caravel config to ~caravel/ in the container or by setting ENV variables:


Additional environmental variables prefixed with CARAVEL_ will also be passed to the caravel configuration (without the CARAVEL_ prefix). See the caravel configuration file for a list of available configuration keys.

For example, the following command will deploy caravel with the LOG_LEVEL variable set in the caravel configuration:

docker run --detach --name caravel \
    --publish 8088:8088 \
Docker Pull Command
Source Repository

Comments (3)
a year ago

@harryzhu, this should be fixed as of 0.9.0

a year ago

warnings.warn("Flask-Cache: CACHE_TYPE is set to null, "
2016-05-08 02:12:54, DB not found Creating all Models from Base
2016-05-08 02:12:54, Creation and initialization failed: (sqlite3.OperationalError) attempt to write a readonly database [SQL: u'\nCREATE TABLE ab_user (\n\tid INTEGER NOT NULL, \n\tfirst_name VARCHAR(64) NOT NULL, \n\tlast_name VARCHAR(64) NOT NULL, \n\tusername VARCHAR(64) NOT NULL, \n\tpassword VARCHAR(256), \n\tactive BOOLEAN, \n\temail VARCHAR(64) NOT NULL, \n\tlast_login DATETIME, \n\tlogin_count INTEGER, \n\tfail_login_count INTEGER, \n\tcreated_on DATETIME, \n\tchanged_on DATETIME, \n\tcreated_by_fk INTEGER, \n\tchanged_by_fk INTEGER, \n\tPRIMARY KEY (id), \n\tUNIQUE (username), \n\tCHECK (active IN (0, 1)), \n\tUNIQUE (email), \n\tFOREIGN KEY(created_by_fk) REFERENCES ab_user (id), \n\tFOREIGN KEY(changed_by_fk) REFERENCES ab_user (id)\n)\n\n']

a year ago

Excellent work, Amancevice.

Great to find an up-to-date docker image for Caravel.