Development Environment for Crucible
crucible-development
is a Development-Containers-based solution that uses .NET Aspire to orchestrate the various components of Crucible, along with supporting resources like an identity provider (Keycloak), a Postgres database server, and PGAdmin.
To use any dev container, you'll need to run Docker on your machine. Docker Desktop is a great way to get started if you're not confident administering Docker from the command line.
If you're on a Windows machine, Docker's consumption of your host machine's memory and storage is managed by WSL2. These will automatically scale to a percentage of your system's available resources, so you typically don't need to do any additional configuration.
If you're on Mac/Linux using Docker Desktop, you'll need to manually adjust these limits. In Docker Desktop, go to Settings -> Resources. We recommend the following minimums:
- Memory Limit: 16GB
- Disk Usage Limit: 120GB
This repo is still under construction, so you may run into the occasional challenge or oddity. From our lessons learned:
- Aspire resources appearing to have exited with no crash log: Use Docker Desktop or otherwise exec into the container and run
docker ps -a
to see all containers, regardless of their status. Stopped containers typically show an error code that might give you a hint. npm i
issues: Even though the devcontainer allows us to work in a container based on the same image, the image has independent builds for various architectures. This means that when younpm i
in ax86_64
container, some dependnecies may require precompiled binaries there that are unavailable on the ARM version. An ARM environment needs to compile these locally, which may require additional APT packages. This is why ourpostcreate.sh
installspython3-dev
currently. TL;DR - if you're having problems related tonpm install
in your container, shell in and execute it yourself to see the error log. It may be related to an OS package dependency that isn't present by default in the image.
- Some extensions (e.g. C#) very rarely seem to fail to install in the container's VS Code environment. If you see weird intellisense behavior or have compilation/debugging problems, ensure all extensions in the
devcontainers.json
file are installed in your container.