system-config/docker/refstack/Dockerfile
Clark Boylan b8bd982daf Install refstack with openstack constraints
Refstack does not work with cryptography 37.0.0. In debugging how this
passes testing I noticed that Refstack's tox.ini uses openstack
constraints. Arguably it shouldn't do this as it isn't part of
coinstalled opensdtack services, but since this is how they test things
we should mimic it in our deployment.

Update the Dockerfile to copy in the upper-contraints file to the
/tmp/src dir which the assemble script should honor.

Change-Id: I4603702982e5c03b4a1d110363787b1f04887a29
2022-08-30 14:20:21 -07:00

63 lines
2.8 KiB
Docker

# Copyright (c) 2020 OpenStack Foundation
#
# Licensed 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.
# upload trigger - Thu 11 Aug 2022 16:11 PM UTC
# refstack commit - f222f3fb9540f0df4bf0cb8736c2470740659b18
FROM opendevorg/python-builder:3.9-bullseye as builder
RUN apt-get update \
&& apt-get -y install git apt-utils python3-dev dh-python libc-dev-bin \
libc6-dev libexpat1-dev libpython3-dev libpython3-dev linux-libc-dev \
apt-transport-https curl gnupg2 \
&& curl -sS https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add - \
&& echo "deb https://deb.nodesource.com/node_16.x bullseye main" | tee /etc/apt/sources.list.d/nodesource.list \
&& curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - \
&& echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list \
&& apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get -q --option "Dpkg::Options::=--force-confold" --assume-yes install nodejs yarn \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Refstack uses openstack constraints (it probably shouldn't) in CI
# unittesting. Install with constraints here to ensure we're installing
# what is in theory tested.
RUN git clone https://opendev.org/openinfra/refstack /tmp/src \
&& curl https://opendev.org/openstack/requirements/raw/branch/master/upper-constraints.txt -o /tmp/src/upper-constraints.txt
RUN assemble
RUN cd /tmp/src && yarn install
# Refstack's docs are built and then hosted by refstack UI
RUN python -m venv /tmp/venv \
&& /tmp/venv/bin/pip install beautifulsoup4 docutils \
&& /tmp/venv/bin/python /tmp/src/tools/convert-docs.py -o /tmp/src/refstack-ui/app/components/about/templates /tmp/src/doc/source/*.rst \
&& rm -rf /tmp/venv
FROM opendevorg/python-base:3.9-bullseye as refstack
COPY --from=builder /output/ /output
COPY --from=builder /tmp/src/refstack-ui/app/ /refstack-ui/app
COPY ./entrypoint.sh /usr/bin/entrypoint
# TODO this should be fixed probably through proper js packaging
RUN rm /refstack-ui/app/assets/lib
COPY --from=builder /tmp/src/node_modules/@bower_components/ /refstack-ui/app/assets/lib
RUN /output/install-from-bindep \
&& rm -rf /output
ENTRYPOINT ["/usr/bin/entrypoint"]
CMD ["pecan", "serve", "/usr/local/lib/python3.9/site-packages/refstack/api/config.py"]