Allow exposing graphdb and phpmyadmin via config

This commit is contained in:
Tom Wiesing 2023-11-02 13:31:54 +01:00
parent 9f7ec20593
commit a90c68bf5e
No known key found for this signature in database
8 changed files with 139 additions and 14 deletions

View file

@ -5,7 +5,10 @@ import (
"path/filepath"
"time"
"github.com/FAU-CDI/wisski-distillery/internal/config"
"github.com/FAU-CDI/wisski-distillery/internal/dis/component"
"github.com/tkw1536/pkglib/yamlx"
"gopkg.in/yaml.v3"
)
type Triplestore struct {
@ -43,6 +46,24 @@ func (ts *Triplestore) Stack() component.StackWithResources {
EnvContext: map[string]string{
"DOCKER_NETWORK_NAME": ts.Config.Docker.Network(),
"HOST_RULE": ts.Config.HTTP.HostRule(config.TriplestoreDomain.Domain()),
"HTTPS_ENABLED": ts.Config.HTTP.HTTPSEnabledEnv(),
},
ComposerYML: func(root *yaml.Node) (*yaml.Node, error) {
// ts is exposed => everything is fine
if ts.Config.HTTP.TS.Set && ts.Config.HTTP.TS.Value {
return root, nil
}
// not exposed => remove the appropriate labels
if err := yamlx.ReplaceWith(root, []string{
"eu.wiss-ki.barrel.distillery=${DOCKER_NETWORK_NAME}",
}, "services", "triplestore", "labels"); err != nil {
return nil, err
}
return root, nil
},
MakeDirs: []string{

View file

@ -51,7 +51,7 @@ EXPOSE 7200
# setup a healthcheck, that checks if the server is up.
RUN apt-get update && apt-get install -y curl
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail 127.0.0.1:7200/rest/repositories || exit 1
# HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail 127.0.0.1:7200/rest/repositories || exit 1
# Add volumes for data, work and logs as these might be accessible from the outside.
# To add your own configuration, manually mount a config file into /opt/graphdb/work

View file

@ -15,6 +15,19 @@ services:
GDB_HEAP_SIZE: 16G
labels:
- "eu.wiss-ki.barrel.distillery=${DOCKER_NETWORK_NAME}"
# expose the triplestore (removed when disabled in global config)
- "traefik.enable=True"
- "traefik.http.routers.core_ts.rule=${HOST_RULE}"
- "traefik.http.routers.core_ts.tls=${HTTPS_ENABLED}"
- "traefik.http.routers.core_ts.tls.certresolver=distillery"
- "traefik.http.routers.core_ts.middlewares=core_ts@docker"
- "traefik.http.services.core_ts.loadbalancer.server.port=7200"
- "traefik.http.services.core_ts.loadbalancer.passHostHeader=false"
- "traefik.http.middlewares.core_ts.headers.customRequestHeaders.host=localhost"
restart: always