go-ethereum/geth-poa/docker-compose.yml
2024-02-26 22:30:33 -08:00

431 lines
12 KiB
YAML

version: '3'
services:
sl-bootnode:
build:
context: ..
dockerfile: geth-poa/Dockerfile
environment:
- GETH_NODE_TYPE=bootnode
- BOOT_KEY=7b548c1c0fbe80ef1eb0aaec2edf26fd20fb0d758e94948cf6c5f2a486e735f6
- NET_RESTRICT=172.29.0.0/16
networks:
primev_net:
ipv4_address: '172.29.0.98'
ports:
- 8545:8545
- 8546:8546
- 6060:6060 # metrics server @ /debug/metrics
- 6068:6068
- 60601:60601
volumes:
- geth-data-bootnode:/data
profiles:
- settlement
- settlement-keystore
labels:
com.datadoghq.ad.check_names: '["openmetrics"]'
com.datadoghq.ad.init_configs: '[{}]'
com.datadoghq.ad.instances: |
[
{
"openmetrics_endpoint": "http://%%host%%:6060/debug/metrics/prometheus",
"namespace": "geth-poa",
"metrics": [
"txpool*",
"trie*",
"system*",
"state*",
"rpc*",
"p2p*",
"eth*",
"chain*"
]
}
]
sl-node1-keystore:
build:
context: ..
dockerfile: geth-poa/SignerNode1Dockerfile
environment:
- GETH_NODE_TYPE=signer
- BOOTNODE_ENDPOINT=enode://34a2a388ad31ca37f127bb9ffe93758ee711c5c2277dff6aff2e359bcf2c9509ea55034196788dbd59ed70861f523c1c03d54f1eabb2b4a5c1c129d966fe1e65@172.29.0.98:30301
- MEV_COMMIT_GETH_PASSWORD=${MEV_COMMIT_GETH_PASSWORD}
- NET_RESTRICT=172.29.0.0/16
networks:
primev_net:
ipv4_address: '172.29.0.99'
ports:
- 60602:60601
volumes:
- geth-data-node1:/data
profiles:
- settlement-keystore
labels:
com.datadoghq.ad.check_names: '["openmetrics"]'
com.datadoghq.ad.init_configs: '[{}]'
com.datadoghq.ad.instances: |
[
{
"openmetrics_endpoint": "http://%%host%%:6060/debug/metrics/prometheus",
"namespace": "geth-poa",
"metrics": [
"txpool*",
"trie*",
"system*",
"state*",
"rpc*",
"p2p*",
"eth*",
"chain*",
"clique*"
"vm*"
]
}
]
sl-node1:
build:
context: ..
dockerfile: geth-poa/Dockerfile
environment:
- GETH_NODE_TYPE=signer
- BLOCK_SIGNER_ADDRESS=0xd9cd8E5DE6d55f796D980B818D350C0746C25b97
- BLOCK_SIGNER_PRIVATE_KEY=${NODE1_PRIVATE_KEY}
- BOOTNODE_ENDPOINT=enode://34a2a388ad31ca37f127bb9ffe93758ee711c5c2277dff6aff2e359bcf2c9509ea55034196788dbd59ed70861f523c1c03d54f1eabb2b4a5c1c129d966fe1e65@172.29.0.98:30301
- NET_RESTRICT=172.29.0.0/16
networks:
primev_net:
ipv4_address: '172.29.0.99'
ports:
- 60602:60601
volumes:
- geth-data-node1:/data
profiles:
- settlement
labels:
com.datadoghq.ad.check_names: '["openmetrics"]'
com.datadoghq.ad.init_configs: '[{}]'
com.datadoghq.ad.instances: |
[
{
"openmetrics_endpoint": "http://%%host%%:6060/debug/metrics/prometheus",
"namespace": "geth-poa",
"metrics": [
"txpool*",
"trie*",
"system*",
"state*",
"rpc*",
"p2p*",
"eth*",
"chain*",
"clique*"
"vm*"
]
}
]
sl-node2-keystore:
build:
context: ..
dockerfile: geth-poa/SignerNode2Dockerfile
environment:
- GETH_NODE_TYPE=signer
- BOOTNODE_ENDPOINT=enode://34a2a388ad31ca37f127bb9ffe93758ee711c5c2277dff6aff2e359bcf2c9509ea55034196788dbd59ed70861f523c1c03d54f1eabb2b4a5c1c129d966fe1e65@172.29.0.98:30301
- NET_RESTRICT=172.29.0.0/16
- MEV_COMMIT_GETH_PASSWORD=${MEV_COMMIT_GETH_PASSWORD}
networks:
primev_net:
ipv4_address: '172.29.0.100'
ports:
- 60603:60601
volumes:
- geth-data-node2:/data
profiles:
- settlement-keystore
labels:
com.datadoghq.ad.check_names: '["openmetrics"]'
com.datadoghq.ad.init_configs: '[{}]'
com.datadoghq.ad.instances: |
[
{
"openmetrics_endpoint": "http://%%host%%:6060/debug/metrics/prometheus",
"namespace": "geth-poa",
"metrics": [
"txpool*",
"trie*",
"system*",
"state*",
"rpc*",
"p2p*",
"eth*",
"chain*",
"clique*"
"vm*"
]
}
]
sl-node2:
build:
context: ..
dockerfile: geth-poa/Dockerfile
environment:
- GETH_NODE_TYPE=signer
- BLOCK_SIGNER_ADDRESS=0x788EBABe5c3dD422Ef92Ca6714A69e2eabcE1Ee4
- BLOCK_SIGNER_PRIVATE_KEY=${NODE2_PRIVATE_KEY}
- BOOTNODE_ENDPOINT=enode://34a2a388ad31ca37f127bb9ffe93758ee711c5c2277dff6aff2e359bcf2c9509ea55034196788dbd59ed70861f523c1c03d54f1eabb2b4a5c1c129d966fe1e65@172.29.0.98:30301
- NET_RESTRICT=172.29.0.0/16
networks:
primev_net:
ipv4_address: '172.29.0.100'
ports:
- 60603:60601
volumes:
- geth-data-node2:/data
profiles:
- settlement
labels:
com.datadoghq.ad.check_names: '["openmetrics"]'
com.datadoghq.ad.init_configs: '[{}]'
com.datadoghq.ad.instances: |
[
{
"openmetrics_endpoint": "http://%%host%%:6060/debug/metrics/prometheus",
"namespace": "geth-poa",
"metrics": [
"txpool*",
"trie*",
"system*",
"state*",
"rpc*",
"p2p*",
"eth*",
"chain*",
"clique*"
"vm*"
]
}
]
sl-node3-keystore:
build:
context: ..
dockerfile: geth-poa/SignerNode3Dockerfile
environment:
- GETH_NODE_TYPE=signer
- BOOTNODE_ENDPOINT=enode://34a2a388ad31ca37f127bb9ffe93758ee711c5c2277dff6aff2e359bcf2c9509ea55034196788dbd59ed70861f523c1c03d54f1eabb2b4a5c1c129d966fe1e65@172.29.0.98:30301
- MEV_COMMIT_GETH_PASSWORD=${MEV_COMMIT_GETH_PASSWORD}
- NET_RESTRICT=172.29.0.0/16
networks:
primev_net:
ipv4_address: '172.29.0.101'
ports:
- 60604:60601
volumes:
- geth-data-node1:/data
profiles:
- settlement-keystore
labels:
com.datadoghq.ad.check_names: '["openmetrics"]'
com.datadoghq.ad.init_configs: '[{}]'
com.datadoghq.ad.instances: |
[
{
"openmetrics_endpoint": "http://%%host%%:6060/debug/metrics/prometheus",
"namespace": "geth-poa",
"metrics": [
"txpool*",
"trie*",
"system*",
"state*",
"rpc*",
"p2p*",
"eth*",
"chain*",
"clique*"
"vm*"
]
}
]
sl-node3:
build:
context: ..
dockerfile: geth-poa/Dockerfile
environment:
- GETH_NODE_TYPE=signer
- BLOCK_SIGNER_ADDRESS=0xd9cd8E5DE6d55f796D980B818D350C0746C25b97
- BLOCK_SIGNER_PRIVATE_KEY=${NODE3_PRIVATE_KEY}
- BOOTNODE_ENDPOINT=enode://34a2a388ad31ca37f127bb9ffe93758ee711c5c2277dff6aff2e359bcf2c9509ea55034196788dbd59ed70861f523c1c03d54f1eabb2b4a5c1c129d966fe1e65@172.29.0.98:30301
- NET_RESTRICT=172.29.0.0/16
networks:
primev_net:
ipv4_address: '172.29.0.101'
ports:
- 60604:60601
volumes:
- geth-data-node3:/data
profiles:
- settlement
labels:
com.datadoghq.ad.check_names: '["openmetrics"]'
com.datadoghq.ad.init_configs: '[{}]'
com.datadoghq.ad.instances: |
[
{
"openmetrics_endpoint": "http://%%host%%:6060/debug/metrics/prometheus",
"namespace": "geth-poa",
"metrics": [
"txpool*",
"trie*",
"system*",
"state*",
"rpc*",
"p2p*",
"eth*",
"chain*",
"clique*"
"vm*"
]
}
]
sl-node4:
build:
context: ..
dockerfile: geth-poa/Dockerfile
environment:
- GETH_NODE_TYPE=member
- BOOTNODE_ENDPOINT=enode://34a2a388ad31ca37f127bb9ffe93758ee711c5c2277dff6aff2e359bcf2c9509ea55034196788dbd59ed70861f523c1c03d54f1eabb2b4a5c1c129d966fe1e65@172.29.0.98:30301
networks:
primev_net:
ipv4_address: '172.29.0.102'
ports:
- 60605:60601
volumes:
- geth-data-node3:/data
- geth-data-backup:/backup
profiles:
- settlement
labels:
com.datadoghq.ad.check_names: '["openmetrics"]'
com.datadoghq.ad.init_configs: '[{}]'
com.datadoghq.ad.instances: |
[
{
"openmetrics_endpoint": "http://%%host%%:6060/debug/metrics/prometheus",
"namespace": "geth-poa",
"metrics": [
"txpool*",
"trie*",
"system*",
"state*",
"rpc*",
"p2p*",
"eth*",
"chain*",
"clique*"
"vm*"
]
}
]
# L1 geth services only used for local dev
l1-bootnode:
build:
context: .
dockerfile: ./local-l1/Dockerfile
environment:
- GETH_NODE_TYPE=bootnode
- BOOT_KEY=7b548c1c0fbe80ef1eb0aaec2edf26fd20fb0d758e94948cf6c5f2a486e735f6
- NET_RESTRICT=172.14.0.0/24
networks:
l1_net:
ipv4_address: '172.14.0.2'
ports:
- 9545:8545 # Expose RPC port to host as 9545
volumes:
- geth-data-l1-bootnode:/data
profiles:
- local_l1
l1-node1:
build:
context: .
dockerfile: ./local-l1/Dockerfile
environment:
- GETH_NODE_TYPE=signer
- BLOCK_SIGNER_ADDRESS=0xd9cd8E5DE6d55f796D980B818D350C0746C25b97
- BLOCK_SIGNER_PRIVATE_KEY=${NODE1_PRIVATE_KEY}
- BOOTNODE_ENDPOINT=enode://34a2a388ad31ca37f127bb9ffe93758ee711c5c2277dff6aff2e359bcf2c9509ea55034196788dbd59ed70861f523c1c03d54f1eabb2b4a5c1c129d966fe1e65@172.14.0.2:30301
- NET_RESTRICT=172.14.0.0/24
networks:
l1_net:
ipv4_address: '172.14.0.3'
volumes:
- geth-data-l1-first-signer:/data
profiles:
- local_l1
l1-node2:
build:
context: .
dockerfile: ./local-l1/Dockerfile
environment:
- GETH_NODE_TYPE=signer
- BLOCK_SIGNER_ADDRESS=0x788EBABe5c3dD422Ef92Ca6714A69e2eabcE1Ee4
- BLOCK_SIGNER_PRIVATE_KEY=${NODE2_PRIVATE_KEY}
- BOOTNODE_ENDPOINT=enode://34a2a388ad31ca37f127bb9ffe93758ee711c5c2277dff6aff2e359bcf2c9509ea55034196788dbd59ed70861f523c1c03d54f1eabb2b4a5c1c129d966fe1e65@172.14.0.2:30301
- NET_RESTRICT=172.14.0.0/24
networks:
l1_net:
ipv4_address: '172.14.0.4'
volumes:
- geth-data-l1-second-signer:/data
profiles:
- local_l1
datadog-agent:
image: gcr.io/datadoghq/agent:latest
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /proc/:/host/proc/:ro
- /sys/fs/cgroup/:/host/sys/fs/cgroup:ro
environment:
- DD_API_KEY=${DD_KEY}
- DD_TAGS=env:test
- DD_SITE=datadoghq.com
- DD_LOGS_ENABLED=true
- DD_LOGS_CONFIG_CONTAINER_COLLECT_ALL=true
- DD_CONTAINER_EXCLUDE="name:datadog-agent"
ports:
- "5000:5000"
networks:
primev_net:
ipv4_address: 172.29.4.24
profiles:
- prod_agents
networks:
primev_net:
external: true
l1_net:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.14.0.0/16
volumes:
geth-data-bootnode:
geth-data-node1:
geth-data-node2:
geth-data-node3:
geth-data-backup:
geth-data-l1-bootnode:
geth-data-l1-first-signer:
geth-data-l1-second-signer: