You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ma...@apache.org on 2024/03/21 17:25:20 UTC

(superset) 01/01: fix(docker): error around missing requirements/base.txt

This is an automated email from the ASF dual-hosted git repository.

maximebeauchemin pushed a commit to branch fix_docker_base
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 772d37ead363f55b4c2a5b2e15a41495b45991fc
Author: Maxime Beauchemin <ma...@gmail.com>
AuthorDate: Thu Mar 21 10:22:14 2024 -0700

    fix(docker): error around missing requirements/base.txt
    
    Closes https://github.com/apache/superset/issues/27606
    
    I'm unclear on why exactly CI succeeded while this was an issue running
    locally. I'm guessing it has to do with `--mount` and how it works
    around caching, so I'm moving to a COPY-based approach, which is more
    standard and easy to reason about. It also leaves a useful artefact on
    the machine as to how it was built. It does add a tiny layer and payload
    on the image, but it's super cheap for the utility/introspection it provides.
---
 Dockerfile | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/Dockerfile b/Dockerfile
index e5387d6779..5e7dceed4d 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -61,7 +61,7 @@ ENV LANG=C.UTF-8 \
     SUPERSET_HOME="/app/superset_home" \
     SUPERSET_PORT=8088
 
-RUN mkdir -p ${PYTHONPATH} superset/static superset-frontend apache_superset.egg-info requirements \
+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 \
@@ -79,8 +79,8 @@ RUN mkdir -p ${PYTHONPATH} superset/static superset-frontend apache_superset.egg
 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/
-RUN --mount=type=bind,target=./requirements/base.txt,src=./requirements/base.txt \
-    --mount=type=cache,target=/root/.cache/pip \
+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
 
@@ -126,8 +126,9 @@ RUN apt-get update -qq \
     && 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...
-RUN --mount=type=bind,target=./requirements/development.txt,src=./requirements/development.txt \
-    --mount=type=cache,target=/root/.cache/pip \
+
+COPY --chown=superset:superset requirements/development.txt requirements/
+RUN --mount=type=cache,target=/root/.cache/pip \
     pip install -r requirements/development.txt
 
 USER superset