-
Notifications
You must be signed in to change notification settings - Fork 445
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
docs: tutor uses docker compose
now, not docker-compose
#868
docs: tutor uses docker compose
now, not docker-compose
#868
Conversation
Updating to a newer Docker version helped resolve an issue several folks were having with Tutor Palm: https://discuss.openedx.org/t/issue-in-tutor-palm-release-with-tuotr-dev-launch-while-installing/10629/12 Abdess updated to the latest Engine version (v24.0.3), which is also what I have. Shall I update this PR to make that the minimum Docker version, or should we go with v23.0.0, which is the first version that made Buildx the default? |
This is very strange. A couple of notes:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking good outside of one minor point.
@regisb , after digging further, it seems like Tutor implicitly depends on buildx currently, and upgrading Docker only worked because it turns on buildx by default. I was able to reproduce Yagnesh's issue locally with both 16.0.2 and 16.0.2-nighly by disabling buildx:
This yields:
I believe the issue is here: tutor/tutor/templates/build/openedx/Dockerfile Lines 74 to 93 in b3ef12c
When builtkit is enabled, requirements/edx/base.txt is mounted from the edx-platform image (or from the local dir). When it's disabled, though, requirements/edx/base.txt does not exist because it is never Similarly, the NPM install would also fail, since package.json mounted by buildkit, but never tutor/tutor/templates/build/openedx/Dockerfile Lines 126 to 128 in b3ef12c
Lastly, using
So, rather than this PR, I think the correct fix is to either:
I prefer 2 since it's less work, it would simply the Dockerfile a lot, it would simplify maintenance for us, and since Palm I haven't heard anyone asking us to put back legacy builder support. The legacy builder itself has been deprecated since Docker Engine v23 (02 Feb 2023); anyone running Docker v23+ is using buildx whether they know it or not. |
@regisb sorry, there is one other approach we would take, as a compromise: Restore legacy builder support for Palm, but assume BuildKit for Nightly, and communicate this as a breaking change for Quince. (Selfishly, I want to be able to assume BuildKit in Nightly, because it'll make the static asset caching work I'm wrapping up much simpler :) |
Kyle, I still think we need to merge this PR, because the default is now BuildKit's That being said, you are right that in the current state Docker without BuildKit is broken in Tutor. We do want to support the legacy builder in Palm because its deprecation was only 5 months ago, which is a bit too short for my taste. Some servers might not have been upgraded since then. Here's what I suggest:
|
See comment here: #868 (comment)
See comment here: #868 (comment) See also the conversation that spawned this PR: https://discuss.openedx.org/t/issue-in-tutor-palm-release-with-tuotr-dev-launch-while-installing/10629
See comment here: #868 (comment) See also the conversation that spawned this PR: https://discuss.openedx.org/t/issue-in-tutor-palm-release-with-tuotr-dev-launch-while-installing/10629
See comment here: #868 (comment) See also the conversation that spawned this PR: https://discuss.openedx.org/t/issue-in-tutor-palm-release-with-tuotr-dev-launch-while-installing/10629
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so this transition should be seamless for users of the latest Tutor. Relevant discussion: overhangio#868 (comment)
c9ea9ea
to
1866c4f
Compare
|
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so this transition should be seamless for users of the latest Tutor. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so this transition should be seamless for users of the latest Tutor. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so As follow-up work, we will need to remove `is_buildkit_enabled` from the official plugins templates. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so As follow-up work, we will need to remove `is_buildkit_enabled` from the official plugins templates. Relevant discussion: overhangio#868 (comment)
I merged this PR manually to fix the documentation build issue. Thanks for the PR! |
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so As follow-up work, we will need to remove `is_buildkit_enabled` from the official plugins templates. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so As follow-up work, we will need to remove `is_buildkit_enabled` from the official plugins templates. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so As follow-up work, we will need to remove `is_buildkit_enabled` from the official plugins templates. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so As follow-up work, we will need to remove `is_buildkit_enabled` from the official plugins templates. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves the legacy Docker builder, which was deprecated back in Feb 2023. Assuming BuildKit allows us to simplify the Dockerfile and makes future build performance improvements easier. The Docker versions which Tutor recommends (v20+) all come with BuildKit, so As follow-up work, we will need to remove `is_buildkit_enabled` from the official plugins templates. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves upon the legacy Docker builder, which was deprecated back in Feb 2023. Assuming that BuildKit is enabled allows us to seriously simplify the Dockerfile, and it also unlocks future build performance improvements based on BuildKit-specific features such as: * COPY --link * Multiple build contexts * More aggressive parallelization during the build process The Docker versions which Tutor recommends (v20+) all come with BuildKit, so this should be a seamless transition for Tutor users who have been installing the recommended version. We leave the ``is_buildkit_enabled`` template variable in place in order to avoid breaking plugins, but we now just set it to ``True`` as a constant. It will be removed some time after Quince, so plugins should remove any uses of the variable from their Dockerfiles. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves upon the legacy Docker builder, which was deprecated back in Feb 2023. Assuming that BuildKit is enabled allows us to seriously simplify the Dockerfile, and it also unlocks future build performance improvements based on BuildKit-specific features such as: * COPY --link * Multiple build contexts * More aggressive parallelization during the build process The Docker versions which Tutor recommends (v20+) all come with BuildKit, so this should be a seamless transition for Tutor users who have been installing the recommended version. We leave the ``is_buildkit_enabled`` template variable in place in order to avoid breaking plugins, but we now just set it to ``True`` as a constant. It will be removed some time after Quince, so plugins should remove any uses of the variable from their Dockerfiles. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves upon the legacy Docker builder, which was deprecated back in Feb 2023. Assuming that BuildKit is enabled allows us to seriously simplify the Dockerfile, and it also unlocks future build performance improvements based on BuildKit-specific features such as: * COPY --link * Multiple build contexts * More aggressive parallelization during the build process The Docker versions which Tutor recommends (v20+) all come with BuildKit, so this should be a seamless transition for Tutor users who have been installing the recommended version. We leave the ``is_buildkit_enabled`` template variable in place in order to avoid breaking plugins, but we now just set it to ``True`` as a constant. It will be removed some time after Quince, so plugins should remove any uses of the variable from their Dockerfiles. Relevant discussion: overhangio#868 (comment)
BuildKit replaces and improves upon the legacy Docker builder, which was deprecated back in Feb 2023. Assuming that BuildKit is enabled allows us to seriously simplify the Dockerfile, and it also unlocks future build performance improvements based on BuildKit-specific features such as: * COPY --link * Multiple build contexts * More aggressive parallelization during the build process The Docker versions which Tutor recommends (v20+) all come with BuildKit, so this should be a seamless transition for Tutor users who have been installing the recommended version. We leave the ``is_buildkit_enabled`` template variable in place in order to avoid breaking plugins, but we now just set it to ``True`` as a constant. It will be removed some time after Quince, so plugins should remove any uses of the variable from their Dockerfiles. Relevant discussion: overhangio#868 (comment)
See comment here: overhangio#868 (comment) See also the conversation that spawned this PR: https://discuss.openedx.org/t/issue-in-tutor-palm-release-with-tuotr-dev-launch-while-installing/10629
Per v16 changelog: https://github.com/overhangio/tutor/blob/master/CHANGELOG.md#v1600-2023-06-14
@regisb , a couple related questions:
docker compose
?