Add BASE_PATH argument to Dockerfile

Fixes #512, #517.

Change-Id: I0367f681aaf35af4a0f1b324fb0bdbef272e6db4
This commit is contained in:
Manuel Stahl 2024-04-24 16:00:55 +02:00 committed by Manuel Stahl
parent a490b7bc85
commit ac3b40b188
4 changed files with 22 additions and 13 deletions

View file

@ -6,6 +6,8 @@ lib/
node_modules/ node_modules/
electron_app/ electron_app/
karma-reports/ karma-reports/
.pnp.cjs
.pnp.loader.mjs
.idea/ .idea/
.tmp/ .tmp/
config.json* config.json*

View file

@ -1,6 +1,8 @@
# Builder # Builder
FROM node:lts as builder FROM node:lts as builder
LABEL org.opencontainers.image.url=https://github.com/Awesome-Technologies/synapse-admin org.opencontainers.image.source=https://github.com/Awesome-Technologies/synapse-admin LABEL org.opencontainers.image.url=https://github.com/Awesome-Technologies/synapse-admin org.opencontainers.image.source=https://github.com/Awesome-Technologies/synapse-admin
# Base path for synapse admin
ARG BASE_PATH=./
WORKDIR /src WORKDIR /src
@ -13,7 +15,7 @@ COPY package.json .yarnrc.yml yarn.lock ./
RUN yarn config set enableTelemetry 0 && yarn install --immutable --network-timeout=300000 RUN yarn config set enableTelemetry 0 && yarn install --immutable --network-timeout=300000
COPY . /src COPY . /src
RUN yarn build RUN yarn build --base=$BASE_PATH
# App # App
FROM nginx:stable-alpine FROM nginx:stable-alpine

View file

@ -80,6 +80,7 @@ You have three options:
args: args:
- BUILDKIT_CONTEXT_KEEP_GIT_DIR=1 - BUILDKIT_CONTEXT_KEEP_GIT_DIR=1
# - NODE_OPTIONS="--max_old_space_size=1024" # - NODE_OPTIONS="--max_old_space_size=1024"
# - BASE_PATH="/synapse-admin"
ports: ports:
- "8080:80" - "8080:80"
restart: unless-stopped restart: unless-stopped
@ -123,7 +124,13 @@ services:
### Serving Synapse-Admin on a different path ### Serving Synapse-Admin on a different path
We do not support directly changing the path where Synapse-Admin is served. Instead please use a reverse proxy if you need to move Synapse-Admin to a different base path. If you want to serve multiple applications with different paths on the same domain, you need a reverse proxy anyway. The path prefix where synapse-admin is served can only be changed during the build step.
If you downloaded the source code, use `yarn build --base=/my-prefix` to set a path prefix.
If you want to build your own Docker container, use the `BASE_PATH` argument.
We do not support directly changing the path where Synapse-Admin is served in the pre-built Docker container. Instead please use a reverse proxy if you need to move Synapse-Admin to a different base path. If you want to serve multiple applications with different paths on the same domain, you need a reverse proxy anyway.
Example for Traefik: Example for Traefik:
@ -139,20 +146,17 @@ services:
- 443:443 - 443:443
volumes: volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro
labels:
- "traefik.http.middlewares.admin.redirectregex.regex:^(.*)/admin/?"
- "traefik.http.middlewares.admin.redirectregex.replacement:$${1}/admin/"
- "traefik.http.middlewares.admin_path.replacepathregex.regex:^/admin/(.*)"
- "traefik.http.middlewares.admin_path.replacepathregex.replacement:/$1"
synapse-admin: synapse-admin:
image: awesometechnologies/synapse-admin:latest image: awesometechnologies/synapse-admin:latest
restart: unless-stopped restart: unless-stopped
labels: labels:
- "traefik.enable=true" - "traefik.enable=true"
- "traefik.http.routers.synapse-admin.priority=3"
- "traefik.http.routers.synapse-admin.rule=Host(`example.com`)&&PathPrefix(`/admin`)" - "traefik.http.routers.synapse-admin.rule=Host(`example.com`)&&PathPrefix(`/admin`)"
- "traefik.http.routers.synapse-admin.middlewares=admin,admin_path" - "traefik.http.routers.synapse-admin.middlewares=admin,admin_path"
- "traefik.http.middlewares.admin.redirectregex.regex=^(.*)/admin/?"
- "traefik.http.middlewares.admin.redirectregex.replacement=$${1}/admin/"
- "traefik.http.middlewares.admin_path.stripprefix.prefixes=/admin"
``` ```
## Screenshots ## Screenshots

View file

@ -15,6 +15,7 @@ services:
# if you're building on an architecture other than amd64, make sure # if you're building on an architecture other than amd64, make sure
# to define a maximum ram for node. otherwise the build will fail. # to define a maximum ram for node. otherwise the build will fail.
# - NODE_OPTIONS="--max_old_space_size=1024" # - NODE_OPTIONS="--max_old_space_size=1024"
# - BASE_PATH="/synapse-admin"
ports: ports:
- "8080:80" - "8080:80"
restart: unless-stopped restart: unless-stopped