...
However, normally you want do start multiple containers
with a more advanced configuration per container. For
this, we use docker-compose (a python module):
pip install docker-compose
AcomposeA simple docker-compose.yml (it runs only one container) looks like this:
version: '2'
services:
opennsa1:
image: opennsa_img
environment:
- PYTHONPATH=/opennsa
volumes:
- .:/opennsa
extra_hosts:`
- "dockerhost:172.17.0.1"
command: twistd -ny /opennsa/build/config/opennsa1.tac
ports:
- "9080:9080"
...
When you want to connect to a running container, you can use
the following:
docker ps <look up the name of the running container>
docker exec -i -t opennsa-amsopennsa1 /bin/bash
A more realistic openNSA Docker setup
...
version: '2'
services:
opennsa-ams:
container_name: opennsa-ams
hostname: opennsa-ams
image: opennsa_img:latest
environment:
- PYTHONPATH=/opennsa
volumes:
- .:/opennsa
extra_hosts:
- "dockerhost:10.50.0.1"
ports:x
- "9445:9445"
networks:
vpcbr:
ipv4_address: 10.50.0.2
command: twistd -ny build/config/gts/opennsa-ams-dud.tac
opennsa-bra:
container_name: opennsa-bra
hostname: opennsa-bra
image: opennsa_img:latest
environment:
- PYTHONPATH=/opennsa
volumes:
- .:/opennsa
extra_hosts:
- "dockerhost:10.50.0.1"
ports:x
- "9447:9447"
networks:
vpcbr:
ipv4_address: 10.50.0.3
command: twistd -ny build/config/gts/opennsa-ams-dud.tac
networks:
vpcbr:
driver: bridge
ipam:
config:
- subnet: 10.50.0.0/16
gateway: 10.50.0.1
Some configuration is needed for the nodes defined above (using opennsa-ams as an example).
Each of the OpenNSA nodes need their own database, which can be created by:
cd /data/opennsa
sudo -u postgres createdb -O opennsa opennsa-ams
sudo -u postgres psql -U opennsa -W opennsa-ams < datafiles/schema.sql
...
Each of the nodes need their own configuration files:
- opennsa-ams-dud.tac: The twisted startup file, points to .conf
- opennsa-ams-dud.conf: Node configuration, points to .nrm
- opennsa-ams-top.nrm: Node topology
...