Skip to content

dev Docker container startup scripts

Sam edited this page Jun 13, 2023 · 28 revisions

Building images

From git repo root, create aw_base for most of the containers

docker build -t aw_base -f .\Dockerfile .

Setting up volume

Create a volume vol1 via docker volume create vol1

Then populate it by connecting to it, and git cloning the repo into it

docker run -w /home/app/mapf-multiagent-robot-planning/dev -d -it --name aw_dev --mount source=vol1,destination=/home/app aw_base

Mounting local windows git directory into vol1:

docker run -w /home/app/mapf-multiagent-robot-planning/dev -d -it --name aw_dev --mount source=vol1,destination=/home/app -v C:\Users\sam\Documents\GitHub\mapf-multiagent-robot-planning:/home/app/mapf-multiagent-robot-planning aw_base

Inside the aw_dev container run

apk add git
cd /home/app
git clone <this repo>

Optional - Add existing databases to volume

docker cp .\world.db aw_dev:/home/app
docker cp .\orders.db aw_dev:/home/app

At this point docker compose should work

Docker compose

Use docker compose up -d to start up all containers

[Old] starting containers individually

Shared network for containers to talk on

docker network create aw-net

World Sim

docker run -w /home/app/mapf-multiagent-robot-planning/dev --net aw-net -e REDIS_HOST="aw_redis" -d -it --name aw_world_sim --mount source=vol1,destination=/home/app --log-driver=gcplogs aw_base:latest python -m world_sim

Order Processor

docker run -w /home/app/mapf-multiagent-robot-planning/dev --net aw-net -e REDIS_HOST="aw_redis" -d -it --name aw_order_processor --mount source=vol1,destination=/home/app --log-driver=gcplogs aw_base python -m inventory_management_system.order_processor

Robot Allocator

docker run -w /home/app/mapf-multiagent-robot-planning/dev --net aw-net -e REDIS_HOST="aw_redis" -d -it --name aw_robot_allocator --mount source=vol1,destination=/home/app --log-driver=gcplogs aw_base python -m robot_allocator

Node webserver (access via port 3000)

docker run -w /home/app/mapf-multiagent-robot-planning/dev -p 3000:3000 --net aw-net -e REDIS_HOST="aw_redis" -d -it --name aw_web_node --mount source=vol1,destination=/home/app --log-driver=gcplogs node:alpine /bin/sh -c "npm --prefix ./env_visualizer install && node env_visualizer/"

Sending fake orders with temporary container (10 orders, 1 per second)

docker run -w /home/app/mapf-multiagent-robot-planning/dev --net aw-net -e REDIS_HOST="aw_redis" -d --rm  --name aw_fake_order_send --mount source=vol1,destination=/home/app --log-driver=gcplogs aw_base python -m inventory_management_system.fake_order_sender -n 10 -d 1

Testing alpine

docker run -w /home/app/mapf-multiagent-robot-planning/dev --net aw-net -d -it --name aw_dev --mount source=vol1,destination=/home/app aw_base

Running redis

docker run -d --net aw-net -p 6379:6379 --name aw_redis redis

OLD

Flask IMS webserver (access via port 5000)

docker run -w /home/app/mapf-multiagent-robot-planning/dev --net aw-net -p 5000:5000 -d -it --name aw_web_flask --mount source=vol1,destination=/home/app aw_base flask --app inventory_management_system.order_tracking_web_server run --host=0.0.0.0
Clone this wiki locally