Improves google-cloud-storage performance

And also fixes the build by providing a 'alpine version'
of the google/crc32c library, which google-crc32c and
google-cloud-storage and ultimately django-storages[google]
depend on.
This commit is contained in:
Christian Mäder 2021-09-03 09:15:41 +02:00
parent a0a32b930e
commit 9255afd060
2 changed files with 22 additions and 2 deletions

View File

@ -6,15 +6,18 @@ RUN apk add --no-cache \
build-base \ build-base \
cargo \ cargo \
ca-certificates \ ca-certificates \
cmake \
cyrus-sasl-dev \ cyrus-sasl-dev \
git \
graphviz \ graphviz \
jpeg-dev \ jpeg-dev \
libevent-dev \ libevent-dev \
libffi-dev \ libffi-dev \
openssl-dev \
libxslt-dev \ libxslt-dev \
make \
musl-dev \ musl-dev \
openldap-dev \ openldap-dev \
openssl-dev \
postgresql-dev \ postgresql-dev \
py3-pip \ py3-pip \
python3-dev \ python3-dev \
@ -24,6 +27,20 @@ RUN apk add --no-cache \
setuptools \ setuptools \
wheel wheel
# Build libcrc32c for google-crc32c python module
RUN git clone https://github.com/google/crc32c \
&& cd crc32c \
&& git submodule update --init --recursive \
&& mkdir build \
&& cd build \
&& cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCRC32C_BUILD_TESTS=no \
-DCRC32C_BUILD_BENCHMARKS=no \
-DBUILD_SHARED_LIBS=yes \
.. \
&& make all install
ARG NETBOX_PATH ARG NETBOX_PATH
COPY ${NETBOX_PATH}/requirements.txt requirements-container.txt / COPY ${NETBOX_PATH}/requirements.txt requirements-container.txt /
RUN /opt/netbox/venv/bin/pip install \ RUN /opt/netbox/venv/bin/pip install \
@ -55,6 +72,9 @@ RUN apk add --no-cache \
WORKDIR /opt WORKDIR /opt
COPY --from=builder /usr/local/lib/libcrc32c.* /usr/local/lib/
COPY --from=builder /usr/local/include/crc32c /usr/local/include
COPY --from=builder /usr/local/lib/cmake/Crc32c /usr/local/lib/cmake/
COPY --from=builder /opt/netbox/venv /opt/netbox/venv COPY --from=builder /opt/netbox/venv /opt/netbox/venv
ARG NETBOX_PATH ARG NETBOX_PATH

View File

@ -1,5 +1,5 @@
napalm==3.3.1 napalm==3.3.1
ruamel.yaml==0.17.16 ruamel.yaml==0.17.16
django-auth-ldap==3.0.0 django-auth-ldap==3.0.0
google-crc32c==1.1.2 google-crc32c==1.1.4
django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.11.1 django-storages[azure,boto3,dropbox,google,libcloud,sftp]==1.11.1