# SPDX-License-Identifier: BSD-3-Clause # Copyright(c) 2022 University of New Hampshire # There are two Docker images defined in this Dockerfile. # One is to be used in CI for automated testing. # The other provides a DTS development environment, simplifying Python dependency management. FROM ubuntu:22.04 AS base RUN apt-get -y update && apt-get -y upgrade && \ apt-get -y install --no-install-recommends \ python3 \ python3-pip \ pipx \ python3-cachecontrol \ git \ xz-utils \ openssh-client && \ pipx install poetry>=1.8.2 && pipx ensurepath && \ git config --global --add safe.directory /dpdk WORKDIR /dpdk/dts FROM base AS runner # This image is intended to be used as the base for automated systems. # It bakes DTS into the image during the build. COPY . /dpdk/dts # pipx installs packages in ~/.local/bin, which is not in PATH by default. The `pipx ensurepath` # command used in the previous step adds said directory to PATH, but the docker build process does # not preserve environment variables between steps. Therefore, ~/.local/bin must be manually added # into PATH in order to use the poetry command below. ENV PATH="$PATH:/root/.local/bin" RUN poetry install --only main ENTRYPOINT ["poetry", "run", "python", "main.py"] FROM base AS dev # This image is intended to be used as DTS development environment. It doesn't need C compilation # capabilities, only Python dependencies. Once a container mounting DTS using this image is running, # the dependencies should be installed using Poetry. RUN apt-get -y install --no-install-recommends \ vim emacs