# Contract Migration Common docker artifacts and bootstrap scripts ## How this repo works This repo builds contracts and deploys them to a chain First, bring up an eth evm provider ``` docker-compose up eth ``` Now build this repo's image and run it against the 'eth' service (ganache, for example). You will need to bind to the docker-compose network (cic-network) and mount the special contract output folder that dependent services use to get deployed contract addresses. Here is how to do that in one shot: ``` docker build -t registry.gitlab.com/grassrootseconomics/cic-docker-internal -f docker/ . && docker run --env ETH_PROVIDER=http://eth:8545 --net cic-network -v cic-docker-internal_contract-config:/tmp/cic/config --rm -it registry.gitlab.com/grassrootseconomics/cic-docker-internal reset.sh ``` Stop the containers and bring down the services with ``` docker-compose down ``` If you want a fresh start to the dev environment then bring down the services and delete their associated volumes with ``` docker-compose down -v ``` A goal is to go through all of these containers and create a default non-root user a la: https://vsupalov.com/docker-shared-permissions/ ## Tips and Tricks Sometimes you just want to hold a container open in docker compose so you can exec into it and poke around. Replace "command" with ``` command: - /bin/sh - -c - | tail -f /dev/null ``` then ``` docker exec -it [IMAGE_NANE] sh ``` ---