Докерирование репозитория с обновленными подмодулямиLinux

Ответить
Anonymous
 Докерирование репозитория с обновленными подмодулями

Сообщение Anonymous »

У меня есть репозиторий dq-mod в следующей настройке:

Код: Выделить всё

|-main.py
|-common_utils/
|-custom_utils/
|-dockerfile
|-start.sh
common_utils — это подмодуль, который содержит некоторые общие служебные файлы. Папка custom_utils содержит утилиты, которые используются только main.py. Часть содержимого репозитория упакована в образ Docker.
Поскольку common_utils является подмодулем, я не могу упаковать его содержимое в образ Docker.
Требования:
  • Упакуйте содержимое common_utils во время сборки образа Docker
  • Каждый раз, когда используется образ Docker, используйте последнее содержимое из файла common_utils
Dockerfile

Код: Выделить всё

# Debian 11 is recommended.
FROM --platform=linux/amd64 debian:11-slim

# Get environment argument from docker build command.
ARG ENV_ARG
# Set environment variable.
ENV ENV=$ENV_ARG

# Suppress interactive prompts
ENV DEBIAN_FRONTEND=noninteractive

# (Required) Install utilities required by Spark scripts.
RUN apt update && apt install -y procps tini libjemalloc2 git

# Enable jemalloc2 as default memory allocator
ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2

# (Optional) Install and configure Miniconda3.
ENV CONDA_HOME=/opt/miniconda3
ENV PYSPARK_PYTHON=${CONDA_HOME}/bin/python
ENV PATH=${CONDA_HOME}/bin:${PATH}
COPY build_dependencies/Miniconda3-py39_23.1.0-1-Linux-x86_64.sh .
RUN bash Miniconda3-py39_23.1.0-1-Linux-x86_64.sh -b -p /opt/miniconda3 \
&& ${CONDA_HOME}/bin/conda config --system --set always_yes True \
&& ${CONDA_HOME}/bin/conda config --system --set auto_update_conda False \
&& ${CONDA_HOME}/bin/conda config --system --prepend channels conda-forge \
&& ${CONDA_HOME}/bin/conda config --system --set channel_priority strict

# (Optional) Install Conda packages.
#
# The following packages are installed in the default image, it is strongly
# recommended to include all of them.
#
# Use mamba to install packages quickly.
RUN ${CONDA_HOME}/bin/conda install mamba -n base -c conda-forge \
&& ${CONDA_HOME}/bin/mamba install \
conda \
cython \
fastavro \
fastparquet \
gcsfs \
google-cloud-bigquery-storage \
google-cloud-bigquery[pandas] \
google-cloud-bigtable \
google-cloud-container \
google-cloud-datacatalog \
google-cloud-dataproc \
google-cloud-datastore \
google-cloud-language \
google-cloud-logging \
google-cloud-monitoring \
google-cloud-pubsub \
google-cloud-redis \
google-cloud-spanner \
google-cloud-speech \
google-cloud-storage \
google-cloud-texttospeech \
google-cloud-translate \
google-cloud-vision \
koalas \
matplotlib \
nltk \
numba \
numpy \
openblas \
orc \
pandas \
pyarrow \
pysal \
pytables \
python \
regex \
requests \
rtree \
scikit-image \
scikit-learn \
scipy \
seaborn \
sqlalchemy \
sympy \
virtualenv \
# (Optional) Install additional packages.
openpyxl

RUN ${CONDA_HOME}/bin/mamba install -n base -c conda-forge great-expectations=0.17.22

# (Optional) Add extra Python modules.
ENV PYTHONPATH=/opt/python/packages
RUN mkdir -p "${PYTHONPATH}"
COPY custom_utils "${PYTHONPATH}/utils"

# Copy the start.sh script from the root directory of the project to /etc
COPY start.sh /etc/start.sh

# Make the start.sh script executable
RUN chmod +x /etc/start.sh

# (Required) Create the 'spark' group/user.
# The GID and UID must be 1099.  Home directory is required.
RUN groupadd -g 1099 spark
RUN useradd -u 1099 -g 1099 -d /home/spark -m spark
USER spark

# Set the entrypoint to the start.sh script
ENTRYPOINT ["/etc/start.sh"]
start.sh

Код: Выделить всё

#!/bin/bash

# Clone the submodule repository and copy its contents to the utils directory
git config --global --add safe.directory /opt/python/packages/utils
cd /opt/python/packages/utils
git clone --recurse-submodules -j8 https://github.com/org/common-utils.git common_utils
git submodule update --init --recursive
cp -r common_utils/* .
ls -R .

# Remove the cloned repository
rm -rf common_utils

# Execute any additional commands or the main application
exec "$@"
Я пробую приведенные выше сценарии, но содержимое common_utils никогда не копируется в папку utils.

Подробнее здесь: https://stackoverflow.com/questions/786 ... submodules
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»