@@ -17,48 +17,61 @@ RUN apk add --no-cache \
1717 g++ \
1818 zlib-dev \
1919 openssl-dev \
20- libffi-dev
20+ libffi-dev \
21+ jq
2122
22- ENV HOME="/root"
23+ ENV HOME="/home/driveruser"
24+
25+ # Create a group with GID=1000 and a user with UID=1000
26+ RUN addgroup -g 1000 drivergroup && \
27+ adduser -u 1000 -G drivergroup -D driveruser
28+
29+ # Set permissions for the non-root user
30+ RUN mkdir -p ${HOME} && \
31+ chown -R driveruser:drivergroup ${HOME}
32+
33+ # Switch to the non-root user
34+ USER driveruser
2335WORKDIR ${HOME}
24- RUN git clone --depth=1 https://github.com/pyenv/pyenv.git .pyenv
36+
37+ # Set environment variables
2538ENV PYENV_ROOT="${HOME}/.pyenv"
2639ENV PATH="${PYENV_ROOT}/shims:${PYENV_ROOT}/bin:${PATH}"
2740
2841
42+ # Install pyenv
43+ RUN git clone --depth=1 https://github.com/pyenv/pyenv.git ${PYENV_ROOT}
44+
2945# Build arguments for Python versions and Snowflake connector versions
30- ARG PYTHON_VERSIONS="3.8.20 3.9.22 3.10.17"
31- ARG SNOWFLAKE_CONNECTOR_VERSIONS="3.14.0 3.13.2 3.13.1"
46+ ARG MATRIX_VERSION='{"3.10.17": ["3.14.0", "3.13.2", "3.13.1"], "3.9.22": ["3.14.0", "3.13.2", "3.13.1"], "3.8.20": ["3.14.0", "3.13.2", "3.13.1"]}'
3247
3348
34- # Install Python versions
49+ # Install Python versions from ARG MATRIX_VERSION
3550RUN eval "$(pyenv init --path)" && \
36- for version in $PYTHON_VERSIONS ; do \
37- pyenv install $version || echo "Failed to install Python $version " ; \
51+ for python_version in $(echo $MATRIX_VERSION | jq -r 'keys[]' ) ; do \
52+ pyenv install $python_version || echo "Failed to install Python $python_version " ; \
3853 done
3954
40-
4155# Create virtual environments for each combination of Python and Snowflake connector versions
42- RUN for python_version in $PYTHON_VERSIONS ; do \
43- for connector_version in $SNOWFLAKE_CONNECTOR_VERSIONS ; do \
44- venv_path="/venvs/python_${python_version}_connector_${connector_version}" ; \
56+ RUN for python_version in $(echo $MATRIX_VERSION | jq -r 'keys[]' ) ; do \
57+ for connector_version in $(echo $MATRIX_VERSION | jq -r ". \" ${python_version} \" []" ) ; do \
58+ venv_path="${HOME} /venvs/python_${python_version}_connector_${connector_version}" ; \
4559 $PYENV_ROOT/versions/$python_version/bin/python -m venv $venv_path && \
4660 $venv_path/bin/pip install --upgrade pip && \
4761 $venv_path/bin/pip install snowflake-connector-python==$connector_version; \
4862 done; \
4963done
5064
5165# Copy the prober script into the container
52- RUN mkdir -p /prober/probes/
53- COPY __init__.py /prober
54- # COPY parameters.json /prober
55- COPY setup.py /prober
56- COPY entrypoint.sh /prober
57- COPY probes/* /prober/probes
66+ RUN mkdir -p prober/probes/
67+ COPY __init__.py prober
68+ COPY setup.py prober
69+ COPY entrypoint.sh prober
70+ COPY probes/* prober/probes
5871
5972# Install /prober in editable mode for each virtual environment
60- RUN for venv in /venvs/*; do \
73+ RUN for venv in ${HOME} /venvs/*; do \
6174 source $venv/bin/activate && \
62- pip install -e /prober && \
75+ pip install -e ${HOME} /prober && \
6376 deactivate; \
6477done
0 commit comments