Ease switching of database engines for docker builds (#8863)

This commit is contained in:
Chan Chak Shing 2019-12-20 18:57:33 +08:00 committed by Daniel Vaz Gaspar
parent 3a468a53d9
commit d0efd0e4c9
3 changed files with 37 additions and 21 deletions

View File

@ -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
@ -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
@ -82,7 +82,7 @@ services:
volumes:
superset_home:
external: false
postgres:
db_home:
external: false
redis:
external: false

View File

@ -15,11 +15,25 @@
# 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
@ -27,4 +41,4 @@ REDIS_PORT=6379
FLASK_ENV=development
SUPERSET_ENV=development
SUPERSET_LOAD_EXAMPLES=yes
SUPERSET_LOAD_EXAMPLES=yes

View File

@ -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")