Configuration with Docker
Table of Contents
How to configure Lisk Service.
Configuring Lisk Service
Copy the example configuration options to lisk-service/.env
:
lisk-service/
cp docker/example.env .env
vim .env
Check the Lisk Service Configuration Reference for a summary of all available environment variables to configure Lisk Service. |
Open the .env
file to change the default configuration options of Lisk Service:
lisk-service/.env
## Common Docker configuration
# Service broker
# SERVICE_BROKER=redis://redis_common:6379/0
# Lisk Service log config
# SERVICE_LOG_CONSOLE=false
# SERVICE_LOG_FILE=false
# SERVICE_LOG_GELF=false
# SERVICE_LOG_LEVEL=debug
# SERVICE_LOG_STDOUT=true
## Lisk Service Core
# Lisk static assets, ie. known account lists
LISK_STATIC=https://static-data.lisk.com
# Lisk Service geolocation backend (empty = disabled)
GEOIP_JSON=
# Create search index (0 = full index)
INDEX_N_BLOCKS=0
# MySQL Snapshot settings
# Enable or disable apply snapshot feature
ENABLE_APPLY_SNAPSHOT=true
# Custom snapshot url (Expected to end with sql.gz)
INDEX_SNAPSHOT_URL='https://snapshots.lisk.io/mainnet/service.sql.gz'
# When the MySQL is hosted as a docker-compose service, set the following environment variables:
# Set docker-compose file path (use absolute path)
DOCKER_COMPOSE_FILEPATH='/Users/lisk/lisk-service/jenkins/mysql/docker-compose.yml'
# Set MySQL service name as defined in the above docker-compose file
DOCKER_MYSQL_SERVICE_NAME=mysql
# Use default genesis block height
# GENESIS_HEIGHT=0
# FEE_EST_DEFAULT_START_BLOCK_HEIGHT=0
# Fee estimator
ENABLE_FEE_ESTIMATOR_QUICK=true
ENABLE_FEE_ESTIMATOR_FULL=false
# Transaction statistics
ENABLE_TRANSACTION_STATS=true
TRANSACTION_STATS_HISTORY_LENGTH_DAYS=366
# Log debug messages
#DEBUG=*dynamicFees*
# Lisk ecosystem configuration
LISK_CORE_WS=ws://host.docker.internal:8080
# Websocket rate limit config
WS_RATE_LIMIT_ENABLE=false
WS_RATE_LIMIT_CONNECTIONS=5
WS_RATE_LIMIT_DURATION=1 # in seconds
# HTTP rate limit config
HTTP_RATE_LIMIT_ENABLE=false
HTTP_RATE_LIMIT_CONNECTIONS=200
HTTP_RATE_LIMIT_WINDOW=10 # in seconds
## Lisk Service Gateway
# PORT=9901
# HOST=0.0.0.0
# Enabled Gateway APIs
ENABLE_HTTP_API=http-status,http-version2
ENABLE_WS_API=blockchain,rpc-v2
# HTTP API caching config
ENABLE_HTTP_CACHE_CONTROL=false
HTTP_CACHE_CONTROL_DIRECTIVES=public,max-age=10
# Websocket rate limit config
ENABLE_WS_RATELIMIT=false
WS_RATELIMIT_POINTS=5
WS_RATELIMIT_DURATION=1 # in seconds
## Lisk Service Market
# Currency pairs
SERVICE_MARKET_FIAT_CURRENCIES=USD
SERVICE_MARKET_TARGET_PAIRS=LSK_BTC,LSK_USD
## Lisk Service Newsfeed
# Sources
#SERVICE_NEWSFEED_ENABLE_SOURCES=drupal_lisk_general,drupal_lisk_announcements,twitter_lisk
# Twitter authentication
TWITTER_CONSUMER_KEY=
TWITTER_CONSUMER_SECRET=
TWITTER_ACCESS_TOKEN_KEY=
TWITTER_ACCESS_TOKEN_SECRET=
Show current configuration
To show the current configuration of Lisk Service, execute the following command:
lisk-service/
make print-config
Result for the default config, which will connect Lisk Service to a locally running Lisk Core node.
docker-compose config
networks:
core_network: {}
gateway_network: {}
market_network: {}
newsfeed_network: {}
services_network: {}
services:
core:
depends_on:
mysql_core:
condition: service_started
redis_common:
condition: service_started
redis_core_persistent:
condition: service_started
redis_core_volatile:
condition: service_started
environment:
ENABLE_FEE_ESTIMATOR_FULL: "false"
ENABLE_FEE_ESTIMATOR_QUICK: "true"
ENABLE_TRANSACTION_STATS: "true"
GEOIP_JSON: ''
INDEX_N_BLOCKS: '0'
LISK_CORE_WS: ws://host.docker.internal:8080
LISK_STATIC: https://static-data.lisk.com
SERVICE_BROKER: redis://redis_common:6379/0
SERVICE_CORE_MYSQL: mysql://lisk:password@mysql_core:3306/lisk
SERVICE_CORE_REDIS: redis://redis_core_persistent:6379/0
SERVICE_CORE_REDIS_VOLATILE: redis://redis_core_volatile:6379/0
TRANSACTION_STATS_HISTORY_LENGTH_DAYS: '366'
extra_hosts:
- host.docker.internal:host-gateway
image: lisk/service_core
networks:
core_network: null
services_network: null
restart: always
gateway:
depends_on:
core:
condition: service_started
redis_gateway_volatile:
condition: service_started
environment:
ENABLE_HTTP_API: http-status,http-version2
ENABLE_HTTP_CACHE_CONTROL: "false"
ENABLE_WS_API: blockchain,rpc-v2
ENABLE_WS_RATELIMIT: "false"
HTTP_CACHE_CONTROL_DIRECTIVES: public,max-age=10
SERVICE_BROKER: redis://redis_common:6379/0
SERVICE_GATEWAY_REDIS_VOLATILE: redis://redis_gateway_volatile:6379/0
WS_RATELIMIT_DURATION: '1'
WS_RATELIMIT_POINTS: '5'
healthcheck:
test: curl --fail http://gateway:9901/api/v2/transactions
image: lisk/service_gateway
networks:
gateway_network: null
services_network: null
ports:
- published: 9901
target: 9901
restart: always
market:
depends_on:
redis_common:
condition: service_started
redis_market:
condition: service_started
environment:
SERVICE_BROKER: redis://redis_common:6379/0
SERVICE_MARKET_FIAT_CURRENCIES: USD
SERVICE_MARKET_REDIS: redis://redis_market:6379/0
SERVICE_MARKET_TARGET_PAIRS: LSK_BTC,LSK_USD
image: lisk/service_market
networks:
market_network: null
services_network: null
restart: always
mysql_core:
command: mysqld --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: lisk
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: lisk
healthcheck:
retries: 10
test:
- CMD
- mysqladmin
- ping
- -hlocalhost
- -ppassword
timeout: 20s
image: mysql:8
networks:
core_network: null
restart: always
volumes:
- mysql-data-core:/var/lib/mysql:rw
mysql_newsfeed:
command: mysqld --default-authentication-plugin=mysql_native_password
environment:
MYSQL_DATABASE: lisk
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: lisk
healthcheck:
retries: 10
test:
- CMD
- mysqladmin
- ping
- -hlocalhost
- -ppassword
timeout: 20s
image: mysql:8
networks:
newsfeed_network: null
restart: always
volumes:
- mysql-data-newsfeed:/var/lib/mysql:rw
newsfeed:
depends_on:
mysql_newsfeed:
condition: service_started
redis_common:
condition: service_started
environment:
SERVICE_BROKER: redis://redis_common:6379/0
SERVICE_NEWSFEED_MYSQL: mysql://lisk:password@mysql_newsfeed:3306/lisk
TWITTER_ACCESS_TOKEN_KEY: ''
TWITTER_ACCESS_TOKEN_SECRET: ''
TWITTER_CONSUMER_KEY: ''
TWITTER_CONSUMER_SECRET: ''
image: lisk/service_newsfeed
networks:
newsfeed_network: null
services_network: null
restart: always
redis_common:
command: redis-server /etc/redis/redis.conf
healthcheck:
test: redis-cli ping
image: redis:5-alpine
networks:
services_network: null
restart: always
volumes:
- /Users/mona/git/lisk-service/docker/redis.volatile.conf:/etc/redis/redis.conf:ro
redis_core_persistent:
command: redis-server /etc/redis/redis.conf
healthcheck:
test: redis-cli ping
image: redis:5-alpine
networks:
core_network: null
restart: always
volumes:
- /Users/mona/git/lisk-service/docker/redis.persistent.conf:/etc/redis/redis.conf:ro
- redis-data-core:/data:rw
redis_core_volatile:
command: redis-server /etc/redis/redis.conf
healthcheck:
test: redis-cli ping
image: redis:5-alpine
networks:
core_network: null
restart: always
volumes:
- /Users/mona/git/lisk-service/docker/redis.volatile.conf:/etc/redis/redis.conf:ro
redis_gateway_volatile:
command: redis-server /etc/redis/redis.conf
healthcheck:
test: redis-cli ping
image: redis:5-alpine
networks:
gateway_network: null
restart: always
volumes:
- /Users/mona/git/lisk-service/docker/redis.volatile.conf:/etc/redis/redis.conf:ro
redis_market:
command: redis-server /etc/redis/redis.conf
healthcheck:
test: redis-cli ping
image: redis:5-alpine
networks:
market_network: null
restart: always
volumes:
- /Users/mona/git/lisk-service/docker/redis.persistent.conf:/etc/redis/redis.conf:ro
- redis-data-market:/data:rw
version: '3'
volumes:
mysql-data-core: {}
mysql-data-newsfeed: {}
redis-data-core: {}
redis-data-market: {}