102 lines
4.0 KiB
YAML
102 lines
4.0 KiB
YAML
services:
|
|
zksync-era-external-node-archive-db:
|
|
image: "postgres:14"
|
|
command: >
|
|
postgres
|
|
-c max_connections=200
|
|
-c log_error_verbosity=terse
|
|
-c shared_buffers=2GB
|
|
-c effective_cache_size=4GB
|
|
-c maintenance_work_mem=1GB
|
|
-c checkpoint_completion_target=0.9
|
|
-c random_page_cost=1.1
|
|
-c effective_io_concurrency=200
|
|
-c min_wal_size=4GB
|
|
-c max_wal_size=16GB
|
|
-c max_worker_processes=16
|
|
-c checkpoint_timeout=1800
|
|
expose:
|
|
- 5430
|
|
volumes:
|
|
- ${ZKSYNC_ERA_MAINNET_EXTERNAL_NODE_ARCHIVE__DB_DATA:-zksync-era-mainnet-external-node-archive_db}:/var/lib/postgresql/data
|
|
healthcheck:
|
|
interval: 1s
|
|
timeout: 3s
|
|
test:
|
|
[
|
|
"CMD-SHELL",
|
|
'psql -U postgres -c "select exists (select * from pg_stat_activity where datname = ''{{ database_name }}'' and application_name = ''pg_restore'')" | grep -e ".f$$"',
|
|
]
|
|
environment:
|
|
- POSTGRES_PASSWORD=notsecurepassword
|
|
- PGPORT=5430
|
|
networks:
|
|
- chains
|
|
|
|
zksync-era-external-node-archive-client:
|
|
image: "matterlabs/external-node:v26.2.1"
|
|
depends_on:
|
|
- zksync-era-external-node-archive-db
|
|
ports:
|
|
- "127.0.0.1:3060:3060"
|
|
- "127.0.0.1:3061:3061"
|
|
- "127.0.0.1:3081:3081"
|
|
volumes:
|
|
- ${ZKSYNC_ERA_MAINNET_EXTERNAL_NODE_ARCHIVE__CLIENT_DATA:-zksync-era-mainnet-external-node-archive_client}:/db
|
|
expose:
|
|
- 3322
|
|
environment:
|
|
DATABASE_URL: "postgres://postgres:notsecurepassword@zksync-era-external-node-archive-db:5430/zksync_local_ext_node"
|
|
DATABASE_POOL_SIZE: 10
|
|
|
|
EN_HTTP_PORT: 3060
|
|
EN_WS_PORT: 3061
|
|
EN_HEALTHCHECK_PORT: 3081
|
|
EN_PROMETHEUS_PORT: 3322
|
|
EN_ETH_CLIENT_URL: ${ZKSYNC_ERA_L1_ETHEREUM_MAINNET_EXECUTION_RPC:-https://ethereum-rpc.publicnode.com}
|
|
EN_MAIN_NODE_URL: https://zksync2-mainnet.zksync.io
|
|
EN_L1_CHAIN_ID: 1
|
|
EN_L2_CHAIN_ID: 324
|
|
# EN_PRUNING_ENABLED: true
|
|
|
|
EN_STATE_CACHE_PATH: "./db/ext-node/state_keeper"
|
|
EN_MERKLE_TREE_PATH: "./db/ext-node/lightweight"
|
|
EN_SNAPSHOTS_RECOVERY_ENABLED: "true"
|
|
EN_SNAPSHOTS_OBJECT_STORE_BUCKET_BASE_URL: "zksync-era-mainnet-external-node-snapshots"
|
|
EN_SNAPSHOTS_OBJECT_STORE_MODE: "GCSAnonymousReadOnly"
|
|
RUST_LOG: "warn,zksync=info,zksync_core::metadata_calculator=debug,zksync_state=debug,zksync_utils=debug,zksync_web3_decl::client=error"
|
|
networks:
|
|
- chains
|
|
|
|
zksync-era-external-node-archive:
|
|
restart: unless-stopped
|
|
image: nginx
|
|
depends_on:
|
|
- zksync-era-external-node-archive-client
|
|
expose:
|
|
- 80
|
|
environment:
|
|
PROXY_HOST: zksync-era-external-node-archive-client
|
|
RPC_PORT: 3060
|
|
RPC_PATH: ""
|
|
WS_PORT: 3061
|
|
WS_PATH: ""
|
|
networks:
|
|
- chains
|
|
volumes:
|
|
- ./nginx-proxy:/etc/nginx/templates
|
|
labels:
|
|
- "traefik.enable=true"
|
|
- "traefik.http.middlewares.zksync-era-mainnet-external-node-archive-stripprefix.stripprefix.prefixes=/zksync-era-archive"
|
|
- "traefik.http.services.zksync-era-mainnet-external-node-archive.loadbalancer.server.port=3060"
|
|
- "${NO_SSL:-traefik.http.routers.zksync-era-mainnet-external-node-archive.entrypoints=websecure}"
|
|
- "${NO_SSL:-traefik.http.routers.zksync-era-mainnet-external-node-archive.tls.certresolver=myresolver}"
|
|
- "${NO_SSL:-traefik.http.routers.zksync-era-mainnet-external-node-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/zksync-era-archive`)}"
|
|
- "${NO_SSL:+traefik.http.routers.zksync-era-mainnet-external-node-archive.rule=PathPrefix(`/zksync-era-archive`)}"
|
|
- "traefik.http.routers.zksync-era-mainnet-external-node-archive.middlewares=zksync-era-mainnet-external-node-archive-stripprefix, ipwhitelist"
|
|
|
|
|
|
volumes:
|
|
zksync-era-mainnet-external-node-archive_db: {}
|
|
zksync-era-mainnet-external-node-archive_client: {}
|