mirror of
https://github.com/haveno-dex/haveno-ts.git
synced 2024-10-01 01:35:42 -04:00
add dockerize and add project on Github CI/CD
This commit is contained in:
parent
28d119c681
commit
c81f309fdd
57
.github/workflows/build.yml
vendored
Normal file
57
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
paths-ignore:
|
||||||
|
- '**/README.md'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
haveno-ts-e2e:
|
||||||
|
timeout-minutes: 50
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Stop Mono service
|
||||||
|
run: sudo killall mono
|
||||||
|
|
||||||
|
- name: Start containers
|
||||||
|
run: docker-compose -f "./docker/docker-compose.yml" up -d --build
|
||||||
|
|
||||||
|
- name: Install node
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
|
||||||
|
- name: Install protoc-gen-grpc-web
|
||||||
|
run: |
|
||||||
|
curl -Lo protoc-gen-grpc-web https://github.com/grpc/grpc-web/releases/download/1.4.2/protoc-gen-grpc-web-1.4.2-linux-x86_64
|
||||||
|
sudo mv protoc-gen-grpc-web /usr/local/bin
|
||||||
|
sudo chmod a+x /usr/local/bin/protoc-gen-grpc-web
|
||||||
|
protoc-gen-grpc-web --version
|
||||||
|
|
||||||
|
- name: Install protoc
|
||||||
|
run: |
|
||||||
|
curl -Lo protoc.zip https://github.com/protocolbuffers/protobuf/releases/download/v3.20.1/protoc-3.20.1-linux-x86_64.zip
|
||||||
|
sudo unzip -q protoc.zip bin/protoc -d /usr/local
|
||||||
|
sudo chmod a+x /usr/local/bin/protoc
|
||||||
|
rm -rf protoc.zip
|
||||||
|
protoc --version
|
||||||
|
|
||||||
|
- name: Copy compiled haveno project from node2 container
|
||||||
|
run: |
|
||||||
|
sudo docker cp node2:/home/haveno/haveno ./../
|
||||||
|
sudo chmod 777 -R ./../haveno
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm install
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: npm run test -- --baseCurrencyNetwork=XMR_LOCAL
|
||||||
|
|
||||||
|
- name: Stop containers
|
||||||
|
if: always()
|
||||||
|
run: docker-compose -f "./docker/docker-compose.yml" down
|
@ -1,5 +1,9 @@
|
|||||||
# Haveno TypeScript Library
|
# Haveno TypeScript Library
|
||||||
|
|
||||||
|
![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/haveno-dex/haveno-ts/build.yml?branch=master)
|
||||||
|
[![Twitter Follow](https://img.shields.io/twitter/follow/HavenoDEX?style=social)](https://twitter.com/havenodex)
|
||||||
|
[![Matrix rooms](https://img.shields.io/badge/Matrix%20room-%23haveno-blue)](https://matrix.to/#/#haveno:monero.social)
|
||||||
|
|
||||||
TypeScript library for using Haveno.
|
TypeScript library for using Haveno.
|
||||||
|
|
||||||
## Install
|
## Install
|
||||||
@ -38,7 +42,7 @@ Running the [API tests](./src/HavenoClient.test.ts) is the best way to develop a
|
|||||||
|
|
||||||
1. [Run a local Haveno test network](https://github.com/haveno-dex/haveno/blob/master/docs/installing.md) and then shut down the arbitrator, user1, and user2 or run them as daemons, e.g. `make user1-daemon-local`. You may omit the arbitrator registration steps since it's done automatically in the tests.
|
1. [Run a local Haveno test network](https://github.com/haveno-dex/haveno/blob/master/docs/installing.md) and then shut down the arbitrator, user1, and user2 or run them as daemons, e.g. `make user1-daemon-local`. You may omit the arbitrator registration steps since it's done automatically in the tests.
|
||||||
2. Clone this project to the same parent directory as the haveno project: `git clone https://github.com/haveno-dex/haveno-ts`
|
2. Clone this project to the same parent directory as the haveno project: `git clone https://github.com/haveno-dex/haveno-ts`
|
||||||
3. In a new terminal, start envoy with the config in haveno-ts/config/envoy.test.yaml (change absolute path for your system): `docker run --rm --add-host host.docker.internal:host-gateway -it -v ~/git/haveno-ts/config/envoy.test.yaml:/envoy.test.yaml -p 8079:8079 -p 8080:8080 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 -p 8085:8085 -p 8086:8086 envoyproxy/envoy-dev:8a2143613d43d17d1eb35a24b4a4a4c432215606 -c /envoy.test.yaml`
|
3. In a new terminal, start envoy with the config in haveno-ts/config/envoy.test.yaml (change absolute path for your system): `docker run --rm --add-host host.docker.internal:host-gateway -it -v ~/git/haveno-ts/config/envoy.test.yaml:/envoy.test.yaml -p 8079:8079 -p 8080:8080 -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8084:8084 -p 8085:8085 -p 8086:8086 envoyproxy/envoy-dev:latest -c /envoy.test.yaml`
|
||||||
4. In a new terminal, start the funding wallet. This wallet will be funded automatically in order to fund the tests.<br>For example: `cd ~/git/haveno && make funding-wallet-local`.
|
4. In a new terminal, start the funding wallet. This wallet will be funded automatically in order to fund the tests.<br>For example: `cd ~/git/haveno && make funding-wallet-local`.
|
||||||
5. Install protobuf compiler v3.19.1 or later for your system:<br>
|
5. Install protobuf compiler v3.19.1 or later for your system:<br>
|
||||||
mac: `brew install protobuf`<br>
|
mac: `brew install protobuf`<br>
|
||||||
|
@ -38,9 +38,15 @@ static_resources:
|
|||||||
expose_headers: custom-header-1,grpc-status,grpc-message
|
expose_headers: custom-header-1,grpc-status,grpc-message
|
||||||
http_filters:
|
http_filters:
|
||||||
- name: envoy.filters.http.grpc_web
|
- name: envoy.filters.http.grpc_web
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
|
||||||
- name: envoy.filters.http.cors
|
- name: envoy.filters.http.cors
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
|
||||||
- name: envoy.filters.http.router
|
- name: envoy.filters.http.router
|
||||||
- name: alice_listener
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
||||||
|
- name: user1_listener
|
||||||
address:
|
address:
|
||||||
socket_address: { address: 0.0.0.0, port_value: 8080 }
|
socket_address: { address: 0.0.0.0, port_value: 8080 }
|
||||||
filter_chains:
|
filter_chains:
|
||||||
@ -58,7 +64,7 @@ static_resources:
|
|||||||
routes:
|
routes:
|
||||||
- match: { prefix: "/" }
|
- match: { prefix: "/" }
|
||||||
route:
|
route:
|
||||||
cluster: alice_service
|
cluster: user1_service
|
||||||
timeout: 0s
|
timeout: 0s
|
||||||
max_stream_duration:
|
max_stream_duration:
|
||||||
grpc_timeout_header_max: 0s
|
grpc_timeout_header_max: 0s
|
||||||
@ -71,9 +77,15 @@ static_resources:
|
|||||||
expose_headers: custom-header-1,grpc-status,grpc-message
|
expose_headers: custom-header-1,grpc-status,grpc-message
|
||||||
http_filters:
|
http_filters:
|
||||||
- name: envoy.filters.http.grpc_web
|
- name: envoy.filters.http.grpc_web
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
|
||||||
- name: envoy.filters.http.cors
|
- name: envoy.filters.http.cors
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
|
||||||
- name: envoy.filters.http.router
|
- name: envoy.filters.http.router
|
||||||
- name: bob_listener
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
||||||
|
- name: user2_listener
|
||||||
address:
|
address:
|
||||||
socket_address: { address: 0.0.0.0, port_value: 8081 }
|
socket_address: { address: 0.0.0.0, port_value: 8081 }
|
||||||
filter_chains:
|
filter_chains:
|
||||||
@ -91,7 +103,7 @@ static_resources:
|
|||||||
routes:
|
routes:
|
||||||
- match: { prefix: "/" }
|
- match: { prefix: "/" }
|
||||||
route:
|
route:
|
||||||
cluster: bob_service
|
cluster: user2_service
|
||||||
timeout: 0s
|
timeout: 0s
|
||||||
max_stream_duration:
|
max_stream_duration:
|
||||||
grpc_timeout_header_max: 0s
|
grpc_timeout_header_max: 0s
|
||||||
@ -104,8 +116,14 @@ static_resources:
|
|||||||
expose_headers: custom-header-1,grpc-status,grpc-message
|
expose_headers: custom-header-1,grpc-status,grpc-message
|
||||||
http_filters:
|
http_filters:
|
||||||
- name: envoy.filters.http.grpc_web
|
- name: envoy.filters.http.grpc_web
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
|
||||||
- name: envoy.filters.http.cors
|
- name: envoy.filters.http.cors
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
|
||||||
- name: envoy.filters.http.router
|
- name: envoy.filters.http.router
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
||||||
- name: haveno1_listener
|
- name: haveno1_listener
|
||||||
address:
|
address:
|
||||||
socket_address: { address: 0.0.0.0, port_value: 8082 }
|
socket_address: { address: 0.0.0.0, port_value: 8082 }
|
||||||
@ -137,8 +155,14 @@ static_resources:
|
|||||||
expose_headers: custom-header-1,grpc-status,grpc-message
|
expose_headers: custom-header-1,grpc-status,grpc-message
|
||||||
http_filters:
|
http_filters:
|
||||||
- name: envoy.filters.http.grpc_web
|
- name: envoy.filters.http.grpc_web
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
|
||||||
- name: envoy.filters.http.cors
|
- name: envoy.filters.http.cors
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
|
||||||
- name: envoy.filters.http.router
|
- name: envoy.filters.http.router
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
||||||
- name: haveno2_listener
|
- name: haveno2_listener
|
||||||
address:
|
address:
|
||||||
socket_address: { address: 0.0.0.0, port_value: 8083 }
|
socket_address: { address: 0.0.0.0, port_value: 8083 }
|
||||||
@ -170,8 +194,14 @@ static_resources:
|
|||||||
expose_headers: custom-header-1,grpc-status,grpc-message
|
expose_headers: custom-header-1,grpc-status,grpc-message
|
||||||
http_filters:
|
http_filters:
|
||||||
- name: envoy.filters.http.grpc_web
|
- name: envoy.filters.http.grpc_web
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
|
||||||
- name: envoy.filters.http.cors
|
- name: envoy.filters.http.cors
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
|
||||||
- name: envoy.filters.http.router
|
- name: envoy.filters.http.router
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
||||||
- name: haveno3_listener
|
- name: haveno3_listener
|
||||||
address:
|
address:
|
||||||
socket_address: { address: 0.0.0.0, port_value: 8084 }
|
socket_address: { address: 0.0.0.0, port_value: 8084 }
|
||||||
@ -203,8 +233,14 @@ static_resources:
|
|||||||
expose_headers: custom-header-1,grpc-status,grpc-message
|
expose_headers: custom-header-1,grpc-status,grpc-message
|
||||||
http_filters:
|
http_filters:
|
||||||
- name: envoy.filters.http.grpc_web
|
- name: envoy.filters.http.grpc_web
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
|
||||||
- name: envoy.filters.http.cors
|
- name: envoy.filters.http.cors
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
|
||||||
- name: envoy.filters.http.router
|
- name: envoy.filters.http.router
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
||||||
- name: haveno4_listener
|
- name: haveno4_listener
|
||||||
address:
|
address:
|
||||||
socket_address: { address: 0.0.0.0, port_value: 8085 }
|
socket_address: { address: 0.0.0.0, port_value: 8085 }
|
||||||
@ -236,8 +272,14 @@ static_resources:
|
|||||||
expose_headers: custom-header-1,grpc-status,grpc-message
|
expose_headers: custom-header-1,grpc-status,grpc-message
|
||||||
http_filters:
|
http_filters:
|
||||||
- name: envoy.filters.http.grpc_web
|
- name: envoy.filters.http.grpc_web
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
|
||||||
- name: envoy.filters.http.cors
|
- name: envoy.filters.http.cors
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
|
||||||
- name: envoy.filters.http.router
|
- name: envoy.filters.http.router
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
||||||
- name: haveno5_listener
|
- name: haveno5_listener
|
||||||
address:
|
address:
|
||||||
socket_address: { address: 0.0.0.0, port_value: 8086 }
|
socket_address: { address: 0.0.0.0, port_value: 8086 }
|
||||||
@ -269,8 +311,14 @@ static_resources:
|
|||||||
expose_headers: custom-header-1,grpc-status,grpc-message
|
expose_headers: custom-header-1,grpc-status,grpc-message
|
||||||
http_filters:
|
http_filters:
|
||||||
- name: envoy.filters.http.grpc_web
|
- name: envoy.filters.http.grpc_web
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
|
||||||
- name: envoy.filters.http.cors
|
- name: envoy.filters.http.cors
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
|
||||||
- name: envoy.filters.http.router
|
- name: envoy.filters.http.router
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
||||||
clusters:
|
clusters:
|
||||||
- name: arbitrator_service
|
- name: arbitrator_service
|
||||||
connect_timeout: 0.25s
|
connect_timeout: 0.25s
|
||||||
@ -286,7 +334,7 @@ static_resources:
|
|||||||
socket_address:
|
socket_address:
|
||||||
address: host.docker.internal
|
address: host.docker.internal
|
||||||
port_value: 9998
|
port_value: 9998
|
||||||
- name: alice_service
|
- name: user1_service
|
||||||
connect_timeout: 0.25s
|
connect_timeout: 0.25s
|
||||||
type: logical_dns
|
type: logical_dns
|
||||||
http2_protocol_options: {}
|
http2_protocol_options: {}
|
||||||
@ -300,7 +348,7 @@ static_resources:
|
|||||||
socket_address:
|
socket_address:
|
||||||
address: host.docker.internal
|
address: host.docker.internal
|
||||||
port_value: 9999
|
port_value: 9999
|
||||||
- name: bob_service
|
- name: user2_service
|
||||||
connect_timeout: 0.25s
|
connect_timeout: 0.25s
|
||||||
type: logical_dns
|
type: logical_dns
|
||||||
http2_protocol_options: {}
|
http2_protocol_options: {}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# envoy configuration to run alice ui
|
# envoy configuration to run user1 ui
|
||||||
|
|
||||||
admin:
|
admin:
|
||||||
access_log_path: /tmp/admin_access.log
|
access_log_path: /tmp/admin_access.log
|
||||||
@ -7,7 +7,7 @@ admin:
|
|||||||
|
|
||||||
static_resources:
|
static_resources:
|
||||||
listeners:
|
listeners:
|
||||||
- name: alice_listener
|
- name: user1_listener
|
||||||
address:
|
address:
|
||||||
socket_address: { address: 0.0.0.0, port_value: 8080 }
|
socket_address: { address: 0.0.0.0, port_value: 8080 }
|
||||||
filter_chains:
|
filter_chains:
|
||||||
@ -25,7 +25,7 @@ static_resources:
|
|||||||
routes:
|
routes:
|
||||||
- match: { prefix: "/" }
|
- match: { prefix: "/" }
|
||||||
route:
|
route:
|
||||||
cluster: alice_service
|
cluster: user1_service
|
||||||
timeout: 0s
|
timeout: 0s
|
||||||
max_stream_duration:
|
max_stream_duration:
|
||||||
grpc_timeout_header_max: 0s
|
grpc_timeout_header_max: 0s
|
||||||
@ -38,10 +38,16 @@ static_resources:
|
|||||||
expose_headers: custom-header-1,grpc-status,grpc-message
|
expose_headers: custom-header-1,grpc-status,grpc-message
|
||||||
http_filters:
|
http_filters:
|
||||||
- name: envoy.filters.http.grpc_web
|
- name: envoy.filters.http.grpc_web
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.grpc_web.v3.GrpcWeb
|
||||||
- name: envoy.filters.http.cors
|
- name: envoy.filters.http.cors
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.cors.v3.Cors
|
||||||
- name: envoy.filters.http.router
|
- name: envoy.filters.http.router
|
||||||
|
typed_config:
|
||||||
|
"@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
|
||||||
clusters:
|
clusters:
|
||||||
- name: alice_service
|
- name: user1_service
|
||||||
connect_timeout: 0.25s
|
connect_timeout: 0.25s
|
||||||
type: logical_dns
|
type: logical_dns
|
||||||
http2_protocol_options: {}
|
http2_protocol_options: {}
|
||||||
|
173
docker/docker-compose.yml
Normal file
173
docker/docker-compose.yml
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
version: '3.9'
|
||||||
|
|
||||||
|
services:
|
||||||
|
envoy:
|
||||||
|
image: envoyproxy/envoy-dev:latest
|
||||||
|
container_name: envoy
|
||||||
|
extra_hosts:
|
||||||
|
- "host.docker.internal:host-gateway"
|
||||||
|
ports:
|
||||||
|
- "8079:8079"
|
||||||
|
- "8080:8080"
|
||||||
|
- "8081:8081"
|
||||||
|
- "8082:8082"
|
||||||
|
- "8083:8083"
|
||||||
|
- "8084:8084"
|
||||||
|
- "8085:8085"
|
||||||
|
- "8086:8086"
|
||||||
|
volumes:
|
||||||
|
- ./../config/envoy.test.yaml:/config/envoy.test.yaml
|
||||||
|
command:
|
||||||
|
- -c
|
||||||
|
- ../config/envoy.test.yaml
|
||||||
|
|
||||||
|
node1:
|
||||||
|
build: haveno/
|
||||||
|
container_name: node1
|
||||||
|
entrypoint: [ "./.localnet/monerod" ]
|
||||||
|
command: [
|
||||||
|
"--testnet",
|
||||||
|
"--no-igd",
|
||||||
|
"--hide-my-port",
|
||||||
|
"--data-dir=./.localnet/xmr_local/node1",
|
||||||
|
"--p2p-bind-ip=127.0.0.1",
|
||||||
|
"--p2p-bind-port=48080",
|
||||||
|
"--rpc-bind-port=48081",
|
||||||
|
"--no-zmq",
|
||||||
|
"--add-exclusive-node=127.0.0.1:28080",
|
||||||
|
"--rpc-access-control-origins=http://localhost:8080",
|
||||||
|
"--fixed-difficulty=10",
|
||||||
|
"--non-interactive",
|
||||||
|
]
|
||||||
|
network_mode: "host"
|
||||||
|
|
||||||
|
node2:
|
||||||
|
build: haveno/
|
||||||
|
container_name: node2
|
||||||
|
entrypoint: [ "./.localnet/monerod" ]
|
||||||
|
command: [
|
||||||
|
"--testnet",
|
||||||
|
"--no-igd",
|
||||||
|
"--hide-my-port",
|
||||||
|
"--data-dir=./.localnet/xmr_local/node2",
|
||||||
|
"--p2p-bind-ip=127.0.0.1",
|
||||||
|
"--rpc-bind-ip=0.0.0.0",
|
||||||
|
"--no-zmq",
|
||||||
|
"--confirm-external-bind",
|
||||||
|
"--add-exclusive-node=127.0.0.1:48080",
|
||||||
|
"--rpc-access-control-origins=http://localhost:8080",
|
||||||
|
"--fixed-difficulty=10",
|
||||||
|
"--non-interactive",
|
||||||
|
]
|
||||||
|
network_mode: "host"
|
||||||
|
depends_on:
|
||||||
|
- node1
|
||||||
|
|
||||||
|
seed1:
|
||||||
|
build: haveno/
|
||||||
|
container_name: seed1
|
||||||
|
entrypoint: [ "./haveno-seednode" ]
|
||||||
|
command: [
|
||||||
|
"--baseCurrencyNetwork=XMR_LOCAL",
|
||||||
|
"--useLocalhostForP2P=true",
|
||||||
|
"--useDevPrivilegeKeys=true",
|
||||||
|
"--nodePort=2002",
|
||||||
|
"--appName=haveno-XMR_LOCAL_Seed1_2002",
|
||||||
|
]
|
||||||
|
network_mode: "host"
|
||||||
|
depends_on:
|
||||||
|
- node2
|
||||||
|
|
||||||
|
seed2:
|
||||||
|
build: haveno/
|
||||||
|
container_name: seed2
|
||||||
|
entrypoint: [ "./haveno-seednode" ]
|
||||||
|
command: [
|
||||||
|
"--baseCurrencyNetwork=XMR_LOCAL",
|
||||||
|
"--useLocalhostForP2P=true",
|
||||||
|
"--useDevPrivilegeKeys=true",
|
||||||
|
"--nodePort=3002",
|
||||||
|
"--appName=haveno-XMR_LOCAL_Seed2_3002",
|
||||||
|
]
|
||||||
|
network_mode: "host"
|
||||||
|
depends_on:
|
||||||
|
- node2
|
||||||
|
|
||||||
|
arbitrator:
|
||||||
|
build: haveno/
|
||||||
|
container_name: arbitrator
|
||||||
|
entrypoint: [ "./haveno-daemon" ]
|
||||||
|
command: [
|
||||||
|
"--baseCurrencyNetwork=XMR_LOCAL",
|
||||||
|
"--useLocalhostForP2P=true",
|
||||||
|
"--useDevPrivilegeKeys=true",
|
||||||
|
"--nodePort=4444",
|
||||||
|
"--appName=haveno-XMR_LOCAL_arbitrator",
|
||||||
|
"--apiPassword=apitest",
|
||||||
|
"--apiPort=9998",
|
||||||
|
"--walletRpcBindPort=38090",
|
||||||
|
"--passwordRequired=false",
|
||||||
|
]
|
||||||
|
network_mode: "host"
|
||||||
|
depends_on:
|
||||||
|
- seed1
|
||||||
|
|
||||||
|
user1:
|
||||||
|
build: haveno/
|
||||||
|
container_name: user1
|
||||||
|
entrypoint: [ "./haveno-daemon" ]
|
||||||
|
command: [
|
||||||
|
"--baseCurrencyNetwork=XMR_LOCAL",
|
||||||
|
"--useLocalhostForP2P=true",
|
||||||
|
"--useDevPrivilegeKeys=true",
|
||||||
|
"--nodePort=5555",
|
||||||
|
"--appName=haveno_user1",
|
||||||
|
"--apiPassword=apitest",
|
||||||
|
"--apiPort=9999",
|
||||||
|
"--walletRpcBindPort=38091",
|
||||||
|
"--passwordRequired=false",
|
||||||
|
]
|
||||||
|
network_mode: "host"
|
||||||
|
depends_on:
|
||||||
|
- seed1
|
||||||
|
|
||||||
|
user2:
|
||||||
|
build: haveno/
|
||||||
|
container_name: user2
|
||||||
|
entrypoint: [ "./haveno-daemon" ]
|
||||||
|
command: [
|
||||||
|
"--baseCurrencyNetwork=XMR_LOCAL",
|
||||||
|
"--useLocalhostForP2P=true",
|
||||||
|
"--useDevPrivilegeKeys=true",
|
||||||
|
"--nodePort=6666",
|
||||||
|
"--appName=haveno_user2",
|
||||||
|
"--apiPassword=apitest",
|
||||||
|
"--apiPort=10000",
|
||||||
|
"--walletRpcBindPort=38092",
|
||||||
|
"--passwordRequired=false",
|
||||||
|
]
|
||||||
|
network_mode: "host"
|
||||||
|
depends_on:
|
||||||
|
- seed1
|
||||||
|
|
||||||
|
pricenode:
|
||||||
|
build: pricenode/
|
||||||
|
container_name: pricenode
|
||||||
|
entrypoint: [ "./haveno-pricenode" ]
|
||||||
|
network_mode: "host"
|
||||||
|
|
||||||
|
funding:
|
||||||
|
build: haveno/
|
||||||
|
container_name: funding_wallet
|
||||||
|
entrypoint: [ "./.localnet/monero-wallet-rpc" ]
|
||||||
|
command: [
|
||||||
|
"--testnet",
|
||||||
|
"--daemon-address=http://localhost:28081",
|
||||||
|
"--rpc-bind-port=28084",
|
||||||
|
"--rpc-login=rpc_user:abc123",
|
||||||
|
"--rpc-access-control-origins=http://localhost:8080",
|
||||||
|
"--wallet-dir=./.localnet",
|
||||||
|
]
|
||||||
|
network_mode: "host"
|
||||||
|
depends_on:
|
||||||
|
- arbitrator
|
21
docker/haveno/Dockerfile
Normal file
21
docker/haveno/Dockerfile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
FROM openjdk:11
|
||||||
|
|
||||||
|
RUN set -ex && \
|
||||||
|
apt update && \
|
||||||
|
apt --no-install-recommends --yes install \
|
||||||
|
make \
|
||||||
|
git
|
||||||
|
|
||||||
|
RUN set -ex && adduser --system --group --disabled-password haveno && \
|
||||||
|
mkdir -p /home/haveno && \
|
||||||
|
chown -R haveno:haveno /home/haveno
|
||||||
|
|
||||||
|
USER haveno
|
||||||
|
|
||||||
|
RUN set -ex && git clone https://github.com/haveno-dex/haveno.git /home/haveno/haveno
|
||||||
|
|
||||||
|
WORKDIR /home/haveno/haveno
|
||||||
|
|
||||||
|
RUN set -ex && make skip-tests
|
||||||
|
|
||||||
|
ENTRYPOINT [ "./haveno-daemon" ]
|
21
docker/pricenode/Dockerfile
Normal file
21
docker/pricenode/Dockerfile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
FROM gradle:jdk11
|
||||||
|
|
||||||
|
RUN set -ex && \
|
||||||
|
apt update && \
|
||||||
|
apt --no-install-recommends --yes install \
|
||||||
|
make \
|
||||||
|
git
|
||||||
|
|
||||||
|
RUN set -ex && adduser --system --group --disabled-password pricenode && \
|
||||||
|
mkdir -p /home/pricenode && \
|
||||||
|
chown -R pricenode:pricenode /home/pricenode
|
||||||
|
|
||||||
|
USER pricenode
|
||||||
|
|
||||||
|
RUN set -ex && git clone --recursive https://github.com/haveno-dex/haveno-pricenode.git /home/pricenode
|
||||||
|
|
||||||
|
WORKDIR /home/pricenode
|
||||||
|
|
||||||
|
RUN gradle clean build -x test
|
||||||
|
|
||||||
|
ENTRYPOINT [ "./haveno-pricenode" ]
|
@ -7,8 +7,6 @@
|
|||||||
"files": ["dist/**/*"],
|
"files": ["dist/**/*"],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"prepare": "scripts/build_protobuf.sh",
|
"prepare": "scripts/build_protobuf.sh",
|
||||||
"pretest": "scripts/build_protobuf.sh",
|
|
||||||
"build": "./scripts/build_dist.sh",
|
|
||||||
"test": "jest",
|
"test": "jest",
|
||||||
"eslint": "eslint .",
|
"eslint": "eslint .",
|
||||||
"eslintfix": "eslint src/* --fix",
|
"eslintfix": "eslint src/* --fix",
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# run typescript compiler
|
|
||||||
tsc
|
|
||||||
|
|
||||||
# copy protobuf models to dist
|
|
||||||
mkdir -p dist/protobuf || exit 1
|
|
||||||
cp src/protobuf/grpc_pb.d.ts dist/protobuf/grpc_pb.d.ts || exit 1
|
|
||||||
cp src/protobuf/grpc_pb.js dist/protobuf/grpc_pb.js || exit 1
|
|
||||||
cp src/protobuf/pb_pb.d.ts dist/protobuf/pb_pb.d.ts || exit 1
|
|
||||||
cp src/protobuf/pb_pb.js dist/protobuf/pb_pb.js || exit 1
|
|
@ -4,3 +4,12 @@
|
|||||||
mkdir -p ./src/protobuf
|
mkdir -p ./src/protobuf
|
||||||
cd ./src/protobuf || exit 1
|
cd ./src/protobuf || exit 1
|
||||||
protoc -I=../../../haveno/proto/src/main/proto/ ../../../haveno/proto/src/main/proto/*.proto --js_out=import_style=commonjs,binary:./ --grpc-web_out=import_style=typescript,mode=grpcwebtext:./ || exit 1
|
protoc -I=../../../haveno/proto/src/main/proto/ ../../../haveno/proto/src/main/proto/*.proto --js_out=import_style=commonjs,binary:./ --grpc-web_out=import_style=typescript,mode=grpcwebtext:./ || exit 1
|
||||||
|
|
||||||
|
# run typescript compiler
|
||||||
|
tsc
|
||||||
|
|
||||||
|
# copy protobuf models to dist
|
||||||
|
cp ./grpc_pb.d.ts ../../dist/protobuf/grpc_pb.d.ts || exit 1
|
||||||
|
cp ./grpc_pb.js ../../dist/protobuf/grpc_pb.js || exit 1
|
||||||
|
cp ./pb_pb.d.ts ../../dist/protobuf/pb_pb.d.ts || exit 1
|
||||||
|
cp ./pb_pb.js ../../dist/protobuf/pb_pb.js || exit 1
|
||||||
|
Loading…
Reference in New Issue
Block a user