From 4f6348f6074a747b90ebeec609681c6db8f8f7d0 Mon Sep 17 00:00:00 2001 From: Tai Dupree Date: Mon, 15 Feb 2021 16:26:32 -0800 Subject: [PATCH] chore: add non-dev docker-compose workflow --- docker-compose-non-dev.yml | 88 ++++++++++++++++++++++ docker-compose.yml | 10 +++ docker/.env | 1 + docker/.env-non-dev | 46 +++++++++++ docker/docker-bootstrap.sh | 3 + docs/src/pages/docs/installation/index.mdx | 11 ++- 6 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 docker-compose-non-dev.yml create mode 100644 docker/.env-non-dev diff --git a/docker-compose-non-dev.yml b/docker-compose-non-dev.yml new file mode 100644 index 0000000000000..94c2ac576dd9b --- /dev/null +++ b/docker-compose-non-dev.yml @@ -0,0 +1,88 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +x-superset-image: &superset-image apache/superset:latest +x-superset-depends-on: &superset-depends-on + - db + - redis +x-superset-volumes: &superset-volumes + # /app/pythonpath_docker will be appended to the PYTHONPATH in the final container + - ./docker:/app/docker + - superset_home:/app/superset_home + +version: "3.7" +services: + redis: + image: redis:3.2 + container_name: superset_cache + restart: unless-stopped + volumes: + - redis:/data + + db: + env_file: docker/.env + image: postgres:10 + container_name: superset_db + restart: unless-stopped + volumes: + - db_home:/var/lib/postgresql/data + + superset: + env_file: docker/.env-non-dev + image: *superset-image + container_name: superset_app + restart: unless-stopped + ports: + - 8088:8088 + depends_on: *superset-depends-on + volumes: *superset-volumes + + superset-init: + image: *superset-image + container_name: superset_init + command: ["/app/docker/docker-init.sh"] + env_file: docker/.env-non-dev + depends_on: *superset-depends-on + user: "root" + volumes: *superset-volumes + + superset-worker: + image: *superset-image + container_name: superset_worker + command: ["/app/docker/docker-bootstrap.sh", "worker"] + env_file: docker/.env-non-dev + restart: unless-stopped + depends_on: *superset-depends-on + user: "root" + volumes: *superset-volumes + + superset-worker-beat: + image: *superset-image + container_name: superset_worker_beat + command: ["/app/docker/docker-bootstrap.sh", "beat"] + env_file: docker/.env-non-dev + restart: unless-stopped + depends_on: *superset-depends-on + user: "root" + volumes: *superset-volumes + +volumes: + superset_home: + external: false + db_home: + external: false + redis: + external: false diff --git a/docker-compose.yml b/docker-compose.yml index 733ad3ea57bf7..12cc4c1fac431 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -90,6 +90,16 @@ services: user: "root" volumes: *superset-volumes + superset-worker-beat: + image: *superset-image + container_name: superset_worker_beat + command: ["/app/docker/docker-bootstrap.sh", "beat"] + env_file: docker/.env + restart: unless-stopped + depends_on: *superset-depends-on + user: "root" + volumes: *superset-volumes + superset-tests-worker: image: *superset-image container_name: superset_tests_worker diff --git a/docker/.env b/docker/.env index 9594adb8a8150..b2f11c1a185a2 100644 --- a/docker/.env +++ b/docker/.env @@ -43,3 +43,4 @@ FLASK_ENV=development SUPERSET_ENV=development SUPERSET_LOAD_EXAMPLES=yes CYPRESS_CONFIG=false +SUPERSET_PORT=8088 diff --git a/docker/.env-non-dev b/docker/.env-non-dev new file mode 100644 index 0000000000000..1cb5d30bdbbbe --- /dev/null +++ b/docker/.env-non-dev @@ -0,0 +1,46 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +COMPOSE_PROJECT_NAME=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=superset +POSTGRES_USER=superset +POSTGRES_PASSWORD=superset +#MYSQL_DATABASE=superset +#MYSQL_USER=superset +#MYSQL_PASSWORD=superset +#MYSQL_RANDOM_ROOT_PASSWORD=yes + +# Add the mapped in /app/pythonpath_docker which allows devs to override stuff +PYTHONPATH=/app/pythonpath:/app/docker/pythonpath_dev +REDIS_HOST=redis +REDIS_PORT=6379 + +FLASK_ENV=production +SUPERSET_ENV=production +SUPERSET_LOAD_EXAMPLES=yes +CYPRESS_CONFIG=false +SUPERSET_PORT=8088 diff --git a/docker/docker-bootstrap.sh b/docker/docker-bootstrap.sh index f44cf3aa0f303..ca7cd203bdabf 100755 --- a/docker/docker-bootstrap.sh +++ b/docker/docker-bootstrap.sh @@ -39,6 +39,9 @@ fi if [[ "${1}" == "worker" ]]; then echo "Starting Celery worker..." celery worker --app=superset.tasks.celery_app:app -Ofair -l INFO +elif [[ "${1}" == "beat" ]]; then + echo "Starting Celery beat..." + celery beat --app=superset.tasks.celery_app:app --pidfile /tmp/celerybeat.pid -l INFO elif [[ "${1}" == "app" ]]; then echo "Starting web app..." flask run -p 8088 --with-threads --reload --debugger --host=0.0.0.0 diff --git a/docs/src/pages/docs/installation/index.mdx b/docs/src/pages/docs/installation/index.mdx index ff16ee0f6d956..7c895d43e779a 100644 --- a/docs/src/pages/docs/installation/index.mdx +++ b/docs/src/pages/docs/installation/index.mdx @@ -68,12 +68,21 @@ $ git checkout latest Then, run the following command: ```bash -$ docker-compose up +$ docker-compose -f docker-compose-non-dev.yml up ``` You should see a wall of logging output from the containers being launched on your machine. Once this output slows, you should have a running instance of Superset on your local machine! +**Note:** this will bring up superset in a non-dev mode, changes to the codebase will not be reflected. +If you would like to run superset in dev mode, simply replace the previous command with: + +```bash +$ docker-compose up +``` + +and wait for the `superset_node` container to finish building the assets. + ### 4. Log in to Superset Your local Superset instance also includes a Postgres server to store your data and is already