1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
# Copyright (c) 2009, 2024, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0, as
# published by the Free Software Foundation.
#
# This program is designed to work with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation. The authors of MySQL hereby grant you an
# additional permission to link the program and your derivative works
# with the separately licensed software that they have either included with
# the program or referenced in the documentation.
#
# Without limiting anything contained in the foregoing, this file,
# which is part of MySQL Connector/Python, is also subject to the
# Universal FOSS Exception, version 1.0, a copy of which can be found at
# http://oss.oracle.com/licenses/universal-foss-exception.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
# By default the container will use oracle linux 9 from OCR.
# The BASE_IMAGE environment variable can be used to pull
# any other Oracle Linux image from any other Docker registry.
ARG BASE_IMAGE=container-registry.oracle.com/os/oraclelinux:9-slim
FROM ${BASE_IMAGE} as pure_python
# In order to be able to run the tests within a private network,
# optional proxy configurations can be used.
ARG HTTP_PROXY
ARG HTTPS_PROXY
ARG NO_PROXY
ENV HTTP_PROXY=${HTTP_PROXY} HTTPS_PROXY=${HTTPS_PROXY} NO_PROXY=${NO_PROXY}
WORKDIR /connector-python
RUN microdnf install -y dnf \
&& dnf install -y gcc-c++
# Install Python (including dev files), and create a virtual environment
RUN dnf -y install python3-pip python3-devel python3-setuptools
RUN python3 -m venv /pyenvs/venv
ENV PATH="/pyenvs/venv/bin:$PATH"
RUN pip install --upgrade setuptools
# This volume can be used to share, among other things,
# the Unix socket file with the container.
VOLUME [ "/shared" ]
# Providing a private PyPI repository is allowed
# [PIP_INDEX_URL]: https://wiki.onap.org/display/DW/Configure+and+customize+pip
ARG PYPI_REPOSITORY
ENV PIP_INDEX_URL=${PYPI_REPOSITORY:-https://pypi.org/simple}
# Install MySQL Connector/Python (python only)
COPY . .
RUN cd mysqlx-connector-python \
&& pip install -r tests/requirements.txt \
&& pip install --use-feature=in-tree-build .
FROM pure_python AS c_extension
RUN dnf install -y wget gzip
# Install Protobuf C++: https://github.com/protocolbuffers/protobuf
ENV PROTO_VERSION="3.19.6"
ENV PROTO_ENDPOINT="protobuf-cpp-${PROTO_VERSION}.tar.gz"
ENV PROTO_URI="https://github.com/protocolbuffers/protobuf/releases/download"
RUN wget ${PROTO_URI}/v${PROTO_VERSION}/${PROTO_ENDPOINT} \
&& tar xvf ${PROTO_ENDPOINT} \
&& cd protobuf-${PROTO_VERSION} \
&& ./configure --disable-shared --with-pic \
&& make \
&& make install \
&& cd .. \
&& rm -f ${PROTO_ENDPOINT} \
&& rm -rf protobuf-${PROTO_VERSION}
# Build mysqlx cext
RUN cd mysqlx-connector-python \
&& python setup.py install \
--with-protobuf-include-dir=/usr/local/include \
--with-protobuf-lib-dir=/usr/local/lib \
--with-protoc=/usr/local/bin/protoc
|