TLDR: Search for todo and update all occurrences to your desired name
-
Change LICENSE if necessary
-
Modify .pre-commit-config.yaml according to your need
-
Modify/add GitHub workflow status badges in README.md
-
Modify
todo-docker-user,todo-base-image,todo-image-name,todo-image-userin .env- .env will be loaded when you use docker compose for build/run/push
todo-docker-userrefers to your docker hub account usernametodo-base-imageis the image dockerfile is based on, such asnvidia/cuda:13.0.0-cudnn-devel-ubuntu24.04todo-image-userrefers to the default user inside the image, which is used to determine home folder
-
Modify the service name from
todo-service-nameto your service name in docker-compose.yml, add additional volume mounting options such as dataset directories -
Update Dockerfile and .dockerignore
- Existing dockerfile has screen & tmux config, oh-my-zsh, cmake, and other basic goodies
- Add any additional dependency installations at appropriate locations
-
build.sh to build and test the image locally in your machine's architecture
- The scripts uses buildx to build multi-arch image, you can disable this by removing redundant archs in docker-compose.yml
- Building stage does not have GPU access, if some of your dependencies need GPU, build them inside a running container and commit to the final image
-
run_container.sh or
docker compose up -dto run and test a built image- The service by default will mount the whole repository onto
CODE_FOLDERinside the container so any modification inside also takes effect outside, which is useful when you use vscode remote extension to develop inside a running container with remote docker context - You should be able to run and see GUI applications inside the container if
DISPLAYis set correctly when you run the script
- The service by default will mount the whole repository onto
-
push.sh to push the multi-arch image to docker hub
- You should have the docker hub repository set up before pushing
- Run scripts/dev_setup.sh to setup the development environment
- This template currently only supports docker image for amd64 and arm64, if you want to support other architectures, please modify the build.sh script and docker-compose.yml accordingly