diff --git a/src/tests/tools/mock_nbi_dependencies/Dockerfile b/src/tests/tools/mock_nbi_dependencies/Dockerfile index 3b4443b821273882c5f4a2e0f70228b190a5debd..d4cd864f3779d63e295cbde93442b7f80fa5db3f 100644 --- a/src/tests/tools/mock_nbi_dependencies/Dockerfile +++ b/src/tests/tools/mock_nbi_dependencies/Dockerfile @@ -14,25 +14,54 @@ FROM python:3.9-slim +# Install dependencies +RUN apt-get --yes --quiet --quiet update && \ + apt-get --yes --quiet --quiet install wget g++ git && \ + rm -rf /var/lib/apt/lists/* + # Set Python to show logs as they occur ENV PYTHONUNBUFFERED=0 +# Download the gRPC health probe +RUN GRPC_HEALTH_PROBE_VERSION=v0.2.0 && \ + wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \ + chmod +x /bin/grpc_health_probe + # Get generic Python packages RUN python3 -m pip install --upgrade pip RUN python3 -m pip install --upgrade setuptools wheel RUN python3 -m pip install --upgrade pip-tools -# Create component sub-folders, and copy content +# Get common Python packages +# Note: this step enables sharing the previous Docker build steps among all the Python components +WORKDIR /var/teraflow +COPY common_requirements.in common_requirements.in +RUN pip-compile --quiet --output-file=common_requirements.txt common_requirements.in +RUN python3 -m pip install -r common_requirements.txt + +# Add common files into working directory +WORKDIR /var/teraflow/common +COPY src/common/. ./ +RUN rm -rf proto + +# Create proto sub-folder, copy .proto files, and generate Python code +RUN mkdir -p /var/teraflow/common/proto +WORKDIR /var/teraflow/common/proto +RUN touch __init__.py +COPY proto/*.proto ./ +RUN python3 -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. *.proto +RUN rm *.proto +RUN find . -type f -exec sed -i -E 's/(import\ .*)_pb2/from . \1_pb2/g' {} \; + +# Create component sub-folders, get specific Python packages RUN mkdir -p /var/teraflow/mock_nbi_dependencies WORKDIR /var/teraflow/mock_nbi_dependencies -COPY . . - -# Get specific Python packages -RUN ls -la +COPY src/mock_nbi_dependencies/requirements.in requirements.in RUN pip-compile --quiet --output-file=requirements.txt requirements.in RUN python3 -m pip install -r requirements.txt -RUN python3 -m pip list +# Add component files into working directory +COPY src/tests/tools/mock_nbi_dependencies/. ./ # Start the service ENTRYPOINT ["python", "MockNbiDependencies.py"]