# Development Guide ## Overview Workspaces' services run on Docker containers. These containers can be all started at once using Docker Compose. ### Setup Build the base image: ```sh make docker-base ``` In the Makefile, this Docker command is run: ```sh docker build -t marconi.aoc.nrao.edu/ops/base:workspaces -f Condaless.dockerfile.v2 . ``` This builds a local Docker image tagged as `marconi.aoc.nrao.edu/ops/base:workspaces` on your machine using the `Condaless.dockerfile.v2` Dockerfile. Once the image has been built, Docker will save this image on your machine. You do not need to run the `make docker-base` command again unless you delete this image or modify the `Condaless.dockerfile.v2` Dockerfile. ### Starting Workspaces To start Workspaces as foreground process, run: ```sh docker-compose -f docker-compose.local.yml up ``` To start Workspaces as background process, run: ```sh docker-compose -f docker-compose.local.yml up -d ``` ### Stopping Workspaces To stop Workspaces, run: ```sh docker-compose -f docker-compose.local.yml down ``` ### Starting Individual Services To start Workspaces as foreground process, run: ```sh docker-compose -f docker-compose.local.yml up <service_name> ``` ### List Containers To get a list of running containers: ```sh docker container ls ``` Or: ```sh docker ps ``` ### Show Container Logs To output logs of a specific container: ```sh docker logs <container_name> ``` To continuously tail logs of a specific container: ```sh docker logs -f <container_name> ``` ### Open a Shell on a Running Container Using Docker: ```sh docker exec -it <container_name> bash ``` Using Docker Compose: ```sh docker-compose exec <service_name> bash ``` ### Run a command on a Running Container Using Docker: ```sh docker exec <container_name> pwd ``` Using Docker Compose: ```sh docker-compose exec <service_name> pwd ```