From 0de29b584795638d7f740affff5858d9c93da602 Mon Sep 17 00:00:00 2001 From: Alexander Kolotov Date: Tue, 22 Feb 2022 22:29:40 +0300 Subject: [PATCH] TB and AMB combined on the deployment stage --- deployment/hosts.yml.example | 3 +- deployment/roles/oracle/defaults/main.yml | 3 - deployment/roles/oracle/tasks/logging.yml | 2 - deployment/roles/oracle/tasks/post_config.yml | 56 ++- deployment/roles/oracle/tasks/pre_config.yml | 10 +- deployment/roles/oracle/templates/.env.j2 | 67 ++-- deployment/roles/oracle/templates/key.j2 | 7 +- .../roles/oracle/templates/poabridge.j2 | 38 +- oracle/docker-compose-combined.yml | 337 ++++++++++++++++++ 9 files changed, 458 insertions(+), 65 deletions(-) create mode 100644 oracle/docker-compose-combined.yml diff --git a/deployment/hosts.yml.example b/deployment/hosts.yml.example index 5cde8e82..5129c6f9 100644 --- a/deployment/hosts.yml.example +++ b/deployment/hosts.yml.example @@ -5,7 +5,8 @@ sokol-kovan: hosts: 127.0.0.1: ansible_user: ubuntu - ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + TB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" + AMB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" #syslog_server_port: "udp://127.0.0.1:514" monitor: hosts: diff --git a/deployment/roles/oracle/defaults/main.yml b/deployment/roles/oracle/defaults/main.yml index d1f6667e..623503d3 100644 --- a/deployment/roles/oracle/defaults/main.yml +++ b/deployment/roles/oracle/defaults/main.yml @@ -1,6 +1,3 @@ --- bridge_path: "/home/{{ compose_service_user }}/bridge" -ORACLE_ALLOW_HTTP_FOR_RPC: no -ORACLE_QUEUE_URL: amqp://rabbit -ORACLE_REDIS_URL: redis://redis keyfile_path: "/root/.key" diff --git a/deployment/roles/oracle/tasks/logging.yml b/deployment/roles/oracle/tasks/logging.yml index cdbe76b3..2e8db178 100644 --- a/deployment/roles/oracle/tasks/logging.yml +++ b/deployment/roles/oracle/tasks/logging.yml @@ -2,8 +2,6 @@ - include_tasks: logging_by_syslog.yml with_items: - docker-compose - - docker-compose-transfer - - docker-compose-amb loop_control: loop_var: file diff --git a/deployment/roles/oracle/tasks/post_config.yml b/deployment/roles/oracle/tasks/post_config.yml index edafd99a..a5f2bc9d 100644 --- a/deployment/roles/oracle/tasks/post_config.yml +++ b/deployment/roles/oracle/tasks/post_config.yml @@ -1,39 +1,59 @@ --- -- name: Get blocks +- name: Get blocks for TokenBridge become_user: "{{ compose_service_user }}" shell: docker-compose run --rm --entrypoint "node scripts/getValidatorStartBlocks.js" bridge_affirmation args: chdir: "{{ bridge_path }}/oracle" - register: BLOCKS - when: (ORACLE_HOME_START_BLOCK is not defined) or (ORACLE_FOREIGN_START_BLOCK is not defined) + register: TBBLOCKS + when: (TB_HOME_START_BLOCK is not defined) or (TB_FOREIGN_START_BLOCK is not defined) -- name: Write blocks +- name: Get blocks for AMB + become_user: "{{ compose_service_user }}" + shell: docker-compose run --rm --entrypoint "node scripts/getValidatorStartBlocks.js" bridge_amb_affirmation + args: + chdir: "{{ bridge_path }}/oracle" + register: AMBBLOCKS + when: (AMB_HOME_START_BLOCK is not defined) or (AMB_FOREIGN_START_BLOCK is not defined) + +- name: Write blocks for TokenBridge blockinfile: path: "{{ bridge_path }}/oracle/.env" marker: "## {mark} Calculated by scripts/getValidatorStartBlocks.js" block: | - ORACLE_HOME_START_BLOCK={{ (BLOCKS.stdout | from_json).homeStartBlock }} - ORACLE_FOREIGN_START_BLOCK={{ (BLOCKS.stdout | from_json).foreignStartBlock }} - when: (ORACLE_HOME_START_BLOCK is not defined) or (ORACLE_FOREIGN_START_BLOCK is not defined) + TB_HOME_START_BLOCK={{ (TBBLOCKS.stdout | from_json).homeStartBlock }} + TB_FOREIGN_START_BLOCK={{ (TBBLOCKS.stdout | from_json).foreignStartBlock }} + when: (TB_HOME_START_BLOCK is not defined) or (TB_FOREIGN_START_BLOCK is not defined) -- name: Get validator address +- name: Write blocks for AMB + blockinfile: + path: "{{ bridge_path }}/oracle/.env" + marker: "## {mark} Calculated by scripts/getValidatorStartBlocks.js" + block: | + AMB_HOME_START_BLOCK={{ (AMBBLOCKS.stdout | from_json).homeStartBlock }} + AMB_FOREIGN_START_BLOCK={{ (AMBBLOCKS.stdout | from_json).foreignStartBlock }} + when: (AMB_HOME_START_BLOCK is not defined) or (AMB_FOREIGN_START_BLOCK is not defined) + +- name: Get validator address for TokenBridge become_user: "{{ compose_service_user }}" - shell: docker-compose run --rm -e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY="{{ ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY }}" --entrypoint "node scripts/privateKeyToAddress.js" bridge_affirmation + shell: docker-compose run --rm -e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY="{{ TB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY }}" --entrypoint "node scripts/privateKeyToAddress.js" bridge_affirmation args: chdir: "{{ bridge_path }}/oracle" - register: VADDRESS + register: TBVADDRESS -- name: Set ORACLE_VALIDATOR_ADDRESS variable +- name: Set TB_ORACLE_VALIDATOR_ADDRESS variable set_fact: - ORACLE_VALIDATOR_ADDRESS: "{{ VADDRESS.stdout }}" + TB_ORACLE_VALIDATOR_ADDRESS: "{{ TBVADDRESS.stdout }}" -- name: Extend docker compose file for erc to native - set_fact: composefileoverride="-f docker-compose-transfer.yml" - when: ORACLE_BRIDGE_MODE == "ERC_TO_NATIVE" +- name: Get validator address for AMB + become_user: "{{ compose_service_user }}" + shell: docker-compose run --rm -e ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY="{{ AMB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY }}" --entrypoint "node scripts/privateKeyToAddress.js" bridge_affirmation + args: + chdir: "{{ bridge_path }}/oracle" + register: AMBVADDRESS -- name: Extend docker compose file for amb - set_fact: composefileoverride="-f docker-compose-amb.yml" - when: ORACLE_BRIDGE_MODE == "ARBITRARY_MESSAGE" +- name: Set AMB_ORACLE_VALIDATOR_ADDRESS variable + set_fact: + AMB_ORACLE_VALIDATOR_ADDRESS: "{{ AMBVADDRESS.stdout }}" - name: Install .key config template: diff --git a/deployment/roles/oracle/tasks/pre_config.yml b/deployment/roles/oracle/tasks/pre_config.yml index 20bdbdfc..cf8e8f81 100644 --- a/deployment/roles/oracle/tasks/pre_config.yml +++ b/deployment/roles/oracle/tasks/pre_config.yml @@ -12,12 +12,8 @@ owner: "{{ compose_service_user }}" mode: '0640' -- name: Copy docker-compose files +- name: Copy docker-compose file copy: - src: ../../../../oracle/{{ item }} - dest: "{{ bridge_path }}/oracle/" + src: ../../../../oracle/docker-compose-combined.yml + dest: "{{ bridge_path }}/oracle/docker-compose.yml" mode: '0755' - with_items: - - docker-compose.yml - - docker-compose-transfer.yml - - docker-compose-amb.yml diff --git a/deployment/roles/oracle/templates/.env.j2 b/deployment/roles/oracle/templates/.env.j2 index 575c05e0..753f24a5 100644 --- a/deployment/roles/oracle/templates/.env.j2 +++ b/deployment/roles/oracle/templates/.env.j2 @@ -1,12 +1,12 @@ ## General settings -ORACLE_BRIDGE_MODE={{ ORACLE_BRIDGE_MODE }} {% if ORACLE_LOG_LEVEL | default('') != '' %} ORACLE_LOG_LEVEL={{ ORACLE_LOG_LEVEL }} {% endif %} ## Home contract COMMON_HOME_RPC_URL={{ COMMON_HOME_RPC_URL }} -COMMON_HOME_BRIDGE_ADDRESS={{ COMMON_HOME_BRIDGE_ADDRESS }} +TB_HOME_BRIDGE_ADDRESS={{ TB_HOME_BRIDGE_ADDRESS }} +AMB_HOME_BRIDGE_ADDRESS={{ AMB_HOME_BRIDGE_ADDRESS }} ORACLE_HOME_RPC_POLLING_INTERVAL={{ ORACLE_HOME_RPC_POLLING_INTERVAL }} ## Foreign contract @@ -14,7 +14,8 @@ COMMON_FOREIGN_RPC_URL={{ COMMON_FOREIGN_RPC_URL }} {% if ORACLE_FOREIGN_ARCHIVE_RPC_URL | default('') != '' %} ORACLE_FOREIGN_ARCHIVE_RPC_URL={{ ORACLE_FOREIGN_ARCHIVE_RPC_URL }} {% endif %} -COMMON_FOREIGN_BRIDGE_ADDRESS={{ COMMON_FOREIGN_BRIDGE_ADDRESS }} +TB_FOREIGN_BRIDGE_ADDRESS={{ TB_FOREIGN_BRIDGE_ADDRESS }} +AMB_FOREIGN_BRIDGE_ADDRESS={{ AMB_FOREIGN_BRIDGE_ADDRESS }} ORACLE_FOREIGN_RPC_POLLING_INTERVAL={{ ORACLE_FOREIGN_RPC_POLLING_INTERVAL }} {% if ORACLE_TX_REDUNDANCY | default('') != '' %} @@ -52,8 +53,10 @@ COMMON_FOREIGN_GAS_PRICE_FACTOR={{ COMMON_FOREIGN_GAS_PRICE_FACTOR }} ## Transport configuration ORACLE_ALLOW_HTTP_FOR_RPC={{ "yes" if ORACLE_ALLOW_HTTP_FOR_RPC else "no" }} -ORACLE_QUEUE_URL={{ ORACLE_QUEUE_URL }} -ORACLE_REDIS_URL={{ ORACLE_REDIS_URL }} +TB_QUEUE_URL={{ TB_QUEUE_URL }} +TB_REDIS_URL={{ TB_REDIS_URL }} +AMB_QUEUE_URL={{ AMB_QUEUE_URL }} +AMB_REDIS_URL={{ AMB_REDIS_URL }} {% if ORACLE_FOREIGN_TX_RESEND_INTERVAL | default('') != '' %} ORACLE_FOREIGN_TX_RESEND_INTERVAL={{ ORACLE_FOREIGN_TX_RESEND_INTERVAL }} {% endif %} @@ -61,26 +64,50 @@ ORACLE_FOREIGN_TX_RESEND_INTERVAL={{ ORACLE_FOREIGN_TX_RESEND_INTERVAL }} ORACLE_HOME_TX_RESEND_INTERVAL={{ ORACLE_HOME_TX_RESEND_INTERVAL }} {% endif %} -## Emergency shutdown configuration -{% if ORACLE_SHUTDOWN_SERVICE_URL | default('') != '' %} -ORACLE_SHUTDOWN_SERVICE_URL={{ ORACLE_SHUTDOWN_SERVICE_URL }} +## Emergency shutdown configuration for TokenBridge +{% if TB_SHUTDOWN_SERVICE_URL | default('') != '' %} +TB_SHUTDOWN_SERVICE_URL={{ TB_SHUTDOWN_SERVICE_URL }} {% endif %} -{% if ORACLE_SHUTDOWN_SERVICE_POLLING_INTERVAL | default('') != '' %} -ORACLE_SHUTDOWN_SERVICE_POLLING_INTERVAL={{ ORACLE_SHUTDOWN_SERVICE_POLLING_INTERVAL }} +{% if TB_SHUTDOWN_SERVICE_POLLING_INTERVAL | default('') != '' %} +TB_SHUTDOWN_SERVICE_POLLING_INTERVAL={{ TB_SHUTDOWN_SERVICE_POLLING_INTERVAL }} {% endif %} -{% if ORACLE_SIDE_RPC_URL | default('') != '' %} -ORACLE_SIDE_RPC_URL={{ ORACLE_SIDE_RPC_URL }} +{% if TB_SIDE_RPC_URL | default('') != '' %} +TB_SIDE_RPC_URL={{ TB_SIDE_RPC_URL }} {% endif %} -{% if ORACLE_SHUTDOWN_CONTRACT_ADDRESS | default('') != '' %} -ORACLE_SHUTDOWN_CONTRACT_ADDRESS={{ ORACLE_SHUTDOWN_CONTRACT_ADDRESS }} +{% if TB_SHUTDOWN_CONTRACT_ADDRESS | default('') != '' %} +TB_SHUTDOWN_CONTRACT_ADDRESS={{ TB_SHUTDOWN_CONTRACT_ADDRESS }} {% endif %} -{% if ORACLE_SHUTDOWN_CONTRACT_METHOD | default('') != '' %} -ORACLE_SHUTDOWN_CONTRACT_METHOD={{ ORACLE_SHUTDOWN_CONTRACT_METHOD }} +{% if TB_SHUTDOWN_CONTRACT_METHOD | default('') != '' %} +TB_SHUTDOWN_CONTRACT_METHOD={{ TB_SHUTDOWN_CONTRACT_METHOD }} {% endif %} -{% if ORACLE_HOME_START_BLOCK | default('') != '' %} -ORACLE_HOME_START_BLOCK={{ ORACLE_HOME_START_BLOCK }} +## Emergency shutdown configuration for AMB +{% if AMB_SHUTDOWN_SERVICE_URL | default('') != '' %} +AMB_SHUTDOWN_SERVICE_URL={{ AMB_SHUTDOWN_SERVICE_URL }} {% endif %} -{% if ORACLE_FOREIGN_START_BLOCK | default('') != '' %} -ORACLE_FOREIGN_START_BLOCK={{ ORACLE_FOREIGN_START_BLOCK }} +{% if AMB_SHUTDOWN_SERVICE_POLLING_INTERVAL | default('') != '' %} +AMB_SHUTDOWN_SERVICE_POLLING_INTERVAL={{ AMB_SHUTDOWN_SERVICE_POLLING_INTERVAL }} {% endif %} +{% if AMB_SIDE_RPC_URL | default('') != '' %} +AMB_SIDE_RPC_URL={{ AMB_SIDE_RPC_URL }} +{% endif %} +{% if AMB_SHUTDOWN_CONTRACT_ADDRESS | default('') != '' %} +AMB_SHUTDOWN_CONTRACT_ADDRESS={{ AMB_SHUTDOWN_CONTRACT_ADDRESS }} +{% endif %} +{% if AMB_SHUTDOWN_CONTRACT_METHOD | default('') != '' %} +AMB_SHUTDOWN_CONTRACT_METHOD={{ AMB_SHUTDOWN_CONTRACT_METHOD }} +{% endif %} + +{% if TB_HOME_START_BLOCK | default('') != '' %} +TB_HOME_START_BLOCK={{ TB_HOME_START_BLOCK }} +{% endif %} +{% if TB_FOREIGN_START_BLOCK | default('') != '' %} +TB_FOREIGN_START_BLOCK={{ TB_FOREIGN_START_BLOCK }} +{% endif %} + +{% if AMB_HOME_START_BLOCK | default('') != '' %} +AMB_HOME_START_BLOCK={{ AMB_HOME_START_BLOCK }} +{% endif %} +{% if AMB_FOREIGN_START_BLOCK | default('') != '' %} +AMB_FOREIGN_START_BLOCK={{ AMB_FOREIGN_START_BLOCK }} +{% endif %} \ No newline at end of file diff --git a/deployment/roles/oracle/templates/key.j2 b/deployment/roles/oracle/templates/key.j2 index 63f2cc0e..1989d27e 100644 --- a/deployment/roles/oracle/templates/key.j2 +++ b/deployment/roles/oracle/templates/key.j2 @@ -1,3 +1,6 @@ ## Validator-specific options -ORACLE_VALIDATOR_ADDRESS={{ ORACLE_VALIDATOR_ADDRESS }} -ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY={{ ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY }} +TB_ORACLE_VALIDATOR_ADDRESS={{ TB_ORACLE_VALIDATOR_ADDRESS }} +TB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY={{ TB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY }} + +AMB_ORACLE_VALIDATOR_ADDRESS={{ AMB_ORACLE_VALIDATOR_ADDRESS }} +AMB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY={{ AMB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY }} diff --git a/deployment/roles/oracle/templates/poabridge.j2 b/deployment/roles/oracle/templates/poabridge.j2 index 31f7b1a5..a1cd98f4 100644 --- a/deployment/roles/oracle/templates/poabridge.j2 +++ b/deployment/roles/oracle/templates/poabridge.j2 @@ -14,19 +14,26 @@ WORKDIR="{{ '/home/' + compose_service_user | default('poadocker') + '/' + bridg #Getting path to private key file and variable name for parsing key file keyfile="{{ keyfile_path }}" -vaddr="ORACLE_VALIDATOR_ADDRESS=" -vkey="ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=" -composefileoverride="{{ composefileoverride | default('') }}" +tbvaddr="TB_ORACLE_VALIDATOR_ADDRESS=" +tbvkey="TB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=" +ambvaddr="AMB_ORACLE_VALIDATOR_ADDRESS=" +ambvkey="AMB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=" #Parsing file content and add key to variable while read -r line do case $line in - $vaddr*) - vaddr=${line#$vaddr} + $tbvaddr*) + tbvaddr=${line#$tbvaddr} ;; - $vkey*) - vkey=${line#$vkey} + $tbvkey*) + tbvkey=${line#$tbvkey} + ;; + $ambvaddr*) + ambvaddr=${line#$ambvaddr} + ;; + $ambvkey*) + ambvkey=${line#$ambvkey} ;; esac done < $keyfile @@ -34,22 +41,29 @@ done < $keyfile start(){ echo "Starting bridge.." cd $WORKDIR - sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose $composefileoverride down -v - sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose $composefileoverride rm -fv - sudo -u "{{ compose_service_user }}" ORACLE_VALIDATOR_ADDRESS=$vaddr ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=$vkey /usr/local/bin/docker-compose $composefileoverride up --detach + sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose down -v + sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose rm -fv + sudo -u "{{ compose_service_user }}" \ + TB_ORACLE_VALIDATOR_ADDRESS=$tbvaddr \ + TB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=$tbvkey \ + AMB_ORACLE_VALIDATOR_ADDRESS=$ambvaddr \ + AMB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=$ambvkey \ + /usr/local/bin/docker-compose up --detach } stop(){ echo "Stopping bridge.." cd $WORKDIR - sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose $composefileoverride down -v + sudo -u "{{ compose_service_user }}" \ + /usr/local/bin/docker-compose down -v sleep 2 } status(){ echo "Bridge status:" cd $WORKDIR - sudo -u "{{ compose_service_user }}" /usr/local/bin/docker-compose $composefileoverride ps + sudo -u "{{ compose_service_user }}" \ + /usr/local/bin/docker-compose ps } diff --git a/oracle/docker-compose-combined.yml b/oracle/docker-compose-combined.yml new file mode 100644 index 00000000..dc6e4d53 --- /dev/null +++ b/oracle/docker-compose-combined.yml @@ -0,0 +1,337 @@ +--- +version: '2.4' +networks: + net_db_bridge_green: {driver: bridge} + net_db_bridge_red: {driver: bridge} + net_rabbit_bridge_green: {driver: bridge} + net_rabbit_bridge_red: {driver: bridge} + net_parity_bridge_red: {driver: bridge} + net_parity_bridge_green: {driver: bridge} + net_db_bridge_amb_green: {driver: bridge} + net_db_bridge_amb_red: {driver: bridge} + net_rabbit_bridge_amb_green: {driver: bridge} + net_rabbit_bridge_amb_red: {driver: bridge} + net_parity_bridge_amb_red: {driver: bridge} + net_parity_bridge_amb_green: {driver: bridge} +services: + bridge_affirmation: + cpus: 0.1 + entrypoint: yarn watcher:affirmation-request + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ERC_TO_NATIVE, + 'COMMON_HOME_BRIDGE_ADDRESS=${TB_HOME_BRIDGE_ADDRESS}', + 'COMMON_FOREIGN_BRIDGE_ADDRESS=${TB_FOREIGN_BRIDGE_ADDRESS}', + 'ORACLE_QUEUE_URL=${TB_QUEUE_URL}', + 'ORACLE_REDIS_URL=${TB_REDIS_URL}', + 'ORACLE_FOREIGN_START_BLOCK=${TB_FOREIGN_START_BLOCK}', + 'ORACLE_VALIDATOR_ADDRESS=${TB_ORACLE_VALIDATOR_ADDRESS}'] + image: poanetwork/tokenbridge-oracle:latest + mem_limit: 500m + networks: [net_db_bridge_green, + net_rabbit_bridge_green, + net_parity_bridge_green] + restart: unless-stopped + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + depends_on: + - redis + - rabbit + bridge_shutdown: + cpus: 0.1 + mem_limit: 500m + image: poanetwork/tokenbridge-oracle:latest + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ERC_TO_NATIVE, + 'ORACLE_REDIS_URL=${TB_REDIS_URL}', + 'ORACLE_SHUTDOWN_SERVICE_POLLING_INTERVAL=${TB_SHUTDOWN_SERVICE_POLLING_INTERVAL}', + 'ORACLE_SIDE_RPC_URL=${TB_SIDE_RPC_URL}', + 'ORACLE_SHUTDOWN_CONTRACT_ADDRESS=${TB_SHUTDOWN_CONTRACT_ADDRESS}', + 'ORACLE_SHUTDOWN_CONTRACT_METHOD=${TB_SHUTDOWN_CONTRACT_METHOD}'] + restart: unless-stopped + entrypoint: yarn manager:shutdown + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + networks: [net_db_bridge_green] + depends_on: + - redis + bridge_request: + cpus: 0.1 + entrypoint: yarn watcher:signature-request + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ERC_TO_NATIVE, + 'COMMON_HOME_BRIDGE_ADDRESS=${TB_HOME_BRIDGE_ADDRESS}', + 'COMMON_FOREIGN_BRIDGE_ADDRESS=${TB_FOREIGN_BRIDGE_ADDRESS}', + 'ORACLE_QUEUE_URL=${TB_QUEUE_URL}', + 'ORACLE_REDIS_URL=${TB_REDIS_URL}', + 'ORACLE_HOME_START_BLOCK=${TB_HOME_START_BLOCK}', + 'ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=${TB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY}'] + image: poanetwork/tokenbridge-oracle:latest + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + mem_limit: 500m + networks: [net_db_bridge_red, + net_rabbit_bridge_red, + net_parity_bridge_red] + restart: unless-stopped + depends_on: + - redis + - rabbit + bridge_senderhome: + cpus: 0.1 + entrypoint: yarn sender:home + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ERC_TO_NATIVE, + 'COMMON_HOME_BRIDGE_ADDRESS=${TB_HOME_BRIDGE_ADDRESS}', + 'COMMON_FOREIGN_BRIDGE_ADDRESS=${TB_FOREIGN_BRIDGE_ADDRESS}', + 'ORACLE_QUEUE_URL=${TB_QUEUE_URL}', + 'ORACLE_REDIS_URL=${TB_REDIS_URL}', + 'ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=${TB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY}'] + image: poanetwork/tokenbridge-oracle:latest + mem_limit: 500m + networks: [net_db_bridge_red, + net_rabbit_bridge_red, + net_parity_bridge_red] + restart: unless-stopped + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + networks: [] + depends_on: + - redis + - rabbit + bridge_transfer: + cpus: 0.1 + entrypoint: yarn watcher:transfer + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ERC_TO_NATIVE, + 'COMMON_HOME_BRIDGE_ADDRESS=${TB_HOME_BRIDGE_ADDRESS}', + 'COMMON_FOREIGN_BRIDGE_ADDRESS=${TB_FOREIGN_BRIDGE_ADDRESS}', + 'ORACLE_QUEUE_URL=${TB_QUEUE_URL}', + 'ORACLE_REDIS_URL=${TB_REDIS_URL}', + 'ORACLE_FOREIGN_START_BLOCK=${TB_FOREIGN_START_BLOCK}', + 'ORACLE_VALIDATOR_ADDRESS=${TB_ORACLE_VALIDATOR_ADDRESS}'] + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + image: poanetwork/tokenbridge-oracle:latest + mem_limit: 500m + networks: [net_db_bridge_green, + net_rabbit_bridge_green, + net_parity_bridge_green] + restart: unless-stopped + depends_on: + - redis + - rabbit + rabbit: + cpus: 0.3 + environment: [RABBITMQ_NODENAME=node@rabbit] + hostname: rabbit + image: rabbitmq:3 + mem_limit: 500m + networks: [net_rabbit_bridge_red, + net_rabbit_bridge_green] + restart: unless-stopped + volumes: ['~/bridge_data/rabbitmq:/var/lib/rabbitmq/mnesia'] + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + redis: + command: [redis-server, --appendonly, 'yes'] + cpus: 0.1 + hostname: redis + image: redis:4 + mem_limit: 500m + networks: [net_db_bridge_red, + net_db_bridge_green] + restart: unless-stopped + volumes: ['~/bridge_data/redis:/data'] + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + + parity: + container_name: parity + image: openethereum/openethereum:latest + networks: [net_parity_bridge_green, + net_parity_bridge_red, + net_parity_bridge_amb_green, + net_parity_bridge_amb_red] + user: root + command: + --config=/root/data/config.toml + --base-path=/root/data + --jsonrpc-port=8545 + --jsonrpc-cors=all + --jsonrpc-interface=all + --jsonrpc-hosts=all + --jsonrpc-apis=web3,eth,net,parity + --max-peers=25 + --tx-time-limit=1000 + volumes: + - ~/chaindata:/root/data + expose: + - "8545" + ports: + - "30303:30303/tcp" + - "30303:30303/udp" + restart: unless-stopped + logging: + driver: "json-file" + options: + max-size: "100m" + max-file: "1" + # CMD curl -f --retry 6 --max-time 5 --retry-delay 10 --retry-max-time 60 "http://localhost:8080/health" || bash -c 'kill -s 15 -1 && (sleep 10; kill -s 9 -1)' + healthcheck: + test: ["CMD", "sh", "-c", "curl -f --connect-timeout 1 --max-time 2 --retry 2 --retry-delay 3 --retry-max-time 15 -X POST -H 'Content-Type: application/json' --data '{\"jsonrpc\":\"2.0\",\"method\":\"eth_chainId\",\"id\":1}' http://localhost:8545/ || sh -c 'pkill -15 openethereum && (sleep 10; pkill -9 openethereum)'"] + interval: 60s + timeout: 30s + start_period: 60s + bridge_amb_affirmation: + cpus: 0.1 + entrypoint: yarn watcher:affirmation-request + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ARBITRARY_MESSAGE, + 'COMMON_HOME_BRIDGE_ADDRESS=${AMB_HOME_BRIDGE_ADDRESS}', + 'COMMON_FOREIGN_BRIDGE_ADDRESS=${AMB_FOREIGN_BRIDGE_ADDRESS}', + 'ORACLE_QUEUE_URL=${AMB_QUEUE_URL}', + 'ORACLE_REDIS_URL=${AMB_REDIS_URL}', + 'ORACLE_FOREIGN_START_BLOCK=${AMB_FOREIGN_START_BLOCK}', + 'ORACLE_VALIDATOR_ADDRESS=${AMB_ORACLE_VALIDATOR_ADDRESS}'] + image: poanetwork/tokenbridge-oracle:latest + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + mem_limit: 500m + networks: [net_db_bridge_amb_green, + net_rabbit_bridge_amb_green, + net_parity_bridge_amb_green] + restart: unless-stopped + depends_on: + - redis-amb + - rabbit-amb + bridge_amb_information: + cpus: 0.1 + entrypoint: yarn watcher:information-request + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ARBITRARY_MESSAGE, + 'COMMON_HOME_BRIDGE_ADDRESS=${AMB_HOME_BRIDGE_ADDRESS}', + 'COMMON_FOREIGN_BRIDGE_ADDRESS=${AMB_FOREIGN_BRIDGE_ADDRESS}', + 'ORACLE_QUEUE_URL=${AMB_QUEUE_URL}', + 'ORACLE_REDIS_URL=${AMB_REDIS_URL}', + 'ORACLE_HOME_START_BLOCK=${AMB_HOME_START_BLOCK}', + 'ORACLE_VALIDATOR_ADDRESS=${AMB_ORACLE_VALIDATOR_ADDRESS}'] + image: poanetwork/tokenbridge-oracle:latest + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + mem_limit: 500m + networks: [net_db_bridge_amb_green, + net_rabbit_bridge_amb_green, + net_parity_bridge_amb_green] + restart: unless-stopped + depends_on: + - redis-amb + - rabbit-amb + bridge_amb_request: + cpus: 0.1 + entrypoint: yarn watcher:signature-request + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ARBITRARY_MESSAGE, + 'COMMON_HOME_BRIDGE_ADDRESS=${AMB_HOME_BRIDGE_ADDRESS}', + 'COMMON_FOREIGN_BRIDGE_ADDRESS=${AMB_FOREIGN_BRIDGE_ADDRESS}', + 'ORACLE_QUEUE_URL=${AMB_QUEUE_URL}', + 'ORACLE_REDIS_URL=${AMB_REDIS_URL}', + 'ORACLE_HOME_START_BLOCK=${AMB_HOME_START_BLOCK}', + 'ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=${AMB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY}'] + image: poanetwork/tokenbridge-oracle:latest + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + mem_limit: 500m + networks: [net_db_bridge_amb_red, + net_rabbit_bridge_amb_red, + net_parity_bridge_amb_red] + restart: unless-stopped + depends_on: + - redis-amb + - rabbit-amb + bridge_amb_shutdown: + cpus: 0.1 + entrypoint: yarn manager:shutdown + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ARBITRARY_MESSAGE, + 'ORACLE_REDIS_URL=${AMB_REDIS_URL}', + 'ORACLE_SHUTDOWN_SERVICE_POLLING_INTERVAL=${AMB_SHUTDOWN_SERVICE_POLLING_INTERVAL}', + 'ORACLE_SIDE_RPC_URL=${AMB_SIDE_RPC_URL}', + 'ORACLE_SHUTDOWN_CONTRACT_ADDRESS=${AMB_SHUTDOWN_CONTRACT_ADDRESS}', + 'ORACLE_SHUTDOWN_CONTRACT_METHOD=${AMB_SHUTDOWN_CONTRACT_METHOD}'] + image: poanetwork/tokenbridge-oracle:latest + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + mem_limit: 500m + networks: [net_db_bridge_amb_green] + restart: unless-stopped + depends_on: + - redis-amb + bridge_amb_senderhome: + cpus: 0.1 + entrypoint: yarn sender:home + env_file: ./.env + environment: [NODE_ENV=production, + ORACLE_BRIDGE_MODE=ARBITRARY_MESSAGE, + 'COMMON_HOME_BRIDGE_ADDRESS=${AMB_HOME_BRIDGE_ADDRESS}', + 'COMMON_FOREIGN_BRIDGE_ADDRESS=${AMB_FOREIGN_BRIDGE_ADDRESS}', + 'ORACLE_QUEUE_URL=${AMB_QUEUE_URL}', + 'ORACLE_REDIS_URL=${AMB_REDIS_URL}', + 'ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY=${AMB_ORACLE_VALIDATOR_ADDRESS_PRIVATE_KEY}'] + image: poanetwork/tokenbridge-oracle:latest + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + mem_limit: 500m + networks: [net_db_bridge_amb_red, + net_rabbit_bridge_amb_red, + net_parity_bridge_amb_red] + restart: unless-stopped + depends_on: + - redis-amb + - rabbit-amb + rabbit-amb: + cpus: 0.3 + environment: [RABBITMQ_NODENAME=node@rabbit-amb] + hostname: rabbit-amb + image: rabbitmq:3 + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + mem_limit: 500m + networks: [net_rabbit_bridge_amb_red, + net_rabbit_bridge_amb_green] + restart: unless-stopped + volumes: ['~/amb_bridge_data/rabbitmq:/var/lib/rabbitmq/mnesia'] + redis-amb: + command: [redis-server, --appendonly, 'yes'] + cpus: 0.1 + hostname: redis-amb + image: redis:4 + logging: + driver: syslog + options: {tag: '{{.Name}}/{{.ID}}'} + mem_limit: 500m + networks: [net_db_bridge_amb_red, + net_db_bridge_amb_green] + restart: unless-stopped + volumes: ['~/amb_bridge_data/redis:/data'] \ No newline at end of file