# 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 docker build -t brooks.aoc.nrao.edu:5000/ssa-docker/workspaces/base:local -f Dockerfile.base . ``` This builds a local Docker image tagged as `brooks.aoc.nrao.edu:5000/ssa-docker/workspaces/base:local` on your machine using the `Dockerfile.base` Dockerfile. Once the image has been built, Docker will save this image on your machine. Next, you will need to run a similar command for the cache image: ```sh docker build --no-cache -t brooks.aoc.nrao.edu:5000/ssa-docker/workspaces/cache:local -f Dockerfile.cache . --build-arg BASE_IMAGE_TAG=local --build-arg BASE_REGISTRY_URL="brooks.aoc.nrao.edu:5000/ssa-docker/workspaces" ``` ### Starting Workspaces To start a dev version of Workspaces as foreground process, run: ```sh docker compose -f docker-compose.yml -f docker-compose.local.yml up ``` To start a porduction version of Workspaces as background process, run: ```sh docker compose -f docker-compose.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 -f docker-compose.local.yml 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 -f docker-compose.local.yml exec <service_name> pwd ```