Skip to content

Commit

Permalink
Ease switching of database engines for docker builds (apache#8863)
Browse files Browse the repository at this point in the history
  • Loading branch information
Chan Chak Shing authored and dpgaspar committed Dec 20, 2019
1 parent 3a468a5 commit d0efd0e
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 21 deletions.
8 changes: 4 additions & 4 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ x-superset-build: &superset-build
dockerfile: Dockerfile
target: dev
x-superset-depends-on: &superset-depends-on
- postgres
- db
- redis
x-superset-volumes: &superset-volumes
# /app/pythonpath_docker will be appended to the PYTHONPATH in the final container
Expand All @@ -38,14 +38,14 @@ services:
volumes:
- redis:/data

postgres:
db:
env_file: docker/.env
image: postgres:10
restart: unless-stopped
ports:
- "127.0.0.1:5432:5432"
volumes:
- postgres:/var/lib/postgresql/data
- db_home:/var/lib/postgresql/data

superset:
build: *superset-build
Expand Down Expand Up @@ -82,7 +82,7 @@ services:
volumes:
superset_home:
external: false
postgres:
db_home:
external: false
redis:
external: false
26 changes: 20 additions & 6 deletions docker/.env
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,30 @@
# limitations under the License.
#
COMPOSE_PROJECT_NAME=superset
POSTGRES_DB=superset
POSTGRES_HOST=postgres
POSTGRES_PASSWORD=superset
POSTGRES_PORT=5432
POSTGRES_USER=superset

# database configurations (do not modify)
DATABASE_DB=superset
DATABASE_HOST=db
DATABASE_PASSWORD=superset
DATABASE_USER=superset

# database engine specific environment variables
# change the below if you prefers another database engine
DATABASE_PORT=5432
DATABASE_DIALECT=postgresql
POSTGRES_DB=${DATABASE_DB}
POSTGRES_USER=${DATABASE_USER}
POSTGRES_PASSWORD=${DATABASE_PASSWORD}
#MYSQL_DATABASE=${DATABASE_DB}
#MYSQL_USER=${DATABASE_USER}
#MYSQL_PASSWORD=${DATABASE_PASSWORD}
#MYSQL_RANDOM_ROOT_PASSWORD=yes

# Add the mapped in /app/pythonpath_docker which allows devs to override stuff
PYTHONPATH=/app/pythonpath:/app/pythonpath_docker
REDIS_HOST=redis
REDIS_PORT=6379

FLASK_ENV=development
SUPERSET_ENV=development
SUPERSET_LOAD_EXAMPLES=yes
SUPERSET_LOAD_EXAMPLES=yes
24 changes: 13 additions & 11 deletions docker/pythonpath_dev/superset_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,19 +45,21 @@ def get_env_variable(var_name, default=None):
raise EnvironmentError(error_msg)


POSTGRES_USER = get_env_variable("POSTGRES_USER")
POSTGRES_PASSWORD = get_env_variable("POSTGRES_PASSWORD")
POSTGRES_HOST = get_env_variable("POSTGRES_HOST")
POSTGRES_PORT = get_env_variable("POSTGRES_PORT")
POSTGRES_DB = get_env_variable("POSTGRES_DB")
DATABASE_DIALECT = get_env_variable("DATABASE_DIALECT")
DATABASE_USER = get_env_variable("DATABASE_USER")
DATABASE_PASSWORD = get_env_variable("DATABASE_PASSWORD")
DATABASE_HOST = get_env_variable("DATABASE_HOST")
DATABASE_PORT = get_env_variable("DATABASE_PORT")
DATABASE_DB = get_env_variable("DATABASE_DB")

# The SQLAlchemy connection string.
SQLALCHEMY_DATABASE_URI = "postgresql://%s:%s@%s:%s/%s" % (
POSTGRES_USER,
POSTGRES_PASSWORD,
POSTGRES_HOST,
POSTGRES_PORT,
POSTGRES_DB,
SQLALCHEMY_DATABASE_URI = "%s://%s:%s@%s:%s/%s" % (
DATABASE_DIALECT,
DATABASE_USER,
DATABASE_PASSWORD,
DATABASE_HOST,
DATABASE_PORT,
DATABASE_DB,
)

REDIS_HOST = get_env_variable("REDIS_HOST")
Expand Down

0 comments on commit d0efd0e

Please sign in to comment.