From patchwork Wed Dec 11 16:39:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abdul Halim X-Patchwork-Id: 63772 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 14D24A04F6; Wed, 11 Dec 2019 17:39:13 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 4574D1BE3D; Wed, 11 Dec 2019 17:39:12 +0100 (CET) Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by dpdk.org (Postfix) with ESMTP id AF5B41D9E for ; Wed, 11 Dec 2019 17:39:10 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Dec 2019 08:39:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,301,1571727600"; d="scan'208";a="207748869" Received: from silpixa00399119.ir.intel.com (HELO silpixa00399119.ger.corp.intel.com) ([10.237.222.73]) by orsmga008.jf.intel.com with ESMTP; 11 Dec 2019 08:39:07 -0800 From: Abdul Halim To: dev@dpdk.org Cc: ray.kinsella@intel.com, yasufum.o@gmail.com, Ruifeng.Wang@arm.com, Abdul Halim Date: Wed, 11 Dec 2019 16:39:04 +0000 Message-Id: <1576082344-277755-1-git-send-email-abdul.halim@intel.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1566924290-451677-1-git-send-email-abdul.halim@intel.com> References: <1566924290-451677-1-git-send-email-abdul.halim@intel.com> Subject: [dpdk-dev] [PATCH v6] build: add dockerfile for building docker image X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Adding a Dockerfile with Ubuntu bionic base image to build dpdk as shared library. This docker image could be used as base image to build and run dpdk applications in containers. Signed-off-by: Abdul Halim Tested-by: Ruifeng Wang --- v2: * renamed Dockerfile name from Dockerfile.ubuntu to Dockerfile.bionic * added call to ldconfig to update cache of libraries to include newly installed DPDK libs --- v3: * added example use-case of dpdk dockerfile in extras/README.md --- v4: * changed meson build to use tmp dir in docker build * changed sample app dockerfile to add only helloworld source code --- v5: * fix whitespace error --- v6: * clean up temp build directory --- extras/Dockerfile.bionic | 40 +++++++++++++++++++++++++++++++++++++ extras/README.md | 51 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 91 insertions(+) create mode 100644 extras/Dockerfile.bionic create mode 100644 extras/README.md diff --git a/extras/Dockerfile.bionic b/extras/Dockerfile.bionic new file mode 100644 index 0000000..08b4c60 --- /dev/null +++ b/extras/Dockerfile.bionic @@ -0,0 +1,40 @@ +# SPDX-License-Identifier: BSD-3-Clause +# Copyright(c) 2019 Intel Corporation +FROM ubuntu:bionic + +# install requirements for getting and building DPDK +# including dependencies for DPDK features +RUN apt-get update && apt-get install -y \ + build-essential \ + pkg-config \ + python3 \ + python3-pip \ + ninja-build \ + libjansson-dev \ + libbsd-dev \ + libnuma-dev \ + libssl-dev \ + zlib1g-dev \ + libpcap-dev \ + libibverbs-dev \ + && pip3 install meson \ + && apt-get clean && rm -rf /var/lib/apt/lists/* + +ADD . /tmp/dpdk + +WORKDIR /tmp/dpdk + +RUN meson /tmp/dpdk-build \ + -Ddefault_library=shared \ + -Dmachine=default \ + -Dper_library_versions=false \ + && ninja -C /tmp/dpdk-build install \ + && ldconfig \ + && cd /; rm -rf /tmp/dpdk /tmp/dpdk-build + +WORKDIR / + +# Installed DPDK Shared library location: +# lib dir : /usr/local/lib/ +# include : /usr/local/include/ +# pkgconfig file: /usr/local/lib/x86_64-linux-gnu/pkgconfig/libdpdk.pc diff --git a/extras/README.md b/extras/README.md new file mode 100644 index 0000000..8001012 --- /dev/null +++ b/extras/README.md @@ -0,0 +1,51 @@ +# Build DPDK Docker image + +To build a docker image run the following command from dpdk root directory. + +``` +DOCKER_TAG="dpdk" +docker build -t ${DOCKER_TAG} -f extras/Dockerfile.bionic . +``` + +# Example of how to use this dpdk library image + +The following steps shows how to use the dpdk shared library container to build +and run a dpdk application without having to build dpdk library for each +application. + +## Create a dpdk sample app docker file with 'dpdk' as the base image + +Create a docker file to build the helloworld application from example/helloworld +source files in dpdk root directory. + +``` +cat << EOF > Dockerfile.dpdkSampleApp +FROM dpdk + +ADD examples/helloworld /opt/examples/helloworld + +WORKDIR /opt/examples/helloworld +RUN make && cp build/helloworld-shared /usr/local/bin/helloworld +EOF +``` + +## Build sample app docker image + +``` +DOCKERAPP_TAG="dpdk-helloworld" +docker build -t ${DOCKERAPP_TAG} -f Dockerfile.dpdkSampleApp . +``` + +This sample app now can be run like any other applicaiton in a docker container. + +``` +$ docker run --rm --privileged -it -v /dev/hugepages:/dev/hugepages dpdk-helloworld +``` + +## Running the sample app +Once inside the container run helloword binary + +``` +$ root@11233ed2e69c # helloworld +``` +