mirror of
https://github.com/oceanprotocol/docs.git
synced 2024-11-26 19:49:26 +01:00
Merge branch 'main' of github.com:oceanprotocol/docs into v4
This commit is contained in:
commit
d72bbfa2bd
@ -1,15 +1,39 @@
|
|||||||
---
|
---
|
||||||
title: Setting up private docker registry for Compute-to-Data environment
|
title: Setting up private docker registry for Compute-to-Data environment
|
||||||
description: Learn how to setup own docker registry and push images for running algorithms in C2D environment.
|
description: Learn how to setup your own docker registry and push images for running algorithms in a C2D environment.
|
||||||
---
|
---
|
||||||
|
|
||||||
## Prerequisites
|
The document is intended for a production setup. The tutorial provides the steps to setup a private docker registry on the server for the following scenarios:
|
||||||
|
|
||||||
1. Running docker environment on the server.
|
- Allow registry access only to the C2D environment.
|
||||||
2. Domain name is mapped to the server IP address.
|
- Anyone can pull the image from the registry but, only authenticated users will push images to the registry.
|
||||||
3. SSL certificate
|
|
||||||
|
|
||||||
## Generate password file
|
## Setup 1: Allow registry access only to the C2D environment
|
||||||
|
|
||||||
|
|
||||||
|
To implement this use case, 1 domain will be required:
|
||||||
|
|
||||||
|
- **example.com**: This domain will allow only image pull operations
|
||||||
|
|
||||||
|
_Note: Please change the domain names to your application-specific domain names._
|
||||||
|
|
||||||
|
### 1.1 Prerequisites
|
||||||
|
|
||||||
|
- Running docker environment on the linux server.
|
||||||
|
- Docker compose is installed.
|
||||||
|
- C2D environment is running.
|
||||||
|
- The domain names is mapped to the server hosting the registry.
|
||||||
|
|
||||||
|
### 1.2 Generate certificates
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# install certbot: https://certbot.eff.org/
|
||||||
|
sudo certbot certonly --standalone --cert-name example.com -d example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
_Note: Do check the access right of the files/directories where certificates are stored. Usually, they are at `/etc/letsencrypt/`._
|
||||||
|
|
||||||
|
### 1.3 Generate password file
|
||||||
|
|
||||||
Replace content in `<>` with appropriate content.
|
Replace content in `<>` with appropriate content.
|
||||||
|
|
||||||
@ -19,7 +43,7 @@ docker run \
|
|||||||
httpd:2 -Bbn <username> <password> > <path>/auth/htpasswd
|
httpd:2 -Bbn <username> <password> > <path>/auth/htpasswd
|
||||||
```
|
```
|
||||||
|
|
||||||
## Docker compose template file for registry
|
### 1.4 Docker compose template file for registry
|
||||||
|
|
||||||
Copy the below yml content to `docker-compose.yml` file and replace content in `<>`.
|
Copy the below yml content to `docker-compose.yml` file and replace content in `<>`.
|
||||||
|
|
||||||
@ -34,8 +58,6 @@ services:
|
|||||||
ports:
|
ports:
|
||||||
- 5050:5000
|
- 5050:5000
|
||||||
environment:
|
environment:
|
||||||
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
|
|
||||||
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
|
|
||||||
REGISTRY_AUTH: htpasswd
|
REGISTRY_AUTH: htpasswd
|
||||||
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
|
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
|
||||||
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
|
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
|
||||||
@ -43,7 +65,201 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- <path>/data:/var/lib/registry
|
- <path>/data:/var/lib/registry
|
||||||
- <path>/auth:/auth
|
- <path>/auth:/auth
|
||||||
- <path>/certs:/certs
|
nginx:
|
||||||
|
image: nginx:latest
|
||||||
|
container_name: nginx
|
||||||
|
volumes:
|
||||||
|
- <path>/nginx/logs:/app/logs/
|
||||||
|
- nginx.conf:/etc/nginx/nginx.conf
|
||||||
|
- /etc/letsencrypt/:/etc/letsencrypt/
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
depends_on:
|
||||||
|
- registry
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.5 Nginx configuration
|
||||||
|
|
||||||
|
Copy the below nginx configuration to a `nginx.conf` file.
|
||||||
|
|
||||||
|
```conf
|
||||||
|
events {}
|
||||||
|
http {
|
||||||
|
access_log /app/logs/access.log;
|
||||||
|
error_log /app/logs/error.log;
|
||||||
|
|
||||||
|
server {
|
||||||
|
client_max_body_size 4096M;
|
||||||
|
listen 80 default_server;
|
||||||
|
server_name _;
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
# Allowed request size should be large enough to allow pull operations
|
||||||
|
client_max_body_size 4096M;
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name example.com;
|
||||||
|
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
|
||||||
|
location / {
|
||||||
|
proxy_connect_timeout 75s;
|
||||||
|
proxy_pass http://registry-read-only:5000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.6 Create kubernetes secret in C2D server
|
||||||
|
|
||||||
|
Login into Compute-to-data enviroment and run the following command with appropriate credentials:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl create secret docker-registry regcred --docker-server=example.com --docker-username=<username> --docker-password=<password> --docker-email=<email_id> -n ocean-compute
|
||||||
|
```
|
||||||
|
|
||||||
|
### 1.7 Update operator-engine configuration
|
||||||
|
|
||||||
|
Add `PULL_SECRET` property with value `regcred` in the [operator.yml](https://github.com/oceanprotocol/operator-engine/blob/main/kubernetes/operator.yml) file of operator-engine configuration.
|
||||||
|
For more detials on operator-engine properties refer this [link](https://github.com/oceanprotocol/operator-engine/blob/177ca7185c34aa2a503afbe026abb19c62c69e6d/README.md?plain=1#L106)
|
||||||
|
|
||||||
|
Apply updated operator-engine configuration.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
kubectl config set-context --current --namespace ocean-compute
|
||||||
|
kubectl apply -f operator-engine/kubernetes/operator.yml
|
||||||
|
```
|
||||||
|
|
||||||
|
## Steup 2: Allow anyonymous `pull` operations
|
||||||
|
|
||||||
|
To implement this use case, 2 domains will be required:
|
||||||
|
|
||||||
|
- **example.com**: This domain will allow image push/pull operations only to the authenticated users.
|
||||||
|
- **readonly.example.com**: This domain will allow only image pull operations
|
||||||
|
|
||||||
|
_Note: Please change the domain names to your application-specific domain names._
|
||||||
|
|
||||||
|
### 2.1 Prerequisites
|
||||||
|
|
||||||
|
- Running docker environment on the linux server.
|
||||||
|
- Docker compose is installed.
|
||||||
|
- 2 domain names is mapped to the same server IP address.
|
||||||
|
|
||||||
|
### 2.2 Generate certificates
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# install certbot: https://certbot.eff.org/
|
||||||
|
sudo certbot certonly --standalone --cert-name example.com -d example.com
|
||||||
|
sudo certbot certonly --standalone --cert-name readonly.example.com -d readonly.example.com
|
||||||
|
```
|
||||||
|
|
||||||
|
_Note: Do check the access right of the files/directories where certificates are stored. Usually, they are at `/etc/letsencrypt/`._
|
||||||
|
|
||||||
|
### 2.3 Generate password file
|
||||||
|
|
||||||
|
Replace content in `<>` with appropriate content.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker run \
|
||||||
|
--entrypoint htpasswd \
|
||||||
|
httpd:2 -Bbn <username> <password> > <path>/auth/htpasswd
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.4 Docker compose template file for registry
|
||||||
|
|
||||||
|
Copy the below yml content to `docker-compose.yml` file and replace content in `<>`.
|
||||||
|
Here, we will be creating two services of the docker registry so that anyone can `pull` the images from the registry but, only authenticated users can `push` the images.
|
||||||
|
|
||||||
|
```yml
|
||||||
|
version: '3'
|
||||||
|
|
||||||
|
services:
|
||||||
|
registry:
|
||||||
|
restart: always
|
||||||
|
container_name: my-docker-registry
|
||||||
|
image: registry:2
|
||||||
|
ports:
|
||||||
|
- 5050:5000
|
||||||
|
environment:
|
||||||
|
REGISTRY_AUTH: htpasswd
|
||||||
|
REGISTRY_AUTH_HTPASSWD_PATH: /auth/htpasswd
|
||||||
|
REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
|
||||||
|
REGISTRY_HTTP_SECRET: <secret>
|
||||||
|
volumes:
|
||||||
|
- <path>/data:/var/lib/registry
|
||||||
|
- <path>/auth:/auth
|
||||||
|
registry-read-only:
|
||||||
|
restart: always
|
||||||
|
container_name: my-registry-read-only
|
||||||
|
image: registry:2
|
||||||
|
read_only: true
|
||||||
|
ports:
|
||||||
|
- 5051:5000
|
||||||
|
environment:
|
||||||
|
REGISTRY_HTTP_SECRET: ${REGISTRY_HTTP_SECRET}
|
||||||
|
volumes:
|
||||||
|
- <path>/docker-registry/data:/var/lib/registry:ro
|
||||||
|
depends_on:
|
||||||
|
- registry
|
||||||
|
nginx:
|
||||||
|
image: nginx:latest
|
||||||
|
container_name: nginx
|
||||||
|
volumes:
|
||||||
|
- <path>/nginx/logs:/app/logs/
|
||||||
|
- nginx.conf:/etc/nginx/nginx.conf
|
||||||
|
- /etc/letsencrypt/:/etc/letsencrypt/
|
||||||
|
ports:
|
||||||
|
- 80:80
|
||||||
|
- 443:443
|
||||||
|
depends_on:
|
||||||
|
- registry-read-only
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2.5 Nginx configuration
|
||||||
|
|
||||||
|
Copy the below nginx configuration to a `nginx.conf` file.
|
||||||
|
|
||||||
|
```conf
|
||||||
|
events {}
|
||||||
|
http {
|
||||||
|
access_log /app/logs/access.log;
|
||||||
|
error_log /app/logs/error.log;
|
||||||
|
|
||||||
|
server {
|
||||||
|
client_max_body_size 4096M;
|
||||||
|
listen 80 default_server;
|
||||||
|
server_name _;
|
||||||
|
return 301 https://$host$request_uri;
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
# Allowed request size should be large enough to allow push operations
|
||||||
|
client_max_body_size 4096M;
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name readonly.example.com;
|
||||||
|
ssl_certificate /etc/letsencrypt/live/readonly.example.com/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/readonly.example.com/privkey.pem;
|
||||||
|
location / {
|
||||||
|
proxy_connect_timeout 75s;
|
||||||
|
proxy_pass http://registry:5000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
server {
|
||||||
|
# Allowed request size should be large enough to allow pull operations
|
||||||
|
client_max_body_size 4096M;
|
||||||
|
listen 443 ssl;
|
||||||
|
server_name example.com;
|
||||||
|
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
|
||||||
|
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
|
||||||
|
location / {
|
||||||
|
proxy_connect_timeout 75s;
|
||||||
|
proxy_pass http://registry-read-only:5000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -53,31 +269,50 @@ services:
|
|||||||
docker-compose -f docker-compose.yml up
|
docker-compose -f docker-compose.yml up
|
||||||
```
|
```
|
||||||
|
|
||||||
## List images in the registry
|
## Working with registry
|
||||||
|
|
||||||
```bash
|
### Login to registry
|
||||||
curl -X GET -u <username>:<password> https://example.com/v2/_catalog
|
|
||||||
```
|
|
||||||
|
|
||||||
## Other useful commands
|
|
||||||
|
|
||||||
|
|
||||||
## Login to registry
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker login example.com -u <username> -p <password>
|
docker login example.com -u <username> -p <password>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Build and push image to registry
|
### Build and push an image to the registry
|
||||||
|
|
||||||
Use the commands below to build an image from a `Dockerfile` and push to your own private registry.
|
Use the commands below to build an image from a `Dockerfile` and push it to your private registry.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker build . -t example.com/my-algo:latest
|
docker build . -t example.com/my-algo:latest
|
||||||
|
docker image push example.com/my-algo:latest
|
||||||
docker image tag example.com/my-algo:latest
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Next step
|
### List images in the registry
|
||||||
|
|
||||||
You can publish an algorithm asset with the metadata containing registry url, image, and tag information to enable users to run C2D jobs.
|
```bash
|
||||||
|
curl -X GET -u <username>:<password> https://example.com/v2/_catalog
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pull an image from the registry
|
||||||
|
|
||||||
|
Use the commands below to build an image from a `Dockerfile` and push it to your private registry.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# requires login
|
||||||
|
docker image pull example.com/my-algo:latest
|
||||||
|
|
||||||
|
# allows anonymous pull if 2nd setup scenario is implemented
|
||||||
|
docker image pull readonly.example.com/my-algo:latest
|
||||||
|
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
### Next step
|
||||||
|
|
||||||
|
You can publish an algorithm asset with the metadata containing registry URL, image, and tag information to enable users to run C2D jobs.
|
||||||
|
|
||||||
|
|
||||||
|
## Further references
|
||||||
|
|
||||||
|
- [Setup Compute-to-Data environment](/tutorials/compute-to-data-minikube/)
|
||||||
|
- [Writing algorithms](/tutorials/compute-to-data-algorithms/)
|
||||||
|
- [C2D example](/references/read-the-docs/ocean-py/READMEs/c2d-flow.md)
|
||||||
|
157
package-lock.json
generated
157
package-lock.json
generated
@ -5798,18 +5798,11 @@
|
|||||||
"integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg=="
|
"integrity": "sha512-1uIESzroqpaTzt9uX48HO+6gfnKu3RwvWdCcWSrX4csMInJfCo1yvKPNXCwXFRpJqRW25tiASb6No0YH57PXqg=="
|
||||||
},
|
},
|
||||||
"axios": {
|
"axios": {
|
||||||
"version": "0.24.0",
|
"version": "0.25.0",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz",
|
||||||
"integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==",
|
"integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"follow-redirects": "^1.14.4"
|
"follow-redirects": "^1.14.7"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"follow-redirects": {
|
|
||||||
"version": "1.14.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.5.tgz",
|
|
||||||
"integrity": "sha512-wtphSXy7d4/OR+MvIFbCVBDzZ5520qV8XfPklSN5QtxuMUJZ+b0Wnst1e1lCDocfzuCkHqj8k0FpZqO+UIaKNA=="
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"axobject-query": {
|
"axobject-query": {
|
||||||
@ -7703,11 +7696,6 @@
|
|||||||
"follow-redirects": "^1.14.0"
|
"follow-redirects": "^1.14.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follow-redirects": {
|
|
||||||
"version": "1.14.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz",
|
|
||||||
"integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g=="
|
|
||||||
},
|
|
||||||
"type-fest": {
|
"type-fest": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.0.2.tgz",
|
||||||
@ -9017,9 +9005,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"dotenv": {
|
"dotenv": {
|
||||||
"version": "10.0.0",
|
"version": "16.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.0.tgz",
|
||||||
"integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==",
|
"integrity": "sha512-qD9WU0MPM4SWLPJy/r2Be+2WgQj8plChsyrCNQzW/0WjvcJQiKQJ9mH3ZgB3fxbUUxgc/11ZJ0Fi5KiimWGz2Q==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"download": {
|
"download": {
|
||||||
@ -9235,9 +9223,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"engine.io": {
|
"engine.io": {
|
||||||
"version": "4.1.1",
|
"version": "4.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/engine.io/-/engine.io-4.1.2.tgz",
|
||||||
"integrity": "sha512-t2E9wLlssQjGw0nluF6aYyfX8LwYU8Jj0xct+pAhfWfv/YrBn6TSNtEYsgxHIfaMqfrLx07czcMg9bMN6di+3w==",
|
"integrity": "sha512-t5z6zjXuVLhXDMiFJPYsPOWEER8B0tIsD3ETgw19S1yg9zryvUfY3Vhtk3Gf4sihw/bQGIqQ//gjvVlu+Ca0bQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"accepts": "~1.3.4",
|
"accepts": "~1.3.4",
|
||||||
"base64id": "2.0.0",
|
"base64id": "2.0.0",
|
||||||
@ -9254,9 +9242,9 @@
|
|||||||
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
|
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
|
||||||
},
|
},
|
||||||
"debug": {
|
"debug": {
|
||||||
"version": "4.3.1",
|
"version": "4.3.3",
|
||||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz",
|
||||||
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
|
"integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"ms": "2.1.2"
|
"ms": "2.1.2"
|
||||||
}
|
}
|
||||||
@ -11406,9 +11394,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follow-redirects": {
|
"follow-redirects": {
|
||||||
"version": "1.13.1",
|
"version": "1.14.7",
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.1.tgz",
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
|
||||||
"integrity": "sha512-SSG5xmZh1mkPGyKzjZP8zLjltIfpW32Y5QpdNJyjcfGxK3qo3NDDkZOZSFiGn1A6SclQxY9GzEwAHQ3dmYRWpg=="
|
"integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ=="
|
||||||
},
|
},
|
||||||
"for-in": {
|
"for-in": {
|
||||||
"version": "1.0.2",
|
"version": "1.0.2",
|
||||||
@ -12123,11 +12111,6 @@
|
|||||||
"locate-path": "^2.0.0"
|
"locate-path": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follow-redirects": {
|
|
||||||
"version": "1.14.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz",
|
|
||||||
"integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g=="
|
|
||||||
},
|
|
||||||
"gatsby-cli": {
|
"gatsby-cli": {
|
||||||
"version": "2.19.3",
|
"version": "2.19.3",
|
||||||
"resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.19.3.tgz",
|
"resolved": "https://registry.npmjs.org/gatsby-cli/-/gatsby-cli-2.19.3.tgz",
|
||||||
@ -13720,9 +13703,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"gatsby-remark-vscode": {
|
"gatsby-remark-vscode": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/gatsby-remark-vscode/-/gatsby-remark-vscode-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/gatsby-remark-vscode/-/gatsby-remark-vscode-3.3.1.tgz",
|
||||||
"integrity": "sha512-55ucO1KryOwz9UlvQzsdNC6mI8wiWqSrE8pkV/fvHP9Q4NBttOGShU7pLuIUiWlSrzBFGWwtZSvVRTnklbPeCw==",
|
"integrity": "sha512-KUCDU8KauLikURYuGyAZ0aLhHhd/BP2XwzP/WP0wkgyKjh650PwewQghwpD9g2wVkN+fThFJDs4G64K4fduDGQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"decompress": "^4.2.0",
|
"decompress": "^4.2.0",
|
||||||
"json5": "^2.1.1",
|
"json5": "^2.1.1",
|
||||||
@ -19889,13 +19872,12 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"plist": {
|
"plist": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.4.tgz",
|
||||||
"integrity": "sha512-ghdOKN99hh1oEmAlwBmPYo4L+tSQ7O3jRpkhWqOrMz86CWotpVzMevvQ+czo7oPDpOZyA6K06Ci7QVHpoh9gaA==",
|
"integrity": "sha512-ksrr8y9+nXOxQB2osVNqrgvX/XQPOXaU4BQMKjYq8PvaY1U18mo+fKgBSwzK+luSyinOuPae956lSVcBwxlAMg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"base64-js": "^1.5.1",
|
"base64-js": "^1.5.1",
|
||||||
"xmlbuilder": "^9.0.7",
|
"xmlbuilder": "^9.0.7"
|
||||||
"xmldom": "^0.6.0"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"xmlbuilder": {
|
"xmlbuilder": {
|
||||||
@ -23049,11 +23031,6 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"follow-redirects": "^1.14.0"
|
"follow-redirects": "^1.14.0"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"follow-redirects": {
|
|
||||||
"version": "1.14.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.4.tgz",
|
|
||||||
"integrity": "sha512-zwGkiSXC1MUJG/qmeIFH2HBJx9u0V46QGUe3YR1fXG8bXQxq7fLj0RjLZQ5nubr9qNJUZrH+xUcwXEoXNpfS+g=="
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -24025,15 +24002,15 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"swagger-client": {
|
"swagger-client": {
|
||||||
"version": "3.18.0",
|
"version": "3.18.4",
|
||||||
"resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.0.tgz",
|
"resolved": "https://registry.npmjs.org/swagger-client/-/swagger-client-3.18.4.tgz",
|
||||||
"integrity": "sha512-lNfwTXHim0QiCNuZ4BKgWle7N7+9WlFLtcP02n0xSchFtdzsKJb2kWsOlwplRU3appVFjnHRy+1eVabRc3ZhbA==",
|
"integrity": "sha512-Wj26oEctONq/u0uM+eSj18675YM5e2vFnx7Kr4neLeXEHKUsfceVQ/OdtrBXdrT3VbtdBbZfMTfl1JOBpix2MA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@babel/runtime-corejs3": "^7.11.2",
|
"@babel/runtime-corejs3": "^7.11.2",
|
||||||
"btoa": "^1.2.1",
|
"btoa": "^1.2.1",
|
||||||
"cookie": "~0.4.1",
|
"cookie": "~0.4.1",
|
||||||
"cross-fetch": "^3.1.4",
|
"cross-fetch": "^3.1.5",
|
||||||
"deep-extend": "~0.6.0",
|
"deepmerge": "~4.2.2",
|
||||||
"fast-json-patch": "^3.0.0-1",
|
"fast-json-patch": "^3.0.0-1",
|
||||||
"form-data-encoder": "^1.4.3",
|
"form-data-encoder": "^1.4.3",
|
||||||
"formdata-node": "^4.0.0",
|
"formdata-node": "^4.0.0",
|
||||||
@ -24046,11 +24023,11 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@babel/runtime-corejs3": {
|
"@babel/runtime-corejs3": {
|
||||||
"version": "7.16.7",
|
"version": "7.17.0",
|
||||||
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.16.7.tgz",
|
"resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.17.0.tgz",
|
||||||
"integrity": "sha512-MiYR1yk8+TW/CpOD0CyX7ve9ffWTKqLk/L6pk8TPl0R8pNi+1pFY8fH9yET55KlvukQ4PAWfXsGr2YHVjcI4Pw==",
|
"integrity": "sha512-qeydncU80ravKzovVncW3EYaC1ji3GpntdPgNcJy9g7hHSY6KX+ne1cbV3ov7Zzm4F1z0+QreZPCuw1ynkmYNg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"core-js-pure": "^3.19.0",
|
"core-js-pure": "^3.20.2",
|
||||||
"regenerator-runtime": "^0.13.4"
|
"regenerator-runtime": "^0.13.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -24060,21 +24037,21 @@
|
|||||||
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
|
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
|
||||||
},
|
},
|
||||||
"cookie": {
|
"cookie": {
|
||||||
"version": "0.4.1",
|
"version": "0.4.2",
|
||||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz",
|
||||||
"integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA=="
|
"integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA=="
|
||||||
},
|
},
|
||||||
"core-js-pure": {
|
"core-js-pure": {
|
||||||
"version": "3.20.2",
|
"version": "3.21.0",
|
||||||
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.20.2.tgz",
|
"resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.21.0.tgz",
|
||||||
"integrity": "sha512-CmWHvSKn2vNL6p6StNp1EmMIfVY/pqn3JLAjfZQ8WZGPOlGoO92EkX9/Mk81i6GxvoPXjUqEQnpM3rJ5QxxIOg=="
|
"integrity": "sha512-VaJUunCZLnxuDbo1rNOzwbet9E1K9joiXS5+DQMPtgxd24wfsZbJZMMfQLGYMlCUvSxLfsRUUhoOR2x28mFfeg=="
|
||||||
},
|
},
|
||||||
"cross-fetch": {
|
"cross-fetch": {
|
||||||
"version": "3.1.4",
|
"version": "3.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz",
|
"resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
|
||||||
"integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==",
|
"integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"node-fetch": "2.6.1"
|
"node-fetch": "2.6.7"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"is-plain-object": {
|
"is-plain-object": {
|
||||||
@ -24090,15 +24067,23 @@
|
|||||||
"argparse": "^2.0.1"
|
"argparse": "^2.0.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node-fetch": {
|
||||||
|
"version": "2.6.7",
|
||||||
|
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||||
|
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||||
|
"requires": {
|
||||||
|
"whatwg-url": "^5.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"object-inspect": {
|
"object-inspect": {
|
||||||
"version": "1.12.0",
|
"version": "1.12.0",
|
||||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
|
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz",
|
||||||
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
|
"integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g=="
|
||||||
},
|
},
|
||||||
"qs": {
|
"qs": {
|
||||||
"version": "6.10.2",
|
"version": "6.10.3",
|
||||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.2.tgz",
|
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz",
|
||||||
"integrity": "sha512-mSIdjzqznWgfd4pMii7sHtaYF8rx8861hBO80SraY5GT0XQibWZWJSid0avzHGkDIZLImux2S5mXO0Hfct2QCw==",
|
"integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"side-channel": "^1.0.4"
|
"side-channel": "^1.0.4"
|
||||||
}
|
}
|
||||||
@ -24475,6 +24460,11 @@
|
|||||||
"punycode": "^2.1.1"
|
"punycode": "^2.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tr46": {
|
||||||
|
"version": "0.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||||
|
"integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
|
||||||
|
},
|
||||||
"traverse": {
|
"traverse": {
|
||||||
"version": "0.6.6",
|
"version": "0.6.6",
|
||||||
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
|
"resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.6.tgz",
|
||||||
@ -25378,14 +25368,14 @@
|
|||||||
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
|
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
|
||||||
},
|
},
|
||||||
"vscode-oniguruma": {
|
"vscode-oniguruma": {
|
||||||
"version": "1.5.1",
|
"version": "1.6.1",
|
||||||
"resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.5.1.tgz",
|
"resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.6.1.tgz",
|
||||||
"integrity": "sha512-JrBZH8DCC262TEYcYdeyZusiETu0Vli0xFgdRwNJjDcObcRjbmJP+IFcA3ScBwIXwgFHYKbAgfxtM/Cl+3Spjw=="
|
"integrity": "sha512-vc4WhSIaVpgJ0jJIejjYxPvURJavX6QG41vu0mGhqywMkQqulezEqEQ3cO3gc8GvcOpX6ycmKGqRoROEMBNXTQ=="
|
||||||
},
|
},
|
||||||
"vscode-textmate": {
|
"vscode-textmate": {
|
||||||
"version": "5.4.0",
|
"version": "5.5.0",
|
||||||
"resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.4.0.tgz",
|
"resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-5.5.0.tgz",
|
||||||
"integrity": "sha512-c0Q4zYZkcLizeYJ3hNyaVUM2AA8KDhNCA3JvXY8CeZSJuBdAy3bAvSbv46RClC4P3dSO9BdwhnKEx2zOo6vP/w=="
|
"integrity": "sha512-jToQkPGMNKn0eyKyitYeINJF0NoD240aYyKPIWJv5W2jfPt++jIRg0OSergubtGhbw6SoefkvBYEpX7TsfoSUQ=="
|
||||||
},
|
},
|
||||||
"warning": {
|
"warning": {
|
||||||
"version": "4.0.3",
|
"version": "4.0.3",
|
||||||
@ -25636,6 +25626,11 @@
|
|||||||
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz",
|
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.1.tgz",
|
||||||
"integrity": "sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ=="
|
"integrity": "sha512-3ux37gEX670UUphBF9AMCq8XM6iQ8Ac6A+DSRRjDoRBm1ufCkaCDdNVbaqq60PsEkdNlLKrGtv/YBP4EJXqNtQ=="
|
||||||
},
|
},
|
||||||
|
"webidl-conversions": {
|
||||||
|
"version": "3.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||||
|
"integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
|
||||||
|
},
|
||||||
"webpack": {
|
"webpack": {
|
||||||
"version": "4.46.0",
|
"version": "4.46.0",
|
||||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
|
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
|
||||||
@ -26416,6 +26411,15 @@
|
|||||||
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
|
||||||
"integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
|
"integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
|
||||||
},
|
},
|
||||||
|
"whatwg-url": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||||
|
"integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
|
||||||
|
"requires": {
|
||||||
|
"tr46": "~0.0.3",
|
||||||
|
"webidl-conversions": "^3.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"which": {
|
"which": {
|
||||||
"version": "1.3.1",
|
"version": "1.3.1",
|
||||||
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
|
||||||
@ -26783,11 +26787,6 @@
|
|||||||
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz",
|
||||||
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
|
"integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA=="
|
||||||
},
|
},
|
||||||
"xmldom": {
|
|
||||||
"version": "0.6.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.6.0.tgz",
|
|
||||||
"integrity": "sha512-iAcin401y58LckRZ0TkI4k0VSM1Qg0KGSc3i8rU+xrxe19A/BN1zHyVSJY7uoutVlaTSzYyk/v5AmkewAP7jtg=="
|
|
||||||
},
|
|
||||||
"xmlhttprequest-ssl": {
|
"xmlhttprequest-ssl": {
|
||||||
"version": "1.6.2",
|
"version": "1.6.2",
|
||||||
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.2.tgz",
|
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.2.tgz",
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@oceanprotocol/art": "^3.2.0",
|
"@oceanprotocol/art": "^3.2.0",
|
||||||
"axios": "^0.24.0",
|
"axios": "^0.25.0",
|
||||||
"classnames": "^2.3.1",
|
"classnames": "^2.3.1",
|
||||||
"gatsby": "^2.32.13",
|
"gatsby": "^2.32.13",
|
||||||
"gatsby-image": "^3.11.0",
|
"gatsby-image": "^3.11.0",
|
||||||
@ -38,7 +38,7 @@
|
|||||||
"gatsby-remark-images": "^3.11.1",
|
"gatsby-remark-images": "^3.11.1",
|
||||||
"gatsby-remark-responsive-iframe": "^2.11.0",
|
"gatsby-remark-responsive-iframe": "^2.11.0",
|
||||||
"gatsby-remark-smartypants": "^2.10.0",
|
"gatsby-remark-smartypants": "^2.10.0",
|
||||||
"gatsby-remark-vscode": "^3.3.0",
|
"gatsby-remark-vscode": "^3.3.1",
|
||||||
"gatsby-source-filesystem": "^2.11.1",
|
"gatsby-source-filesystem": "^2.11.1",
|
||||||
"gatsby-source-git": "^1.1.0",
|
"gatsby-source-git": "^1.1.0",
|
||||||
"gatsby-source-graphql": "^2.14.0",
|
"gatsby-source-graphql": "^2.14.0",
|
||||||
@ -62,11 +62,11 @@
|
|||||||
"shortid": "^2.2.16",
|
"shortid": "^2.2.16",
|
||||||
"slugify": "^1.6.5",
|
"slugify": "^1.6.5",
|
||||||
"smoothscroll-polyfill": "^0.4.4",
|
"smoothscroll-polyfill": "^0.4.4",
|
||||||
"swagger-client": "^3.18.0"
|
"swagger-client": "^3.18.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@svgr/webpack": "^5.5.0",
|
"@svgr/webpack": "^5.5.0",
|
||||||
"dotenv": "^10.0.0",
|
"dotenv": "^16.0.0",
|
||||||
"eslint": "^7.32.0",
|
"eslint": "^7.32.0",
|
||||||
"eslint-config-oceanprotocol": "^1.5.0",
|
"eslint-config-oceanprotocol": "^1.5.0",
|
||||||
"eslint-config-prettier": "^8.3.0",
|
"eslint-config-prettier": "^8.3.0",
|
||||||
|
Loading…
Reference in New Issue
Block a user