Orchestrating Telstar with Docker Compose

From Telstar Wiki
Revision as of 17:26, 5 April 2022 by John (talk | contribs)
Jump to navigation Jump to search

The following docker-compose yaml file can be used to manage the TELSTAR application and associated *mongo* database.

   version: "3.8"
   services:
     telstar-01:
       container_name: "telstar-server"
       image: "johnnewcombe/telstar"
       command: "server --port 6512 --install" # install to the primary database
       ports:
         - target: 6512
           published: 6512
       networks:
         - telstar-network
       volumes:
         - type: volume
         source: telstar-volume
         target: /opt/telstar/volume
       depends_on:
         - mongodb
       environment:
         - TELSTAR_SERVER=AUSTEN
     mongodb:
       container_name: "telstar-mongo"
       image: "mongo"
       ports:
         - target: 27017
           published: 27017
       networks:
         telstar-network:
       environment:
         - MONGO_INITDB_ROOT_USERNAME=mongoadmin
         - MONGO_INITDB_ROOT_PASSWORD=secret
   networks:
     telstar-network:
       name: telstar-network
   volumes:
     telstar-volume:
       name: telstar-volume

The following docker-compose file starts three TELSTAR servers all talking to the same database server, however the third TELSTAR server (telstar-server-03) uses the *secondary* database. This *secondary* database collection is typically used to test content before publishing it to the primary database collection. In addition the TELSTAR API is launced as a separate container.

   version: "3.8"
   services:
     telstar-01:
       container_name: "telstar-server-01"
       build: .
       image: "johnnewcombe/telstar"
       command: "server --port 6512 --install" # install to the primary database
       ports:
         - target: 6512
           published: 6512
       networks:
         - telstar-network
       volumes:
         - type: volume
         source: telstar-volume
         target: /opt/telstar/volume
       depends_on:
         - mongodb
       environment:
         - TELSTAR_SERVER=AUSTEN
     telstar-02:
       container_name: "telstar-server-02"
       image: "johnnewcombe/telstar"
       command: "server --port 6513"
       ports:
         - target: 6513
           published: 6513
       networks:
         - telstar-network
       volumes:
         - type: volume
           source: telstar-volume
           target: /opt/telstar/volume
       depends_on:
         - mongodb
       environment:
         - TELSTAR_SERVER=ELIOT
     telstar-03:
       container_name: "telstar-server-03"
       image: "johnnewcombe/telstar"
       command: "server --port 6514 --install" # install to the secondary database
       ports:
         - target: 6514
           published: 6514
       networks:
         - telstar-network
       volumes:
         - type: volume
           source: telstar-volume
           target: /opt/telstar/volume
       depends_on:
         - mongodb
       environment:
         - TELSTAR_SERVER=HARDY
         - TELSTAR_DBCOLLECTION=SECONDARY
     telstar-api:
       container_name: "telstar-api"
       image: "johnnewcombe/telstar"
       command: "api --port 8001 --init"
       ports:
         - target: 8001
           published: 8001
       networks:
         - telstar-network
       depends_on:
         - mongodb
   environment:
     - TELSTAR_API_USERID=0 # User 0 has access to all pages
     - TELSTAR_API_PASSWORD=telstarapisecret
     - TELSTAR_COOKIE_SECRET=<place yout secret here> # define this for yourself and keep it secret!
     mongodb:
       container_name: "telstar-mongo"
       image: "mongo"
       ports:
         - target: 27017
           published: 27017
       networks:
         telstar-network:
       environment:
         - MONGO_INITDB_ROOT_USERNAME=mongoadmin
         - MONGO_INITDB_ROOT_PASSWORD=secret
   networks:
     telstar-network:
       name: telstar-network
   volumes:
     telstar-volume:
       name: telstar-volume