This is an automated email from the ASF dual-hosted git repository. maximebeauchemin pushed a commit to branch disable_playwright in repository https://gitbox.apache.org/repos/asf/superset.git
commit fc992bacb103dff09c07ba347137ac2ae15fbe24 Author: Maxime Beauchemin <[email protected]> AuthorDate: Tue Apr 9 12:42:21 2024 -0700 feat: disable chromium downloads by default in docker-compose When firing the `docker-compose up` command, which is pretty much the first step of most developer workflows, we kick up up 2 chromium downloads: one for PLAYWRIGHT and one for PUPPETEER by default. Those are used for optional features like alerts/reports/thumbnails/ and for CI. For convenience, I'm also introducing support for defining environment variables overrides for docker-compose in `docker/.env-local` while adding this to `.gitignore`, which developers can use without the fear/confusion around committing local envrionment specific settings to the repo. ----------------- About the core feature in this PR here, this saves minutes upon firing `docker-compose up`, and reduce confusion around "what the heck is it doing!?", in a phase where we should just be pulling and starting docker images. Most developer workflows don't require either of those, and if it were the case, we should bake this into the docker image as opposed to installing during the bootstrap phase. In any case, devs can switch those on easily by tweaking the env vars specified in `docker/.env` About PUPPETEER: in https://github.com/apache/superset/pull/22623, I found that it is used by Applitool in two GHAs: - https://github.com/apache/superset/blob/master/.github/workflows/superset-applitool-cypress.yml - https://github.com/apache/superset/blob/master/.github/workflows/superset-applitools-storybook.yml About PLAYWRIGHT, this is what powers alerts and reports as well thumbnail-generation. This is more common, and can be flipped on by setting `ENABLE_PLAYWRIGHT=true` in `docker/.env` --- .gitignore | 1 + docker-compose-image-tag.yml | 30 +++++++++++++++++++++++++----- docker-compose-non-dev.yml | 30 +++++++++++++++++++++++++----- docker-compose.yml | 42 +++++++++++++++++++++++++++++++++++------- docker/.env | 3 +++ docker/docker-bootstrap.sh | 2 +- docker/docker-frontend.sh | 2 +- 7 files changed, 91 insertions(+), 19 deletions(-) diff --git a/.gitignore b/.gitignore index 02657eb0fa..bbfc640c9a 100644 --- a/.gitignore +++ b/.gitignore @@ -110,6 +110,7 @@ release.json messages.mo docker/requirements-local.txt +docker/.env-local cache/ docker/*local* diff --git a/docker-compose-image-tag.yml b/docker-compose-image-tag.yml index 07f0d0dcb1..6c017ef75e 100644 --- a/docker-compose-image-tag.yml +++ b/docker-compose-image-tag.yml @@ -33,7 +33,11 @@ services: - redis:/data db: - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local image: postgres:15 container_name: superset_db restart: unless-stopped @@ -42,7 +46,11 @@ services: - ./docker/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d superset: - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local image: *superset-image container_name: superset_app command: ["/app/docker/docker-bootstrap.sh", "app-gunicorn"] @@ -57,7 +65,11 @@ services: image: *superset-image container_name: superset_init command: ["/app/docker/docker-init.sh"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local depends_on: *superset-depends-on user: "root" volumes: *superset-volumes @@ -68,7 +80,11 @@ services: image: *superset-image container_name: superset_worker command: ["/app/docker/docker-bootstrap.sh", "worker"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local restart: unless-stopped depends_on: *superset-depends-on user: "root" @@ -84,7 +100,11 @@ services: image: *superset-image container_name: superset_worker_beat command: ["/app/docker/docker-bootstrap.sh", "beat"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local restart: unless-stopped depends_on: *superset-depends-on user: "root" diff --git a/docker-compose-non-dev.yml b/docker-compose-non-dev.yml index f537e26c38..78d8cb9c35 100644 --- a/docker-compose-non-dev.yml +++ b/docker-compose-non-dev.yml @@ -38,7 +38,11 @@ services: - redis:/data db: - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local image: postgres:15 container_name: superset_db restart: unless-stopped @@ -47,7 +51,11 @@ services: - ./docker/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d superset: - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local build: <<: *common-build container_name: superset_app @@ -64,7 +72,11 @@ services: build: <<: *common-build command: ["/app/docker/docker-init.sh"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local depends_on: *superset-depends-on user: "root" volumes: *superset-volumes @@ -76,7 +88,11 @@ services: <<: *common-build container_name: superset_worker command: ["/app/docker/docker-bootstrap.sh", "worker"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local restart: unless-stopped depends_on: *superset-depends-on user: "root" @@ -93,7 +109,11 @@ services: <<: *common-build container_name: superset_worker_beat command: ["/app/docker/docker-bootstrap.sh", "beat"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local restart: unless-stopped depends_on: *superset-depends-on user: "root" diff --git a/docker-compose.yml b/docker-compose.yml index 9252e59902..d9e7f8b1e6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -54,7 +54,11 @@ services: - redis:/data db: - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local image: postgres:15 container_name: superset_db restart: unless-stopped @@ -65,7 +69,11 @@ services: - ./docker/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d superset: - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local build: <<: *common-build container_name: superset_app @@ -116,7 +124,11 @@ services: <<: *common-build container_name: superset_init command: ["/app/docker/docker-init.sh"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local depends_on: *superset-depends-on user: *superset-user volumes: *superset-volumes @@ -135,7 +147,11 @@ services: PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${BUILD_SUPERSET_FRONTEND_IN_DOCKER:-false} container_name: superset_node command: ["/app/docker/docker-frontend.sh"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local depends_on: *superset-depends-on volumes: *superset-volumes @@ -144,7 +160,11 @@ services: <<: *common-build container_name: superset_worker command: ["/app/docker/docker-bootstrap.sh", "worker"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local restart: unless-stopped depends_on: *superset-depends-on user: *superset-user @@ -162,7 +182,11 @@ services: <<: *common-build container_name: superset_worker_beat command: ["/app/docker/docker-bootstrap.sh", "beat"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local restart: unless-stopped depends_on: *superset-depends-on user: *superset-user @@ -175,7 +199,11 @@ services: <<: *common-build container_name: superset_tests_worker command: ["/app/docker/docker-bootstrap.sh", "worker"] - env_file: docker/.env + env_file: + # defaults + - docker/.env + # gitignored overrides + - docker/.env-local environment: DATABASE_HOST: localhost DATABASE_DB: test diff --git a/docker/.env b/docker/.env index 1b7d3df8c1..55048cc503 100644 --- a/docker/.env +++ b/docker/.env @@ -53,3 +53,6 @@ SUPERSET_PORT=8088 MAPBOX_API_KEY='' SUPERSET_SECRET_KEY=TEST_NON_DEV_SECRET + +ENABLE_PLAYWRIGHT=false +PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true diff --git a/docker/docker-bootstrap.sh b/docker/docker-bootstrap.sh index 7d53f92898..ecfe925298 100755 --- a/docker/docker-bootstrap.sh +++ b/docker/docker-bootstrap.sh @@ -38,7 +38,7 @@ fi # # playwright is an optional package - run only if it is installed # -if command -v playwright > /dev/null 2>&1; then +if [ "$ENABLE_PLAYWRIGHT" = "true" ] && command -v playwright > /dev/null 2>&1; then playwright install-deps playwright install chromium fi diff --git a/docker/docker-frontend.sh b/docker/docker-frontend.sh index 85c57cbf0f..c69fefd6d0 100755 --- a/docker/docker-frontend.sh +++ b/docker/docker-frontend.sh @@ -18,8 +18,8 @@ set -e # Packages needed for puppeteer: -apt update if [ "$PUPPETEER_SKIP_CHROMIUM_DOWNLOAD" = "false" ]; then + apt update apt install -y chromium fi
