* Added cmake * Optimized Docker * Made simpler * Updated build and readme * Spelling fixes * Added fixes * Fixed merge conflicts Co-authored-by: Chavithra <chavithra@gmail.com>
OpenBBTerminal Docker
These files create our docker images. To use docker read this.
Building the Docker Image
Building the Docker image can be done easily. The following steps allow users to create a docker image on their local machine:
- Enter the OpenBB directory
cd ~/OpenbbTerminal - Open
docker/compose.envand setOPENBBTERMINAL_DOCKER_RELEASE_VERSIONto the desired version - Load the environment variables
bash compose/env - Run the build script
bash docker/build.sh
Important Notes
-
The
build.shscript requires bash 5.0 or newer. -
We currently build without developer dependnencies such as pytest. If you want to develop using this image please open
poetry.dockerfileand replaceRUN poetry install --no-devwithRUN poetry install -
If you have issues building on MacOs run the following commands:
export DOCKER_BUILDKIT=0export COMPOSE_DOCKER_CLI_BUILD=0
Testing the Docker Image
Integration and unit tests can be run on the new docker image. Before running either set of tests you need to start up an image with:
docker run -it --rm ghcr.io/[BUILD_NAME]
Leave the terminal open and then navigate docker desktop. Find the currently running image and
select open in terminal. Now:
- For integration tests run:
poetry run python terminal.py scripts -t - For unit tests run
poetry run pytest tests/
Setup Explanation
The compose.env file is responsible for loading in the correct environment variables before a
session begins. Once this is done the build.sh file creates a docker image with the appropriate
tag. The poetry.dockerfile is the file used to create the image. It has enhanced caching by
building in three stages. The stages are described below.
- python: this stage creates a new
python:3.9-slim-bullseyeimage. Slim-buster is a small linux distro that comes with a lot of the functionality we need. We then set environment variables. This image will only be reran when there is a new version ofpython:3.9-slim-bullseyeor when the environment variables are updated (there is almost never a reason to update them). - poetry-deps: this stage installs necessary apt packages like curl and git, and then installs
poetry. This will be reran whenever dependencies change, or whenever
pythonhas been rerun. - poetry: this takes the build from
poetry-depsand then copies the terminal files into it. Then this image runs the terminal. This image will be rebuilt every time files are changed in the terminal or whenpoetry-depshas been rerun, however; this is not an issue because it builds quickly.