Compare commits
2 commits
304a6290c8
...
09347b9193
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
09347b9193 | ||
|
|
534dea7317 |
5 changed files with 387 additions and 48 deletions
|
|
@ -38,3 +38,10 @@ VITE_PROXYSCOTCH_ACCESS_TOKEN=
|
||||||
|
|
||||||
# Set to `true` for subpath based access
|
# Set to `true` for subpath based access
|
||||||
ENABLE_SUBPATH_BASED_ACCESS=false
|
ENABLE_SUBPATH_BASED_ACCESS=false
|
||||||
|
|
||||||
|
#-----------------------Docker Image Config-------------------------#
|
||||||
|
# Used by docker-compose.prod.yml and Makefile image targets.
|
||||||
|
API_CLIENT_REGISTRY=forge.lclr.dev
|
||||||
|
API_CLIENT_NAMESPACE=thibaud-lclr
|
||||||
|
API_CLIENT_IMAGE_PREFIX=api-client
|
||||||
|
API_CLIENT_TAG=latest
|
||||||
|
|
|
||||||
54
Makefile
54
Makefile
|
|
@ -1,20 +1,64 @@
|
||||||
COMPOSE := docker compose
|
COMPOSE := docker compose
|
||||||
ENV_FILE := .env
|
ENV_FILE := .env
|
||||||
ENV_EXAMPLE := .env.example
|
ENV_EXAMPLE := .env.example
|
||||||
|
PROD_COMPOSE := docker-compose.prod.yml
|
||||||
|
|
||||||
.PHONY: up down logs ps ensure-env
|
REGISTRY ?= forge.lclr.dev
|
||||||
|
NAMESPACE ?= thibaud-lclr
|
||||||
|
IMAGE_PREFIX ?= api-client
|
||||||
|
TAG ?= latest
|
||||||
|
|
||||||
up: ensure-env
|
BACKEND_IMAGE := $(REGISTRY)/$(NAMESPACE)/$(IMAGE_PREFIX)-backend:$(TAG)
|
||||||
|
APP_IMAGE := $(REGISTRY)/$(NAMESPACE)/$(IMAGE_PREFIX)-app:$(TAG)
|
||||||
|
SH_ADMIN_IMAGE := $(REGISTRY)/$(NAMESPACE)/$(IMAGE_PREFIX)-sh-admin:$(TAG)
|
||||||
|
|
||||||
|
PROD_ENV := API_CLIENT_REGISTRY=$(REGISTRY) API_CLIENT_NAMESPACE=$(NAMESPACE) API_CLIENT_IMAGE_PREFIX=$(IMAGE_PREFIX) API_CLIENT_TAG=$(TAG)
|
||||||
|
|
||||||
|
.PHONY: up dev-up prod-up down dev-down prod-down logs dev-logs prod-logs ps dev-ps prod-ps ensure-env docker-build-images docker-push-images docker-build-push-images
|
||||||
|
|
||||||
|
up: dev-up
|
||||||
|
|
||||||
|
dev-up: ensure-env
|
||||||
$(COMPOSE) up -d --build
|
$(COMPOSE) up -d --build
|
||||||
|
|
||||||
down:
|
prod-up: ensure-env
|
||||||
|
$(PROD_ENV) $(COMPOSE) -f $(PROD_COMPOSE) up -d
|
||||||
|
|
||||||
|
down: dev-down
|
||||||
|
|
||||||
|
dev-down:
|
||||||
$(COMPOSE) down
|
$(COMPOSE) down
|
||||||
|
|
||||||
logs:
|
prod-down:
|
||||||
|
$(PROD_ENV) $(COMPOSE) -f $(PROD_COMPOSE) down
|
||||||
|
|
||||||
|
logs: dev-logs
|
||||||
|
|
||||||
|
dev-logs:
|
||||||
$(COMPOSE) logs -f
|
$(COMPOSE) logs -f
|
||||||
|
|
||||||
ps:
|
prod-logs:
|
||||||
|
$(PROD_ENV) $(COMPOSE) -f $(PROD_COMPOSE) logs -f
|
||||||
|
|
||||||
|
ps: dev-ps
|
||||||
|
|
||||||
|
dev-ps:
|
||||||
$(COMPOSE) ps
|
$(COMPOSE) ps
|
||||||
|
|
||||||
|
prod-ps:
|
||||||
|
$(PROD_ENV) $(COMPOSE) -f $(PROD_COMPOSE) ps
|
||||||
|
|
||||||
ensure-env:
|
ensure-env:
|
||||||
@test -f $(ENV_FILE) || cp $(ENV_EXAMPLE) $(ENV_FILE)
|
@test -f $(ENV_FILE) || cp $(ENV_EXAMPLE) $(ENV_FILE)
|
||||||
|
|
||||||
|
docker-build-images:
|
||||||
|
docker build --file prod.Dockerfile --target backend --tag $(BACKEND_IMAGE) .
|
||||||
|
docker build --file prod.Dockerfile --target app --tag $(APP_IMAGE) .
|
||||||
|
docker build --file prod.Dockerfile --target sh_admin --tag $(SH_ADMIN_IMAGE) .
|
||||||
|
|
||||||
|
docker-push-images:
|
||||||
|
docker push $(BACKEND_IMAGE)
|
||||||
|
docker push $(APP_IMAGE)
|
||||||
|
docker push $(SH_ADMIN_IMAGE)
|
||||||
|
|
||||||
|
docker-build-push-images: docker-build-images docker-push-images
|
||||||
|
|
|
||||||
216
README.md
216
README.md
|
|
@ -1,78 +1,222 @@
|
||||||
# Hoppscotch AIO
|
# Hoppscotch Self-Hosted
|
||||||
|
|
||||||
Fork interne de Hoppscotch réduit au déploiement self-host all-in-one pour
|
Fork interne de Hoppscotch pour déploiement self-host.
|
||||||
Coolify.
|
|
||||||
|
|
||||||
## Contenu conservé
|
## Contenu
|
||||||
|
|
||||||
- Application web self-host : `packages/hoppscotch-selfhost-web`
|
- App web : `packages/hoppscotch-selfhost-web`
|
||||||
- Backend NestJS et Prisma : `packages/hoppscotch-backend`
|
- Backend NestJS et Prisma : `packages/hoppscotch-backend`
|
||||||
- Admin self-host : `packages/hoppscotch-sh-admin`
|
- Admin : `packages/hoppscotch-sh-admin`
|
||||||
- Packages partagés requis au build : `hoppscotch-common`, `hoppscotch-data`,
|
- Image Docker multi-target : `prod.Dockerfile`
|
||||||
`hoppscotch-kernel`, `hoppscotch-js-sandbox`, `codemirror-lang-graphql`
|
- Compose dev live : `docker-compose.yml`
|
||||||
- Image Docker de production : `prod.Dockerfile`
|
- Compose prod image-only : `docker-compose.prod.yml`
|
||||||
- Déploiement Compose AIO : `docker-compose.yml`
|
|
||||||
|
|
||||||
## Déploiement Coolify
|
## Images Docker
|
||||||
|
|
||||||
Utiliser `docker-compose.yml` comme source Compose.
|
Les images sont buildées en local puis poussées à la main sur le registry.
|
||||||
|
|
||||||
Services créés :
|
Images utilisées en prod :
|
||||||
|
|
||||||
- `hoppscotch-aio` : image AIO construite depuis `prod.Dockerfile`, target
|
```text
|
||||||
`aio`
|
forge.lclr.dev/thibaud-lclr/api-client-backend:latest
|
||||||
- `hoppscotch-db` : PostgreSQL 15 avec volume persistant
|
forge.lclr.dev/thibaud-lclr/api-client-app:latest
|
||||||
|
forge.lclr.dev/thibaud-lclr/api-client-sh-admin:latest
|
||||||
|
```
|
||||||
|
|
||||||
Ports exposés :
|
Targets Docker :
|
||||||
|
|
||||||
- `3080` -> Caddy AIO HTTP
|
```text
|
||||||
- `3000` -> app web
|
backend -> backend + Caddy backend
|
||||||
- `3100` -> admin
|
app -> app web + webapp-server + Caddy app
|
||||||
- `3170` -> backend
|
sh_admin -> admin + Caddy admin
|
||||||
- `3200` -> serveur de bundles webapp
|
```
|
||||||
|
|
||||||
Variables minimales à vérifier dans Coolify :
|
## Préparer l'environnement
|
||||||
|
|
||||||
|
Créer `.env` si besoin :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make ensure-env
|
||||||
|
```
|
||||||
|
|
||||||
|
Variables importantes :
|
||||||
|
|
||||||
```env
|
```env
|
||||||
POSTGRES_PASSWORD=<mot-de-passe-fort>
|
POSTGRES_PASSWORD=<mot-de-passe-fort>
|
||||||
POSTGRES_DB=hoppscotch
|
POSTGRES_DB=hoppscotch
|
||||||
DATA_ENCRYPTION_KEY=<chaine-de-32-caracteres>
|
DATA_ENCRYPTION_KEY=<chaine-de-32-caracteres>
|
||||||
|
|
||||||
VITE_BASE_URL=https://<domaine-app>
|
VITE_BASE_URL=https://<domaine-app>
|
||||||
VITE_SHORTCODE_BASE_URL=https://<domaine-app>
|
VITE_SHORTCODE_BASE_URL=https://<domaine-app>
|
||||||
VITE_ADMIN_URL=https://<domaine-admin>
|
VITE_ADMIN_URL=https://<domaine-admin>
|
||||||
VITE_BACKEND_GQL_URL=https://<domaine-backend>/graphql
|
VITE_BACKEND_GQL_URL=https://<domaine-backend>/graphql
|
||||||
VITE_BACKEND_WS_URL=wss://<domaine-backend>/graphql
|
VITE_BACKEND_WS_URL=wss://<domaine-backend>/graphql
|
||||||
VITE_BACKEND_API_URL=https://<domaine-backend>/v1
|
VITE_BACKEND_API_URL=https://<domaine-backend>/v1
|
||||||
|
|
||||||
WHITELISTED_ORIGINS=https://<domaine-app>,https://<domaine-admin>
|
WHITELISTED_ORIGINS=https://<domaine-app>,https://<domaine-admin>
|
||||||
TRUST_PROXY=true
|
TRUST_PROXY=true
|
||||||
```
|
```
|
||||||
|
|
||||||
`DATABASE_URL` est généré par `docker-compose.yml` pour la base PostgreSQL
|
Pour le compose prod local, ces variables pilotent les images :
|
||||||
incluse. Si le déploiement passe plus tard sur une base externe, adapter
|
|
||||||
explicitement le service `hoppscotch-aio`.
|
|
||||||
|
|
||||||
## Local
|
```env
|
||||||
|
API_CLIENT_REGISTRY=forge.lclr.dev
|
||||||
Créer le fichier `.env` si nécessaire :
|
API_CLIENT_NAMESPACE=thibaud-lclr
|
||||||
|
API_CLIENT_IMAGE_PREFIX=api-client
|
||||||
```sh
|
API_CLIENT_TAG=latest
|
||||||
cp .env.example .env
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Démarrer l'AIO local :
|
## Build et push registry
|
||||||
|
|
||||||
|
Se connecter au registry :
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker compose up -d --build
|
docker login forge.lclr.dev
|
||||||
|
```
|
||||||
|
|
||||||
|
Builder les trois images en `latest` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make docker-build-images TAG=latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Pousser les trois images :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make docker-push-images TAG=latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Faire les deux en une commande :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make docker-build-push-images TAG=latest
|
||||||
|
```
|
||||||
|
|
||||||
|
Pour publier un tag de test :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make docker-build-push-images TAG=fork-v1.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
## Déploiement prod
|
||||||
|
|
||||||
|
La prod utilise uniquement `docker-compose.prod.yml`.
|
||||||
|
|
||||||
|
Ce compose ne contient pas de `build:`. Il tire les images du registry.
|
||||||
|
|
||||||
|
Démarrer avec le tag `latest` :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make prod-up
|
||||||
|
```
|
||||||
|
|
||||||
|
Démarrer avec un autre tag :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make prod-up TAG=fork-v1.0.0
|
||||||
```
|
```
|
||||||
|
|
||||||
Voir les logs :
|
Voir les logs :
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker compose logs -f
|
make prod-logs
|
||||||
|
```
|
||||||
|
|
||||||
|
Voir l'état des services :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make prod-ps
|
||||||
```
|
```
|
||||||
|
|
||||||
Arrêter :
|
Arrêter :
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker compose down
|
make prod-down
|
||||||
|
```
|
||||||
|
|
||||||
|
Services prod :
|
||||||
|
|
||||||
|
- `hoppscotch-db` : PostgreSQL 15 avec volume persistant
|
||||||
|
- `hoppscotch-backend` : backend + migrations Prisma au démarrage
|
||||||
|
- `hoppscotch-app` : app web self-host
|
||||||
|
- `hoppscotch-sh-admin` : admin
|
||||||
|
|
||||||
|
Ports prod :
|
||||||
|
|
||||||
|
- `3000` : app web
|
||||||
|
- `3100` : admin
|
||||||
|
- `3170` : backend
|
||||||
|
- `3200` : serveur de bundles webapp
|
||||||
|
|
||||||
|
## Développement local
|
||||||
|
|
||||||
|
Le compose dev est `docker-compose.yml`.
|
||||||
|
|
||||||
|
Il build une image de base locale et monte le repo en volume.
|
||||||
|
|
||||||
|
Démarrer :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make dev-up
|
||||||
|
```
|
||||||
|
|
||||||
|
Alias :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make up
|
||||||
|
```
|
||||||
|
|
||||||
|
Voir les logs :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make dev-logs
|
||||||
|
```
|
||||||
|
|
||||||
|
Voir l'état :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make dev-ps
|
||||||
|
```
|
||||||
|
|
||||||
|
Arrêter :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make dev-down
|
||||||
|
```
|
||||||
|
|
||||||
|
Services dev :
|
||||||
|
|
||||||
|
- `hoppscotch-db`
|
||||||
|
- `hoppscotch-dev-deps` : installe les dépendances dans un volume Docker
|
||||||
|
- `hoppscotch-backend` : `pnpm run start:dev`
|
||||||
|
- `hoppscotch-app` : Vite sur `3000`
|
||||||
|
- `hoppscotch-sh-admin` : Vite sur `3100`
|
||||||
|
|
||||||
|
Volumes dev :
|
||||||
|
|
||||||
|
- le repo est monté dans `/usr/src/app`
|
||||||
|
- `node_modules` est dans un volume Docker
|
||||||
|
- le store pnpm est dans un volume Docker
|
||||||
|
|
||||||
|
## Procédure de release courte
|
||||||
|
|
||||||
|
1. Mettre à jour le code.
|
||||||
|
2. Vérifier localement.
|
||||||
|
3. Builder et pousser :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make docker-build-push-images TAG=latest
|
||||||
|
```
|
||||||
|
|
||||||
|
4. Déployer :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make prod-up
|
||||||
|
```
|
||||||
|
|
||||||
|
5. Contrôler :
|
||||||
|
|
||||||
|
```sh
|
||||||
|
make prod-ps
|
||||||
|
make prod-logs
|
||||||
```
|
```
|
||||||
|
|
|
||||||
67
docker-compose.prod.yml
Normal file
67
docker-compose.prod.yml
Normal file
|
|
@ -0,0 +1,67 @@
|
||||||
|
services:
|
||||||
|
hoppscotch-db:
|
||||||
|
image: postgres:15
|
||||||
|
user: postgres
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-testpass}
|
||||||
|
POSTGRES_DB: ${POSTGRES_DB:-hoppscotch}
|
||||||
|
volumes:
|
||||||
|
- hoppscotch-db:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"sh -c 'pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}'",
|
||||||
|
]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
hoppscotch-backend:
|
||||||
|
container_name: hoppscotch-backend
|
||||||
|
restart: unless-stopped
|
||||||
|
image: ${API_CLIENT_REGISTRY:-forge.lclr.dev}/${API_CLIENT_NAMESPACE:-thibaud-lclr}/${API_CLIENT_IMAGE_PREFIX:-api-client}-backend:${API_CLIENT_TAG:-latest}
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
environment:
|
||||||
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-testpass}@hoppscotch-db:5432/${POSTGRES_DB:-hoppscotch}
|
||||||
|
depends_on:
|
||||||
|
hoppscotch-db:
|
||||||
|
condition: service_healthy
|
||||||
|
command:
|
||||||
|
[
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
"pnpm exec prisma migrate deploy && node prod_run.mjs",
|
||||||
|
]
|
||||||
|
ports:
|
||||||
|
- "3170:3170"
|
||||||
|
|
||||||
|
hoppscotch-app:
|
||||||
|
container_name: hoppscotch-app
|
||||||
|
restart: unless-stopped
|
||||||
|
image: ${API_CLIENT_REGISTRY:-forge.lclr.dev}/${API_CLIENT_NAMESPACE:-thibaud-lclr}/${API_CLIENT_IMAGE_PREFIX:-api-client}-app:${API_CLIENT_TAG:-latest}
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
depends_on:
|
||||||
|
hoppscotch-backend:
|
||||||
|
condition: service_started
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
- "3200:3200"
|
||||||
|
|
||||||
|
hoppscotch-sh-admin:
|
||||||
|
container_name: hoppscotch-sh-admin
|
||||||
|
restart: unless-stopped
|
||||||
|
image: ${API_CLIENT_REGISTRY:-forge.lclr.dev}/${API_CLIENT_NAMESPACE:-thibaud-lclr}/${API_CLIENT_IMAGE_PREFIX:-api-client}-sh-admin:${API_CLIENT_TAG:-latest}
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
depends_on:
|
||||||
|
hoppscotch-backend:
|
||||||
|
condition: service_started
|
||||||
|
ports:
|
||||||
|
- "3100:3100"
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
hoppscotch-db:
|
||||||
|
|
@ -18,13 +18,29 @@ services:
|
||||||
timeout: 5s
|
timeout: 5s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
|
||||||
hoppscotch-aio:
|
hoppscotch-dev-deps:
|
||||||
container_name: hoppscotch-aio
|
build:
|
||||||
|
dockerfile: prod.Dockerfile
|
||||||
|
context: .
|
||||||
|
target: base_builder
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
environment:
|
||||||
|
DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD:-testpass}@hoppscotch-db:5432/${POSTGRES_DB:-hoppscotch}
|
||||||
|
working_dir: /usr/src/app
|
||||||
|
command: ["pnpm", "install", "-f", "--prefer-offline"]
|
||||||
|
volumes:
|
||||||
|
- .:/usr/src/app
|
||||||
|
- hoppscotch-node-modules:/usr/src/app/node_modules
|
||||||
|
- hoppscotch-pnpm-store:/root/.local/share/pnpm/store/v10
|
||||||
|
|
||||||
|
hoppscotch-backend:
|
||||||
|
container_name: hoppscotch-backend-dev
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
build:
|
build:
|
||||||
dockerfile: prod.Dockerfile
|
dockerfile: prod.Dockerfile
|
||||||
context: .
|
context: .
|
||||||
target: aio
|
target: base_builder
|
||||||
env_file:
|
env_file:
|
||||||
- ./.env
|
- ./.env
|
||||||
environment:
|
environment:
|
||||||
|
|
@ -32,18 +48,79 @@ services:
|
||||||
depends_on:
|
depends_on:
|
||||||
hoppscotch-db:
|
hoppscotch-db:
|
||||||
condition: service_healthy
|
condition: service_healthy
|
||||||
|
hoppscotch-dev-deps:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
working_dir: /usr/src/app/packages/hoppscotch-backend
|
||||||
command:
|
command:
|
||||||
[
|
[
|
||||||
"sh",
|
"sh",
|
||||||
"-c",
|
"-c",
|
||||||
"pnpm exec prisma migrate deploy && node /usr/src/app/aio_run.mjs",
|
"pnpm exec prisma migrate deploy && pnpm run start:dev",
|
||||||
]
|
]
|
||||||
|
volumes:
|
||||||
|
- .:/usr/src/app
|
||||||
|
- hoppscotch-node-modules:/usr/src/app/node_modules
|
||||||
|
- hoppscotch-pnpm-store:/root/.local/share/pnpm/store/v10
|
||||||
|
ports:
|
||||||
|
- "3170:3170"
|
||||||
|
|
||||||
|
hoppscotch-app:
|
||||||
|
container_name: hoppscotch-app-dev
|
||||||
|
restart: unless-stopped
|
||||||
|
build:
|
||||||
|
dockerfile: prod.Dockerfile
|
||||||
|
context: .
|
||||||
|
target: base_builder
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
depends_on:
|
||||||
|
hoppscotch-dev-deps:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
hoppscotch-backend:
|
||||||
|
condition: service_started
|
||||||
|
working_dir: /usr/src/app/packages/hoppscotch-selfhost-web
|
||||||
|
command:
|
||||||
|
[
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
"pnpm run dev:gql-codegen & pnpm exec vite --host 0.0.0.0 --port 3000",
|
||||||
|
]
|
||||||
|
volumes:
|
||||||
|
- .:/usr/src/app
|
||||||
|
- hoppscotch-node-modules:/usr/src/app/node_modules
|
||||||
|
- hoppscotch-pnpm-store:/root/.local/share/pnpm/store/v10
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000"
|
- "3000:3000"
|
||||||
|
|
||||||
|
hoppscotch-sh-admin:
|
||||||
|
container_name: hoppscotch-sh-admin-dev
|
||||||
|
restart: unless-stopped
|
||||||
|
build:
|
||||||
|
dockerfile: prod.Dockerfile
|
||||||
|
context: .
|
||||||
|
target: base_builder
|
||||||
|
env_file:
|
||||||
|
- ./.env
|
||||||
|
depends_on:
|
||||||
|
hoppscotch-dev-deps:
|
||||||
|
condition: service_completed_successfully
|
||||||
|
hoppscotch-backend:
|
||||||
|
condition: service_started
|
||||||
|
working_dir: /usr/src/app/packages/hoppscotch-sh-admin
|
||||||
|
command:
|
||||||
|
[
|
||||||
|
"sh",
|
||||||
|
"-c",
|
||||||
|
"pnpm run dev:gql-codegen & pnpm exec vite --host 0.0.0.0 --port 3100",
|
||||||
|
]
|
||||||
|
volumes:
|
||||||
|
- .:/usr/src/app
|
||||||
|
- hoppscotch-node-modules:/usr/src/app/node_modules
|
||||||
|
- hoppscotch-pnpm-store:/root/.local/share/pnpm/store/v10
|
||||||
|
ports:
|
||||||
- "3100:3100"
|
- "3100:3100"
|
||||||
- "3170:3170"
|
|
||||||
- "3200:3200"
|
|
||||||
- "3080:80"
|
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
hoppscotch-db:
|
hoppscotch-db:
|
||||||
|
hoppscotch-node-modules:
|
||||||
|
hoppscotch-pnpm-store:
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue