20 changed files with 190 additions and 86 deletions
@ -0,0 +1,60 @@
@@ -0,0 +1,60 @@
|
||||
# Deploy Jumble with docker-compose.prod.yml (remote server) |
||||
|
||||
Workflow: **build and push locally** → **pull and run on the server**. |
||||
|
||||
## Local: build and push |
||||
|
||||
From the **repo root** on your machine: |
||||
|
||||
```bash |
||||
docker login # once, if needed |
||||
./scripts/build-and-push-prod.sh |
||||
``` |
||||
|
||||
This builds both images and pushes two tags each (`latest` and the version from `package.json`, e.g. `17.0.0`): |
||||
|
||||
- **Main app:** `silberengel/imwald-jumble` |
||||
- **NIP-66 monitor:** `silberengel/imwald-jumble-nip66-monitor` |
||||
|
||||
## Remote server: one-time setup |
||||
|
||||
1. **Docker** |
||||
Install Docker and Docker Compose (v2). |
||||
|
||||
2. **Clone the repo** (so you have `docker-compose.prod.yml`): |
||||
```bash |
||||
git clone <your-repo-url> jumble |
||||
cd jumble |
||||
``` |
||||
|
||||
3. **Optional env file** (e.g. for NIP-66 monitor): |
||||
```bash |
||||
# .env next to docker-compose.prod.yml |
||||
NIP66_MONITOR_NSEC=nsec1... |
||||
NIP66_MONITOR_NPUB=npub1... |
||||
``` |
||||
|
||||
## Remote server: pull and run |
||||
|
||||
After you’ve pushed from local: |
||||
|
||||
```bash |
||||
cd jumble |
||||
docker compose -f docker-compose.prod.yml pull |
||||
docker compose -f docker-compose.prod.yml up -d |
||||
``` |
||||
|
||||
The app is on **port 8089**. Both services use `:latest`; to pin a version, set the image in `docker-compose.prod.yml` to e.g. `silberengel/imwald-jumble:17.0.0` and `silberengel/imwald-jumble-nip66-monitor:17.0.0`. |
||||
|
||||
## Useful commands (server) |
||||
|
||||
```bash |
||||
# Status |
||||
docker compose -f docker-compose.prod.yml ps |
||||
|
||||
# Logs |
||||
docker compose -f docker-compose.prod.yml logs -f |
||||
|
||||
# Stop |
||||
docker compose -f docker-compose.prod.yml down |
||||
``` |
||||
@ -0,0 +1,25 @@
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/env bash |
||||
# Build main app and NIP-66 monitor images locally; push to silberengel/imwald-jumble and silberengel/imwald-jumble-nip66-monitor as :latest and :<version from package.json>. |
||||
# Run from repo root. Requires: docker, docker login. On the server you then pull and run docker-compose.prod.yml. |
||||
set -e |
||||
|
||||
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" |
||||
cd "$REPO_ROOT" |
||||
|
||||
VERSION="$(node -p "require('./package.json').version")" |
||||
IMAGE_APP="silberengel/imwald-jumble" |
||||
IMAGE_MONITOR="silberengel/imwald-jumble-nip66-monitor" |
||||
|
||||
echo "Building main app (version: $VERSION)" |
||||
docker build -t "$IMAGE_APP:latest" -t "$IMAGE_APP:$VERSION" . |
||||
|
||||
echo "Building NIP-66 monitor (version: $VERSION)" |
||||
docker build -t "$IMAGE_MONITOR:latest" -t "$IMAGE_MONITOR:$VERSION" ./nip66-cron |
||||
|
||||
echo "Pushing $IMAGE_APP and $IMAGE_MONITOR" |
||||
docker push "$IMAGE_APP:latest" |
||||
docker push "$IMAGE_APP:$VERSION" |
||||
docker push "$IMAGE_MONITOR:latest" |
||||
docker push "$IMAGE_MONITOR:$VERSION" |
||||
|
||||
echo "Done. On the server: docker compose -f docker-compose.prod.yml pull && docker compose -f docker-compose.prod.yml up -d" |
||||
Loading…
Reference in new issue