forked from apache/superset
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'masterzain3' into master
- Loading branch information
Showing
42 changed files
with
316 additions
and
54 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
###################################################################### | ||
# Node stage to deal with static asset construction | ||
###################################################################### | ||
ARG PY_VER=3.9-slim-bookworm | ||
|
||
# if BUILDPLATFORM is null, set it to 'amd64' (or leave as is otherwise). | ||
ARG BUILDPLATFORM=${BUILDPLATFORM:-amd64} | ||
FROM --platform=${BUILDPLATFORM} node:16-bookworm-slim AS superset-node | ||
|
||
ARG NPM_BUILD_CMD="build" | ||
|
||
RUN apt-get update -qq \ | ||
&& apt-get install -yqq --no-install-recommends \ | ||
build-essential \ | ||
python3 | ||
|
||
ENV BUILD_CMD=${NPM_BUILD_CMD} \ | ||
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true | ||
# NPM ci first, as to NOT invalidate previous steps except for when package.json changes | ||
WORKDIR /app/superset-frontend | ||
|
||
RUN --mount=type=bind,target=/frontend-mem-nag.sh,src=./docker/frontend-mem-nag.sh \ | ||
/frontend-mem-nag.sh | ||
|
||
RUN --mount=type=bind,target=./package.json,src=./superset-frontend/package.json \ | ||
--mount=type=bind,target=./package-lock.json,src=./superset-frontend/package-lock.json \ | ||
npm ci | ||
|
||
COPY ./superset-frontend ./ | ||
# This seems to be the most expensive step | ||
RUN npm run ${BUILD_CMD} | ||
|
||
###################################################################### | ||
# Final lean image... | ||
###################################################################### | ||
FROM python:${PY_VER} AS lean | ||
|
||
WORKDIR /app | ||
ENV LANG=C.UTF-8 \ | ||
LC_ALL=C.UTF-8 \ | ||
SUPERSET_ENV=production \ | ||
FLASK_APP="superset.app:create_app()" \ | ||
PYTHONPATH="/app/pythonpath" \ | ||
SUPERSET_HOME="/app/superset_home" \ | ||
SUPERSET_PORT=8088 | ||
|
||
RUN mkdir -p ${PYTHONPATH} superset/static requirements superset-frontend apache_superset.egg-info requirements \ | ||
&& useradd --user-group -d ${SUPERSET_HOME} -m --no-log-init --shell /bin/bash superset \ | ||
&& apt-get update -qq && apt-get install -yqq --no-install-recommends \ | ||
build-essential \ | ||
curl \ | ||
default-libmysqlclient-dev \ | ||
libsasl2-dev \ | ||
libsasl2-modules-gssapi-mit \ | ||
libpq-dev \ | ||
libecpg-dev \ | ||
libldap2-dev \ | ||
&& touch superset/static/version_info.json \ | ||
&& chown -R superset:superset ./* \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
COPY --chown=superset:superset setup.py MANIFEST.in README.md ./ | ||
# setup.py uses the version information in package.json | ||
COPY --chown=superset:superset superset-frontend/package.json superset-frontend/ | ||
COPY --chown=superset:superset requirements/base.txt requirements/ | ||
RUN --mount=type=cache,target=/root/.cache/pip \ | ||
pip install --upgrade setuptools pip && \ | ||
pip install -r requirements/base.txt | ||
|
||
COPY --chown=superset:superset --from=superset-node /app/superset/static/assets superset/static/assets | ||
## Lastly, let's install superset itself | ||
COPY --chown=superset:superset superset superset | ||
RUN --mount=type=cache,target=/root/.cache/pip \ | ||
pip install -e . \ | ||
&& flask fab babel-compile --target superset/translations \ | ||
&& chown -R superset:superset superset/translations | ||
|
||
COPY --chmod=755 ./docker/run-server.sh /usr/bin/ | ||
USER superset | ||
|
||
HEALTHCHECK CMD curl -f "http://localhost:${SUPERSET_PORT}/health" | ||
|
||
EXPOSE ${SUPERSET_PORT} | ||
|
||
CMD ["/usr/bin/run-server.sh"] | ||
|
||
###################################################################### | ||
# Dev image... | ||
###################################################################### | ||
FROM lean AS dev | ||
ARG GECKODRIVER_VERSION=v0.33.0 \ | ||
FIREFOX_VERSION=117.0.1 | ||
|
||
USER root | ||
|
||
RUN apt-get update -qq \ | ||
&& apt-get install -yqq --no-install-recommends \ | ||
libnss3 \ | ||
libdbus-glib-1-2 \ | ||
libgtk-3-0 \ | ||
libx11-xcb1 \ | ||
libasound2 \ | ||
libxtst6 \ | ||
wget \ | ||
# Install GeckoDriver WebDriver | ||
&& wget -q https://github.com/mozilla/geckodriver/releases/download/${GECKODRIVER_VERSION}/geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz -O - | tar xfz - -C /usr/local/bin \ | ||
# Install Firefox | ||
&& wget -q https://download-installer.cdn.mozilla.net/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2 -O - | tar xfj - -C /opt \ | ||
&& ln -s /opt/firefox/firefox /usr/local/bin/firefox \ | ||
&& apt-get autoremove -yqq --purge wget && rm -rf /var/[log,tmp]/* /tmp/* /var/lib/apt/lists/* | ||
# Cache everything for dev purposes... | ||
|
||
COPY --chown=superset:superset requirements/development.txt requirements/ | ||
RUN --mount=type=cache,target=/root/.cache/pip \ | ||
pip install -r requirements/development.txt | ||
|
||
USER superset | ||
###################################################################### | ||
# CI image... | ||
###################################################################### | ||
FROM dev AS devfinal | ||
|
||
COPY --chown=superset:superset --chmod=755 ./docker/*.sh /app/docker/ | ||
|
||
CMD ["/app/docker/docker-ci.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
############ Zain Note ############ | ||
# ARG PY_VER=3.9-slim-bookworm ## Old version upgraded to ARG PY_VER=3.11-slim-bookworm | ||
# node:16-bookworm-slim ## Old version upgraded to node:21-bookworm-slim | ||
# ARG GECKODRIVER_VERSION=v0.29.0 ## you should be noted that GECKODRIVER should be compatible with FIREFOX_VERSION or report delivery will not work | ||
# FIREFOX_VERSION=117.0.1 | ||
############ Zain Note End ############ | ||
|
||
###################################################################### | ||
# Node stage to deal with static asset construction | ||
###################################################################### | ||
ARG PY_VER=3.11-slim-bookworm | ||
# if BUILDPLATFORM is null, set it to 'amd64' (or leave as is otherwise). | ||
ARG BUILDPLATFORM=${BUILDPLATFORM:-amd64} | ||
FROM --platform=${BUILDPLATFORM} node:21-bullseye-slim AS superset-node | ||
|
||
ARG NPM_BUILD_CMD="build" | ||
|
||
RUN apt-get update -qq \ | ||
&& apt-get install -yqq --no-install-recommends \ | ||
build-essential \ | ||
python3 | ||
|
||
ENV BUILD_CMD=${NPM_BUILD_CMD} \ | ||
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true | ||
# NPM ci first, as to NOT invalidate previous steps except for when package.json changes | ||
WORKDIR /app/superset-frontend | ||
|
||
RUN --mount=type=bind,target=/frontend-mem-nag.sh,src=./docker/frontend-mem-nag.sh \ | ||
/frontend-mem-nag.sh | ||
|
||
RUN --mount=type=bind,target=./package.json,src=./superset-frontend/package.json \ | ||
--mount=type=bind,target=./package-lock.json,src=./superset-frontend/package-lock.json \ | ||
npm ci | ||
|
||
COPY ./superset-frontend ./ | ||
# This seems to be the most expensive step | ||
RUN npm run ${BUILD_CMD} | ||
|
||
###################################################################### | ||
# Final lean image... | ||
###################################################################### | ||
FROM python:${PY_VER} AS lean | ||
|
||
|
||
WORKDIR /app | ||
ENV LANG=C.UTF-8 \ | ||
LC_ALL=C.UTF-8 \ | ||
SUPERSET_ENV=production \ | ||
FLASK_APP="superset.app:create_app()" \ | ||
PYTHONPATH="/app/pythonpath" \ | ||
SUPERSET_HOME="/app/superset_home" \ | ||
SUPERSET_PORT=8088 | ||
|
||
RUN mkdir -p ${PYTHONPATH} superset/static requirements superset-frontend apache_superset.egg-info requirements \ | ||
&& useradd --user-group -d ${SUPERSET_HOME} -m --no-log-init --shell /bin/bash superset \ | ||
&& apt-get update -qq && apt-get install -yqq --no-install-recommends \ | ||
build-essential \ | ||
curl \ | ||
default-libmysqlclient-dev \ | ||
libsasl2-dev \ | ||
libsasl2-modules-gssapi-mit \ | ||
libpq-dev \ | ||
libecpg-dev \ | ||
libldap2-dev \ | ||
&& touch superset/static/version_info.json \ | ||
&& chown -R superset:superset ./* \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
|
||
COPY --chown=superset:superset setup.py MANIFEST.in README.md ./ | ||
# setup.py uses the version information in package.json | ||
COPY --chown=superset:superset superset-frontend/package.json superset-frontend/ | ||
COPY --chown=superset:superset requirements/base.txt requirements/ | ||
RUN --mount=type=cache,target=/root/.cache/pip \ | ||
pip install --upgrade pip && \ | ||
pip install uv && \ | ||
pip install -r requirements/base.txt \ | ||
uv pip install setuptools Pillow psycopg2-binary gevent ## this is by zain to fix issue not working | ||
|
||
|
||
COPY --chown=superset:superset --from=superset-node /app/superset/static/assets superset/static/assets | ||
## Lastly, let's install superset itself | ||
COPY --chown=superset:superset superset superset | ||
RUN --mount=type=cache,target=/root/.cache/pip \ | ||
pip install -e . \ | ||
&& flask fab babel-compile --target superset/translations \ | ||
&& chown -R superset:superset superset/translations | ||
|
||
COPY --chmod=755 ./docker/run-server.sh /usr/bin/ | ||
USER superset | ||
|
||
HEALTHCHECK CMD curl -f "http://localhost:${SUPERSET_PORT}/health" | ||
|
||
EXPOSE ${SUPERSET_PORT} | ||
|
||
CMD ["/usr/bin/run-server.sh"] | ||
|
||
###################################################################### | ||
# Dev image... | ||
###################################################################### | ||
FROM lean AS dev | ||
ARG GECKODRIVER_VERSION=v0.33.0 \ | ||
FIREFOX_VERSION=117.0.1 | ||
|
||
USER root | ||
|
||
RUN apt-get update -qq \ | ||
&& apt-get install -yqq --no-install-recommends \ | ||
libnss3 \ | ||
libdbus-glib-1-2 \ | ||
libgtk-3-0 \ | ||
libx11-xcb1 \ | ||
libasound2 \ | ||
libxtst6 \ | ||
wget \ | ||
pkg-config \ | ||
# Install GeckoDriver WebDriver | ||
&& wget -q https://github.com/mozilla/geckodriver/releases/download/${GECKODRIVER_VERSION}/geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz -O - | tar xfz - -C /usr/local/bin \ | ||
# Install Firefox | ||
&& wget -q https://download-installer.cdn.mozilla.net/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/firefox-${FIREFOX_VERSION}.tar.bz2 -O - | tar xfj - -C /opt \ | ||
&& ln -s /opt/firefox/firefox /usr/local/bin/firefox \ | ||
&& apt-get autoremove -yqq --purge wget && rm -rf /var/[log,tmp]/* /tmp/* /var/lib/apt/lists/* | ||
# Cache everything for dev purposes... | ||
|
||
COPY --chown=superset:superset requirements/development.txt requirements/ | ||
RUN --mount=type=cache,target=/root/.cache/pip \ | ||
uv pip install -r requirements/development.txt | ||
|
||
USER superset | ||
###################################################################### | ||
# CI image... | ||
###################################################################### | ||
FROM lean AS ci | ||
|
||
COPY --chown=superset:superset --chmod=755 ./docker/*.sh /app/docker/ | ||
|
||
CMD ["/app/docker/docker-ci.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.