Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes to Docker test environment #9432

Merged
merged 3 commits into from
Aug 24, 2023

Conversation

barrywhart
Copy link
Contributor

@barrywhart barrywhart commented Aug 23, 2023

Related Issues/PRs

n/a

What changes are proposed in this pull request?

Improvements to Dockerfile.test and run-test-container.sh. These were first included in #9191, but it was suggested to move them to a separate PR. The Docker environment still has issues running tests due to some hardcoded default paths in the mlflow package itself. I have not attempted to fix those here, although that could be a future improvement.

How is this patch tested?

Tested locally in the context of developing #9191.

  • Existing unit/integration tests
  • New unit/integration tests
  • Manual tests (describe details, including test results, below)

Launched the Docker environment and used it to develop and test the changes in #9191.

Does this PR require documentation update?

  • No. You can skip the rest of this section.
  • Yes. I've updated:
    • Examples
    • API references
    • Instructions

Release Notes

Is this a user-facing change?

  • No. You can skip the rest of this section.
  • Yes. Give a description of this change to be included in the release notes for MLflow users.

(Details in 1-2 sentences. You can just refer to another PR with a description if this PR is part of a larger change.)

What component(s), interfaces, languages, and integrations does this PR affect?

Components

  • area/artifacts: Artifact stores and artifact logging
  • area/build: Build and test infrastructure for MLflow
  • area/docs: MLflow documentation pages
  • area/examples: Example code
  • area/gateway: AI Gateway service, Gateway client APIs, third-party Gateway integrations
  • area/model-registry: Model Registry service, APIs, and the fluent client calls for Model Registry
  • area/models: MLmodel format, model serialization/deserialization, flavors
  • area/recipes: Recipes, Recipe APIs, Recipe configs, Recipe Templates
  • area/projects: MLproject format, project running backends
  • area/scoring: MLflow Model server, model deployment tools, Spark UDFs
  • area/server-infra: MLflow Tracking server backend
  • area/tracking: Tracking Service, tracking client APIs, autologging

Interface

  • area/uiux: Front-end, user experience, plotting, JavaScript, JavaScript dev server
  • area/docker: Docker use across MLflow's components, such as MLflow Projects and MLflow Models
  • area/sqlalchemy: Use of SQLAlchemy in the Tracking Service or Model Registry
  • area/windows: Windows support

Language

  • language/r: R APIs and clients
  • language/java: Java APIs and clients
  • language/new: Proposals for new client languages

Integrations

  • integrations/azure: Azure and Azure ML integrations
  • integrations/sagemaker: SageMaker integrations
  • integrations/databricks: Databricks integrations

How should the PR be classified in the release notes? Choose one:

  • rn/breaking-change - The PR will be mentioned in the "Breaking Changes" section
  • rn/none - No description will be included. The PR will be mentioned only by the PR number in the "Small Bugfixes and Documentation Updates" section
  • rn/feature - A new user-facing feature worth mentioning in the release notes
  • rn/bug-fix - A user-facing bug fix worth mentioning in the release notes
  • rn/documentation - A user-facing documentation change worth mentioning in the release notes

Signed-off-by: Barry Hart <barry.hart@zoro.com>
@barrywhart barrywhart mentioned this pull request Aug 23, 2023
34 tasks
@mlflow-automation
Copy link
Collaborator

mlflow-automation commented Aug 23, 2023

Documentation preview for 5394b0e will be available here when this CircleCI job completes successfully.

More info

Barry Hart added 2 commits August 23, 2023 12:39
Signed-off-by: Barry Hart <barry.hart@zoro.com>
Signed-off-by: Barry Hart <barry.hart@zoro.com>
RUN apt-get update && \
apt-get install -y --no-install-recommends build-essential openjdk-11-jre-headless \
apt-get install -y --no-install-recommends build-essential openjdk-17-jre-headless \
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix: Version 11 package is no longer available.

rm $MINIFORG_FILENAME && \
rm $MINIFORG_FILENAME

ADD ./requirements /app/requirements
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build performance improvements:

  • Move ADD commands later in the build.
  • For pip install, add only the requirements/ directory.
  • Split the single large RUN command into several smaller steps. This results in a larger image, but improves performance for incremental rebuilds by (in most cases) avoiding the need to rerun apt-get or reinstall miniforge.

pip install -r requirements/test-requirements.txt --no-cache-dir \
-r requirements/lint-requirements.txt psutil

ADD . /app
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another performance improvement: Delay ADD . until we need it for pip install -e ..

# install required python packages
pip install --no-cache-dir -r requirements/test-requirements.txt --no-cache-dir -r requirements/lint-requirements.txt && \
pip install -r requirements/test-requirements.txt --no-cache-dir \
-r requirements/lint-requirements.txt psutil
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Install psutil, which is used by tests/server/auth/test_auth.py.

@@ -1,5 +1,7 @@
#!/usr/bin/env bash

set -euo pipefail
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stop on failure. Otherwise, for example, if the image build fails, the container is still launched using an old image (confusing!).

@github-actions github-actions bot added the rn/none List under Small Changes in Changelogs. label Aug 23, 2023
Copy link
Member

@harupy harupy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@harupy harupy merged commit 0aa83d6 into mlflow:master Aug 24, 2023
31 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
rn/none List under Small Changes in Changelogs.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants