Separate out GQL proxy server from uniswap-urbit stack (#681)
* Separate out uniswap gql proxy in a stack * Use proxy server from watcher-ts * Add a flag to enable/disable the proxy server * Update env configuratoin for uniswap urbit app stack * Update stack file for uniswap urbit app stack * Fix env variables in instructions
This commit is contained in:
parent
f27da19808
commit
6bef0c5b2f
@ -0,0 +1,22 @@
|
|||||||
|
version: "3.2"
|
||||||
|
|
||||||
|
services:
|
||||||
|
proxy-server:
|
||||||
|
image: cerc/watcher-ts:local
|
||||||
|
restart: on-failure
|
||||||
|
working_dir: /app/packages/cli
|
||||||
|
environment:
|
||||||
|
ENABLE_PROXY: ${ENABLE_PROXY:-true}
|
||||||
|
PROXY_UPSTREAM: ${CERC_PROXY_UPSTREAM}
|
||||||
|
PROXY_ORIGIN_HEADER: ${CERC_PROXY_ORIGIN_HEADER}
|
||||||
|
command: ["sh", "-c", "./run.sh"]
|
||||||
|
volumes:
|
||||||
|
- ../config/proxy-server/run.sh:/app/packages/cli/run.sh
|
||||||
|
ports:
|
||||||
|
- "4000"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "nc", "-v", "localhost", "4000"]
|
||||||
|
interval: 20s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 15
|
||||||
|
start_period: 10s
|
@ -12,19 +12,6 @@ services:
|
|||||||
- app_builds:/app-builds
|
- app_builds:/app-builds
|
||||||
- ../config/uniswap-interface/build-app.sh:/app/build-app.sh
|
- ../config/uniswap-interface/build-app.sh:/app/build-app.sh
|
||||||
|
|
||||||
uniswap-gql-proxy:
|
|
||||||
image: cerc/uniswap-interface:local
|
|
||||||
restart: on-failure
|
|
||||||
command: ["bash", "-c", "yarn proxy-gql"]
|
|
||||||
ports:
|
|
||||||
- "4000"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "nc", "-v", "localhost", "4000"]
|
|
||||||
interval: 20s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 15
|
|
||||||
start_period: 10s
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
app_builds:
|
app_builds:
|
||||||
app_globs:
|
app_globs:
|
||||||
|
9
stack_orchestrator/data/config/proxy-server/run.sh
Executable file
9
stack_orchestrator/data/config/proxy-server/run.sh
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ "$ENABLE_PROXY" = "true" ]; then
|
||||||
|
echo "Proxy server enabled"
|
||||||
|
yarn proxy
|
||||||
|
else
|
||||||
|
echo "Proxy server disabled, exiting"
|
||||||
|
exit 0
|
||||||
|
fi
|
79
stack_orchestrator/data/stacks/proxy-server/README.md
Normal file
79
stack_orchestrator/data/stacks/proxy-server/README.md
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
# Proxy Server
|
||||||
|
|
||||||
|
Instructions to setup and deploy a HTTP proxy server
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
Clone required repository:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack proxy-server setup-repositories --pull
|
||||||
|
|
||||||
|
# If this throws an error as a result of being already checked out to a branch/tag in a repo, remove the repositories mentioned below and re-run the command
|
||||||
|
```
|
||||||
|
|
||||||
|
Build the container image:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack proxy-server build-containers
|
||||||
|
```
|
||||||
|
|
||||||
|
## Create a deployment
|
||||||
|
|
||||||
|
* First, create a spec file for the deployment, which will allow mapping the stack's ports and volumes to the host:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack proxy-server deploy init --output proxy-server-spec.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
* Edit `network` in spec file to map container ports to same ports in host:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
...
|
||||||
|
network:
|
||||||
|
ports:
|
||||||
|
proxy-server:
|
||||||
|
- '4000:4000'
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
* Once you've made any needed changes to the spec file, create a deployment from it:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so --stack proxy-server deploy create --spec-file proxy-server-spec.yml --deployment-dir proxy-server-deployment
|
||||||
|
```
|
||||||
|
|
||||||
|
* Inside the deployment directory, open the file `config.env` and set the following env variables:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Whether to run the proxy server (Optional) (Default: true)
|
||||||
|
ENABLE_PROXY=
|
||||||
|
|
||||||
|
# Upstream endpoint
|
||||||
|
# (Eg. https://api.example.org)
|
||||||
|
CERC_PROXY_UPSTREAM=
|
||||||
|
|
||||||
|
# Origin header to be used (Optional)
|
||||||
|
# (Eg. https://app.example.org)
|
||||||
|
CERC_PROXY_ORIGIN_HEADER=
|
||||||
|
```
|
||||||
|
|
||||||
|
## Start the stack
|
||||||
|
|
||||||
|
Start the deployment:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir proxy-server-deployment start
|
||||||
|
```
|
||||||
|
|
||||||
|
* List and check the health status of the container using `docker ps`
|
||||||
|
|
||||||
|
* The proxy server will now be listening at http://localhost:4000
|
||||||
|
|
||||||
|
## Clean up
|
||||||
|
|
||||||
|
To stop the service running in background:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
laconic-so deployment --dir proxy-server-deployment stop
|
||||||
|
```
|
8
stack_orchestrator/data/stacks/proxy-server/stack.yml
Normal file
8
stack_orchestrator/data/stacks/proxy-server/stack.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
version: "0.1"
|
||||||
|
name: proxy-server
|
||||||
|
repos:
|
||||||
|
- github.com/cerc-io/watcher-ts@v0.2.78
|
||||||
|
containers:
|
||||||
|
- cerc/watcher-ts
|
||||||
|
pods:
|
||||||
|
- proxy-server
|
@ -41,7 +41,7 @@ network:
|
|||||||
ports:
|
ports:
|
||||||
urbit-fake-ship:
|
urbit-fake-ship:
|
||||||
- '8080:80'
|
- '8080:80'
|
||||||
uniswap-gql-proxy:
|
proxy-server:
|
||||||
- '4000:4000'
|
- '4000:4000'
|
||||||
ipfs-glob-host:
|
ipfs-glob-host:
|
||||||
- '8081:8080'
|
- '8081:8080'
|
||||||
@ -64,7 +64,7 @@ laconic-so --stack uniswap-urbit-app deploy create --spec-file uniswap-urbit-app
|
|||||||
|
|
||||||
## Set env variables
|
## Set env variables
|
||||||
|
|
||||||
Inside the deployment directory, open the file `config.env` and add variable for infura key :
|
Inside the deployment directory, open the file `config.env` and set the following env variables:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# External RPC endpoints
|
# External RPC endpoints
|
||||||
@ -73,10 +73,28 @@ Inside the deployment directory, open the file `config.env` and add variable for
|
|||||||
|
|
||||||
# Uniswap API GQL Endpoint
|
# Uniswap API GQL Endpoint
|
||||||
# Set this to GQL proxy server endpoint for uniswap app
|
# Set this to GQL proxy server endpoint for uniswap app
|
||||||
# (Eg. http://localhost:4000/graphql)
|
# (Eg. http://localhost:4000/v1/graphql)
|
||||||
|
# (Eg. https://abc.xyz.com/v1/graphql)
|
||||||
CERC_UNISWAP_GQL=
|
CERC_UNISWAP_GQL=
|
||||||
|
|
||||||
# Optional IPFS endpoints:
|
# Optional
|
||||||
|
|
||||||
|
# Whether to run the proxy GQL server
|
||||||
|
# (Disable only if proxy not required to be run) (Default: true)
|
||||||
|
ENABLE_PROXY=
|
||||||
|
|
||||||
|
# Proxy server configuration
|
||||||
|
# Used only if proxy is enabled
|
||||||
|
|
||||||
|
# Upstream API URL
|
||||||
|
# (Eg. https://api.example.org)
|
||||||
|
CERC_PROXY_UPSTREAM=https://api.uniswap.org
|
||||||
|
|
||||||
|
# Origin header to be used in the proxy
|
||||||
|
# (Eg. https://app.example.org)
|
||||||
|
CERC_PROXY_ORIGIN_HEADER=https://app.uniswap.org
|
||||||
|
|
||||||
|
# IPFS configuration
|
||||||
|
|
||||||
# IFPS endpoint to host the glob file on
|
# IFPS endpoint to host the glob file on
|
||||||
# (Default: http://ipfs-glob-host:5001 pointing to in-stack IPFS node)
|
# (Default: http://ipfs-glob-host:5001 pointing to in-stack IPFS node)
|
||||||
@ -120,7 +138,7 @@ laconic-so deployment --dir uniswap-urbit-app-deployment start
|
|||||||
|
|
||||||
## Clean up
|
## Clean up
|
||||||
|
|
||||||
To stop all uniswap-urbit-app services running in the background, while preserving chain data:
|
To stop all uniswap-urbit-app services running in the background, while preserving data:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
laconic-so deployment --dir uniswap-urbit-app-deployment stop
|
laconic-so deployment --dir uniswap-urbit-app-deployment stop
|
||||||
|
@ -2,9 +2,12 @@ version: "0.1"
|
|||||||
name: uniswap-urbit-app
|
name: uniswap-urbit-app
|
||||||
repos:
|
repos:
|
||||||
- github.com/cerc-io/uniswap-interface@laconic # TODO: Use release
|
- github.com/cerc-io/uniswap-interface@laconic # TODO: Use release
|
||||||
|
- github.com/cerc-io/watcher-ts@v0.2.78
|
||||||
containers:
|
containers:
|
||||||
- cerc/uniswap-interface
|
- cerc/uniswap-interface
|
||||||
|
- cerc/watcher-ts
|
||||||
- cerc/urbit-globs-host
|
- cerc/urbit-globs-host
|
||||||
pods:
|
pods:
|
||||||
- uniswap-interface
|
- uniswap-interface
|
||||||
|
- proxy-server
|
||||||
- uniswap-urbit
|
- uniswap-urbit
|
||||||
|
Loading…
Reference in New Issue
Block a user