From e6b71091647c8ef9c00f47ca11637128cbfaa19c Mon Sep 17 00:00:00 2001 From: Branden Chan <33759007+brandenchan@users.noreply.github.com> Date: Tue, 8 Nov 2022 09:06:18 +0100 Subject: [PATCH] docs: Update docker readme (#3531) * Update docker readme * Make language changes --- docker/README.md | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/docker/README.md b/docker/README.md index 6cf92811d..25537d1b1 100644 --- a/docker/README.md +++ b/docker/README.md @@ -1,52 +1,59 @@ -# Haystack Docker image +

+ Haystack +

Haystack is an end-to-end framework that enables you to build powerful and production-ready pipelines for different search use cases. The Docker image comes with a web service -configured to serve Haystack's `rest_api` to ease pipelines' deployments in containerized +configured to serve Haystack's `rest_api` to ease pipeline deployments in containerized environments. -Start the Docker container binding the TCP port `8000` locally: +To start the Docker container binding the TCP port `8000` locally, run: ```sh docker run -p 8000:8000 deepset/haystack ``` -If you need the container to access other services available in the host: +If you need the container to access other services available in the host, run: ```sh docker run -p 8000:8000 --network="host" deepset/haystack ``` -## Image variants +## Image Variants -The Docker image comes in two variants: -- `haystack:cpu-`: this image is smaller but doesn't support GPU -- `haystack:gpu-`: this image comes with the Cuda runtime and is capable of running on GPUs +The Docker image comes in four variants: +- `haystack:gpu-` contains Haystack dependencies as well as what's needed to run the REST API and UI. It comes with the CUDA runtime and is capable of running on GPUs. +- `haystack:cpu-` contains Haystack dependencies as well as what's needed to run the REST API and UI. It has no support for GPU so must be run on CPU. +- `haystack:base-gpu-` only contains the Haystack dependencies. It comes with the CUDA runtime and is capable of running on GPUs. +- `haystack:base-cpu-` only contains the Haystack dependencies. It has no support for GPU so must be run on CPU. - -## Image development +## Image Development Images are built with BuildKit and we use `bake` to orchestrate the process. -You can build a specific image by simply run: +You can build a specific image by running: ```sh docker buildx bake gpu ``` You can override any `variable` defined in the `docker-bake.hcl` file and build custom -images, for example if you want to use a branch from the Haystack repo: +images, for example if you want to use a branch from the Haystack repo, run: ```sh HAYSTACK_VERSION=mybranch_or_tag BASE_IMAGE_TAG_SUFFIX=latest docker buildx bake gpu --no-cache ``` -### A note about multi-platform builds +### Multi-Platform Builds + +Haystack images support multiple architectures. But depending on your operating system and Docker +environment, you might not be able to build all of them locally. + +You may encounter the following error when trying to build the image: -Haystack images support multiple architectures, but depending on your operating system and Docker -environment you might not be able to build all of them locally. If you get an error like: ``` multiple platforms feature is currently not supported for docker driver. Please switch to a different driver (eg. “docker buildx create --use”) ``` -you might need to override the `platform` option and limit local builds to the same architecture as +To get around this, you need to override the `platform` option and limit local builds to the same architecture as your computer's. For example, on an Apple M1 you can limit the builds to ARM only by invoking `bake` like this: + ```sh docker buildx bake base-cpu --set "*.platform=linux/arm64" ```