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
- WebStudio (see WebStudio)
- One Odysseus Server
- Nexmark (see Getting Started with Nexmark)
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!
