mirror of
https://github.com/PeWu/topola-viewer.git
synced 2026-05-26 15:16:14 +00:00
Added examples and documentation for the published docker image
This commit is contained in:
32
README.md
32
README.md
@@ -158,6 +158,38 @@ This may be combined with the other build environment variables described above.
|
|||||||
|
|
||||||
The [topola-webpack](https://github.com/develancer/topola-webpack) tool can build a Topola Genealogy Viewer package bundled together with a GEDCOM file.
|
The [topola-webpack](https://github.com/develancer/topola-webpack) tool can build a Topola Genealogy Viewer package bundled together with a GEDCOM file.
|
||||||
|
|
||||||
|
## Docker Container Deployment
|
||||||
|
|
||||||
|
Topola Viewer can be run locally or deployed to standard cloud environments using Docker.
|
||||||
|
|
||||||
|
### Running Topola Viewer
|
||||||
|
To pull and run Topola Viewer:
|
||||||
|
```bash
|
||||||
|
docker run -d -p 8080:8080 ghcr.io/pewu/topola-viewer:latest
|
||||||
|
```
|
||||||
|
Open your web browser and go to `http://localhost:8080` to upload your family tree files locally.
|
||||||
|
|
||||||
|
### Running with Your Own Data (Zero-Build Run)
|
||||||
|
You can serve a standalone, pre-loaded family tree with zero compilation by mounting your family tree data (a `.ged` file or a zipped `.gdz` archive containing photos) directly into the running container:
|
||||||
|
```bash
|
||||||
|
docker run -d -p 8080:8080 \
|
||||||
|
-e STATIC_URL=my_family.gdz \
|
||||||
|
-v ./my_family.gdz:/app/public/my_family.gdz \
|
||||||
|
ghcr.io/pewu/topola-viewer:latest
|
||||||
|
```
|
||||||
|
|
||||||
|
### Building the Base Image Locally
|
||||||
|
To build the base image from source:
|
||||||
|
```bash
|
||||||
|
docker build -t topola-viewer -f docker/Dockerfile .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Ready-To-Use Standalone Templates
|
||||||
|
For creating completely self-contained Docker images that bundle your genealogy data and serve it instantly, see these pre-configured examples:
|
||||||
|
|
||||||
|
1. **[Simple Standalone Tree](docker/examples/simple/)**: Demonstrates how to package and pre-load a `.ged` file directly inside a custom image.
|
||||||
|
2. **[Standalone Tree with Photos](docker/examples/photos/)**: Packages your family tree and a `photos/` folder into a valid `.gdz` archive on-the-fly.
|
||||||
|
|
||||||
## Additional options
|
## Additional options
|
||||||
|
|
||||||
### `handleCors`
|
### `handleCors`
|
||||||
|
|||||||
13
docker/examples/photos/Dockerfile
Normal file
13
docker/examples/photos/Dockerfile
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Stage 1: Multi-stage helper to zip GEDCOM & photos together preserving directory structure
|
||||||
|
FROM alpine:latest AS zipper
|
||||||
|
RUN apk add --no-cache zip
|
||||||
|
WORKDIR /build
|
||||||
|
COPY family.ged ./
|
||||||
|
COPY photos/ ./photos/
|
||||||
|
# Zip contents relative to build root to preserve directories as referenced in GEDCOM
|
||||||
|
RUN zip -r family.gdz family.ged photos/
|
||||||
|
|
||||||
|
# Stage 2: Load the zip file into the official container
|
||||||
|
FROM ghcr.io/pewu/topola-viewer:latest
|
||||||
|
COPY --from=zipper /build/family.gdz /app/public/family.gdz
|
||||||
|
ENV STATIC_URL=family.gdz
|
||||||
18
docker/examples/photos/README.md
Normal file
18
docker/examples/photos/README.md
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Standalone Zipped Family Tree Container with Photos
|
||||||
|
|
||||||
|
This example leverages a multi-stage Docker build to automatically compress your `.ged` file and `photos/` folder into a secure `.gdz` archive on-the-fly, preserving your image directory path structures.
|
||||||
|
|
||||||
|
## Structure
|
||||||
|
* Place your `family.ged` file here.
|
||||||
|
* Place your photos also in this directory, or inside a `photos/` folder in this directory. If you put the photos in the `photos/` directory, make sure your GEDCOM file contains file references containing the `photos/` prefix. See the sample [family.ged](family.ged).
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
|
||||||
|
1. Build your custom container:
|
||||||
|
```bash
|
||||||
|
docker build -t my-photo-tree .
|
||||||
|
```
|
||||||
|
2. Run your container:
|
||||||
|
```bash
|
||||||
|
docker run -d -p 8080:8080 my-photo-tree
|
||||||
|
```
|
||||||
32
docker/examples/photos/family.ged
Normal file
32
docker/examples/photos/family.ged
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
0 HEAD
|
||||||
|
1 SOUR GENJ
|
||||||
|
2 VERS 1.0
|
||||||
|
1 GEDC
|
||||||
|
2 VERS 5.5.1
|
||||||
|
2 FORM Lineage-Linked
|
||||||
|
1 CHAR UTF-8
|
||||||
|
0 @I1@ INDI
|
||||||
|
1 NAME John /Doe/
|
||||||
|
1 SEX M
|
||||||
|
1 OBJE
|
||||||
|
2 FILE photos/I1.jpg
|
||||||
|
3 FORM JPG
|
||||||
|
3 TITL John Doe Photo
|
||||||
|
1 FAMS @F1@
|
||||||
|
0 @I2@ INDI
|
||||||
|
1 NAME Jane /Smith/
|
||||||
|
1 SEX F
|
||||||
|
1 OBJE
|
||||||
|
2 FILE photos/I2.jpg
|
||||||
|
3 FORM JPG
|
||||||
|
3 TITL Jane Smith Photo
|
||||||
|
1 FAMS @F1@
|
||||||
|
0 @F1@ FAM
|
||||||
|
1 HUSB @I1@
|
||||||
|
1 WIFE @I2@
|
||||||
|
1 CHIL @I3@
|
||||||
|
0 @I3@ INDI
|
||||||
|
1 NAME Bobby /Doe/
|
||||||
|
1 SEX M
|
||||||
|
1 FAMC @F1@
|
||||||
|
0 TRLR
|
||||||
BIN
docker/examples/photos/photos/I1.jpg
Normal file
BIN
docker/examples/photos/photos/I1.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 20 KiB |
BIN
docker/examples/photos/photos/I2.jpg
Normal file
BIN
docker/examples/photos/photos/I2.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 19 KiB |
8
docker/examples/simple/Dockerfile
Normal file
8
docker/examples/simple/Dockerfile
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Start from the official compiled container
|
||||||
|
FROM ghcr.io/pewu/topola-viewer:latest
|
||||||
|
|
||||||
|
# Copy the unzipped GEDCOM file directly into public folder
|
||||||
|
COPY family.ged /app/public/family.ged
|
||||||
|
|
||||||
|
# Configure server to pre-load this raw GEDCOM file
|
||||||
|
ENV STATIC_URL=family.ged
|
||||||
15
docker/examples/simple/README.md
Normal file
15
docker/examples/simple/README.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# Standalone GEDCOM Container Example
|
||||||
|
|
||||||
|
This example builds a self-contained image that hosts a single `.ged` file directly (no photos).
|
||||||
|
|
||||||
|
## Instructions
|
||||||
|
|
||||||
|
1. Put your GEDCOM file in this directory and name it `family.ged`.
|
||||||
|
2. Build your custom container:
|
||||||
|
```bash
|
||||||
|
docker build -t my-simple-tree .
|
||||||
|
```
|
||||||
|
3. Run your container:
|
||||||
|
```bash
|
||||||
|
docker run -d -p 8080:8080 my-simple-tree
|
||||||
|
```
|
||||||
37
docker/examples/simple/family.ged
Normal file
37
docker/examples/simple/family.ged
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
0 HEAD
|
||||||
|
1 SOUR GENJ
|
||||||
|
2 VERS 1.0
|
||||||
|
1 GEDC
|
||||||
|
2 VERS 5.5.1
|
||||||
|
2 FORM Lineage-Linked
|
||||||
|
1 CHAR UTF-8
|
||||||
|
0 @I1@ INDI
|
||||||
|
1 NAME John /Doe/
|
||||||
|
1 SEX M
|
||||||
|
1 FAMS @F1@
|
||||||
|
1 FAMC @F2@
|
||||||
|
0 @I2@ INDI
|
||||||
|
1 NAME Jane /Smith/
|
||||||
|
1 SEX F
|
||||||
|
1 FAMS @F1@
|
||||||
|
0 @F1@ FAM
|
||||||
|
1 HUSB @I1@
|
||||||
|
1 WIFE @I2@
|
||||||
|
1 CHIL @I3@
|
||||||
|
1 CHIL @I4@
|
||||||
|
0 @I3@ INDI
|
||||||
|
1 NAME Bobby /Doe/
|
||||||
|
1 SEX M
|
||||||
|
1 FAMC @F1@
|
||||||
|
0 @I4@ INDI
|
||||||
|
1 NAME Sally /Doe/
|
||||||
|
1 SEX F
|
||||||
|
1 FAMC @F1@
|
||||||
|
0 @I5@ INDI
|
||||||
|
1 NAME Grandpa /Doe/
|
||||||
|
1 SEX M
|
||||||
|
1 FAMS @F2@
|
||||||
|
0 @F2@ FAM
|
||||||
|
1 HUSB @I5@
|
||||||
|
1 CHIL @I1@
|
||||||
|
0 TRLR
|
||||||
Reference in New Issue
Block a user