| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| # |
| |
| # build with specifying root of repository as build context, e.g. `buildah -f dockerfiles/Dockerfile-debian .` |
| |
| FROM debian:bullseye-slim AS build |
| |
| LABEL org.opencontainers.image.authors="dev@qpid.apache.org" |
| |
| # UPGRADE: proton > 0.37.0: replace `python3/dist-packages` with `python3.9/site-packages/` |
| ARG proton_version=0.37.0 |
| # Enable web console: use 'ON' or 'OFF' |
| ARG enable_console=OFF |
| |
| |
| ENV DEBIAN_FRONTEND=noninteractive |
| |
| RUN apt-get update && \ |
| apt-get install -y --no-install-recommends build-essential cmake pkg-config git ninja-build ca-certificates \ |
| libssl-dev libsasl2-dev swig python3-dev libwebsockets-dev \ |
| $(if [ "${enable_console}" = "ON" ]; then echo "npm"; fi) && \ |
| rm -rf /var/lib/apt/lists/* |
| |
| # first, build Proton since there is no recent version packaged in Debian |
| RUN git clone --depth 1 -b ${proton_version} https://github.com/apache/qpid-proton.git |
| |
| # build and install into system for laster usage by dispatch, but also install discretely so that it's easier to copy |
| RUN mkdir /qpid-proton/build /qpid-proton/install-prefix && cd /qpid-proton/build && \ |
| cmake .. -GNinja -DSYSINSTALL_BINDINGS=ON -DCMAKE_INSTALL_PREFIX=/usr -DSYSINSTALL_PYTHON=ON && \ |
| cmake --build . --target install && \ |
| cmake --install . --prefix /qpid-proton/install-prefix |
| |
| # build Dispatch Router |
| ADD . /qpid-dispatch/ |
| RUN mkdir /qpid-dispatch/build /qpid-dispatch/install-prefix && cd /qpid-dispatch/build && \ |
| cmake .. -GNinja -DCMAKE_INSTALL_PREFIX=/usr -DUSE_VALGRIND=NO -DCONSOLE_INSTALL=${enable_console} && \ |
| cmake --build . && \ |
| cmake --install . --prefix /qpid-dispatch/install-prefix && \ |
| mkdir -p /usr/share/qpid-dispatch # make sure directory exists even if web console is disabled |
| |
| # Uncomment the following line if you would like to run all the dispatch unit tests and system tests |
| #RUN cd /qpid-dispatch/build && ctest -VV |
| |
| FROM debian:bullseye-slim |
| |
| RUN apt-get update && \ |
| apt-get install -y --no-install-recommends libsasl2-2 libsasl2-modules libwebsockets16 \ |
| python3 libpython3.9 ca-certificates && \ |
| rm -rf /var/lib/apt/lists/* |
| |
| # proton |
| COPY --from=build /qpid-proton/install-prefix /usr/ |
| # python packages |
| COPY --from=build /usr/lib/python3/dist-packages/proton /usr/lib/python3/dist-packages/proton |
| COPY --from=build /usr/lib/python3/dist-packages/cproton.py /usr/lib/python3/dist-packages/_cproton.so \ |
| /usr/lib/python3/dist-packages/ |
| |
| # qpid-dispatch |
| COPY --from=build /qpid-dispatch/install-prefix /usr/ |
| # leftovers that are not so compliant with prefix, at least with how we manipulate it |
| COPY --from=build /etc/qpid-dispatch /etc/qpid-dispatch |
| COPY --from=build /usr/share/qpid-dispatch /usr/share/qpid-dispatch |
| COPY --from=build /etc/sasl2 /etc/sasl2 |
| COPY --from=build /usr/lib/python3.9/site-packages/qpid_dispatch /usr/lib/python3.9/site-packages/qpid_dispatch |
| COPY --from=build /usr/lib/python3.9/site-packages/qpid_dispatch_site.py /usr/lib/python3.9/site-packages/ |
| |
| # Add site-packages to the PYTHONPATH environment variable |
| ENV PYTHONPATH=/usr/lib/python3.9/site-packages |
| |
| CMD ["qdrouterd"] |