When you modify environments/production.yml, you need to regenerate the lock file to pin exact versions. This ensures reproducible builds, prevents conda from resolving the environment again. environment/production.lock is then used for 'stable' builds.
# Build the lock file generator image
docker build -f docker/Dockerfile.update-reqs -t openfold3-update-reqs .
# Generate the lock file (linux-64 only for now)
docker run --rm openfold3-update-reqs > environments/production.lock
# Commit the updated lock file
git add environments/production.lock
git commit -m "Update production.lock"These images are the biggest but come with all the build tooling, needed to compile things at runtime (Deepspeed)
docker build \
-f docker/Dockerfile \
--target devel \
-t openfold-docker:devel-yaml .Or more explicitly
docker build \
-f docker/Dockerfile \
--build-arg BUILD_MODE=yaml \
--build-arg CUDA_BASE_IMAGE_TAG=12.1.1-cudnn8-devel-ubuntu22.04 \
--target devel \
-t openfold-docker:devel-yaml .Build the test image, with additional test-only dependencies
docker build \
-f docker/Dockerfile \
--target test \
-t openfold-docker:test .Run the unit tests
docker run \
--rm \
-v $(pwd -P):/opt/openfold3 \
-t openfold-docker:test \
pytest openfold3/tests -vvvBuild a 'stable' image with all the dependancies exactly pinned (production.lock)
docker build \
-f docker/Dockerfile \
--build-arg BUILD_MODE=lock \
--build-arg CUDA_BASE_IMAGE_TAG=12.1.1-cudnn8-devel-ubuntu22.04 \
--target devel \
-t openfold-docker:devel-locked .For Blackwell image build, see Build_instructions_blackwell.md