You can download Odysseus server directly from the dockerhub

docker run -d -p 8888:8888 odysseusol/odysseus

If you want to create your own Odysseus Docker Container, see Create an Odysseus Docker Container.

You could also start interactive (and use the osgi console):

docker run -it -p 8888:8888 odysseusol/odysseus

The ODYSSEUS_HOME will be used as a volume.

The following will bind the odysseus home to H:\docker\odyhome1

docker run -p 8888:8888 -it -vH:\docker\odyhome1:/var/lib/odysseus odysseusol/odysseus

If you want to use the latest development images, place "dev-" as first part of the tag:

docker run -d -p 8888:8888 odysseusol/odysseus:dev-latest

Run with Docker compose

Here is a simple example for a startup docker compose file with

Just copy this file to some location on your local disk and run 

docker compose up -d
services:
  frontend:
    image: odysseusol/webstudio_frontend:latest
    ports:
      - "4200:80"
    environment:
      NODE_ENV: production
    restart: always
    depends_on:
      - backend

  backend:
    image: odysseusol/webstudio_backend:latest
    ports:
      - "3000:3000"
    environment:
      NODE_ENV: production
      MONGODB_URI: mongodb://database:27017/webstudio
      SECRET_TOKEN: jwtSecretToken
      DOWNLOAD_TOKEN: downloadToken
      PROJECTS_FOLDER: projects
      ACCESS_TOKEN_LIFESPAN: 43200
    restart: always
    depends_on:
      - database
    volumes:
      - backenddata:/home/node/app/projects
      - ./backend/logs:/home/node/app/logs

  database:
    image: mongo
    restart: always
    ports:
      - "27017:27017"
    volumes:
      - mongodbdata:/data/db

  nexmark:
    image: odysseusol/nexmark
    restart: always
    ports:
      - 65440-65443:65440-65443

  standalone01:
    image: odysseusol/odysseus
    stdin_open: true
    restart: always
    ports:
        - 18888:8888
    volumes:
       - ./standalone01:/var/lib/odysseus

volumes:
  mongodbdata:
  backenddata:

Remark: Because this is inside a docker environment you cannot use localhost for nexmark queries → use nexmark instead.

#PARSER PQL
#RUNQUERY
nexmark:person := ACCESS({source='nexmark:person',
    wrapper='GenericPush',
    transport='TCPClient',
    protocol='SizeByteBuffer',
    dataHandler='Tuple',
    options=[
        ['host', 'nexmark'],
        ['port', '65440'],
        ['ByteOrder', 'LittleEndian']
        ],
    schema=[
        ['timestamp', 'STARTTIMESTAMP'],
        ['id', 'INTEGER'],
        ['name', 'STRING'],
        ['email', 'STRING'],
        ['creditcard', 'STRING'],
        ['city', 'STRING'],
        ['state', 'STRING']
        ]
    })
    
#RUNQUERY
nexmark:bid := ACCESS({source='nexmark:bid',
    wrapper='GenericPush',
    transport='TCPClient',
    protocol='SizeByteBuffer',
    dataHandler='Tuple',
    options=[
        ['host', 'nexmark'],
        ['port', '65442'],
        ['ByteOrder', 'LittleEndian']
        ],
    schema=[
        ['nexmark:bid','timestamp', 'STARTTIMESTAMP'],
        ['nexmark:bid','auction', 'INTEGER'],
        ['nexmark:bid','bidder', 'INTEGER'], 
        ['nexmark:bid','datetime', 'LONG'],
        ['nexmark:bid','price', 'DOUBLE']
        ]
    })

#RUNQUERY    
nexmark:auction := ACCESS({source='nexmark:auction',
    wrapper='GenericPush',
    transport='TCPClient',
    protocol='SizeByteBuffer',
    dataHandler='Tuple',
    options=[
        ['host', 'nexmark'],
        ['port', '65441'],
        ['ByteOrder', 'LittleEndian']
        ],
    schema=[
        ['timestamp', 'STARTTIMESTAMP'],
        ['id', 'INTEGER'],
        ['itemname', 'STRING'],
        ['description', 'STRING'],
        ['initialbid', 'INTEGER'],
        ['reserve', 'INTEGER'],
        ['expires', 'LONG'],
        ['seller', 'INTEGER'],
        ['category', 'INTEGER']
        ]
    })

#RUNQUERY    
nexmark:category := ACCESS({source='nexmark:category',
    wrapper='GenericPush',
    transport='TCPClient',
    protocol='SizeByteBuffer',
    dataHandler='Tuple',
    options=[
        ['host', 'nexmark'],
        ['port', '65443'],
        ['ByteOrder', 'LittleEndian']
        ],
    schema=[
        ['id', 'INTEGER'],
        ['name', 'STRING'],
        ['description', 'STRING'],
        ['parentid', 'INTEGER']
        ]
    })

You connect to a odysseus instance, you will need to use localhost, because the connection is done from the browser that is outside of docker!



Related articles

Related articles appear here based on the labels you select. Click to edit the macro and add or change labels.

Related issues