# Codex Docker Image Build and run using the example docker-compose file: `docker-compose up -d` Stop and retain image and volume data: `docker-compose down` Stop and delete image and volume data: `docker-compose down --rmi all -v` `rm -R hostdatadir` # Building local modifications for testing Sometimes, you just need to make a small change and build a new docker image for the purpose of testing. To speed up this process, the docker build has been cut into two steps. Step 1: (buildsetup.bat) builds the setup.Dockerfile and takes care of the slow process of building the nim buildsystem. This does not need to be re-done for most small changes to the nim-codex codebase. Step 2: (buildlocal.bat) builds the local.Dockerfile and pushes the new image as `thatbenbierens/codexlocal:latest`. - The CI build cannot use this two-step speed-up because it builds images for multiple architectures, which the local scripts don't do. # Environment variables Codex docker image supports the following environment variables: - LISTEN_ADDRS(*) - API_BINDADDR(*) - DATA_DIR(*) - LOG_LEVEL - METRICS_ADDR - METRICS_PORT - NAT_IP - API_PORT - DISC_IP - DISC_PORT - NET_PRIVKEY - BOOTSTRAP_SPR - MAX_PEERS - AGENT_STRING - STORAGE_QUOTA - BLOCK_TTL - CACHE_SIZE - ETH_PROVIDER - ETH_ACCOUNT - ETH_DEPLOYMENT (*) These variables have default values in the docker image that are different from Codex's standard default values. All environment variables are optional and will default to Codex's CLI default values. # Constants Codex CLI arguments 'data-dir', 'listen-addrs', and 'api-bindaddr' cannot be configured. They are set to values required for docker in case of bind addresses. In the case of 'data-dir', the value is set to `/datadir`. It is important that you map this folder to a host volume in your container configuration. See docker-compose.yaml for examples. # Useful Connect nodes with the `/connect` endpoint. To get the IP address of a container within a network: Find container Id: `docker ps` Open terminal in container: `docker exec -it sh` Get IP addresses: `ifconfig`